diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 83fe0bb7f..9e00dbc0b 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -16,7 +16,7 @@ jobs: days-before-stale: 30 days-before-close: 7 operations-per-run: 1000 - exempt-issue-labels: 'good first issue,upstream,backlog,high,medium,spec,cannot reproduce' + exempt-issue-labels: 'good first issue,upstream,backlog,high,medium,spec,cannot reproduce,enhancement' stale-issue-label: 'stale' close-issue-message: 'Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, feel free to create a new issue with up-to-date information.' # Don't process pull requests at all diff --git a/.yarn/patches/markdown-it-multimd-table-npm-4.1.1-47e334d4bd b/.yarn/patches/markdown-it-multimd-table-npm-4.1.1-47e334d4bd deleted file mode 100644 index 6f1a9fa4e..000000000 --- a/.yarn/patches/markdown-it-multimd-table-npm-4.1.1-47e334d4bd +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/index.js b/index.js -index 85d89900d5fe575dd0c19430209fb1703b03554e..5fa68cc9a4bd2b21a7188bd263262fd9b1604ac6 100644 ---- a/index.js -+++ b/index.js -@@ -145,7 +145,8 @@ module.exports = function multimd_table_plugin(md, options) { - colspan, leftToken, - rowspan, upTokens = [], - tableLines, tgroupLines, -- tag, text, range, r, c, b; -+ tag, text, range, r, c, b, t, -+ blockState; - - if (startLine + 2 > endLine) { return false; } - -@@ -315,18 +316,26 @@ module.exports = function multimd_table_plugin(md, options) { - - /* Multiline. Join the text and feed into markdown-it blockParser. */ - if (options.multiline && trToken.meta.multiline && trToken.meta.mbounds) { -- text = [ text.trimRight() ]; -+ // Pad the text with empty lines to ensure the line number mapping is correct -+ text = new Array(trToken.map[0]).fill('').concat([ text.trimRight() ]); - for (b = 1; b < trToken.meta.mbounds.length; b++) { - /* Line with N bounds has cells indexed from 0 to N-2 */ - if (c > trToken.meta.mbounds[b].length - 2) { continue; } - range = [ trToken.meta.mbounds[b][c] + 1, trToken.meta.mbounds[b][c + 1] ]; - text.push(state.src.slice.apply(state.src, range).trimRight()); - } -- state.md.block.parse(text.join('\n'), state.md, state.env, state.tokens); -+ blockState = new state.md.block.State(text.join('\n'), state.md, state.env, []); -+ blockState.level = trToken.level + 1; -+ // Start tokenizing from the actual content (trToken.map[0]) -+ state.md.block.tokenize(blockState, trToken.map[0], blockState.lineMax); -+ for (t = 0; t < blockState.tokens.length; t++) { -+ state.tokens.push(blockState.tokens[t]); -+ } - } else { - token = state.push('inline', '', 0); - token.content = text.trim(); - token.map = trToken.map; -+ token.level = trToken.level + 1; - token.children = []; - } - diff --git a/Assets/WebsiteAssets/css/site.css b/Assets/WebsiteAssets/css/site.css index 65f299dce..ccf38af25 100644 --- a/Assets/WebsiteAssets/css/site.css +++ b/Assets/WebsiteAssets/css/site.css @@ -672,7 +672,7 @@ footer .bottom-links-row p { .news-page img, .news-item-page img { - max-width: 650px; + max-width: 100%; } /***************************************************************** diff --git a/BUILD.md b/BUILD.md index b66c497cf..db9c70580 100644 --- a/BUILD.md +++ b/BUILD.md @@ -18,10 +18,9 @@ There are also a few forks of existing packages under the "fork-*" name. ## Required dependencies -- Install node 16+ - https://nodejs.org/en/ - - [Enable yarn](https://yarnpkg.com/getting-started/install): `corepack enable` +- Install Node 16+. On Windows, also install the build tools - https://nodejs.org/en/ + - [Enable Yarn](https://yarnpkg.com/getting-started/install): `corepack enable` - macOS: Install Cocoapods - `brew install cocoapods`. Apple Silicon [may require libvips](https://github.com/laurent22/joplin/pull/5966#issuecomment-1007158597) - `brew install vips`. -- Windows: Install Windows Build Tools - `yarn install -g windows-build-tools --vs2015` - Linux: Install dependencies - `sudo apt install build-essential libnss3 libsecret-1-dev python rsync` ## Building diff --git a/Dockerfile.server b/Dockerfile.server index 9326d9bc5..bf6bc7a7f 100644 --- a/Dockerfile.server +++ b/Dockerfile.server @@ -1,50 +1,42 @@ -FROM node:16-bullseye +### Build stage +FROM node:16-bullseye AS builder RUN apt-get update \ && apt-get install -y \ python \ && rm -rf /var/lib/apt/lists/* +# Download the init tool Tini and make it executable for use in the final image +ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-static /tini +RUN chmod u+x /tini + # Enables Yarn RUN corepack enable -RUN echo "Node: $(node --version)" \ - && echo "Npm: $(npm --version)" \ - && echo "Yarn: $(yarn --version)" +RUN echo "Node: $(node --version)" +RUN echo "Npm: $(npm --version)" +RUN echo "Yarn: $(yarn --version)" -ARG user=joplin +WORKDIR /build -RUN useradd --create-home --shell /bin/bash $user -USER $user - -ENV NODE_ENV production -ENV RUNNING_IN_DOCKER 1 -EXPOSE ${APP_PORT} - -WORKDIR /home/$user - -RUN mkdir /home/$user/logs \ - && mkdir /home/$user/.yarn - -COPY --chown=$user:$user .yarn/patches ./.yarn/patches -COPY --chown=$user:$user .yarn/plugins ./.yarn/plugins -COPY --chown=$user:$user .yarn/releases ./.yarn/releases -COPY --chown=$user:$user package.json . -COPY --chown=$user:$user .yarnrc.yml . -COPY --chown=$user:$user yarn.lock . -COPY --chown=$user:$user gulpfile.js . -COPY --chown=$user:$user tsconfig.json . -COPY --chown=$user:$user packages/turndown ./packages/turndown -COPY --chown=$user:$user packages/turndown-plugin-gfm ./packages/turndown-plugin-gfm -COPY --chown=$user:$user packages/fork-htmlparser2 ./packages/fork-htmlparser2 -COPY --chown=$user:$user packages/server/package*.json ./packages/server/ -COPY --chown=$user:$user packages/fork-sax ./packages/fork-sax -COPY --chown=$user:$user packages/fork-uslug ./packages/fork-uslug -COPY --chown=$user:$user packages/htmlpack ./packages/htmlpack -COPY --chown=$user:$user packages/renderer ./packages/renderer -COPY --chown=$user:$user packages/tools ./packages/tools -COPY --chown=$user:$user packages/lib ./packages/lib -COPY --chown=$user:$user packages/server ./packages/server +COPY .yarn/plugins ./.yarn/plugins +COPY .yarn/releases ./.yarn/releases +COPY package.json . +COPY .yarnrc.yml . +COPY yarn.lock . +COPY gulpfile.js . +COPY tsconfig.json . +COPY packages/turndown ./packages/turndown +COPY packages/turndown-plugin-gfm ./packages/turndown-plugin-gfm +COPY packages/fork-htmlparser2 ./packages/fork-htmlparser2 +COPY packages/server/package*.json ./packages/server/ +COPY packages/fork-sax ./packages/fork-sax +COPY packages/fork-uslug ./packages/fork-uslug +COPY packages/htmlpack ./packages/htmlpack +COPY packages/renderer ./packages/renderer +COPY packages/tools ./packages/tools +COPY packages/lib ./packages/lib +COPY packages/server ./packages/server # For some reason there's both a .yarn/cache and .yarn/berry/cache that are # being generated, and both have the same content. Not clear why it does this @@ -59,10 +51,26 @@ RUN BUILD_SEQUENCIAL=1 yarn install --inline-builds \ && yarn cache clean \ && rm -rf .yarn/berry -# Call the command directly, without going via npm: -# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#cmd -WORKDIR "/home/$user/packages/server" -CMD [ "node", "dist/app.js" ] +### Final image +FROM node:16-bullseye-slim + +ARG user=joplin +RUN useradd --create-home --shell /bin/bash $user + +USER $user + +COPY --chown=$user:$user --from=builder /build/packages /home/$user/packages +COPY --chown=$user:$user --from=builder /tini /usr/local/bin/tini + +ENV NODE_ENV=production +ENV RUNNING_IN_DOCKER=1 +EXPOSE ${APP_PORT} + +# Use Tini to start Joplin Server: +# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals +WORKDIR /home/$user/packages/server +ENTRYPOINT ["tini", "--"] +CMD ["node", "dist/app.js"] # Build-time metadata # https://github.com/opencontainers/image-spec/blob/master/annotations.md diff --git a/LICENSE b/LICENSE index cd6e865d3..206568392 100644 --- a/LICENSE +++ b/LICENSE @@ -10,6 +10,11 @@ under that directory is licensed under the default license, which is MIT. * * * +Joplin® is a trademark of Cozic Ltd registered in the European Union, with +filing number 018544315. + +* * * + Logo and Icon License The Joplin logos and icons are copyright (c) Laurent Cozic, all rights reserved, diff --git a/README.md b/README.md index a4f16972e..c879db816 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ * * * - **Joplin** is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown). + **Joplin**® is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown). Notes exported from Evernote via .enex files [can be imported](#importing) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. @@ -125,6 +125,7 @@ The Web Clipper is a browser extension that allows you to save web pages and scr - Development - [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md) + - [Writing a technical spec](https://github.com/laurent22/joplin/blob/dev/readme/technical_spec.md) - [End-to-end encryption spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md) - [Note History spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md) - [Sync Lock spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md) @@ -472,24 +473,6 @@ Notes are sorted by "relevance". Currently it means the notes that contain the r In the desktop application, press Ctrl+P or Cmd+P and type a note title or part of its content to jump to it. Or type # followed by a tag name, or @ followed by a notebook name. -# Privacy - -Joplin values your privacy and security by giving you complete control over your information and digital footprint. - -Joplin applications do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time. - -Joplin has many modern features, some of which use third-party services. You can disable any or all of these features in the application settings. These features are: - -|Feature | Description | Default| -|--------|-------------|--------| -|Auto-update|Joplin periodically connects to GitHub to check for new releases.|Enabled| -|Geo-location|Joplin saves geo-location information in note properties when you create a note.|Enabled| -|Synchronisation|Joplin supports synchronisation of your notes across multiple devices. If you choose to synchronise with a third-party, such as OneDrive, the notes will be sent to your OneDrive account, in which case the third-party privacy policy applies.|Disabled| - -Joplin is developed as an open-source application and the source code is freely available online to inspect. - -For any question about Joplin privacy, please leave a message on the [Joplin Forum](https://discourse.joplinapp.org/). - # Donations Donations to Joplin support the development of the project. Developing quality applications mostly takes time, but there are also some expenses, such as digital certificates to sign the applications, app store fees, hosting, etc. Most of all, your donation will make it possible to keep up the current development standard. diff --git a/package.json b/package.json index b0d1cbcd8..c7da4cca2 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,5 @@ "node-gyp": "^8.4.1", "nodemon": "^2.0.9" }, - "packageManager": "yarn@3.1.1", - "resolutions": { - "markdown-it-multimd-table@4.1.1": "patch:markdown-it-multimd-table@npm:4.1.1#.yarn/patches/markdown-it-multimd-table-npm-4.1.1-47e334d4bd" - } + "packageManager": "yarn@3.1.1" } diff --git a/packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.ts b/packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.ts index 970e56f9b..04a7b31da 100644 --- a/packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.ts +++ b/packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.ts @@ -8,6 +8,7 @@ export default function useEditorSearch(CodeMirror: any) { const [scrollbarMarks, setScrollbarMarks] = useState(null); const [previousKeywordValue, setPreviousKeywordValue] = useState(null); const [previousIndex, setPreviousIndex] = useState(null); + const [previousSearchTimestamp, setPreviousSearchTimestamp] = useState(0); const [overlayTimeout, setOverlayTimeout] = useState(null); const overlayTimeoutRef = useRef(null); overlayTimeoutRef.current = overlayTimeout; @@ -51,7 +52,7 @@ export default function useEditorSearch(CodeMirror: any) { // Highlights the currently active found work // It's possible to get tricky with this fucntions and just use findNext/findPrev // but this is fast enough and works more naturally with the current search logic - function highlightSearch(cm: any, searchTerm: RegExp, index: number, scrollTo: boolean) { + function highlightSearch(cm: any, searchTerm: RegExp, index: number, scrollTo: boolean, withSelection: boolean) { const cursor = cm.getSearchCursor(searchTerm); let match: any = null; @@ -64,7 +65,13 @@ export default function useEditorSearch(CodeMirror: any) { } if (match) { - if (scrollTo) cm.scrollIntoView(match); + if (scrollTo) { + if (withSelection) { + cm.setSelection(match.from, match.to); + } else { + cm.scrollTo(match); + } + } return cm.markText(match.from, match.to, { className: 'cm-search-marker-selected' }); } @@ -90,7 +97,7 @@ export default function useEditorSearch(CodeMirror: any) { CodeMirror.defineExtension('setMarkers', function(keywords: any, options: any) { if (!options) { - options = { selectedIndex: 0 }; + options = { selectedIndex: 0, searchTimestamp: 0 }; } clearMarkers(); @@ -107,16 +114,15 @@ export default function useEditorSearch(CodeMirror: any) { const searchTerm = getSearchTerm(keyword); // We only want to scroll the first keyword into view in the case of a multi keyword search - const scrollTo = i === 0 && (previousKeywordValue !== keyword.value || previousIndex !== options.selectedIndex || - // If there is only one choice, scrollTo should be true. The below is a dummy of nMatches === 1. - options.selectedIndex === 0); + const scrollTo = i === 0 && (previousKeywordValue !== keyword.value || previousIndex !== options.selectedIndex || options.searchTimestamp !== previousSearchTimestamp); - const match = highlightSearch(this, searchTerm, options.selectedIndex, scrollTo); + const match = highlightSearch(this, searchTerm, options.selectedIndex, scrollTo, !!options.withSelection); if (match) marks.push(match); } setMarkers(marks); setPreviousIndex(options.selectedIndex); + setPreviousSearchTimestamp(options.searchTimestamp); // SEARCHOVERLAY // We only want to highlight all matches when there is only 1 search term diff --git a/packages/app-desktop/gui/NoteEditor/utils/useNoteSearchBar.ts b/packages/app-desktop/gui/NoteEditor/utils/useNoteSearchBar.ts index ecbd6d001..c9552aa35 100644 --- a/packages/app-desktop/gui/NoteEditor/utils/useNoteSearchBar.ts +++ b/packages/app-desktop/gui/NoteEditor/utils/useNoteSearchBar.ts @@ -1,6 +1,7 @@ import { useState, useCallback } from 'react'; import Logger from '@joplin/lib/Logger'; import { SearchMarkers } from './useSearchMarkers'; +const CommandService = require('@joplin/lib/services/CommandService').default; const logger = Logger.create('useNoteSearchBar'); @@ -70,6 +71,7 @@ export default function useNoteSearchBar() { const onClose = useCallback(() => { setShowLocalSearch(false); setLocalSearch(defaultLocalSearch()); + void CommandService.instance().execute('focusElementNoteBody'); }, []); const setResultCount = useCallback((count: number) => { @@ -90,6 +92,7 @@ export default function useNoteSearchBar() { selectedIndex: localSearch.selectedIndex, separateWordSearch: false, searchTimestamp: localSearch.timestamp, + withSelection: true, }, keywords: [ { diff --git a/packages/app-desktop/gui/NoteEditor/utils/useSearchMarkers.ts b/packages/app-desktop/gui/NoteEditor/utils/useSearchMarkers.ts index e7a80a120..78df228d1 100644 --- a/packages/app-desktop/gui/NoteEditor/utils/useSearchMarkers.ts +++ b/packages/app-desktop/gui/NoteEditor/utils/useSearchMarkers.ts @@ -4,6 +4,7 @@ interface SearchMarkersOptions { searchTimestamp: number; selectedIndex: number; separateWordSearch: boolean; + withSelection?: boolean; } export interface SearchMarkers { diff --git a/packages/app-desktop/gui/note-viewer/index.html b/packages/app-desktop/gui/note-viewer/index.html index cff8e17d6..66cded676 100644 --- a/packages/app-desktop/gui/note-viewer/index.html +++ b/packages/app-desktop/gui/note-viewer/index.html @@ -277,6 +277,9 @@ let restoreAndRefreshTimeoutID_ = null; let restoreAndRefreshTimeout_ = Date.now(); + // If 'noteRenderComplete' message is ongoing, resizing should not trigger a 'percentScroll' messsage. + let noteRenderCompleteMessageIsOngoing_ = false; + // A callback anonymous function invoked when the scroll height changes. const onRendering = observeRendering((cause, height, heightChanged) => { if (!alreadyAllImagesLoaded && !scrollmap.isPresent()) { @@ -285,6 +288,7 @@ alreadyAllImagesLoaded = true; scrollmap.refresh(); restorePercentScroll(); + noteRenderCompleteMessageIsOngoing_ = true; ipcProxySendToHost('noteRenderComplete'); return; } @@ -294,7 +298,7 @@ scrollmap.refresh(); restorePercentScroll(); // To ensures Editor's scroll position is synced with Viewer's - ipcProxySendToHost('percentScroll', percentScroll_); + if (!noteRenderCompleteMessageIsOngoing_) ipcProxySendToHost('percentScroll', percentScroll_); }; const now = Date.now(); if (now < restoreAndRefreshTimeout_) { @@ -345,11 +349,13 @@ if (scrollmap.isPresent()) { // Now, ready to receive scrollToHash/setPercentScroll from Editor. + noteRenderCompleteMessageIsOngoing_ = true; ipcProxySendToHost('noteRenderComplete'); } } ipc.setPercentScroll = (event) => { + noteRenderCompleteMessageIsOngoing_ = false; setPercentScroll(event.percent); } diff --git a/packages/app-mobile/pluginAssets/highlight.js/atom-one-dark-reasonable.css.base64.js b/packages/app-mobile/pluginAssets/highlight.js/atom-one-dark-reasonable.css.base64.js index 48c7c407b..355874aaa 100644 --- a/packages/app-mobile/pluginAssets/highlight.js/atom-one-dark-reasonable.css.base64.js +++ b/packages/app-mobile/pluginAssets/highlight.js/atom-one-dark-reasonable.css.base64.js @@ -1 +1 @@ -module.exports = `cHJlIGNvZGUuaGxqc3tkaXNwbGF5OmJsb2NrO292ZXJmbG93LXg6YXV0bztwYWRkaW5nOjFlbX1jb2RlLmhsanN7cGFkZGluZzozcHggNXB4fS5obGpze2NvbG9yOiNhYmIyYmY7YmFja2dyb3VuZDojMjgyYzM0fS5obGpzLWtleXdvcmQsLmhsanMtb3BlcmF0b3IsLmhsanMtcGF0dGVybi1tYXRjaHtjb2xvcjojZjkyNjcyfS5obGpzLWZ1bmN0aW9uLC5obGpzLXBhdHRlcm4tbWF0Y2ggLmhsanMtY29uc3RydWN0b3J7Y29sb3I6IzYxYWVlZX0uaGxqcy1mdW5jdGlvbiAuaGxqcy1wYXJhbXN7Y29sb3I6I2E2ZTIyZX0uaGxqcy1mdW5jdGlvbiAuaGxqcy1wYXJhbXMgLmhsanMtdHlwaW5ne2NvbG9yOiNmZDk3MWZ9LmhsanMtbW9kdWxlLWFjY2VzcyAuaGxqcy1tb2R1bGV7Y29sb3I6IzdlNTdjMn0uaGxqcy1jb25zdHJ1Y3Rvcntjb2xvcjojZTJiOTNkfS5obGpzLWNvbnN0cnVjdG9yIC5obGpzLXN0cmluZ3tjb2xvcjojOWNjYzY1fS5obGpzLWNvbW1lbnQsLmhsanMtcXVvdGV7Y29sb3I6I2IxOGViMTtmb250LXN0eWxlOml0YWxpY30uaGxqcy1kb2N0YWcsLmhsanMtZm9ybXVsYXtjb2xvcjojYzY3OGRkfS5obGpzLWRlbGV0aW9uLC5obGpzLW5hbWUsLmhsanMtc2VjdGlvbiwuaGxqcy1zZWxlY3Rvci10YWcsLmhsanMtc3Vic3R7Y29sb3I6I2UwNmM3NX0uaGxqcy1saXRlcmFse2NvbG9yOiM1NmI2YzJ9LmhsanMtYWRkaXRpb24sLmhsanMtYXR0cmlidXRlLC5obGpzLW1ldGEgLmhsanMtc3RyaW5nLC5obGpzLXJlZ2V4cCwuaGxqcy1zdHJpbmd7Y29sb3I6Izk4YzM3OX0uaGxqcy1idWlsdF9pbiwuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSwuaGxqcy10aXRsZS5jbGFzc197Y29sb3I6I2U2YzA3Yn0uaGxqcy1hdHRyLC5obGpzLW51bWJlciwuaGxqcy1zZWxlY3Rvci1hdHRyLC5obGpzLXNlbGVjdG9yLWNsYXNzLC5obGpzLXNlbGVjdG9yLXBzZXVkbywuaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSwuaGxqcy10eXBlLC5obGpzLXZhcmlhYmxle2NvbG9yOiNkMTlhNjZ9LmhsanMtYnVsbGV0LC5obGpzLWxpbmssLmhsanMtbWV0YSwuaGxqcy1zZWxlY3Rvci1pZCwuaGxqcy1zeW1ib2wsLmhsanMtdGl0bGV7Y29sb3I6IzYxYWVlZX0uaGxqcy1lbXBoYXNpc3tmb250LXN0eWxlOml0YWxpY30uaGxqcy1zdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfS5obGpzLWxpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0=`; \ No newline at end of file +module.exports = `LyoKCkF0b20gT25lIERhcmsgV2l0aCBzdXBwb3J0IGZvciBSZWFzb25NTCBieSBHaWRpIE1vcnJpcywgYmFzZWQgb2ZmIHdvcmsgYnkgRGFuaWVsIEdhbWFnZQoKT3JpZ2luYWwgT25lIERhcmsgU3ludGF4IHRoZW1lIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2F0b20vb25lLWRhcmstc3ludGF4CgoqLwouaGxqcyB7CiAgY29sb3I6ICNhYmIyYmY7CiAgYmFja2dyb3VuZDogIzI4MmMzNDsKfQouaGxqcy1rZXl3b3JkLCAuaGxqcy1vcGVyYXRvciB7CiAgY29sb3I6ICNGOTI2NzI7Cn0KLmhsanMtcGF0dGVybi1tYXRjaCB7CiAgY29sb3I6ICNGOTI2NzI7Cn0KLmhsanMtcGF0dGVybi1tYXRjaCAuaGxqcy1jb25zdHJ1Y3RvciB7CiAgY29sb3I6ICM2MWFlZWU7Cn0KLmhsanMtZnVuY3Rpb24gewogIGNvbG9yOiAjNjFhZWVlOwp9Ci5obGpzLWZ1bmN0aW9uIC5obGpzLXBhcmFtcyB7CiAgY29sb3I6ICNBNkUyMkU7Cn0KLmhsanMtZnVuY3Rpb24gLmhsanMtcGFyYW1zIC5obGpzLXR5cGluZyB7CiAgY29sb3I6ICNGRDk3MUY7Cn0KLmhsanMtbW9kdWxlLWFjY2VzcyAuaGxqcy1tb2R1bGUgewogIGNvbG9yOiAjN2U1N2MyOwp9Ci5obGpzLWNvbnN0cnVjdG9yIHsKICBjb2xvcjogI2UyYjkzZDsKfQouaGxqcy1jb25zdHJ1Y3RvciAuaGxqcy1zdHJpbmcgewogIGNvbG9yOiAjOUNDQzY1Owp9Ci5obGpzLWNvbW1lbnQsIC5obGpzLXF1b3RlIHsKICBjb2xvcjogI2IxOGViMTsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KLmhsanMtZG9jdGFnLCAuaGxqcy1mb3JtdWxhIHsKICBjb2xvcjogI2M2NzhkZDsKfQouaGxqcy1zZWN0aW9uLCAuaGxqcy1uYW1lLCAuaGxqcy1zZWxlY3Rvci10YWcsIC5obGpzLWRlbGV0aW9uLCAuaGxqcy1zdWJzdCB7CiAgY29sb3I6ICNlMDZjNzU7Cn0KLmhsanMtbGl0ZXJhbCB7CiAgY29sb3I6ICM1NmI2YzI7Cn0KLmhsanMtc3RyaW5nLCAuaGxqcy1yZWdleHAsIC5obGpzLWFkZGl0aW9uLCAuaGxqcy1hdHRyaWJ1dGUsIC5obGpzLW1ldGEgLmhsanMtc3RyaW5nIHsKICBjb2xvcjogIzk4YzM3OTsKfQouaGxqcy1idWlsdF9pbiwKLmhsanMtdGl0bGUuY2xhc3NfLAouaGxqcy1jbGFzcyAuaGxqcy10aXRsZSB7CiAgY29sb3I6ICNlNmMwN2I7Cn0KLmhsanMtYXR0ciwgLmhsanMtdmFyaWFibGUsIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLCAuaGxqcy10eXBlLCAuaGxqcy1zZWxlY3Rvci1jbGFzcywgLmhsanMtc2VsZWN0b3ItYXR0ciwgLmhsanMtc2VsZWN0b3ItcHNldWRvLCAuaGxqcy1udW1iZXIgewogIGNvbG9yOiAjZDE5YTY2Owp9Ci5obGpzLXN5bWJvbCwgLmhsanMtYnVsbGV0LCAuaGxqcy1saW5rLCAuaGxqcy1tZXRhLCAuaGxqcy1zZWxlY3Rvci1pZCwgLmhsanMtdGl0bGUgewogIGNvbG9yOiAjNjFhZWVlOwp9Ci5obGpzLWVtcGhhc2lzIHsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KLmhsanMtc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQouaGxqcy1saW5rIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQo=`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/highlight.js/atom-one-light.css.base64.js b/packages/app-mobile/pluginAssets/highlight.js/atom-one-light.css.base64.js index 0fd3fa8a1..b1a0511a7 100644 --- a/packages/app-mobile/pluginAssets/highlight.js/atom-one-light.css.base64.js +++ b/packages/app-mobile/pluginAssets/highlight.js/atom-one-light.css.base64.js @@ -1 +1 @@ -module.exports = `cHJlIGNvZGUuaGxqc3tkaXNwbGF5OmJsb2NrO292ZXJmbG93LXg6YXV0bztwYWRkaW5nOjFlbX1jb2RlLmhsanN7cGFkZGluZzozcHggNXB4fS5obGpze2NvbG9yOiMzODNhNDI7YmFja2dyb3VuZDojZmFmYWZhfS5obGpzLWNvbW1lbnQsLmhsanMtcXVvdGV7Y29sb3I6I2EwYTFhNztmb250LXN0eWxlOml0YWxpY30uaGxqcy1kb2N0YWcsLmhsanMtZm9ybXVsYSwuaGxqcy1rZXl3b3Jke2NvbG9yOiNhNjI2YTR9LmhsanMtZGVsZXRpb24sLmhsanMtbmFtZSwuaGxqcy1zZWN0aW9uLC5obGpzLXNlbGVjdG9yLXRhZywuaGxqcy1zdWJzdHtjb2xvcjojZTQ1NjQ5fS5obGpzLWxpdGVyYWx7Y29sb3I6IzAxODRiYn0uaGxqcy1hZGRpdGlvbiwuaGxqcy1hdHRyaWJ1dGUsLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsLmhsanMtcmVnZXhwLC5obGpzLXN0cmluZ3tjb2xvcjojNTBhMTRmfS5obGpzLWF0dHIsLmhsanMtbnVtYmVyLC5obGpzLXNlbGVjdG9yLWF0dHIsLmhsanMtc2VsZWN0b3ItY2xhc3MsLmhsanMtc2VsZWN0b3ItcHNldWRvLC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLC5obGpzLXR5cGUsLmhsanMtdmFyaWFibGV7Y29sb3I6Izk4NjgwMX0uaGxqcy1idWxsZXQsLmhsanMtbGluaywuaGxqcy1tZXRhLC5obGpzLXNlbGVjdG9yLWlkLC5obGpzLXN5bWJvbCwuaGxqcy10aXRsZXtjb2xvcjojNDA3OGYyfS5obGpzLWJ1aWx0X2luLC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLC5obGpzLXRpdGxlLmNsYXNzX3tjb2xvcjojYzE4NDAxfS5obGpzLWVtcGhhc2lze2ZvbnQtc3R5bGU6aXRhbGljfS5obGpzLXN0cm9uZ3tmb250LXdlaWdodDo3MDB9LmhsanMtbGlua3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQ==`; \ No newline at end of file +module.exports = `LyoKCkF0b20gT25lIExpZ2h0IGJ5IERhbmllbCBHYW1hZ2UKT3JpZ2luYWwgT25lIExpZ2h0IFN5bnRheCB0aGVtZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9tL29uZS1saWdodC1zeW50YXgKCmJhc2U6ICAgICNmYWZhZmEKbW9uby0xOiAgIzM4M2E0Mgptb25vLTI6ICAjNjg2Yjc3Cm1vbm8tMzogICNhMGExYTcKaHVlLTE6ICAgIzAxODRiYgpodWUtMjogICAjNDA3OGYyCmh1ZS0zOiAgICNhNjI2YTQKaHVlLTQ6ICAgIzUwYTE0ZgpodWUtNTogICAjZTQ1NjQ5Cmh1ZS01LTI6ICNjOTEyNDMKaHVlLTY6ICAgIzk4NjgwMQpodWUtNi0yOiAjYzE4NDAxCgoqLwoKLmhsanMgewogIGNvbG9yOiAjMzgzYTQyOwogIGJhY2tncm91bmQ6ICNmYWZhZmE7Cn0KCi5obGpzLWNvbW1lbnQsCi5obGpzLXF1b3RlIHsKICBjb2xvcjogI2EwYTFhNzsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCi5obGpzLWRvY3RhZywKLmhsanMta2V5d29yZCwKLmhsanMtZm9ybXVsYSB7CiAgY29sb3I6ICNhNjI2YTQ7Cn0KCi5obGpzLXNlY3Rpb24sCi5obGpzLW5hbWUsCi5obGpzLXNlbGVjdG9yLXRhZywKLmhsanMtZGVsZXRpb24sCi5obGpzLXN1YnN0IHsKICBjb2xvcjogI2U0NTY0OTsKfQoKLmhsanMtbGl0ZXJhbCB7CiAgY29sb3I6ICMwMTg0YmI7Cn0KCi5obGpzLXN0cmluZywKLmhsanMtcmVnZXhwLAouaGxqcy1hZGRpdGlvbiwKLmhsanMtYXR0cmlidXRlLAouaGxqcy1tZXRhIC5obGpzLXN0cmluZyB7CiAgY29sb3I6ICM1MGExNGY7Cn0KCi5obGpzLWF0dHIsCi5obGpzLXZhcmlhYmxlLAouaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSwKLmhsanMtdHlwZSwKLmhsanMtc2VsZWN0b3ItY2xhc3MsCi5obGpzLXNlbGVjdG9yLWF0dHIsCi5obGpzLXNlbGVjdG9yLXBzZXVkbywKLmhsanMtbnVtYmVyIHsKICBjb2xvcjogIzk4NjgwMTsKfQoKLmhsanMtc3ltYm9sLAouaGxqcy1idWxsZXQsCi5obGpzLWxpbmssCi5obGpzLW1ldGEsCi5obGpzLXNlbGVjdG9yLWlkLAouaGxqcy10aXRsZSB7CiAgY29sb3I6ICM0MDc4ZjI7Cn0KCi5obGpzLWJ1aWx0X2luLAouaGxqcy10aXRsZS5jbGFzc18sCi5obGpzLWNsYXNzIC5obGpzLXRpdGxlIHsKICBjb2xvcjogI2MxODQwMTsKfQoKLmhsanMtZW1waGFzaXMgewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLmhsanMtc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLmhsanMtbGluayB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0K`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/index.js b/packages/app-mobile/pluginAssets/index.js index 6cfd12e70..5e6143c86 100644 --- a/packages/app-mobile/pluginAssets/index.js +++ b/packages/app-mobile/pluginAssets/index.js @@ -1,5 +1,5 @@ module.exports = { -hash:"dd2315568bb7795f97cee26a47e9b82b", files: { +hash:"ea13a22d0df59339b671f6b5700e2914", files: { 'highlight.js/atom-one-dark-reasonable.css': { data: require('./highlight.js/atom-one-dark-reasonable.css.base64.js'), mime: 'text/css', encoding: 'base64' }, 'highlight.js/atom-one-light.css': { data: require('./highlight.js/atom-one-light.css.base64.js'), mime: 'text/css', encoding: 'base64' }, 'katex/fonts/KaTeX_AMS-Regular.woff2': { data: require('./katex/fonts/KaTeX_AMS-Regular.woff2.base64.js'), mime: 'application/octet-stream', encoding: 'base64' }, diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_AMS-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_AMS-Regular.woff2.base64.js index 014f37a00..ef304f185 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_AMS-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_AMS-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Bold.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Bold.woff2.base64.js index 256069541..a9083eefb 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Bold.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Bold.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Regular.woff2.base64.js index 8413c1c66..1391970a9 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Caligraphic-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Bold.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Bold.woff2.base64.js index 846ec02bd..73733deaa 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Bold.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Bold.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Regular.woff2.base64.js index 296461da3..be6279add 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Fraktur-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Bold.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Bold.woff2.base64.js index 820ffd609..433e0f21b 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Bold.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Bold.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-BoldItalic.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-BoldItalic.woff2.base64.js index a5c5c47b1..4e9c99892 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-BoldItalic.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-BoldItalic.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `d09GMgABAAAAAEGMAA4AAAAAgVAAAEEzAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgjwIWgmcDBEICoHLfIGeJgE2AiQDhAYLggYABCAFiQwHgw0MgTIbemgV45gpbgcqQkK+YBQ1gZGyjqKEklaJ/v+YQEXG2h2afRxVJR4RCiyI3mjbqFujaBp7YJh+7AgSfzkTpf44Ho/HWy3qvgLbS7vqlV31c4Nc/b36nNwzdjBGP0V/h1SkTEqqCJZg6QiNfZI7QNPZ3SW5XPwkueRivVySJrU0lyYVjdWoJ01daCk1WkppqWBSoNjsWVd8gsn4wcwepvDDN4ep+/Fr6Zv5sIBHexfeAw7zhlmhUCkJH1K6FS5GFmSNC8/Xj72eu/smUYD+K52JhbYOgIQGdI5BGdIV+mU/P0D/A/jDbn5wAKzwfNpMLqqEFfjKD3u0ATrYkEwJ+xySgtJ5z0Xtot6uetrD/PhNS+lXuiu+0Zt4nIyvdjKztXsOwjLIVrou5YBchuQ3+bU9odaLCS+Sl0G2dvmz9Auk4lxj/egXhoB8y1/bnOKVWWZC9iSv6R5isnvwp4empCsBUcdSYdXohP+XzjRXKekCpZV2yyldtrZf+z2lzb/O39z+zJcZ1vAWgbBFAq7gUrew2Wa/eGBS3j1Ete07mdyMYbNfz5FAjTr8n6pl+z9IJVyiLkt35xBCH0s3nSt3LoE/BIiZAbTkgNwFAVG7BPf2kaA2ELygVDDZj5JDimWMIjdKckihd1HH1q5ad4W7+lyUjUfWUkusgFjYClnnAIiEJXYAfAVG2cr2VauIh6RnLbllwqotfnrbvX2OkOo1usYLWiXsMf+7v1fzkTW5u7YunlGIjGUQMsn+65jLULXbcnbOsRtjA+YIkAARSLYvAOV/PYsH0HO6FQA2fnzwNzYQ9HNPAL5d9+C/P07xlcwWwI1e6Dj0TKyqfvcZB2w5wwEA/qqDAIB2W5nn4PIoabTITYNnTf+nhkcrS5GmWr1lxu110FFnveya2z7zG7EJVkK9Um/U/+tmz/bufrgf6739RO/vQ4ssTdG6f/8FgGaWJkOtRhwMvOyX67W6Vjd6+zPu64OLDK2itf8vev5zz1133HbLR8474Un77LbGpFELOeCP9bi9Zm3/lheeMSq0Jx53vXnNQNpVTYnlErSzhN/mt1kJGNXg3FBPz9/qdF6M/hTN+DZf1Mzr5EMM+gWch2EUeX8C//g9+vZnYHyDxnOaS3v+BHv+byYTDzPdNdaCa5DooAMhSd5BIC5zB0OtWoeANPti8cyS75OhpOQLL/Z9qbYTmF8Xgmsw+7lBXi06bnGSPMXmkq3s7Pyl5dVLknao7zKSaU1TcBT2YhcJtwiyQwQ5BjBmILIOuNBII3xM4Gr5Z9cQLxnOhuj9YNktj9NfATpNe6UcXT3xZaWYNtann6MUVc8NDW0VjLY2LIaB8HGBzKV9rinYPFVE3CRsQ5uEySDF2HsA7LicgZMAdufc3h2jtd5072k+CdMMcOpEpXv+BU2OUJDlAcTfBBHVR4eCDAXpuREMTgKGeUzzxtqRRnHocBsAkRRj4qWW+uua7tPnAC6ujhrb15+c0sZ/PyXKcLeKzDshTUyexqDRRmH5NoAwvFhduZjDABZ7HTjOYF7bMq8Cyj7Dkzn0tQcYYxdaELKdPmcnMt33mEe4XKLy02B8JRudtYBk6O/agQNO/0ByXZQqhda3Ij3JsC3XqLJgK3RF5DzxBssBCxDOcAdtvCre8SUqU4ihE/CpR9/+vjcHsT4J1qiNd60jQOHWOo+8uiOEc0SGAd+dwEwS85GwgCcylAtSPmFQrionMj205UqKSdpbJaMD9KppvP8aivwexOt4jS4qkDm9E95/WZaMdZnME2ZRkO5/c9JxC1Q9qYh9Sth9CVYYboCWVRC+ixK+NNJ9+6zt1sOx1THbdE0zsBnY5sJIwDGhNKsDojVKDA8twCkdQASLHQmtf2s5LBW8/jWQNi9DfPN4Bhcv6biwuozU0qkl7z0DkP22oVqyU21eYuNadEQoyPUcedIIChpDhyagU5PQpSno1jT0aAb0aib0adZaG8r/RHR5/zWoVND7xWIs4/21c1H253kH5mrZ309bjCXWws/TUD1ckurzD4sYYwkVy6hYQcUqKtZQsY6KDVRsomILtTEIqQcsDHUmCkX6Wop+TOksFIMpWxxG0wn35Rk7RiAyFjFjzRt6ZR8dIIz3MJpfxMXvrSfcNEbGRUluGO5HL92x8IwOaYxDnhCvTWBJvZJ9lyEUVIZXx4gOoLcMXuhGGZecr5+WSUgtY/oBSPCvyDGF6lztmD60DnHWv3EGhVN0QyobgvLF0nzbPh/alWQJu+amu9F8Ny2UO31Xd84CROTPkvQvdtjVi5tWcdjbawdNpG6nxQuYK0uFdwZtHhwKt7eUjcvXYV/qemxiktc7o7/Rtm1KW7YIdJRwT56vIt3s8g+lfSRToyjmZnXkh5tcpBvdQJtqVmFfkHWUN4wLbY4eWL5NJ280yUSo4toQKRqB8hwGo4bI3AnNuYjWjbTH1ZnomOeCS7Wisgq03nibW/Cxm52RpFZJxJXFJtabPNNG5RnOQiW1WlNYCqHlyQNK2m+73r665KM4NNktsYQN+fElIiuMl0hPOAP7bMc4WIbyiEUjZGXnGSZmGoPUsSrDku01ma4wn5qJ/6u2HrZIcAJmo0WTa2Au2nhjS7EIttOHmkKzYngCbF0cUXoKZOZlMu7K0Xe2rWWVWirdwDe/gWJ3qv4YLx7SX8U4iX2UfKLb2MfWumFsulRspAmba5jtscK3bsZWsTq1vCmEALfd3HmvOlzgzqn6/OT4RdnZvIsCyp5iKq/vgZkP7J9CNFSdk1Frs6UOMKBL8G9KOwx0RBsWTQ1g6YC2FuFAcFNzSYGnA/paOgPsEyExGGYA0XWAcSYigWmkpRq0TIOWaxCFS1zXShpDpQPWWkQDwS2tJQWdDthrkQMtXNNGtobpOsA5E7koUrhmANt1gHsm5w8UYhGUZ6GEWrIXauIOOhuh7jwvHiDwziDzzQD+E4TiqChZjprl0hTboVs7iBkgzcDzOSewZAXWrMCWFdgtBWMGmDPwJeck7qzEk5V4sxKfpeDPAMOfZ6jxgn/nxfaHR290siXWg1pjY/Q9zAaxO1ncrSe4igDRnAJ6YUoOHLjIeQCzAsDyFfr+cgDnMqggoTWXuDepvdj0BNgeuaJ6mMo3FmbDt4XPBaMwHsXyGGYopPgMPJR2PwwJaCCBP9uQD9NKNZqFQidBYmsIKkxbEk5hMgJXORa1LyhxkT6THHcQqAzVikT50lKZD3HJpAVWqvnQ2DCa4l2RPFSmoNJwFyOqV9YFA5lDM83pYWEaqUMRqWY9CpOk3CEPStPF6d0py6uV8mw8TpGekVOZXt9YVR0uFuNKyyqRU4oOJ0klLCpL76ZYucyjoTGFikFxZThB+FWIUh2bZY2OqckO1aLEULtUqqG0Wo1GxBNxy0QclzaWxfME0FOgHJNCU3iBpuRhEAScvzFzHj7PX6DVrjxLdXjCF8+a3NoI/nQioFMpryv+pqE6YpEX2QXHx+EdsKEFkw3Nj+8x91UMq6YxOD+xhRz3d7CuNZkdyh2suNQsqXuycNGOxv3Td0WCTwDLJvjquKxQUE7ZdiwZclR8iDGU5B/kybl263/+M30j/+2sL0mivqvb07TgiD0TNRSYhNSuSDtwqUxIK/2BkdNkL8wQg34xxoziu2pS9BOb+w3O/jT1iU/dwtomJcJWM5n+i4LjdoQlTb+aahTXYrlaEe0pgQsOeiEIDalESz4w4DyXoII/XZ0uAGlIiCXrHNUFxRSWl+gU9O0w95vicfD9kBaAdZV51+IcBEyH7N/6ygeeZtKnGRDWJEfkvUILRjM1IMziuyP8CaPuhcrQR0sNxvaklZZIqSxwzFtDAn86GQSeRkZnlKOQ1hlZAx4b3rw9JbQfUzNLnT9PjVtHc5ZgGqKQ53FXpp+nWsRIs8at/ZYiFmKp0BcukBWuQXJKhjiO6Bc2qzK6NZLTA/EUiMkpcRjYRCIYAPGdrOBJQtg17YeYm+UMTaMLGSafInQOoh6yVKQU7uLaRbIfnj4E+g/q9pBG/n/IA5IFA8s+Rvhnt2lxnqNx55VzDYUDdZp5V7tb0maRePoURAtgd7zVZFKz8Z9gAhmZ+xmAhWYp9BBygL0upzjz5zT0oEcB/A4SFX9P9u/6wZPYMuToZfNjgjscQ02vFOTrL62/2SqBwpRjzQI2sWr6duW655qMScSm9tfCZJ+BZyXHUBifFGeOh4lEW3/cWrNvXzE3omcItawMijfepnY1k3VLj2s0hSuSPONCjMhjTdY2Du7LVZ3CXN1bUmgBReRuxQcn3Gp736VsERznKQiNPM9xkYDuQKymqNehbukEkzFKouL0NLYzZt7j0z+DbZ/KJ4qL66qxOfugrq5x8v53Zk0CwcWY9wiNjpJ1akBWaPUKx9PEuRgR1jTHrszJla9vE1tIXBwKbeHA+pOjymz1SJtyYLtlpEZeXHVb0bamlrL/I+mgYVjQibYUuMnx1td+j8JWN52D/pTqHEWgUs7dinyvfzU5xaS/JhNNLHJ/JM5olHO+lRXmDWsZasZQVx1ph9c41qqqSUt5PcXovwuEbfsr5/DiNSDAdep+YvTxtGQpJitf0UMx45c2kt8cL/35zjppa6s9htWywKzc/QS1v+MzLGHnAxF8gq2+ZW7z5xL6Wlm1o51yeUu9HZrsqGCNyd6bFFTHdF0LLfI2swGh3eQN2ccwx+RNO5GWEFlj1ahqKHZ15R4GHMn36E+MgX8XMsbIcig3U0HoIW+3qXPQ0WkWPr+domNnXq8el3PoRkuojmXgHbjR+gREkFkczyK/lyP4oqCLpIbdkjQeG8wcfdMzTG5M7QAOu79eaoLfQGUrNtvX7b6V3YjgqJI8zkMqrdtOl2sg6lMyxcTUOUJ399nl3uDKC3LH2V2OqTFk2AqUx55y6Tm3m9Y5rOMdVfN2HE8K+Ns4HnrMe+UVtXd3NMYVpLGho6ly8Pd/OgmqvCILwmieCI7ITGzJ6E3/7ZhfvBgavsTsjobWkKjm16aBVVS3sEGRsHiAvCKDyJv1nZzWzJN2kDt0qkqhH1pLdwdMIw4HZv9K7jmTytfqfhNb0kQ62vAnS9xMwaVEScodxfdX4ekT5dwwRCiS5RtjR0DTiIgA/5gEe1k7Ct2Z9g78PY/e4R3FxWAimJigEBopeIML5JHPvd2oLvuD2IuY0JQ54IWlqLGWn7cUoBlEWtunWuUw8yZ1WN/aio7Sp+Cg43CbdOP+ans4Bzq0xsenpk64fRgIGfk9L1NIQugJsJsp4BfFnooSDUHgMPZvydgtfpCloxmxgw6wz3z8RofL7PcICpVWfQKsQz7mgcPRxw3S9WaDo/d0jvCZJ+8bkvdDYv0SRzOiyArVKV78b+JaHNUJw2eQHwarblsowMPQ8eLBAba2LZ31yuS+rYBEsFkKctDuSkGLYjyfLR6ZgwCtdMCzJy6/IOd+cVT0feJJisma1gT1tvXOUHjy/x5QpkpypaL7lIzEs3yLpNbhdOwNTVNrK06MBOT2Qb/msXbDLhuvvNT8V40ZMrCkwfeaQCORA80+zKpRl1PPHjxConNwC/DYhi8t4APv8H+UGWtnuVyFxqzgoN4Y6ieSvP9J8ob+Ldvz8os5r93b9h9QetLsAZv2Hrbutw7yiyGmV4cgxWcvROjU0CBeyvCOpTgVKu5ABWyY3lQP7bchhHFpd6RCVJ+793ZtXjmb2alBl4h3HGYeDybpRckucM/gSCLUKFkJ/iBeWcRi5gc40a/YlTOl1xddCBaYrDTOyXRIMDaYtyZnObq8Eypvftp2oq3DCdFTDKuGY8MkgZuqY6Km/zyTpzDmDbaFEgfDWoU81eslKqB8Caxkbqmmakk2Z59UtE6hU5PHq6F1MrbwENyDhe1eyTVuqQrfR/Po1YpYyjHiGuuKFP+GLkAji0QBeJTQNVvUoVK5QESw2pDfeLMm98wMeLJQELEpTkwoR2y/mlrkUjjgOggfrhp12LsYS2dmFkbDzma6zhs8futvdOkRbTfrFG4zu62mww8EviJRzc52EBSRzcjpo2yyFdXTFPQfrCTrJNzokDwFq39Tg9PyrZgE+osSTyzc1jsPeW/htaGzi8Lm8FOZJJ6RcwzqVqEyOL3vwLGC5zxvcR1hH6e9MT5MjTsVPzQlJg0jx3Ku+Ukloz3G8FdhVmNQUp0BevpUsXV4TqH/R5bvWdz/wzwMR2mauehbMlQLchDQFYqFTo6HVVaxs3NRQVFap9gsPVH9jrIlSklHPQ0rHEhrFwPCwJ1A5x4+9J856J/tyBef/8Ko0HHgvG/UKG0Uet/zhsIqSU2WrSL8Wq1yuMBYtoMk0rA36RFHemmblTzVr2UZIf4F/gJF33nOFEsAV+jmZI9QHmPJbnpvGG4XS2kBL14go690fh/PvpQ0I07neCYkb7GPaXvbvVFFon5aaijEuAMDgzy1WLYUbzGSccDwVpGMFi2souvjUkdxUGTMN9EaiIQlqUvHxqBd8WM46Q2uZ6aKcei3Dh2K1jnZWBFWzTKxY1QcXz1GMpAVPl9GTQPjYIdmgMl2moGAJm07SdTY8w+ctlPiPO8aFK3pmgQW75Wv3rt9XDJNXHwuulqVe/v1icRZP48/6h12FHHz66bXvOW+QboINblXCbl+9OAaDaCbMA8qiu1vjV2RPt64c3CTyb6RT6QtdI3ionEcxphwDqVP76/07WA+rh3bnqdJCMZQkJFBErGJrZX1S0Lhyvt9hrSNgltPXjBrdljJuXdkFy/9Dfyr8n0LdrnsTohZbiTM9SXTzID0xzDO5NY24lLT/ymFNC2YjJnISadFgLsvwprs2mw1nkfPBJdKTVf3IrsHr9R6BnflJql71RMuK3T9KwlJng8U0z7LQvA4DAK8onMMni+wBUmjkFIWxi3DlCSAehiOgsK5M3lhwyrHHgYZpwkVvTI1q18t08cdtmzKccbVJn4xkZJzug0Pv6PsiJf17cdX25C42OxpMKWgmWxPt64BtghXsovI5znGjat1l23XEqMXEyco1M2wUmRHoQWRGuZRFm0dJew1uh0qp9NQSQiKMtPm15Ic29/0TqmN+bBB5fMBbnr5vFpiuq65QQJ43yaZu2+wqz32qG+BQoL2rvJts6DBmZZBlOhJ4nT684enYgi2fneI8JqjLe070wparRFQLq1pKiU4ruiM6v6R1Zp5w3fttkwGZCdpxkQ0XINUHL84rqpmb3GCsqzBfDwH0QPP4qYb5knknqT0rDjau1BiamkRRMyxyrAv6ci8Hq+Fxl+yM/+pZonJiEv4EyZznslzdjv5P7kunkdQsZkWsW5C7Cl2N06WqyZpCGc+QZogrcESRdWAVBMPiXJdrQKXy0kHYPdc6kPTTXQf4pZLtTfMZSy11qX7gyK1UzqwTqy7r6oW+G7FdfdeVw/ShczRdFk+BgoNXZKElWmXTan5nZz0W+HzqsPOsCC8V6V6DX64Euc+z/d8FHa2aOYpCXHjThxsBNvd2sdkbylOOfYxXiIiFduOctYomE3mInV0W1YXOuWZYOqaMrTc2Z44P3GCL+DrRHv+vp1NsbbIHfWJfdKZN3LqkeRpmgoG2TAeJgjhtQNkp7OB0MafkGTlHKZGaIw+UU9K5ebNGtHjxWOPTjJ0RzQpraD3XWEcpju5skiINehbYzzZnnOGS7t3m1l39oVx1RSpOXugcdFJJhtHgoEfNGg/lbsQYIEgzfTttBody7V+mCN95iDxt17390gb3jvLTjuVJeyuXnmqzpn9VSAdlxnnATs21W58lwYyx2zzRXhY5BMlzfvAu/imx4gBb3Qsc+wTX6eN/dh4unOGyW7KusbqAo2rH0vZTa5anB2Qg+5+V1NQUHifDBeY3FfBFvdzPNAx74tR0tYlwm7Li2xt5TG4Tolyq3S4l236Bt7Hqr/pmMAb4OtkDufM+O1b85Z798j1ODJyzcujbaF7oOpf0I4UExBOma48qdkcu173bqkrQz8wtz+OiFQWhkFo7Qd+/GMXmsYRZ58hv8U61fHBEpZaBXfUrWY9ZZmqpajH7m70hzbLymCV+3gcQmk7WufY1tCFKdEeP69Xz/CA0L+/TkzFEH15P78XcQQk0gJZqmd6bKxKFVh47JbgYUKMeZMZSqrQhpnivhwNlvIzMMFPJcm/wzaxFUfyPqQoNKmvHmVrGC9UlaMrehl0tYRwcpT02f0dzESI2YjNfPAic6L/MTDZ3bJBW8q/Gy/xIP54LNutrPzCiNHST4odbobtYauGr2LqBkKDxUYac83O9ZYiG1kZmeskUkhZxX8TteMZuZrir70MW5j4m/IU81qjRNv3BHx66CCrEdljK5lKT9+5vmrxeKqtWYWR2J1/mrt+gq6d1WAaUnsFQ6x4J5xhqZS/KSM2MasrJ6vKOeZ7cntAYEuNMU38wXEqn/0+vlxY6dXIb+gd74lV2Jc7nVzF7jn59gcV5D9nZfCkj21Z6WMoMIJ+Pfc5zc58V93MB2vOqA8nd9nMz+aH1ptPa0/xC2S+752+egss9UcH4JzyKSChKwLkrN2+l0IRWxU+OeR+y2eFnhWFNBUYZ1l4MMMvHxbrkLdExFlxj+9Ocv1gyVdJl6/iKO+yu2DlK21D7o/IxRj9gk5eA1nccnJYOa2uaGr1Roz63aAe6vPfOsGp0rIot+rVXlfnVRLjpOgXPm5PvegWoLfO/jANp7d+c7TTymgcs+mmGmbJhHXJ3anmZdoAVFZrJjda2e5LNDYtc2xaVPU7Flv3QwgoNvZK9Xmd0AtEjmT4UOa31kpuATOTzGM8fRn4689S42P8Tk1/V5FdF+7A5wK0jFST/y+U+wkUaYEVmAWyKUxAww1fWt1VQXqeOp30s+fJwDxKwyjhu9dOqVpsHHHWOyvKDZS5bAXGeIM7j9E4A/S9+TDbHoyS8UcdutLjXq5Ju39TNqCYe7x6qZIa3sFmqOH3bZYG+2grbcBBf8aJUUgXkfE4XGbSNgvsKeV0KkBW33aL6jHn7NhPSloneapUKnAm/rIt3ZI0qe0IPNMy9fcd1WJUqSnXC58+FfLe4hDrlU6M0CgEyrrUMkypRHlwu5XeIzUi3h7lWk+2xmgMAlx8WCulrOmWWLM72enII8IbXIlmkdctv23KrdHHS6P0HxTcfxCNMwwWi/eGP63EOkW5i1uXVnO+g4dixzBMIScGH9uKWBnImO8kq19IDkhDOPYHdwogKxDuYpIJb1mFFGrKjXOmESqKCsKnVCVtuWevEbyHiJzM52wHpcQLtBA7wqfe5KJMIdPVYPsFMk/2BJx0s2A78thZT74OTpa/ULQ2/57rtYAduEPv/iUswH4OqORf3vBfGq/uHYqdimbWccwBLHzZ0KiBKXLTFE5MkhqslM+Lm+JktqwG7TQNoitMYWUay6smzZSGx755FFETelYXdSbSkGHJy6goXfoFD36uksvDoOvVGdrKis/eHEsk3n4oHyOzJ4CJvC1pg973Ycn3EiScWfknuP83VRcVBki5ggzUN0QURxaDixedxmF8IqLw1aSu6peO9ZdwxWFSgbnatyK1F7ycGQDyNqcNeJv6eWJQjPTiLulXqX1FQPGKCg1AoxC9usfBYPB79q+/60hxVWJ6ZnK5NcvV1IC6xbqbjqysruHCwM0dQsl3YoHc9ebX78NiXIyYzBan0QYNPx6ec3MWFLL5kb6SmfKIkFEN09bk3oeLCD+D7Fv21idYrrz8k4Wg3Zu4gM6yLSxVzOHy4lp5ly3aMlhnvrYXvNOTJn1XRAT0it5aymvURP9CdcgDEufUadWfSub5MznGC+DC8QKx4XzYkkvDu44UZPcVKFfIA9qlkZRarFgsL+3uK0FYLNYTu0qFJZVL1KoHSupMThPvtfsq05RKVbeKQpl+A6xbvyM67CsaBTCyQpciZfc8vfhyZjcjyuYrU+U5PtZRfsQ3TFMPVDTKhE+tl8ukkV/k2DSbbcOh2+tBA3vEQH+/TgLRkGqwFISQ9XvVsryc0xzATIIAHJaOm1w6svvvMWRng1dXVQH7vpJqJOjA0WDXIc+s9uCTzGhZ1GoZahgUS9+Pcg/M2X8naoLrk6rLYfyeiJIOPNTRd645+SNXbc0TmxuvXcHfTZMfrC9bfs/8iGF11+r48jH4pzUGf/hNYEUMuH73MmZYSl4JJ0/Te8pAjaGadMMKrEkGQ46xlsFPXjno9ogmk9XIPeFEniPFJXBupQQVw8bNF58pRP73Zg+wh8NbYMa3YKJYUbYR2jYDdCgIZWD3bsC8wzQTMQ73Z1jXWXPKlP4bhf1rz/J5ZvSM32HK+pJ/Wqhn4R6RqX983DMt4OF5CQPLgXH6BTF8Wu/Ti6zLv3z3uPG+S/kBvOZrCS0RmHJNAwewYYm8t7tLbpo+ZFwPM+iZE1q+eMS2pPCtczKsqS5Un6LutDyeU1hc+dKE6brR7GXvuCP26Zb6Fig0nyy5igmXxqywnY8+gfy6Q4HC2UyWBoDaPNNC+aS/aWamK7wRxJU4bzkeh3ri47ueAT/9zw+4P4imZKy5M3elQO9yX4S/qTScNyQnLYj35Km79JbeWdXGBMV3/yTrcl4GbxzqU8Q1waRxg/V/sREIqtJkOQv+bmw96JZIr3aEzQNY+5vnU6ep4kk5wd+dUFOq95me68l33pzFqxXZuVjxL+6o5KIxhUSOso2vvinifwELtno5UqNEoajOjIPDHmGG6LjbGzplbkRaMzuXQcQoFzWxO4AlBba8b1blVDP+kcapFCLqjEX1gFR/2V4C4kRfci2TxAxjC/7UKSCzOxxtViD7vKwpVrH742cOPkc63OWJ/towTChbIxU93GkxruSJazDFxkNwyWXlYYVA5pZBwzU8Y2bMTvH/nuMjuudK399XUT726OqtsOK6AiljpvdxO6v0xZeecIHMmn6r7Q256RH9sJ3HYfEK/DKP/1PYFfErUeNucKAThmW+ghyP7lqkWkJpC9b2gfA3IYOFJz4mVJSRlcpImyb+209GpjCcXcWHS0tx/8SLXy3IyaMUXCjY4kkzH+5tX2VmoA8/B0ua5mMLa4sXaBfipWN9Feh7BPz5A/uXOR7eTx6mb60v0WKSLwCXvBLneKP4bCz9LOrTdjA7t/hUCemVvqhBCpP0MKHI5kc3dApkI82Q+wOlTOVZtsRmuGBSeB4l21HyOMmPfmptwg15pbImFYFhrFAuFrnbXaM5UyRlaBJwne0J7SADAR06V9bs6WVOpXT3W2dLlzo+j/cwDxkonTPLDF196l5pUePrhqgXuBp0znHq8P2jdq4d/nbxj9acKHyRvHy2t3lBXeIZjVYjcucF3fTSUKo6hOcOt5Sn3P/tIldUcjLo1x5MOgTd4TSApD+Dh+QlxD5q5DaPfpU8GKhKLE5+hCPEEgu8nCHor2R7QPi/46o/VTFrArgh8DPGZFpLBvRdS87E+xs0eRVR2XZvigdONjeMKR/SC4Rdxorw1nUrQ/iOsCS/nfXCyoR+9dtKvXjfG1S7sl4R6VD9viSmGw89jPxJaUPa6M3FAXCGow3oLOe7qUh1Z0a/PXPdus7iLVFvJ0vSs29fczeuWlYh1qsvPcrHBHwNhLyR3xGZbV+QiyUh3rz94wsKIr2g/FMpW0t6RpuzEM53cMbmLelRRAN3OPsk7h+TgRDI5ckj6ol4BpoQiFRsM7pooEzhlhQsiNnzWZRhYzmw+K/FpPprJsLFL/ylA6AN31BUVv61iZu83NTf3mwYzpa8Eb3W56Mbe6Tv3Z6cjv3ZaDI0y5prA6pJy2Tflma8IgdM+JAIsHmJwSNNHXw5u3de7pz611mb//R38ZHHmR1FSUWVgTxmu3aoPuV0UYuhjCMn0a1COP0PvTh7olWdG77oqWa/0/gN4Bh3hx/TJWt2mPcgdykceXSHdQa0KTM/+vgTfzyFQSuy++nivNzvGjxNEdwMxy4idkcAG+hhjtCiMD0npRfkRkSwsyLecpwZKG5oNNaB+g7xmCrCv2DsaMVR5HQaL1Ppx6CKxw9oqIm9dg3Yu5XsFbuOLsh1PJBw6eLGx8tIW6FMrF2rLs616XOEd+8Cd59Inj2/2F9jS0JB7bB+GMrNBSaDuLZqTpUS35n+38Cz9Ep6JQBVVABzMZ5Wod1zJy81lLK9bGGGflIRjCuqKy4P5WRBUZAVMgNxUDGP65XpRPirdaVz43UinBrY3qgoH4+Jf04RtOc6C+eamyQDxuRsjc05Ns4aRAoJNwPATVtVUnGJmdAhsC6K0THsEcibV3rb+UMjXfZTuumjZybJlZeOAb3tJgAsD6pu4m5sQxbgn4HLUnY+xG6SJ45xFeURq6IrNXJAxKxWeZAzHnCtEYCiYwzzFlze4e8JYeqGqUMmItmVImGlwLL21ev1qemuDyEQTX7+K/cOEpHNRnA9AoYYIKlQma9LTj4LQBxIdzjyyGHIlw30Vohe+slaR0TiLrpPiJDsSqGg43cTMR1vUykW3jY3uz8owCazSlQHHhIAKMbmNyVsu6SFEzgc/bBuWFlsvYn5PTuUJAV2w82VV4hQIwpHdClUr5tm9EsXSt0Z6VByMhDO3++uDEa2gYQCRawZiSUGloWnI3KSercV5vkfGyulGeKhjsUJD+VX8huEaERDoXjS4t0OU7jtpb8WK6neMSyzXBc2pSiLK2woDFku/z/h8rHEJJsd8jtXOpvRo5+K0DOlxjBO3Bugnw9/DwPPMoEt1jWCtlJqn2W1g9ol4MTkV45JpadZVooU7aAlvAkklC/4/f4TitGNcGZmYXizJFZoS1McNwhNTEZ35iDh6ZLwM6oI1MksAnk2S+ygrh1UChF3OldRirWzcjAiu0CrpRWUc8zvqRN++Hl9iU71XCRqAACov03B6YXeA18hRz6GwNQ0sRYUfcPll/b+vGjbBHpTyo9fho2hXlDlm86rq/79gtl2CI5rejL5exE8nOX17cLY01u76nKHa8Ft9dgkbdiBKB+DZlF7Vc2M/VMRP8K3Cze+6xp3rgDAlqK/kvZgMecATXMDWfswpmgD843BHSFu25xNOlB1sPRqwzQXOrTqyCpePypLKAt6yyWEqywN6XpBjeoyiYwM87QkPRCw2KYf62cVQrWcU/1XwvQfkN4zXIqmczN8+8NYuZ/wYxwVujE2Ts9FQmH3mL9M4PIX5/41YcFBdGQUfV6qlGsP5xgvkzeDZlPtcURXKcGXXWvev7kXaJtSkGyLglPgAGA3NwOaTSFDLi4YZ2+XYAFQrysAJUEymLi1qudw/aW4G8+CdUu5UD+oOm4qC5aVGJAxs2H6fFCqwD3WQiHpAf3grhoc8rKUzolHjnwq9uOwkqPdJRs8Aw+gI5tXDKUqFlg2vH5uu4iInmkTD4x3OV+kukf3l0dXRl/mbl+tetEr+wzRt1DVg60m27tXT4VTBxvCEoamVHWqZlJW2y7kpMVot156dSaLW5V+hqdQq6SB1b0N4qulQKm6p+KrtDSaSNnVPzOz0NKU1vfU9dgGL+COPKDpTfBP8zdZsewvSeVNAPkWQw7CHHbm66jqLGwSZ0eSrQrk+GmmYnnmU00Zsr80qAfWPFVvnQZBDri/jyw+VUfcyvEX+FUvFhNJJTu0QmZ1HSHPN5VZpryx1vjH3xNw3niCySRiDnuJ//2nOUa5UUmG008bhJrdsudeA7xo72KC9n4UFnff5q7Wf7qjOV2AT3NdVqFn+e3UIEuq40J8xY4vLm7VXOgVf/uvG4Ofcrs4UNovgO4UbeZGUP7dvBrrdgOpYWOLZBl2yFH4imX1iQ3rbRLlxTikLTq+JJSSeAxdx6BvJATizV+aGspiU1hJ1W/D4CUDopRyXR8S2UKC4A/DPBqeGHb6UzZrEHYGzcSy0M/LIheav2e3rDF+RkqaN6yGwH1feCX8ZtClXmw/WF6eRxsoncuZ7pDnZ6ql8GtqjJj0B7KzgalpZr3M48dMQLvrc2fdmqMl5hBF/69K+bkf4VklVis7K+IY/89V9BtIBTstgJhhTaw6NdyPPjDO9E1Bq98X8SOgaCJzkq+ZBh3schB+E+1e3VCjtGkdb9ovR3ZPnB8kfmbQyMq7qYn1RMwGT8MKAQReFV1lysphjqPLA2WiZQbYDlDbLKmtf3wUTvnhaTmOTcb3SR1Z3DhooslvOrlXR2+3ApYkS4K14WUBOmnZhl5tpupAG0ZMruWDxaIICHY9AWf3LbmQN2JyHKOyctxxHXQBqFF7QLiBG98PGU0sBICjVxtUtSCpRME4T9ARMYO08Vv5bUhbZE5cee3eZDU2mYN4HbUI8CrQyNRlAGXnhHv2oOcsm1eHMtQYNy0ju99dnJ91yW3YhyZ716Bpe5gnLSedo1+gvRQ6mcgzPSTg/fn0L4rwp8rEbqhAfLQ4bpXKx3ReLg/WcMA5Dw9pOC4NLXMNvWVBdAayC8q/hkz5AG5xLJkcnIxb61ofGRVtmBcSk6ES9FibuhVUyjF+pH8e4ImQBggCk3YDYM4PnhwOWDKnzM7yQqmczD6YqALpUmAmJ1ZGJn826UAf2TLmih/Lj45apTGOdSheDZpNDSAclLeDlvZedG4HXCyaZdzk2Jr5enSkd6WAFwWlYfHFM8jd9o0BoPLJYURvjBp/mPTVF4Hv/A5CLFfYAB6X0mZHpVgxqM290mCYF4EDO/Hkcm7IsOnAhnmqg+oAoCoDz+syDwvr9vkD332HlTz+o9DnjjhPQjawL1eSW68tL11NKdhZETcowInpX/7OAABXsh5/kNSrlh2FiniVQSpfng8NisSUPyjgeO/Arb+/KOCNfL70HuAPTIC3QP/JmSjT1m25xq3h4YJEurGXeOBlX8+C22uEzzEhG+Z/WpeD0Koij8hl+IcjDMUd6qObp5nBJZDLav6aQbgo3Bipetnz0/ti8lXPH38U52E+P6+qLL+UDeQNTotYg1MbRFE0xnaI5NOrTVs0XBksl6jIilA7JqTYZvThF7RnqxoJT9eqoe6ml1OLCfobbBPqlwcYnHvSmri/bJflcUTEzysPLcCNCa4PY5/jgr2XhOJe676T4lDDDr4Ut0G6Uf3IJ5GFFaG8sB5659LkqpralARdYvA8QUXssitCyyhV/ZN/K7Xhr3OJIqIQub008oStkeNOvsCDn/Vz+ReyvLsL2tPecOMyukdVu2VpOyLN+uOXpumqUfWAtNbwGd3b2/s+wrJRt4771rS70yvFx4hIYzOobFA2yEbJ6b2XzZEkMX9rLhffc0p3lxWVNGelybcwthZoCmKbkjuY/E21LckFrF3m1S5Qf9KtVx/+7DL5J8Xc6tQ2kuE7ez9B7lD3VfTaNpBrp7a36/bwtsjKaqkZAEpM7KDUJw51pOx1Kvq/iaqo9/wb0jHvMAPVGh+wMNEYQFtjAiol5HFP/dj3ev3KCfrkfbL6zws9W4nY+xbjVbhFPhvbG14idWhWf/U11pH2IipLyG+5gpKvKpGkr5I+Bsqm08oeK3DxXsZVfyr12dx7+ojzVxVHRqc1NyntiyddCZ/A2Je8rULTv7e0A/Igcrye+oX0iieU3Iy/cibiCePhXIE44dOykEmBIvQkPQkaDGa/ryAhWZSwK3o4WyZBcGzPPU+rnN/ONJxr/bW0LDHWzVpln6f8B7awqrdJbe7qrfBAsH3pp7ZsjYg5NalEpFYoZtn4eIsUYRCuui5tpYoabpwsIaLIh84R7J0oCOGBYMxo7Cg4x8JPmtr0ldQKgAkfom7Xf0tTDyjdHYPyb/SadIFYP/I9Jwlysn1CgaB7QhiybnFYUr2HTFI8D8u8Zn8p8e9Sb9dOOr7nHmW8baRuqsOP4UaQNswmW1s2JSBL+YrX5DvnCvNx48Vesl+GxBmZjo+zm3IC7MZpjuq+yrD7Zx6fbxjVnmXuc4/3EDYlJl7DFyGtCCnbtss3JIdVGVjxAab6s+OcY3xndnwsXMRnbh7FaXkAy157OAS/5qPEyFLo36YIrp0R8pUHca6VXpqFz0mNT372ggpTd8pDqNcNSsYW5PrwW8Mw8QJsmE9lx+5Ew0+r3PgC6Eq8AXUZPrxwjMysuS69Gi9O9jpuF5iGAsVCqli5/wzBF/vBchBMCIt+AlN+TOkG3Vb5dTkM0WsN60AbSinIooSqCt1oN+rZDrXmU4q/ZrJ5j/khSKpK5mwdJCdeNTUoEPDEddq0LjrcOx2oiGiYwskejZrpUVatWtIo+V51UD1d1g9NWbY0pyBv4xvUaJ0qsceuFIQ1/2aLrEey+FFrAOMMpNGyWHvh+lyQ8l3pZVWFV4gwVcp3K/GCr55eCKKHq32YDP76AuOGkmQrvB5eUmCsqu6fSvHVkg5FXPhtHBmeF8M1Ez+HkCbxJ5FF5aFCuQlrn17fJmQNbPeilQtF8CEessG2Oltjqm7fhk4w8ob69qut5cqGss6r8bpfXoMtj5qJ8EvmMCJlb3nFkLcNG0OtrDPWCf4jKdeyVZjUP7zkk9QYn+lWn8L8rkl1X8X+Gseo0vKbjPRq07bC5hGF3HAb7HTijYiaDVZS3vsQWoGz6ifCo27FZi0qzMZ19MM0uZ7QvtmpTUlcIRTvaY+3LMx7N4M6EjvyHzr8up4xXzVRN9WJ8H2+Mys+UsJsYNZBEeIGkL82y+txlrIxWA62wOitVqrOkWJmLRRgx8bTgrK2mCjjFnolR4PIqsTfv3zqv/I8fFAspthmYdjOmEyPfBccx98z7YqfcUoliGqcPLvLGyHcUfhidH6mADrKidj+tFJKfB4WvPCUOs1OTRx4isfJ0ihqMLdVeV4F5MaAGgGlvXF2t4VOL5ETwp5VpzFrG8cegT99kTZaTf82PErl5rbOrdcfWGkmMplqAybiEwQ2vvLszppo278Riqt0uTyXyUxBX3oo8oBdHG2Z0eoJeKxfy9MbvRFs7BNJ4XlJowbfruQN3yQeXWcgMg0VGmAy2+dbUQg+pWcoyXVYVW+A4qq5+QmnIttjOUCJVWrXh2RijY/iVTkfTvyc1JKmLWHYr0e+2V9DVlSKYv95C96TnCFR08/oRtWtRiUOrj6sJpNGo9MGceShwVCaoj5/l7TyQmubM+YLW/jLZtV9lf3D2Uv2sHxeUU5PoWQx5Rq6t/Rk+vuyBV3HVCWGapztC3v4e6ZSY6/BTn5usdsbH79FeW7zq9M5vlUndg3kDNUHntiN1owwm3uJggNxyaOS/7LArdut+mBtvN/oazq9CDdeMqoeKOm2YS6WassqusFRgBBtuAW/vO9iBD6XmVDBwiPKzdlTpM6VnT37jNPTWZ6/s4GDrRAgd6+sxUOOrSpksLwxr1H180/q2HvTElHTa4MJk6TOlbX50tq1blf+ziLIztkLu7moO9MlRnmiXnAOwTy/wOYP+HEI/9y5R359FzzKm+ImSXVnX+XxD1+sktuEX/XJwiLfl2lefh2WVBvbTVSDxjQUrmbeophhk9qhZsrD1Q5k5JEOn6GX97dOYn0hJyIu11KF0ie5HJ6RKXH3wnu51ke6IxFpthqJPnoKaQY5PpDT9LSd2Baeg3Z1Rrwn1hlp3eKNb9dM9FMY9yXMj7KxNnYWzkqjUPmkv4l252u8oFiOgnGeHTOXd6GHiAO4kvSuFKCT5oBBq3lRwNXcgizb5OoyIyIpgs2eh88WOcIm6UkQIpNqjz3wNLMKkl3J96HDErFYPJzl7ZOQv8B2jXZQOwhArNsr5s65D2izVmEhatz2TfjufREckblfFwVph7R94MasgcyB2Xo7SIJgYnX+mHDzUNgk4nhnZUn2aAbhYY+srerNXVfs03HfyuVCLBe7FG9VPM4FGTDOh3ndfTQiGsrscpY81lov8ety8nTuguC++18IeMa5joCv0u36wdgV1oDWB1O3rJnHcsN76C2ty64BGG0bDeWrlH3qxOEBZZO6S7g8GBEheeHS9NexPOU0wElIajDWlT8wZJocU+Q355ZzUQiGAZXTHHlEI1B2z6SWp1dkyBWF2dCVv71UuPp6T1mO/QUznRxG7MKZn6WYuJWW+PiiFZYfgCTdo6PPQbX3UbcDUxVoZGlxMok/3fiqHblIBHZF/v8wZanL4ZrfLpjPL25NyuD43f7snFnXnvopbgOs0N/waj02v+HtOlx9bmqZuRV0CIsTBVG3oopu/i0EmIcc8vsmPI0ujRnt0/5zpNWRkXp4+OI7PFCzqpzU/sqkWH0rvow+wZndVaJf2ifMiwnBvFdeFsGvnHroQoCAxd1bH+oSf49HdJ8AqhazXGG6kAeWdgHrhjm5YYl4+8ZN7U24mOjr/VD3xOMzWubik9og6RPl8PUIBGJLtm1u/MbMgZSwSvP16cgSPF9mxoSbH2dZRwEnXw5T3jBpvqMnFqFeux3yZAOzPvHk+5aabu5IIi0/VuEt/wOeAa7w/IhufPuKZbgyD+1MrU6ueKaji28KK/ts7zxw2dusDOuDdyozdNpPfYjHyk9W1Jo2RwOBpHv33fuj3zyzIutvpZrPxsLfQUFxelZ2iWE16s/of/M3Z7xffcd2KeqZ3AykiN+ayrDDvuTGvFBlHkFIm/tmy+SrG8w/+CT38hK7m7TuOlxzhskdF8ehtrN6bnFBiecG+OcGp9wKYPvlijK80Cjnvh5hvbuM8FrXK95Q/alWyIsU+sbUBknO2IFMoWCodIXc9xbPfIwJ4Qe//nvP7sh1RXN4XMTK+lZMvrTQ/lKiqS3r8wZJ1C5z2DuM6k9S2835r8of3rwlRtPY9Xfuam57PMiZjOcJs/DtHH7ogw8GTzfPnh4IDAdxJ8V53sByYcjwgUC0N+A5dqythOj9wizqgvKG0vSxb1P+B4PT3heWwxwFPrWsNQaOGqBkGvk3I2b3V4AiHPrHsaYUmCrx9JfHXYSD68N2hnt/X/JU6iophfLzyYaSCw2KWib7NQOuYtai0jVCDqBTFWFuvflKMi2gm/XMsWt9MEWRUWB2UjLINuytY0idUsUMt1XbGxs3jvgRyDt0Ev6jO7cqmP5RKIdIpGTj94d+vBTPmSg4yPes46pBMCqybRjOav4sLHyJx7vC1xoayokD+3j8WXT5KL2qw/TzY5kHk9JVHXn2zJrg4j1vvgG8hbw376NKq8a9N+dzMghPxLbPLs53risnC7fZcWWeYnr+jZlduZ7SX4rF6ScL7bYeAT1Wh+hazow48rzs5Obcav3F0iQBQ8DW7RyQhFIcfjUeWCnkWObkVQoBHnilmPeX8ZELE9EiUJ15ZWIPDMaxO3rvEBOO9sHQFKvV7CHINOEjgkc4Rr1gOMsLZRgHEaIaNDG9QbbBDKWTEzOgen0BvS8mNCc0zToodDgMGL77qXAdD+E+f/NVoJ9tNJ+Mbmaj2WkRz3GYMA9QFKhUsJA0B/uBJRXvr/vouFQQAa5eE20PeuXUCxKOdd4YEqDyn4QcJfVnRp5VKtIwqOTezXjWRJ1RiXPiz+HEtF7Pzos4xmNk9oBEQJWF/I0yIez98HkAcudO/weKgsJpBzLBF/pS+P6tIXbnefh2B9u/2d64O8+Vk2O67j2dWecFgwlQbiq+g9MTyl2XuxbmEcwjY7uXgYa+pcCJXP7Bnbq8Zm+JQiwZJiBh2QMjMR1uYedFPGKPF2QqDxTvmAcHo+5Z+OE7KSOxWSeSt7PqiRa++I2akPsDOyzUFTdh0tWggZy011353uf0Z8QbnszcqpxwGEWS0M3YjH/OUa2cI3jeFmZjYDoYBm0xgyCJazcMGel5sW/CbWlUO9g3U4A0pbzhlqpvfbQrvwY5ynvhIpSc1Mt3pGgcp3tBSnWPCGh6xomohSRpb3DG1OgxH2kl9/gzT/gMTUL+iStccDvOG1Waw0N7e009khktj4K6pboRALqbir+wQqV7G8v5+Lsm2M7h6pZ+eQ0sFb/zcpdSXn1WKFDvHONwLl++2oNZcokYelW3XHUZlxJr/XdsKXR5omD2tG5BYj8E3K2FBllJ2W+kjIz9RbKK6gRZ9ym2KDpsqa1YVfF7SXKSZ1qiC+xdE/d+wpVPNDNSsxupr5aAFT0g7F8f6KqP3NZEQM3yqmtss6c+v9fnF8GCJ7jISlZBhfLJJWEcY4BwiH8iMHRx1xbzwlCof+G5vo3FsvwMckFc/lv5xZy7Vg5IXxrkJIwWTHtZUvGehGOpTk2V2xc8DHyIxX25G6z5TVr/wzZ1N9wo7LvxTYAUIXnwEKfFUT/qWT1z4os+ug/05SWX7hk+x+eF3uF9H5MnvsvJR6U1Tcyfl1ERGhISfqdbIKT13vltdP4BuuBTBq0QYEfUqQhaysvkL/V2uYXGsrm9vig73aVBuI9L29aF4/UTUh646TIwI9WztToO6CIoI75BAJjTy4wcAXQZoMcgUq10LSCjQcvu+Gh6waXYdCYzKc6q4nPUUpozUtc4RaGCjpZ1eHaLTMRdLsm3C5drQ1bNUo4/Cth0Jj87JT5KwtlUqhl/2Raplaom6VYvk+hqUOaZeqRUTzbqWki3S3QlIEmKkZlEXC55M2Kk6TO1FVkJeuE26mh0oetZKt0E6ASgY4DeJtE9gK4H9DAIEfuzLuWAgNhwXY6i1CiKO6WWVt5S5GeWo8JJiV5sijKcOte+WeynL+NDlhxGBLLoSyct3U+oFAK2zKhkUBzMSZBmcbqTEcH1OEJncZ0CXK24zwPopSaZLv11USDjZ1kuRaDYqBGBWJIhtLRpNQOnz+T6M1w2VBDVo5X4iQpzvMkSIH0my5PqoMAGRYMWy6M9TuuTFGanx2Hw68SoGJJyIq8DA2nm49BnTbDABwoEdBFQ1ssL18VJY7WUAzm9i7VqREoB0GlXl6ZYKXq+RcqZBihvWNOTDPU21Rbq9ASgwoqlKnzWUT67QIJT0cZb71kVAyCAj/0Xlxww1MtSf0ZknC8Af2a5+dFL2ZHdMp+Cx2f9DgCCwcK4G9W6m/FYE5ZSRb8uTjq00QVwH/7YF7xvuhZ5to8aC/s/2UM2pcVHuW5OtLRV5H8S97TK8pgq4gOSh2nsxuVe0MREHMKVuA57xDicbOs9ZEzya7TffDfJaZa7U/JHdEuvn7+j+pCnV3iiJ7hzjbOaJd1z7jovBpRPhO5ye5vgyaD6O6r1Klvrme7z/27ywVjrfeIe9YxX6iX1aVHxBPOvKgp+naZFuU6v1Wy1ZWZ+q7jrzrP5mMU/lU+YnQilfbRU64MsGiFWbc4vnM2fC2VSqBa1HLlcaICzARwq97FURNya1JKKXBo4rfb+17baOFd75s+dIiCVHHf1scSp+3pTJuenNBei4z8TDC0kmtO85HdxqgBcMwglJ3EfVYK3rS1yGkAFP9UU9TX+sSIZ+XUSg35uGY+ZTIvnZe2qRb71bFo8aspDuCx5ciqb1gH9qhi6KfCEcywMC+fy5mNJ1txjWeT0Y4Udbz5WaoV8rLIa97iufqxXj5n6SX3j/RmfxXqN6NepXYdBNKtmEVR1sF9RkpgtZ7Gb5tdqAMp7LARNha28OfLoiswdvXs2QuQ7WE5M5Hkc2YiKnmqjFmwtMiIvx9JHVqhXwDt1y2uxbkvu+ODOu6uLzbJ4z52ydr92rY6kjfY7T0YjrcTM+9QrCsjLWLKfkcziKssWeErGBzVvQ75EhYt1YFgcyCEQTwzvyTgRArymoueEE6UafmvZLNKoqh0WUm0pG0f/JekipBrk0OsC7Wqc9Tvm0Rj90EkrogX8Ij75UCRxbUGflFao0aLh0lC6RbYzlncP2PFghm18eMd+jwYw8Rhr3oArvkTKFueSpiNbrau58lVYpBfaj7w7HwGiR0kF10ZsuNs2rdGQD7w7QhNV9TIiGx2GHiWmqaNkQnEM5L2ax17RgGbReK81tLQ5P9bN8Wd/rCJZ8m18iH6J/07nsDL1x6Xs/zLtL8lksTlcHl8ghMER5BRISioUNQ0tHT0aw8jELJyFVYRIUaLFsIlNs/+tDnGcXOIlSJQkWYpUadK5eXj5ZcqSLUeuBfLkK1CoSLESAUGlQsqUq1CpSrUatRoD4d20W2Zstc5ej/vQUcfCwW93wyVFGv/ccNN1t8MnkyyyySGXPPIpoDCY40447YyTTi0vudNpH/bYs1tH4xJu8CXNeLq9vOzzixY1Fn6CsSQnr/Ra62AjnH9+UVNLI1RxHSq+zgteb+/4+qF7A53di3s4xdc6OcVn/ogjPUnIe49Xj/0Yge/Hj9JvP5907xj4u68agLSM+77pMmWS7fldVa2oWLD7yXjYBBDnmIfoLri5D/wADvhfVGjt0Yqjy2uv5vCoNcKzJjClA+Ljml/1+QXnzQng4B1/KK0hffVTPSY2IL/1nv59tLHpRa3pV6plCVjbAw==`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Italic.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Italic.woff2.base64.js index 2f3c4ffee..3f1c663cc 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Italic.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Italic.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Regular.woff2.base64.js index 9a05a7d57..71c978347 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Main-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-BoldItalic.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-BoldItalic.woff2.base64.js index df55d8d91..b2e42a4e1 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-BoldItalic.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-BoldItalic.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-Italic.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-Italic.woff2.base64.js index 692a1836d..aef2b523b 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-Italic.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Math-Italic.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Bold.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Bold.woff2.base64.js index 8311c3b6f..4542da420 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Bold.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Bold.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Italic.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Italic.woff2.base64.js index 5e12e15e3..c3db5fe3a 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Italic.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Italic.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `d09GMgABAAAAAC78AA4AAAAAV9AAAC6kAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAggQIWgmcDBEICvlU3gABNgIkA4NuC4F6AAQgBYkaB4MBDIEyGwZIFeOYJR4HYCYtFUWNWKPkERWc9YP/vyRwY6j4JlZPQ7kpGzkUd7TjjOhkhBNx6cyk6Q5i/nzj2qlj54ty4fxhRaBZ5OmTqZCQfG818VqyDgXzED4ter0jNPZJ7hC/zb+793iEVKgIkiohLUYRLSCgoig60Z7O6XRza9fxc1H9I3P+yBzQ00KRdRWa741z435hUaV+ubdtcqUVMpPJF8kz6pbSyq/jQShkV56uEBKpOSYgG7Pi+ts3tfd0fzPN3+zOJnbCDpFap+yU3HKi3uyOq/0ISj5pj2H9673el2MHlRQQD2nssc494l8g+9eWmosmYQVG+anspw2QYUM6MoJ+UPKtr6hd1Oqq0Roo+cH7838c9n9zWs5VSuZkKHgJ6E5O3J0scS+X/6/S7E3Sd+u0HCgNJSkP4yrWwLsvzf/UlP4vd5yVMQfajzeAFdAWkMLvL9vx/19Oz193jWRlWc6ynGU5ee9s3xp2xxhsD3SWM5yxfNc9BioKLIEFsAwXrgEIKAPd8F8/9qt77tv3tVWma0uE9EWkId4YQjMNhdIJSSUxnQ8ra07J3AZFbJ97Hatx/5tQybtYcp3Nap55Zc/ohhBKpuY/aQVA8A64DZAAQBvQfQCATc+nDj8AZojAzcRTAHzPBt98C26cWJ+3BziATCbBZP+XgVb0PfhLBsDWDgwAeB+6BgCQAXwpwgDhHwwuOuHgB60MyOC2ywaVoBq0gRlgIVgKDoAT4AK4Ac2oFD2JnkXvoGlsF3Ynthvbhx3ADmPHsJMyvixHJvn//37QD3aoFrSDzE4/gZ5Gb6Fb2M4xj2InFLtq4TGe/XHMPvKhD7zvlntdcdYxhv+WZ777LW/2lte96mUvecHznmvsg++DCyDdyP11jPwkIDsQ/PPVc4CuMohgY6ISJ34JzOfp4A+SkVv+lXzDvNErgqbQU2DtGjD31kgc/Aq0jVh0FkfITadEJt1QKE/RUI6NtQQpArd0WwCJo3eEoMwfOSKIFeuIAc0Z1n4w5jvkMWL0BbU7vqhTTMT7pyBdE3EnNcR3T1skJUdPefLMfo1tmZ3x2TNwMeJbnmh5cglBLJxoKxSyY4DHYI4CDhVFgdDT8JIaNOBD/gLu/WqLRIV7wx6JpWCJGd39HZZiTW5RjO1+I46ds+zNgrIzRSGh1LCoeN4in2CiJgbw0BIYIW8IOEAjUaEyGkp7I9iBXY2qK2sgMqTzkCARCOq2xMo+UwSpVbqRrtk0pGz2mkShapOU0FGPIkAvJoUsXh1JQA/ETWpAMm8HkrUnBWvG2tWw70joHVXgzEIOPRrhcctmHPhJJfJniCRrTZeckWVPF4Qrpowh7u2EuG3SrgZRq6DjIFRi/h/vkJbnSAapPNcCZG9AWZKqvYDgGCsRhSPCCNmLrWsckDqWycNrnEKr6ww6fCVK7C5XRUNLrRL3/Kz1IJBV06NkujANOtFnETdRXJiVARqtcyC2zGLKRnRoTiVmnHK3q93D4BOgKgxBnSvAxCPb9DNGmVJL28EasTprHVkoSC6xxx9yZGNaALJ4lZOLMbVXst/CBGO7DXCQIGknL65xirIyIIcjcqeiyAgkLxdr+6HgcVdfk5HIqQJ4s3fC2t4+YOx08EbmowAuH/i4JIkw8OQ4HZuJjC+sA2SXIewKiJmDFj1aiRufN6juQ2xrZd37TjZ0ALmwdJqvZPFgoOxSa7Fa7CS2/LAA0NJdQiao+YBCHP9NgLECLe0HcrVHj0ztydBEvke8yu6PU4PukffeEMb/NWFQ+HnHjW70Sh2FKEDgHEVU0LKFLEeY5Qo3sUiWJ8IkIptUFMsXdVkHccO9JPy1/SCoCK+iJjcu6hslhX47uzhZ4Hd3JsMYP6fuJmFwsS+QQ2oiR4YChRKFCoUaRQGKQhRFKDQotCi2sAGoPRcYYyOzfXSEx9AgiXIaoFvGBBodjbYPMgMY1O1UQ9K8JPj6U1JjBGBx74zCzC4BLxfNtpBEpxfeqrKyVU/1pw3bgE8KTC/BGNmNpb51QidTnd8NIPwCN0mL32S+2ERH5TPFDtQYqKESuOEF5FiK6lHtWNYGUeRwra2hHAVR16DCgEAZNbYrecOKHkhCODbouxnat2VCdO7POlaAQPgmGgHcPKXm+QudZsziuZNs0ECdyz6TqCxBJXYuCe2ZgmAntpR17IUzXE0rQ0xveqgecaM0RlYyqtKPsKsctjSinrs4NYNzbIQkTg242EAylUbEq5VVS4KQnSf9NG+ENO4XLoXGve1nxIoKIeIgkYZIMgnX2jhI3BuMYAhGPIharc+56lhlEgK1lOQRVep5y7bVCml0vn7CnWNnTqmhkUblNjhSxmgMFWqxZvKeQj4/3jBAGDFjpYZxW7NO0HucRrXvp9dKNIXtRuNEp9axe21tOiCojIlwfhGHbbOrAbVWxSTac67tOre/a7Z32yWi3own2g1WuI6X9ICVLst2DLX9mcvaIF+IK5qCwKsAIUxlzwELEuna6wB76rKCGpXM92P1odDSxrdtbN/+SgzAjFXDeHbsWuaNhU2pVXmBfwaocMYhARHtpVbWawWlDumCYEsQ/oMWRHrtnp6y28WEdutQAGT7LK1rYbD8bZHngHBJUKGflYHRBlF4dp8Rbl89WgCWOzFBi2cgkZBoNNCyosYCsaYMJJIS+5txBgBxoyXEB1oqCwGtATba6AWVFlS7oDoEGzP6xqvOwtIyGQjoEmx00xJQT4FYbwYC+gSb/fLhCQN4wiCeMBNPGMIThvGEWXjCCJ692fqLoMqSzdG3/QuO4WM4G3O0X1zgqo0b2pDWJiIMcyO0eVNQLZxJr2a+VzcXkOKFheWLLYrQFkdYX3Ila1jqNSzzGqa8huVlYisitJUR1lelZC2rvZY1Xstar2Vdmdj6CG1DhBsb9ZeyKty/XyDEl3CEeVuUcrE8lXLpLlB6L2Cq2PysfU8xgAD+/z8M3GQWg9Qf4JHzAHDXAiDqBzcz2ABgpQCBJlovHQMkgAF4ET2DbmMAkRb2/TgS0WIgqPJUFHZge1IBNwMUZUnLskXMeCaJ/TnKLNI7GOD5f2aInkXjLIedhQKeE14qNghQMmO2NzFlSSktQHCfhAEYxwAH6FAW1mg6pdlAqS1U86jSFVgZN0yVHFhfbWxJEWgCLXAbzTXWAuo/piCEQVgy0IeeixuYiVpT6TKzWYo6iBIwDEoEjgAQBxOwDkHEEeF4WIUghrXLhkC+AiiT4RmG56E9tDOaOPw+4qY8ACsSlkaXcBwDSIC5+blqJAxT1ffxAHw1yeJMWSwtv5d5QQMwJqyCpFPLIpVCSLZ5ZMocg8i5zE/xyMGFSQYSTVM33iFDM1VkfqecSlMkVWlwXqnaL5hIakopn3K5tClpjcY8W0DUsk1lkMvxUR5Ag4FxZlUgWZaj0RYJk0QuG8xr0yrhD6kM84EIpHlEUuykczy4Yn8b+b3bACciGsnGk40Jz2txR3s7VEauAAgrFBGtRxGrnY1ENHdqGgBTVPIVPUa0KSf9Q9ECTcwiSnf/34lrVHasAYTt4O7iBkWtQjTkbKCtkbRko2GLyiMoJA/QbsXD+owxaHEyx1f6dL/mT3WkSeVGopkVWyKchx9sJyswtBBbGXgrNMg3qLfSsEJs8brVPrcMmIAAmq61rcwnCmfk8c3jYQWwQdONvg0eYtaia/YiHvjMFoUFsANmFmPJKU8l0Qm5oSeMgSYK6qzcbfYZd67z5BGAmudToi+uA6bE61UNcJywdLbVHDXDLHy/nxFxFFFuvrOfqa3BSb4FgDVco9LQV65QqZGOyX3PCub0GojKCYAiVCZ8Vi62BtkFJUSSwvGC+P3vs5nql1jaLZVBHLN0SlOEgT1DkGH/MOMu1f+5N1CjeUfEWlZYsbselNVHR4h2c5kIcVzpkedaloKPu1wZRO+8wFTuEeL38aBcS31ugAeg7vmUC+bQPOfyV/yMiHeuH7dE5yRil6Myr769ZQd3RYcp5VOpw+hSMa88E7ovdW07bU6ShzeJUO3KNBUjkTOdtqxpTDUDNqw3+wE8sYvvLaHUqI21PJW6nhC3mKhAh1LzDV1N0pUkD/wi8zgkPmEiYfPVaZnTDP9xxvWt6EDdRcoBnJvKRDbLfOI7IFP6j4M4stMcRYy19LlgQCU/p+tnEFsNYemGXj+zhfVRuzyXqIzoCxDHYK4TsdSKDByVE7R5o9Kk5qpavOhCr+dpVZNVXaaplAfkzJBv0cfN7vM76qA+5dRAIjCimX5suroD7T4yjVnoMSA3wFFbuPAhiAwA1Eo7hESoGgVwg0otLuEMOa1eR9d1PR74ZIIlYvVKLFiyJrYdk5TDSDEt2LpcCFRZbjtudtvgmYgcKD/lbtTMivWpmCe4Oi7VwWZDZX8a2mdq0T6kog+lopbtyab4OF4lQihy73Tq0CF+icooWWqzeVfVDKk+Vw8ce6Cn+WNyK2cW7IWlWwpDgw3cVnK9fzqBWSPzcUMEM6A1A8gn8e5IXPVauxPEHCW3zncN8pX3eKzCFLDc3+l//OXx0mnxdJVjNotF8gyYWtRQS88LJQTeN6NlnecjA3sCY2xqxmEiW2C+B+9LHltBNA+PK8WAOn5Od+WIrdtx4wjPUWkH2hCfNa8S0WClonbM8q2kMcvD5xUR5ohStVxx6zxvDLYYZlL385OGsATPw3EXISedbNbOQtLXHKNKnbWG+lwfRAKZaCLAsvihn6ykFvLuFUZ8As3MLLCy8H3jkQWJhp4Vuo+DhzMFBlYwpE8Dkc1qNyExtwt79yqFykeohJQOG69+EkEVocJRptcy95jH3PoLqaGQRCKbVSz/lnUczU9xMrRxiEqJ2mYDebvK4rWaUbLs7AmnQQpDjJCelxLjcA8c5Q1Vzxb5NJBmIm3ftj2XfGmzMFcqcWLAVscTFh0xzh0ch2piig1YjNYGEeqTxEpMN68aNwBdYg9oYWjJR+GWbRcW4i3C3lD99qiyQVM54OSC9aR4XlYwAKWgN3MMP4sbkzHPigebGekJzZTdFeDrqRPlVeZgwUTKO57RtxDOh7wbzN6Oz4NT8ksWLxw7YCmWU6t9ZsXuphQB6lBxTU7mLvoiUKowb2aqcGbhhjNGMzIA2sNLQCToJSuurfPGL5rbhaEuYlmFxTFLDBsgDHNfY0nUrY1kWwVgN6nUXQfqyf1xtyy7crXZjzhO541kdy8PYKryth1O0Xydc5+bDsEx673ThTGwJL5goUw3pdG7VD8xxjDlFA6v2DTLhE0kSvJXZsjLbyfNFyZCa4WUP3NMx/igbVb2Wr58OGBObaKFsqblt0Zb43Y58TwZ8Q3wQ9XDPxa10nJq6f9oiFBElOwNgjU0NsY1BeGVcZ+sx9HAl1niFhgcZiFErkMPikWLpepLVH8tWZT2cR54X3B7AKx38qRpV7IYfW7fxwMfkjhBL0hSROaLktVjWH2ena9Z4N0l8o/7nOTvMOJyk/qSjObtpp0E4AILVVFxPdWw6NbLUwLkuKPS6GeZJeqjGcgYwNBFVuqBYO0XLZGoJQ/eXBbEDQhN1tyOtvJKkVDa5iZtGyI/HPsqw84LUXCMF7JhnMFNOVkxlVyj01Ru16lh+JRKvhGLinmJucyTZ2M4h5b09YukwOEMjM2ZFPbLswB3lmQH+9r0TSIaNvu5xBKvj1x1DX0Rad7VG4nKSNPQV5LZiopuVXN/zlBnJ6HhRFKox+Q0YmhGr9igskWjMUO81LRRho1ZGArVMn2TNde0IqUU33LWaojyI9WBTyettERE1wsVytgsDJCJ5iTiWNYraVhc5dYJQ8R+thjOjIm82bGKgSTCcXvdmUgQyJKZXVDCrXVLFc219tKQ1LREQSjiMZUK/M96buihzCfcT0R35WBDLR6m2ULsei6znte1EH1dVhMr306dqPaM6PO287FBieSQXf14myCplKLcUg+LD8RXtAm1cjD2Y/JjG9vypaEitb7erbS43fMhD5auK0rWuSyKiyBXLtR8DZU3ABbHki7ZAN8EAmwaOz2lMGJF9QsliYFtiNhGLIh3n1D3QmMJx0tp1smocXPdg3p29Yp2rndbiI8mBRErbTeti0XOXdF9Mkc5U7OTIFS3UmlfGo0jHHAX+sXb/AgoAlnzIhFsEyCil+gDE0b/DsDgdTJHbg1J8+AK76K5QXF0fQFXmUtJuUKDB+PFiCHSnjrrvpnQ6JXpeyYVSMfFTTziWhfc4C2AxBeqphLybhCstRrZppJ7SxTuGYAXdZMdRp5EJs0XGHLQem6wgEk+I7vyOQ6vrRjl+pzmrQSbhHud6ToMRbg3svCZnCwUku3qsVjKmVDziBzxWkHw8PXmhIGH1tFO11NGVZKTeVEunXyO+79Y0yPeKGIIV8AralJ+qMthrSi4qY//lCYs6BU6OupkIjAfEzUM92nabNmKaE70VpWBxu2GRfRqSevyUFqiEDcIpCVqXqJsWjzmx8wTHyG2HbvqRvMGgNV5xxGXAag8RDcQbZo5FUp5ZvK4ldyNmQw3Tooa15FXGdXnXeeptXVDvGfihOFi/Lr4lEVrxRDNz2ONaUmEl/JM4tfyoXDdagBhTpH0YyMU8UymwxarGnGY7bdDDy1Eb/2Hvkc8cwS8VOGr7Y5Ik69qTrNwGF+4ZJ1/CeXR8UkMs/HHK6bZW3FnZEYAnNUY2IcAaiYYxUPbsLbFdrBjWYCOQ3kqt7oqL324lk6m9DvnoL+EYPNPF0gQwcYan375W5RYVgEVjsvjCyF5mlEMXk2QRh48nIeCFFrxZ2eZt2fApKzhweKcnisqJ8aYp/OGharRnvvhuDyaOh7VCvIzRO4LYWkWPEOIJ/GAC8tFn3ddJsNRaNawGd7Fyzhv1A2svF+Pm+zHbGGycrDjWP8QS2ezZrHDRTkWtLwkJVL9Q1O78hDICTrI107UI8pexHcDoHytcOGZx1o/iwszFEXDyQNjpJFmO3iuZZluDBd4yZ0KwEzb0IbGKaOUntbCg6ZLWrou4jkn+pMXWWzu1FiLolgU6E9goSZ3djfsB+CB5TGUSKulvw7haaeomk0AkiJteSITu+2roKm89FN63iw3z7slmbvlH4liZbe4aJ/uJfD1+cXvOyB5xFez7PlA/jeou9WeZgvaPfL7LdMbGOPHvq3MlosW8NIN4z9mM8wZk20s/6ewEArG/FpeGqAuxG9HXZRVb968/yfIYiLs7Bb7cyckBXL3XbE0PJaT/TA4d7Q2XGmOYt526o8s6l+/hfagp6fw0Sj3UURT9Kdge/uHWwL37fLvSibBUzTGZw+pIqOhYBCNjsmvMrJuiy9YBOp2h/ZwSFbLY1LhRgVA7Wng29HUTgb1L65woWebf2cTaIzfRqd6rOwE6CyoV9ffuR+qI+oIam8X+v8KacrH3rzchcJhKDPl1UYrvOmlgdybZAhxTa5drYKTGLx44uPj8EzkVcWiySyHaFg4i8t36tPiXEbd0Hw/e7sd12MIqlUIrIOI1EHvS/siJ/O9tEUSwU7DP5qc44VOxGl/XfJA0jANd12T42o3TfhKSibfSsQylrCt3km7SMhv3h6WzBHNPlfpk2fX5L63L1v6LJ95a748vedBF8HhktTc1j+5SSorCjmQfPnjSCbfNHX8/lqz8dk7yqR38RrXKhaNsUVv/KMKmrLbuR01+0vlWNb0pKzNXF6x6tIf+sWsG884qLZyX6kGUwTWpvXIN0ubnl7UUn9gO6ooh6QNjrmtTaPqhWcUlge6MIt3vo9pCwdLyzoN6QFlSyxX7Pli2rLqfklukVCcZkQT8xK/2dbWaPDtq7csO1HGo2BUDOH09Xt8v8x6tLo+N975aOD3OTjHEe7k/rRpiAeginY/WJyEQHzM/E1G7Pr4plqNvulPrcvJPUePBM/HZ6rCu1PjFwekU9ZX5m75gtC9cDoyuCC8nruHGx46OanaYL7aPbWEx46dCFufPeuOCwaJO75jxBmUv+nDzi4K08rifdcUVq1sL+9j8H7k4eS/nlrjcLsrHRvLvpGx2Cxu/lBTLdUso7ExFu+/Pp/s8XTZao7AwCXtNM/QI8idRJVPEos+9dWLZ0BAvC5/h1bKJj9NoVaJkfrz7M8N5fnpOiblFFSpkmBwB5GCgfHOjETMz370PItFOAGioYnM6tWI4Wi4mV1E+ddxjHovRaTY+bDCTqM8SyFxkfTrJYfQbP7dgOl9GiwdEmvp8+QdhYvqa38afJnjPvVdfxV/hmSbvVHnelCTkLq0Lm3eatFwRdEJ0FRx1KTxqK7QvVoPpc54MIQgyib0+DiBtmFCQTTrXBYd4UsbUHU1M3D6FBA/KF5i+Yl49Gtrs0lWsMz9P2T/h5GORWbODzSHqE6cl82huQqEadevN65vn0BSoh6o90BWnRBtNZescZaMpjsrjvYlmQkJcb9EOqrQNuoeGwDg+/fWhaM9lE5mzUbJC0uLEBmR44HqiR/lu5JFrQwxq3H7VM+s2tgAFPuhwtaV0plt0dg+EjP60NgHRsTyI5KTxD7u9W2UEJGvSr3T2Xav3Y6a9yLUhlgBaChmR9n1HeMb2VGE49ZslqrLH+PxYk//txRSVnFji+DpUxjUWkXd/3NnyV5drtl1yuaOZYIucdZI1EH7kZOcPKXD4cCHyW3q/IYMfyy3Nnamj2v79AabLCzcKogTvwqiwVltnXkZcdv4zoBqkV3c81EWmjMHHp5hKL7brdN0PYAl3G2kH+Au7ss0fY6dPWx3PBqvmNy5p7YjxjFRgz3tZdK6Z97g1ha7x5mR9ZQzvQteehEO+7vC3LtXr00cqF0qXmiwmCH1ZeenJx/4deQYOAZJAg/xq6CuvS2oL3juc121LAGcIXXAeG9xXXNepbomUXvJwCr4T+ltUa6EaJG3OFLl6/vRqb1DFU3bnBUXSdzCP7QVoXD1D5r/tNg22O9P+/TP63xbfqLNO8Lc84SL26TYN9CXSnZEvyNV9v9jVvr17bpsLxIg6HKHq1s0TYnciKHoFLfN6aoL7js1HFL/dn4wJ1Re8NE1+BLJa4q0U85u3G82Q2/oaW/REa+uH4U3Huwpm2fLa6rNl/Mum6trUJzPeDC8tsTFb+S+QblZnd+srQsY5kJvI6Lu3nmjtGhqMXNwRth+3utR+55oLyyEjFfY3sS89T/Tsc6/4+90ND0db1QMWyench24T9K0qn1RcJYhsLYnzFuoTyZ62lI5aWFq3aLQjMLOC5quufvDoiax/NuHmHERb7SXXd/si3G7O2QdA/Ny63RpZc6OoKm3TBfxKdxOSp79ydRjjQPWZloo757BVmyYIxTeTs6uMdKyHlocFpRs/W/vGJiDISqu/Jbyy8ynWiN2ge5coP73HAd16i5wO9yzUX2OnQim1m8BV4aF+eFVooLVBs+QVPXPaBiEhLP8zxYXI1eqzMG6630Zo2OqLI9j+RWgZAqMTiZt2ApB4df5Xz0cBfW0vs0py4zGUN6nQNnBgW7LA8n81XHByrt5XR2qrd1GmbE8JJxxG+SqgxvLvexy1cUe5vwdo4O9N+oqrxMH24Kp224Dox3s4c3Dy0PDxYG7BprJo3PODfRWbOqJJaLlXIZDsqlrDmxqBBcX8IMjBi+zl5PrWlwUpTRBztbTAH3yMeKMW5UXzgGEBIPC/kMHYX0BReMHwCFo+gyia+IkYMZYYQF6jWhLbtSnntJ64jjARKPCIQR37tIfEhfl3yG7C9lsRFbDUU4DrKiExLKJVzCS7Q9QnhQ52FU9q4cETbcXN3n3zx7bGPDiSEY0+vK/w9SZk1KP2CbY3svecYU5S8TqmDEnnkfgELiqEKiYeVhxQH7QZjN+wf0YqJJDP4ZLt0q39GNw+xmEBogDbRTSS1ekaNPuhwIx/3g5owcjTcixf1NxB+1lgfeOKD4+TudCFYA/umbzWzBWULqJeOkwan3OONMwWNoZORs9B3YshWzdO2xksfR9HZktEAVTKB0d7XzuXHkpZO9fW19FxC/B5RnoBY13MzxF6IUX9tJQV01UdKpOOu05iwEyGoStcy0G6A2u21GIK3ZzX/lk3bA/8XYEajQ1xVycC3lZ8GZph/6AhZnldGz1E/ZO9tL0pVU7EBT3zbt8VI9DVp1iP8Ndq0vzu1ft1Otk88f2DRFfPYOxSXmFCX73tiF5GaNn9EpDaVtVR8Jhecw617e7d01JYHPLL+SIu/cMh08XdNS4wsNbY+5Zex5h174wUF+w+1EKwIq2bL3AHlpriydY6nm0zf5XYzdox5BknXgKIqd8Mg/9bv60qTMcFK+VrEf1UfBwP7sw/iPlYfISY8LZ676EKEP7spi4GTF3l+wK7FAFFyRvosopAEtKhobhu/fXtbNWiAvrvTPvjfH4sR7Gvltb6j0z/4kJhLExyg+OSYfNFHxe1btTdpfsbqubftfbuAlMuWhtzssiLcEKBEofkrU+Hu7nPpwACdGEn+GsNqC6lu5uliJ4nHJguu3QjtltAe1tQNkJ4HO9Tc501Kzd8+b5qoRKHzKnOfIs78C4X7RYNzdVswaoZsB1/uC4fTPnWZzuuCtR9eMbh00h4sgMBgeaTGhy/J9aQ60BIJsNoWVJiC8BxPWnLN/0Y6jnFsznZKIie7YuWdz5+ZN881emT9PYjAfbBY7qV3Y0e/uTI520MIIkkURPvNtWkSq1w4Yhiy4rQ2+SZmFxaWTri22NRgNM7x594PmU3Q6HFkkuEKrrgQqIyL/rR45GyuZkSGT6Nc6/jRWG8vyWh1dXzG2GZ1JnWvtwyHqVFCEfyreUiXDIH1TUVa9ZTlj7Mxgy72FhfZLsGDFjZNkxK0BV1UVxU+fTgZZdhwNjgo9+Wwc7rwxa2q89CRf4tvt3VDh9seXb5zT1nbwRbiBuv4yqq0ZWSJZy4OeYakOJDPbu6uPnrZWsZ1sRyFuft67jecJV8rEJjeZS0qDoAlrd8/PPCPP6f8r5MftmD2jMYrvRn+gSsfPvgR+TybRz99qmTR1NHSIhrRb9T0smEUZ0foN63hj8OXiG9j9qkmyetEk2aQ/kHdQlk4RtpTxkTpgSMPzBq3fC+mBvmHPnLaIi1PPXn4jpA+j9GIZ83EqUPOuMV4d8VTgDK3w8ewi1onGNs6FSmHnTWpDj3nBOG8gdxPmBANvcmeE1O4pdEFAjcJP9p+F4zh5ZobPwef4dOMq6kGHPfJCyqy2Y0hejylwId+6qK2gQZIK6pnIWmbY8nnR76/x/9cF2ATIaksGD0E41iYxV63qZfsnmQJs5nFlICR2efdvpHjq7bK+/8bfPIBu42B2KVwWsi5XBNM2dzwwGs/m0aKDgKvL7na7XZX/7UX1HguLHideKJJtSmPGjfQOT55quEjjquNy+fDGfRO1afLYpvr6JYP5iJIwcx1ul/cIBwQAkvlujpjmu1ccZ3lbKqWFI9gBs4sznXEF9pjfRVpVwpYYEJjJt2x3KSalRBg3Ply0XRuKGnJvCBwpzNn+qe5vSDmFkGCCFHE1kFEBDcBsxXV/TsRhbYr3CgawQBlc8C4IHQ/e9V1IC5WMmzGpDIDIMUSux5L6nhJK9b9Z6lhsV7v8UEAIO+tf9hZKC4zwOuPirlt35EPQCnowhpjh7uxz0Tr7eBtgcOG1L+kAcKOay2kpWRepWavxfOS2zMSYDu2/tXADLHSy77JqUky9q3a10FEnNUmNFqJ416jTLV71w0Nm60yvSmFpkR8uyuPfyaPsdFTHa9m/+fU6ySbzcQfh8PemLITJsfEo0h+GIV4ZGMtkBvKYIR+1oWTmfuM8Jed0QDaDHBP5q1IrSl/CaFadMTxyy2qC/bYftc5Py9sJWiIb/47/o8z4dE5h3LsARD+9PKnPfHCXNJigTXS+j8RVMD9Or1SasK5bE2s7Dd5/ZPj6UtjtAV2Om8T5FqHYNIHa2BVPWVoqL230hEAEIOu5Det0wlkMiIFRY1kRl6vKRF5dBhABsfGfLDZkK6TS1a/+CDVEP3jOqnrWROlm/JfxGi3b31Ncw5a7JlJPMobDGvw101o2cOl0vN5cZ89bH80WZ7XJrqzFgdBgcFHTPXGh2JYrbGNv9ulh1WuUzdNSr5eowBwPGj5DRgB086G8uuh+2jvhe5hjb+EOiAXXU5hqcF9WmKTlPCNZOIYMRGm5lY2jikeacAjr3CYkmXlavDC2vCx34k687fSuvtk2+hxapMVyI13SV1Ovs0/cy3ZTv5083aw+jA4iiR6Np3DFUL1KLxoUjHFRcjNR/7Om047ieyEZEf2i61x2tUp6GkgiELlfUq/ido+Drrx3PND7CTr+pcSg8HZpGwdi4IC+ArbkrUhtqZebcv2pts1NReFRAJ35x65+3uvDX5vEsgsqkKJxj/AShwgI0kSkaHR0Lt2u16IVptzs80LsgFNC8amRaiKNUjayISRKrLymPw3L9gTSFfY/S5CvejtVqEDQaPO5fGOPQjM/MIS6QPJdRO4oX/OXOERUe5HuLiyFYdmvqXZON2Ikj9RkMa0OcHNb5hKwWUWDOCuvIdO0SbhNZ8E19vhIDgnPa9mO+Ta12vR5aumvmj92SWUmjpCU15CotGQbEDtPspoNtHcSHP/9R3W0IwF5dSB/izA+GutfBl59DG99XWtmGZHEzhM0LfPHm7unpf9fNHSOGbyKjEcet2fLDRLOAI69GFUPKgCaeWP9AK7TBS86BP0x0AZf0UywGqRFoMv8tZw/uskTJgmHhUPG7xNQd3ZcvQ+T11dYuBcsQ042je+9FLfahma+/PgkmoYyo+Ct/fRh/1B2xTB0zOC+t/nJ3QQECGFyx9+y5bIrJe/0v4iM/vx11oX37IOp6BIPcFEBdCOoDOXuAmTKbqd4ll06masWOx7vyhJ9k/40vlrbmSs04By1UyymdD8LXbz5qi4e5b04+bogSx2/G+iGJR+8J79eL5u/9BOY5sI0rL1LnrNmag6a+tfn1xZgXjbILHOa4KUHcLAIT8+DVK9BsW30ZXC1b2KjLk+5LxhOR8PSPxLcnFrfr49o4BxYU6H3FfqL375r6eA1TRgvj9PIjXwgL/RWrCuvwf3/2uomXnAe3J6cDQnyg6AGraDHkKyLPLAoZDHBiuiQRDqBX6t+mUpIQbj3NRnt+ER5zd98Fls3goAGCnfymY+jMZTRvLvihRoUJZ5oern9Ep3/UF1BQlgkWbD2woF3bpoouXVYnc0tq1bG13Mr5/8XK/8ztXLmvRRdVb14p16nEDkHj6d9Cw8vK8hqby0pLWsOFA3sZfZycbcdu7b9yGXpDTw9gWp5q5LSqH8fCpxC0l2Iuzk3OMfKCfIkyh4DVb9YsLp2zlbb/AnGuBXIaoVSKwIYF0ty8oyPwPpjN9GPwvrWlgB1HOM4SvKQoNlfmK+H69QD5aD8zs+hZiO2hGO0lAstaMYHfaXFYBwhHn/3uf33f/sJGRupsYHk3+r8QFhPYeOftR8B9TRubNkESbsueZzFDc8m874ivtDlUySPi3FaHRLXymPVH9RWABtC5UA+zWdZw5A0OWfDEtUfbN6d3djsrF5+Td6rSjJv+osqAr1SgJy4Muo+0A2Q2I3ToEA6dUyYfQ+ssa8hu+rK11yU746PhCB7eYTZDTNCNsVEMBel98XccYvWD4vDuORlW3ha4zc/qaqG5cI7y+pKxZipUHJQfmF5i+z4XyRzQ4wGLhOZOPq0BAn4vBM7OPZLL2mOTYsnXyrEXNMhmy5yyqVhhZqhgOCSVmU1ANCbZWPJPBoPscNFDps8hsfuMc4zTxmsrXKL+9fGr5TbECkDiUEf1e/Jt4bDb18Pq5EB+L0BdxB0/ujtCAcEVZ1ZPQnPDbM0dzu6vYOal0D+Ik4DxOMAgIqGgpFHknViQv/S5Uytoo7yOlXGhZ6O0KTL6iMWpf+d5fIpFjtHjkFUnRP+glQVlV7jcQIqo4D7g4ZE2v/yM3lKo2OyXhfdRISmVs+9Oc0NOZ2HpB+33fsAiPk/unnW+++NhON0EH8R3DSzZX+WxyBBZdFeLFQKa26szXUEtc7011VBXzscgu4OeTvgrDWqpIAuSDKP0phs8hTB0WUCDRGRAkYeJKiDmZolUTCRBhYxNQGi5WiThQEQWOKKGxdUsQm+JmINxCWp7VxipwMmCCdedZRYtH2C5V4mGAiZvARO4eNhB6a0vEjN7O8v5lF5iEQas172lRXIeXb+ihKKdBQyoFOLaBVyUctpwqAJkNGdvInxaZJBK6LglzkRSulom0NClxpavaxRsCVGGRAYmSxgF6MgRs3GZP5GWNbR3Dg5Q0qxXWjkyuqFAwM912GSXYjmzt1bNoTgtPOv1oUy6sYZvV+TSDC6DhpN7CxlkWMoEMUbgkDI2FsrHji0oIhJ7ZyUGZvJJ0JAooYpUIPKQqMMdHIdYZEJOoKa3kElBuoBDcIokkE4AdptVsoBT3b5MhAIgNN3L5RUo4dJNMRaFMKx4X49mN6mzqcCJgSrXNVI+k4phEmIekyuY8Wj1YaddRhLD6qmFXDweR8xCTADz6DJRFjpdDAABWL1QP34Yf3UGq+pXCgv7AgAAFqv3PuSu8/+FOYHb0PcAAApAAHgiGanFoDXkcgEPnqi5ZC4CfwFL6IQR8FdWWAtG4C9gNeYEzRSWZT+KfgN+KAQPwNVgABOkR/ZgNDCskdo4sVLSmgmR/S2r0ALL/DVDsANupZEQ+2GOAEZLsW+Bs2g3mF9AHtJHQsvAYvTKWKgJJFE5SEaWoMdAMpPmiGZA1zyxUtCMDYF0QZL2AZgXdbtwTTY9sKOT4Ci6AFb+ovggluBBwsRj3oG6QSmUA03c/x/2C3hAY7YPQTUigTp4H6jLMKj7oUU3pQ/bgu9BCGb9f0B8CcJDYSwXBOnIB71EkbUATHpjlwElHAQZObEVPg+G0WkwTBlc1S6DvBh7EjMqVT9GAHLgfSAj4dZE3s7gHie0g89swFtQCF5GH8EVHC7MXref6gRajAYmUTc2qkXkSqRUI2cpXAxPU73FMPYFsOw/vBr9BXLB6uNgyGIwF5BGRQCAbLB59hPKBh0sJVLNgYELVep2CBgGSR0ahtA9NAwT9twwnL7sYSSuPOnE9DDGNNKaS8pkm3/BZhu1wByD+g2YIFOkm4ZqFiaklytuiRniZTx6jfuQkQ4bUIa9pJsQvcKC0REzoAn0MLPBMlLnZRl26NQyeiAyywJ1EmyMtpihgUjGKeuNO/UJRjKGDYLmM9vFJmKU9H69gsyg/4hUkDFmFOeN58OS0xiOY7ZmZsBaJZmXTIQ6ZcztNNuAfwQHm0cmZfjItNLsjT1Ln2M+vcrkSsRglkzWBsykZL7sxvU1qaHZb7UJ+4fIGZmspgKiB33SoD5dJmEPYyXzyMwesr07skxUxqyG7VF8FOo0jdgzx5lIgwD7yOQB58gyomd/0l4+jziZ21kPM5MpZL0sWlCY6vVGfWoIZIaZoL4eR4dsUFi3fEQmY14igzoisAtPVUPEMsK6U3wIFb0CbX8hIKOFGJE+rhsFkslEIYaEOb3Qz/5G9XzCvgqytKP/r2QxZfHPn7x/gfrOhYKKJgsdAxMLGwcXD5+AkEi2HLnE8khIySgoqagVKFREQ0tHr5iBkYkSMwsrmxJ2pcqUq1CpSrUaDhCCERTDCZKiGZbjBVGSFVXTDdOyHX/Ia1Z6z5thij4Mb21Tcsu0t70fuaOzq7unt9HXH+GSy6657oqrBZPnjgyaTE6T29ViLW3nLt/aGe8i+TOzZmUGm7OW20iNA70TGSKsZe/qyaCWQRQbJDUM9hubaxodHxyePYLFBgYx4twbrtNZDupugKcSLRch3JK6AL9kthu9CMguzLMimiA7sPSFOF9Ly2LeR53tTGSjzu7IlCaSVAKQ1Qc4xhxrvAEY0WJRiYe9UzoeWnIQC0XBawqleKahphTmS9xS7gmm/bt0H87AS/kvJPnGlKzaazhfXfr1XerWM1I8Y7ELAA==`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Regular.woff2.base64.js index 9d024b86e..1aa0a123d 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_SansSerif-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Script-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Script-Regular.woff2.base64.js index 984213925..5badc8ace 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Script-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Script-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size1-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size1-Regular.woff2.base64.js index 2d7cac917..a98fcbdd2 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size1-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size1-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `d09GMgABAAAAABVcAA4AAAAAL/QAABUEAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAggQIDgmcDBEICq5EozMBNgIkA4E+C2IABCAFiQAHgn4MgRwbCikjEbaDtIJHUQvTJhT81QFPRVb+DBkS4qprpGp4IPxh3+c4DjZNzbv51xP3IySZ/YG2+e/dHQeHcISCUQcYCIiA9hySVk1nrKiFGxZiLcNFx8ftt/uRsf3IkAfiXn1/aMaalGB44cJQLBzCxCPSbuAK13o9X/1/j1P4Z7beHrtR2D1FYn5iUpmNxKU6c8jv4MoBoibMzMqJFn0Enk9dyUWVsAJf+eEdO0AHDmnpEKSgdOvbor6idlc9+dhS0dlpbWrtpdc7gb9lO2WiNzsQ7bCM+B+HqvkXoDE5GydSRH6y372s9dPFGVbqldYGasFLCwu+hkhZalj/+7Xe7D2vXwdZJi4yEQ7ZudtvZtIY6gn0n1D3TCo1n7s71IEFJoeSKAQkl4XalajYbfkIu7UqtdZthFGrQ6bDunouphEo2/6+WY8au06FQgpBBoK0w8qX6N0TgCBO4g7gARBjxE0A2LJ/M34I5oAAIXclwA9S+PY7+Enj2R0AG25Kk9zkdEbNOJsD2D6bBGHEGS9FFWKAyF0U/GhFuOkvjMPJkmOWJZY5QTxJvE+SnFK1U7Vb9YrqNbVMnaDWqNPVRvVjmijNy5lf6QgdpaMnAeBo5ZiB8N8BCV3SR69+WCPo9qUOrt5PfuJ9b7kyuX1y22Twv4r/LP+JP/jn9qrbK287bztu829N3urW77d+uuW5lfR++9v2N/Vv6t7MAgThOlNdYRCg1feDyOoVsIdV6LtfnrwF2pc4lqb1GcLStSAI+Ed6ZKwFOgCn9lpAzugKEHB5XEBArdoCElKfksNbE65LNCVGl4lh1+X0qhOCeyeCSCHYTTXU9UlLVAhndKiOD6wy2bKjSccDaSXUtdExOrI+BRr9cWiVkXBMVIJ0FPQjZ0lZ0DxaI7Xw8DVU+tVqo9jZH/Wh995CWtj57buSpmkXGq/fbNvmUyRpKHoJklmUarSlIOWYMDkmA3o4JmNpxlKLhHY0HA7iCCWigAqCGELPNiAMEUdAswdquG25ZYpISaecpStpGAHDK17w5WJ1CqBjIREK5xEl1YUCHqQvUJZqgc8tD18dAnXG2gDmAjrvPJLXZf7BiZaatmemofYCwLNE8E6t6+gpDfcfmfRsqqdDpW0ft0zaCV6DDYLtzo+OoacQ0oYK+IBhpwWi3CQ4JkadCqBxCeIwBr/BDP+0gIFEvRLL0RUVfIJUxpaDbjH2FpsTomUG4Oy717aBKOqWDeWJ0GrQ1Q6hLNLGRlOkzroPiYVphltgy1wAaUGv5+r+iO1MJy0NuM0VsWpisVNxD8i1a8vWqA2vbYEEmai4CcSjAimWlAgSrlgyGoG6YCopmiGNCmQguexsUa6o4G80BRmjNB5BdpJuUY7VPZ+pn154ivioJwZFL9z2q7vX041dtOi+Y5BB3t235JAGi0Pm514KwlyW3ECaBccqkLblV3lMQ5lrxsR9JD212j9J5hkYEYbOKeIBCYdIxTBvpWi3p5TbzQA3tAcSsLYY8facKTCREes9j1yd9GHVIVbA4yRexk0nQTZxY8I5RwTFrBksOaalZ3Nn8SSUmBIZFB2kWIEUJwiKFyQlCIoSBY+SBE3Jgk8pQkCpgpmvh9ZhndB5dc+rlODHRcPz3Q1aLZXyd8Dslhny7y3jMEHK010IlvNrxW6RJlTgoIZAA0EaBOkQZECQCYEWgiwIdJCKEVI1LuUkI3FZutp2u6Vl9DH2btUEcvz+0ZwWmCEylKqWNc3pDH/7gY4hgSz5q3JmG+7OWx/m08yLir5/G5L1cvN0+6GVPMinBOblY4Ldx973c4Mek1KXQXkGwkq9bzqX86Ii5bekAFLJMI0AcE7foYJClHeqgqJTGDlg9GWLkYmgfCZlLQGai6a63IwNVR11En9kbADVtUURFTdfF5QAUBKrDsq+Of0tZ1FwEMXOcWNUkaop+gxiSlFK3iTQ6oxKgme0ZG03/pSSWc5AXZpNCG7g1gspjcYw0EGc7pXnrROHXv7ZaS0UY63wmOo1opgMc+LDrZrWJJXUVpIO0pxRhBxA2DPn7TGjrBxltgbsiBE8S/pWtUtQKRhhNgmFgXozn4tCQSkltpgzeYkFWs15Wk4tIoRZA1HOVTWnWCG5SeUJZ6OfFl9KpdaY1wsEXklqoI3eY/k1TL6Yt9n1hao52vp3L4toCsv2uhEuj6c+qdR1NqiUZLLeciz9ltkJXqpQZlOM6YQGtk+8Y7bu24Fxuw3ftBOUuOO4C0zxhttUrz3OpugUjkUsMSXJXQRln3qpAkFCtOZzoO6XVqmk1Dk/YTmyMGO73ju9ta+JYTer1NQ4e3Wlc8b2zUwb4qWK+VDSIceupLzNtLp+FJ3LBao8xfnvU70OF7oVbbcq0A1JdbXGMA7YnB4pHKNaQ6T4SXWbAuVawxm58jGNlzS/3tDY7DJaiQbDdYDyikaB1NQGAc0CnWlQVIgWxai1DQKmC0y2GW4AgPOLdg2poy0COjWkGV0AEDM1pFltETBbQ2eOb7iFB27hhVv44Hb8S1SKgFrS3DYImCfQnR8fXNoCJaGutghYqKG7iCmGoIbU3RYBPRo29xrGobSQbp90esQ2y37YnVD2cws4rAGHh9BWkbCO2qCONDQbpqJjWE7FiJzqjR6CgxYDYZNLYJdL4aBls8GKi+XSihXSipXSilXSitXSijXSirUty7BOlmG9LMMGWYaNBU3apCON6VjZbLge9Qo3FqETr1ME2XW7RpWo6uhw6COCuREyrXHkSXsd2YCAkyAFQhuTVh4bKAP8hQDMchDaCKAdAfeC65srQNwqcwlukzJ47EwCzwivkaKiYyUCqaCmWpElTLMKhU6XnlGSmrFqrv7ms9IkXY6BNlznRpXAqqIYhq9ixVLWoE2K4p0Z0ikhVVx2tFNiQdJQmR3vnwdcTJKNCGuHvCirHYnjyhNy8JH8B08MZDdodrO22yMYArgbgc/kS8DdrbsR+0wze/MHJN0wIt2nUKyfLV6d1y9RqOB80weruHNIeeHvu/yYn5+m83sfT1cTYrwhhIGkO0KPDCRdcP+BiLL8lbU9LUg2N3/Gwg/CEPPM26pz+8YScmbhOm/Ye04ULeix9h3aISX8fecfWt/bk7XMf+hwKnjx6rpedsi3Je5m42FLs/RfuNc8cd/q8qXU/s1+8xebcffPuPWHS2Is2fn22WcsMalg1jK2Z0jAetiqF88967COKHeOz1wNk6/L9c6kE/lbmCVYHjPgRcIruDpxKI5EOalKKlBKBciVjo3cnLAtpPYOZeD2qTYYAa7yQ29mdMPL1Mb0bM9UXP0SPwp28A0vNr8mqgRiUaZ+vwC64vkQUTf/5PuGcWT3sjz+bmlMoIZI2V90rVVGSNfHFyUY3Q14x54e2ne/67hWf8bwSv3w+R3n6/V47ta5DA/bVrxzLllV02D/Z5ZOzokxJSnfLVPfnywIfcb/ysvE/BylKkm4mmTynN0WnpieMD00As0wTwq8Yk2WUfpgOq6jGkDKhVIoL5AAzTYNKWmzTFnLpwcBgYc+TeVmLcghUfSSltmYWN1/c1oqq/d0VKvvM57svApyjV6H1H3eC6H4KqwfnxMisQbIu30F1k/OQwprWP77b+XiuQb/pbZucdqfu9Y2fN/a3mXq/WohfLlcoJ/EhiiSQ/N4LsgeIcqyFZRmYcGSBT22vOVubeMU3RFA5i8gfyZjVQzjkGXSc8CI3WVsd13C3xbzielpm/F8ufIarHt9f4PO+SbQkEah0VLDMOTzRhY31fTOehM7H2KsbJfl4n/48ZwBWu3lqh2CZ1NP/FDzTB6rkq3MXmZ6qRbixScF2fZbZ0JEh48zKy2rjGB5Hg8X6/pUUm0UiDJTZKV26GeLIrHrzZ+TczOw1Z0xtCHgYzR41PBevKccPnxEEyLdbqul2u0f5hPLbLMpG43gFlOjRo1szZrPDMmtqyCjEO69sU6KIo5UWpafKRI5rJ+2S5lk4HAlMc/J9y6dP1Edvs+vZCsPgjygD1msxArrVLK0PsphXqlzT/httcZS1tWlOk3UKiJ6x6y5E0Linc9qmfJiemXHZBrgKl9wdeDKy1E+H1rKVTs5uRJF9jtspbmvTAXB1hShlXUAhK3sx/OCMUiarcF6HXcIYc1XIXWfIEgZ19EDaey5hH0bYvdftugTEhRuncuLir2ERbFP4Tdbxi2wP39ssanPk9RKUofueGLx8B1PHaLI1qS+OWD6fRKwBrF4gB9z6OpjI6M6PBQjCPF9XD1+7gVIyZUvFimURELLyqIZYuZ5oWRv4JmZdzysPTDngBYYt/B5RjyjyEwRzISQ7WSLAfp12od1v+jw/vRWMVvtTZr6UR+ciMuErgUaX/5u9418kTj/xu7vXjZOEcMYnFz2iac7WYEEYaIJtpWV90/UZF+uO3GY1/Z9a03cjc86U5MTaniHT9Rdrsme6JcD/UmTjccTO6APtZNrAnywqvBmSCYP3UT3wZvwRN9HU8sJlCS1smLUuB/7Lredd+gwryYhuTP1sxszUsqwv1nmWSkmbzN6ZRJQ3ml6EFetkmbFV2biljqVYt+0VTPzwKEf9P+frODU5MNEPn3RaWOmOHIPPKCZjiiut1tKZS3r+y/m2oTKxwsxNoehrhY79Z3X9Z5BxbZyYc3guhy74YY3rbbquT/1fz63cOt9bxjsq/VQeJI/smHJSVcAlm5WFBQ1nDrWueHrx/Xcyj1ulS1vP9x1t37vRFe7u+K+hRN79cH9jnwXt2clp3/86w3zKwC+CeqFd8Nd+7tnu1X3j9JwCvvnc3GOfDC3D1+vIVmtVcu6yb8zvbvH4Y4jkT7jb/dM9gX9Gxca3dOuJa2vjIzv9i3/g0q/VBcvaLsPdR9RxJg6PNM/8c2lX5FsRLXzJrbnL7q2AIKzniqgusiPelOLOo4/rP268OJX5+GCqolPavCed2YEZwTxvv/v/V8oBfpPnPvdvO8g9VMV3yGScbSyvHjksNOxGealI8F/g/9g1J5n1kvhYE0J7PRbZZJ6IaMSFpY4rc6SQqGKERrlMuPUVk+3ovV3CvwxbzGrUcnkFxeab7qbMSlLIDRT4UXzP7HRTy+7S8K+KH5Asir+2by47RXG7W8QH/I+fi9HOXH9f1vHxPsiSmnIvSkKMOvEE5LV0Zd3Jx1vyTqSUnnrzkSl7ZlDicti23wzdvK3W8053v6xg1WLW9wo9ver0Z/8v+xjWrvlcXB0lJXDatVwfHMzZ/+ENDEUU72Mcre4ntnBn0ssQBhBpb5hsnB684Nf736B7/+z+mseEZoorc0z5jgdNJnI97Ejdy7VG8onB2gygVch2ZLGo3+flVcFnh/5qIwmYmPIPfIz8cpHok8+3/B5w2fxlGxEpvhY9phO5tdM/xhufyfbIKfiHexi59ajX1aw5wPFE3supy1o/kEbxlR2gSz2VSw60fTlcd2YGlGWXl1oLjyRNfqP/GMYe/vtx32C5KuKUhs/avXdV5eLbIx5Z/az3nh3RWs7M8K3lSq2pKbcsQivBpPETaMtLcPO25trA0JbEjjM+RYJRzudYK+z7StGZ4l+Ugy3tIyKm5OCeHXRS4ncVkWpjWZGW9urq32xo4GuYPz+C0yItpUqup/dKn9oX9rwLFb+4w7thiMMyZe08GneBq3Hh6K5eI3KZXmnSMbxl6esSFVc1sQHeaJTuUq9PFkw8/YeQL1mk0VHqhXNympWDqedIRj4aFfXkz9S2cpw9EPb8rrS66NmCTMDqmnpnp07Peltao+vRY3hrp3pHisM+FStwuwqwd2XLrz5ySHZSr0yvF750BOyHYyLkW7s8M1csCX2t6zC+weTL0Vilsz5Rpva9rjJblpHJ6svui76PNrvnrwfSel8psO2J6i4iwoHe68LbOEwJdnw0AuSAQ35JSAeqews297QzDzXTYXDtt3Sp1+88V2ixDIBaf2Ud1avWXOn1XXvdDg+2ndAHclscbWLwoyLefAQ3//rGKq/lwVusQrFA1Gzaen+igoLMWdIZDaZHy9Zh/OdfrjCJdlvxK/eVWUtHp22JDGuc6+tsLiEMAxIWF82UVJcaNvbGZe4xD9SbAXT9Z1Lrp3DAcUJhaGRTbmquPde3f2miqvJkiaD4hUQPLw+pK5y9rtzJKW/CSTklwAASwdHH97fxX/P/X+KF0c2A4AACGPmbIbQGW8LtZocUopbCnU5/gYLa4119HeEz8IBvaImdEBhcBKeRRTUKcMK6GIKGhKGyUQrCRDgv/PpOSlEJA5Dn7I+FDN3BAofjTkoir6E3qAOdmZtJ75tS+7KNihcnrQviyo8Ky3lfig8jEXwSqwuboOioolOpbTCJs8Dr5y8Y+sSgBWBsJWBEBKQYkROlWVRBKVTUQJYuDdKQrknoxRkBKIoDxyB5TitjoqJeRh+Lwt50bvg1KvPqJAu8y0QxtHyy0KzMKmVYtkSmKfNHJe5BkzQQzFt1yJz4YeFAaeKXc9I6CFglidFqInSiy528wpMs26japi0pLabY5oui82sGbTYoGBoFlKu9w8M7yNkc64vGiO/SgkO65RsfhhgTKcMUeHs1SCMBVMIwsrm8SYQjmBBsNmTPIfAt7OIUa4s6i/LwIt4K6WGt5RaN2+xBRYiRniZon9ilVWl3Tw3F4FPeDc7I4Bh0gS74iNHMAdoxRBsBHAVTebU8+reVxWLvaYTW+g+OYCAaUTmYXiXUJMDIoj00ycDEpBBBuIgFxnnoliVWpw26DPZ6eFkLZIY9tEVDWOEe/ufcbyGhF195fIJHueoodfzil2TbBFWQlgnLegbkKNWBvjrpxzhQmMU7SDZtz9Hg3K1pn0ChLyTHWDRMn0w9tdDFIhAzqqMzWyegIC34R0kkUIe0shHATJwCIVwEM5iFIrgCIqRRQlKUYZyjMYYVKASYzEO4zEBEzEJkzEFU/mDPV0mk920/3CuycKEu4KBuf/BZ1FR/NDqdr43FOodHuxjWPHX+su84wu+tkS3RXXJcNViNu1X7S25er7u1F3S3d5p0s26Rcvtnmsq0ot1u3S0dZm6F7qLtOLudpNJN+sWPW9HBVDzDk83t48jbuuI4NvFq1/Gge8YB9CxgYWvvg8AojjDNkgA10Mabmxqj9g2tsspILRz7xXAOgWuY+J4Jo/dL1gJSMVn+Vs0lLDmcWB19+LkI9TWccJKP/ECNLhWAAA=`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size2-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size2-Regular.woff2.base64.js index 2652c9f5e..cd331d9da 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size2-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size2-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `d09GMgABAAAAABRYAA4AAAAALRQAABQBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgUQIDgmcDBEICqowoRYBNgIkA4EeC1IABCAFiQAHgiQMgRwbMycjEXZztMJT/OUBT8ZvqgIwIbZlhOVRe5/Y4TgOVm/26guMVEV+hCSzx9O2ft7ukikmSyhLL+AhNmAmWIHeF87oyyi4/NktATDObmBpQqkO0XGZSf5Woc5WoP4HGIc9v1xv0DrMVJGay0kidb3pvFxg18l2T0BGVkUSqOrh9sU0W9oBQkuW72GnqAI0AYKjV580ZSBCW8pFlbACq2yAdAEyoJ6MIAUl/9lF7aK+rhqdIUkCYlX6/79Wad/9VbUMdjlEHkgnwsaYP6+65tT/v5sDVcMNgz0nW9W7YeSeDhAqVnt8TjQeDyRJmMhNLDsdFyFcpM5yOPrRK2x+f6/1Zlt1xUpMECYMsfVK+7xHARg+gbYBAwDbgN0LAJukS0YfgiOAgVjjMoAfxPDtd/B8aodFfeBFlpk4OePRGqnFO0mArZ04iM1INxduUXJo0HIiAdGQQtbvIhtIRnYdFlrsGPY49i6OayXaBK1N+4iOZ/jKhJkIE3NmJgASxa4NPxHTilZv1j6oYxu+NME39+4i7w1bbTH4X8l/zv8E72Pv/f3e1++1vKd4M/N13eva1zWAQPzD1PAoQICn0Isi6/9g7G4d5sP3QPoy1Fs6kybwChb5P1sGpBrqibEWeAOo3RZUmLwDATI/c2BQq9aBQ+oLfObWiO8go6TkCzbT8SW1m2A8OBf4DsZOriFuz1usq4vJo+k8sG3xVjg7evBAQkx9K9Npxe0pcBtOY6vUrn6JiOEJBUOSk6T09J6qkVp48BYi+95SOsresAfzKFjwiHs/giVummaj9rahvHsejzzoeYtSoJhrqOippErQmsbTgxE5k2ZDwRBXJVmTCM2VhZvcQYrR0AAs4HMI3AfgYqms6JsoUmpTLvI/sQxx9/GPIWWMdY6gFGMcFF8KlFQfHQxITyAi1wKLOwGWe9jujbXGcu5gJl0mSgOFVXrR4UEnzSD4ZQDkaxFG2448dUpD/kc1Fbo3ILLdkHZM3otBo42C9yEkbdjxArojBwtw+KaFrmwTe2iOexXAfQYrz0DVsR1YbQcHQnk7Qg7/EVKKmxLePGoWUndyd1y0nDFhz7+244d4ux5PSb6r+0ZJAUJEkl6jK6ROeR6W87IQchlv2gLw0CW7PR0QgZUc+lnA7s5IyMOKXAhGpPtopL41auNr6xChYF1H9KmLDjHWGhFEXLPThAP3sccq3ENcdEhA3dTUlX+EVI2uQMIkTbcROUZaV4r1g1CIuhufIujouUyyym5Y31/njF0t2YJyFJjqHPpS2BhUeCQpAgQLX0QziLcJmlMBj51hTmItRPhmg/VeFLetmpsVSYPijjK66mhExAFi0NTbjZztkUzeYwGRaRdEYKdFqtuXTYGRAl1HBwGpe+khdI/AgdxL+qtaGJXJkRsj3nseSP6gQUWRDyQ2puUn0aFEgdk3jjgiEKkERvECpwRBUKJgUJJgUrJgUYpgk1pwOszQItwmzHz9IKhUoK9L5pgOi85wpf27ZuvwNPvvCiMxgihFWwEVV2uGXUUJDQxaGHQw6GFIhSENBgMMFAxGGEywsg0yN27JHk+ocukoazqZlSSPrXL7aGBPnxum7XBAZCAlLWme0uv7HsdpwwE5E6tSEfYd1d3t4WgXhs72wvsYa9KVpD2OLKdDvtBvn4UR2J8jz8cPSoS4tQRzlyC2U7igUyVdZyO+QtyQORlEEQCsHyBHBqo7cw5PhyKIQ1ODTBRM5p5JJQPAL5m+1WbDib9POUs4MTaC3Lce1dmbrx1ZAOaIcw8R2dWuX/hyAI9vThubi8w1Hrc22QWpllsITPcmLUL3jWWb3rtwQdikGTiQTS5Ff7utcimNzizQfqrHRbAY+JaXeDTdAsFUKwzmujZxuWySTre73TQMs8rMEJn285RRuOyDBXJ9HW6SmVZQ2leJFGFEBrup2wKRhSJC4dC7ne7CY0905DCyAhGBkQU6NzUwPLcAF+X3PffNpUznIdwhJfiW8ioeQyVzak3zulNgZCSEGdK+Vt/BJHK5uzXvlUz7yN9nPp00s6bT25zdHHhzpgMvVM1cSlA/jmHH7MUgc7EqtM680azVt+E9s7P/fgd72OwCF4Cs1G+0EGSnhty50o5g4+kgVUVW0HNUVIC5Kk1m/A9m+O4TwOPUV2O3VDrlJV6Mwu0J7/fykb1UDGqZI+Ob2TnndMrYqtnURrJU0gEbb7hRpZLcN7U655h2lQiUJWfP/nwLl7l/ozvC3V435X0VKKBcjoxUrASZiKruCuZ6KpX0G13BWb4a4zpHFROrQQtSXFArlOpGIUG9UN2ARIloZKDAKCQICo034QIECjKaLaWW0UjQaqluQwsk2oWKDqGiU6ju8owi0Y0j0YMj0YsjHUKiVPThFEz9rppmW8jcQQ6F1gDLFB6NABELmTnAgEEL0dBoBBi20MIRSwxy8mhGVbmol7HH4NPjqXcn8PsT7SRCjohOOsiachBNbw65rjHXzsU8O9fMB/eABd6BFjqIFjlILb6G52GJnYeldh6W2XlY7gGtcBCtdJBa5YfnY7WdjzV2Ptba+VjnAa13EG1wUHmj5Rrv/W0kyky8RmD0/pt1mkRNS4vfHGX3R3F97bx79m1YAQGamUkEYhRlRK07mAWYVwA4GSBGsWEMBvuF5hsNgCZigK8TmogDox4GiCDiE4VsEbu2Qka7ahqVlZwPq2hRyFOS7Q7mNhNUKWphCl8svJdsqVgidbhuzAzcHreLcFt0QhDkXOSgjC/E2ABB3hh3ts0D+0wiM4yLIiyA4GyAlIUZv9P+/s1vjbHbXoKylWf4RSCaiN6WYIAqGJwQSDHbwmyGU2qaE8UVBHFygiDFXFR/KopYHde3Vmbcx1lfHkvoeQbXl+bztRnGFNDkg1F5QAIBcqJBHvxCCC1CQU0oQFgGXp1uDCDXldJfZ1eqydaEdV+uZgt4oUsD0Qu2fLJKBy3V8nkq/Hc/NLvAn/dzP5/LmYte61N/KnLsObfGPj8JjqirSD0FU39j5jUqnkDKuSM4LT6cXkw3OI1/n5tlnBtKZ+U5UiteWuNmWKSCX2ZpTYhlbK5f6w9bWj9PxisFxqAEZ87JO5fabVNtu/7aiI8Qgj2B0cXuu0erKB97a7uycklJsq5dw1rxJEXMRS76aXeJ3qOGHBf4zEwf+/j1iVgHwdHHmYWSL/zax3eYdC7az2SS4bS3aJqkEbJ93PbqqHF2zNjvF264FF5ovbBNLDP0VWz4/7GPr+zwT/2xn+O0GCzeQOo1KFcya2sMKfJCkKfcxa3ww3LRN0i5AfJtnL5q5Vf7GIWlZdcQBhq+r1tywfrvCyEeeEE+gd+vzBzWVJ+pkmLxZey/w4Wo39nGLuw/6aThPUdq1if5oKroXYTDU97we2SkiX4mJ9UcSO+PHLynOKuIV5DqYy9fZk2k2lvAs9YJqdleb9NMTSJfl03vhuqrQBCtrftcEZAERVh8umrFpvt6/it/yP3u297PnEMqyPNAt1nc8gXuY59kr+P01d7G+3RSUh1TkKaAN15vEc2fJZE9+BypEc6td1Hdbb5/W1IGqJLAcgUlQglXMHj5kpVgDLdciBs4NQSU55MmbdoE1kj1cZu3Kcvhli3y/Hlmx3LUDCzWWaKTlwN2b3rsrfqBmuGu3xx9/1Z3WaSGUcgDg9IvJoiD/EzwUJ6P3EH5P/7wX+AfpL7qYy0+7G3t0QfT8rNBFYjykZcQa1c+A6G18FocPd2+9BgAJuvCyiKnZKnUjvd24t6PG2HKTKTxJ6AIwziWc9xBt18temdS2JHa+DexT3RyedhBsS9d+v5UD2X01mkXqZvAn7QIX4zpqM3+zoK/z8azPADpvONXgRimkfoJISCqdRDUIUT+D+sdspegfJ1nGEOZdKy2a9e9/YPug97AM6oQfh5vCYDqMF3a/VIfKP0oJ33v3yI4hVpqQ0MOZ8wJ9AYPJPUH9/5N7Xbd/eEHrnsbnC/fSArgxHMv/vGaesYro54DLH2cPSEQYMd89P6TEQhDbLhPlub/7zXNnx/cB1VXdUoe9fobWqNkIy69+ZThg3XAYn3hugHM4zdc8NOoKk5s1FGvv01wv+fxW7QzWwNEVLi+mPx/DLT7gEBw/VpeygTNgefhp4SSYU3jgHOHW5WxY8CpaRwuTYAf9ZlwIBdD8so2z7nTYzxhQCjQj3d+XuwQFsfDj6Z82GwFpGyK+Kj6HTcP5CZPIbDanG+CHxKExcWOzzvH9QJgTUZEhSLBo6+9X+uWlhb9+BWTWVB8oWSlni/Qr/x/Z9DLbWF+9WORtLTW/f5rjwqEASHH47zucNfU7uDDm4kxq/fK5o9PrhyjLcXmrTQHnoOfmDtqat2O604P/HIX+mIVjp3AsVeKIZj85awXP4GhR2f9VQD2DwlVyJ1zfxv5Wyytuibp0T/IerHYULrUETStsVTZ+bf8HeRnGhe4xnDdK3e9Ad3+SPypDGnjGq77Rzd3cXwFdfu3dmg9HQld3LyhM6PQ5s6VioZO+7EZY/94Gm293+5U/+vAH7mhaW3NXPO8uuIjPTVE1TW7Rgqe4WM20M+fn6dAuKgFvXJeso5ZJtmhq+8pz6FSs09mHmiG1lQdC5Olxa3e5y3l2BDyNW973FPFGRQqIHc2mcmXagjN5zeUsyV8eUH6PcfMH8l/XyvZPJqZfdpn3NrAFH2Sdux/OPOpuUrq1CU8+K42/a/E5aY/WiSrVYoGZZ11lbP2M5balesjk15KjJtRVap02r2ar6QM8Z9kK9lieDp5u+pAl34pUi9R+PUjdz3vteYVqJNenPgZuv4NJ4oL+BfwDwu3UCEIuipTy63+hvVTtejHwXw/g7sxsNS41rLL6QtRJLu3hxU3rnk6Y38FUZHaYi2qa7D6PxzyWplZF7Yc2GeB95dUfLg0HL9U2ipn6G++5q2JBb1BWbDK2Y6SSdVKq2nNkhIFM/leQaV1KH659t1F8Kf8ovZ+fokafL/bZZcVKW9Lnyp6ugzFN27XPZ0if1bOwqmkWUrZneqkN6RJgUQlBvjEKtkVhfqpDNWr8/viJ3ehr5IVl2UsTDkUkT6RlPyV1PZ9ozBiQB5uKtOj20QjjWXu7sOC5kqot/QdJ29pT9P4vQ9wONs+efVUWVH8kGHDddYI54F7cfq09haJPwFPcOMe3jq9dADwlVvVZ6SSmzMqX+vgKDvxKLktaRXlW3aURpxzLZ8GeIfqj3SF5Wv8Jh4JE9Sub82rV3+otesUN7ty/7cu+CdQjEv/wcPIvzB25eBEQuFKkeD7eNa1qKGn85NA4NoTvcrivs8TnexLTRRGrrgzHFZDrg8GxS5eu67kvMgTD8KtO2/cEN64iV4/GGR8jr5qyz62QhB2vDN78K2ynacnU0fy79q54NCKJ+LTR/XX4pTPV+zevtm7FhxZFSw65rI3RJWrxxZGsk4mt3Ufrd5UsvCXE0cEkuQkxxCn29JvO3zaGDYPT5w9JV5cMV2sKqf8lENjoD5ntebzRQrPn5sfBg3Y9eaY4R9Wyv1VfCTbppMQtQaZDGGIhfMXLXyzt3xZp2TX/oZthspXhS6KN+tRXsxQG+G0m4M7O7bwiqtibyDjj57hr+raSASbIpGHxFAPExuXt6UUL1uOYcyFv/ivoY9Ub9qxc5xYvszx8OKNqKkpPL4bWv8JbGC+ojlw8Msv0YqVCJv117zKPQKHx7FbsKDyr9Saetkf6bKf0d6kscFweJD8OSJRX3pczSIV4UiQV/pVUvJbpbxgJKwgWerHL6klkZ9JNPt3TWvw6Sn91LS/+qdpubykE6ZX29dsXwzTgxL2Og5/7n3mKXh7QXMGRBKtb7O9de7eLlHOb2wR/uWkZ1Hu8IPS/fwr+/cE615GLQCwATOVoux1QWvUoxnx/yJW71oMGPwNThiJqujvIhaAG/e2dSEzeAJvwocE7gFx8CDMBUZW8C9nWknk/pWFWSrif/AUI6cgoxsdCVogI5zjR0Q9rmI/mmBmUAwfZsRSGIJRPy8Q+QI8jJbVJT2Lch8wvNho8yCAkA9i2xwYhwMiOJ5OeIq5CJROzMVACHfOxaHY43MJSAvw5zLAH3Duk9k6V4DNRpOvpBDSQ29DgRGj5hsXdocBk0iUECOSE42WySorR1iUVKjfhIEaLmiQAf0qBKsWpDI4cTZc99Md0uFRFUrT4xq+sEdf7R8yX4WAxlU269IgbEG/U73+cE9TBvUYV2zEsElJjXdNvydjo31CspCO9sO63CuwKiiZcSaskdDBBlQ2VZOHmq1UUyEcMXCkhmM309irpoeNi5H5g8qyZGetOeY+9dsM6QnhgAhpn8fG0N8kj7FEu+U3NQe7r57Frv2HFly9CZMzJL9mglU1DTv7kOVcJqlaj6E9VEKutFYuNLK97wlz1UAxW809MJ4icWqQmBB7mEAfpkwfCUPSMv0uwjKVobXGqMGu3O+70g0se6AmkjZ6u++9n9Rj2ptwVU3sNbhPkhnT47fVp05RnZSFW6Rw0qhX9rd1Qqh4UlST0dgoZAa5vurb1ShWaVjAQGzszMqc0tRfM993wAM+SOXJ59WpO4DBm/AWwhEBBxAD9sNpOISYiIXYiIO4iIf4SICESITESIKkSIbkSIGUKI41NRymaR8tXbuLdnImw4N9/f8Zk9UVp9NBw1hngVNoF40toB2H47RcU120x8l0fJZ/akaRx8qc6qNpx+E4nfR7c0PFEzxZ3xxDaEtLFP0sucNRDFj+GIAJ1so9510AwFtK2AAHKLzWo3V1zVHvumYl9Qmq5U42zFmv1E6MGZaRu9nLABHqzUKNzSxuOQZC051oZvWIzTGsU3vL6GNCYRUA`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size3-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size3-Regular.woff2.base64.js index bb794ad18..8fd74c821 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size3-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size3-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size4-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size4-Regular.woff2.base64.js index 55f3516b5..b092ead5e 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size4-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Size4-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Typewriter-Regular.woff2.base64.js b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Typewriter-Regular.woff2.base64.js index c3760d64b..7294a6706 100644 --- a/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Typewriter-Regular.woff2.base64.js +++ b/packages/app-mobile/pluginAssets/katex/fonts/KaTeX_Typewriter-Regular.woff2.base64.js @@ -1 +1 @@ -module.exports = `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`; \ No newline at end of file +module.exports = `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`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/katex/katex.css.base64.js b/packages/app-mobile/pluginAssets/katex/katex.css.base64.js index e28d3b411..9a3256eae 100644 --- a/packages/app-mobile/pluginAssets/katex/katex.css.base64.js +++ b/packages/app-mobile/pluginAssets/katex/katex.css.base64.js @@ -1 +1 @@ -module.exports = `QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9BTVM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfQ2FsaWdyYXBoaWM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NzAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtQm9sZC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfQ2FsaWdyYXBoaWM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfRnJha3R1cjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9GcmFrdHVyLUJvbGQud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9GcmFrdHVyLUJvbGQudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9GcmFrdHVyO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NzAwO3NyYzp1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tQm9sZC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfTWFpbjtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9NYWluO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYWluLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfTWF0aDtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9NYXRoLUJvbGRJdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfTWF0aC1Cb2xkSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYXRoLUJvbGRJdGFsaWMudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9NYXRoO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYXRoLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX1NjcmlwdDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfU2NyaXB0LVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUxLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUxLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplNDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9UeXBld3JpdGVyO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX0ua2F0ZXh7Zm9udDpub3JtYWwgMS4yMWVtIEthVGVYX01haW4sVGltZXMgTmV3IFJvbWFuLHNlcmlmO2xpbmUtaGVpZ2h0OjEuMjt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG99LmthdGV4ICp7LW1zLWhpZ2gtY29udHJhc3QtYWRqdXN0Om5vbmUhaW1wb3J0YW50O2JvcmRlci1jb2xvcjpjdXJyZW50Q29sb3J9LmthdGV4IC5rYXRleC12ZXJzaW9uOmFmdGVye2NvbnRlbnQ6IjAuMTMuMyJ9LmthdGV4IC5rYXRleC1tYXRobWx7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Ym9yZGVyOjA7aGVpZ2h0OjFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0ua2F0ZXggLmthdGV4LWh0bWw+Lm5ld2xpbmV7ZGlzcGxheTpibG9ja30ua2F0ZXggLmJhc2V7cG9zaXRpb246cmVsYXRpdmU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOi13ZWJraXQtbWluLWNvbnRlbnQ7d2lkdGg6LW1vei1taW4tY29udGVudDt3aWR0aDptaW4tY29udGVudH0ua2F0ZXggLmJhc2UsLmthdGV4IC5zdHJ1dHtkaXNwbGF5OmlubGluZS1ibG9ja30ua2F0ZXggLnRleHRiZntmb250LXdlaWdodDo3MDB9LmthdGV4IC50ZXh0aXR7Zm9udC1zdHlsZTppdGFsaWN9LmthdGV4IC50ZXh0cm17Zm9udC1mYW1pbHk6S2FUZVhfTWFpbn0ua2F0ZXggLnRleHRzZntmb250LWZhbWlseTpLYVRlWF9TYW5zU2VyaWZ9LmthdGV4IC50ZXh0dHR7Zm9udC1mYW1pbHk6S2FUZVhfVHlwZXdyaXRlcn0ua2F0ZXggLm1hdGhub3JtYWx7Zm9udC1mYW1pbHk6S2FUZVhfTWF0aDtmb250LXN0eWxlOml0YWxpY30ua2F0ZXggLm1hdGhpdHtmb250LWZhbWlseTpLYVRlWF9NYWluO2ZvbnQtc3R5bGU6aXRhbGljfS5rYXRleCAubWF0aHJte2ZvbnQtc3R5bGU6bm9ybWFsfS5rYXRleCAubWF0aGJme2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC13ZWlnaHQ6NzAwfS5rYXRleCAuYm9sZHN5bWJvbHtmb250LWZhbWlseTpLYVRlWF9NYXRoO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjcwMH0ua2F0ZXggLmFtc3JtLC5rYXRleCAubWF0aGJiLC5rYXRleCAudGV4dGJie2ZvbnQtZmFtaWx5OkthVGVYX0FNU30ua2F0ZXggLm1hdGhjYWx7Zm9udC1mYW1pbHk6S2FUZVhfQ2FsaWdyYXBoaWN9LmthdGV4IC5tYXRoZnJhaywua2F0ZXggLnRleHRmcmFre2ZvbnQtZmFtaWx5OkthVGVYX0ZyYWt0dXJ9LmthdGV4IC5tYXRodHR7Zm9udC1mYW1pbHk6S2FUZVhfVHlwZXdyaXRlcn0ua2F0ZXggLm1hdGhzY3IsLmthdGV4IC50ZXh0c2Nye2ZvbnQtZmFtaWx5OkthVGVYX1NjcmlwdH0ua2F0ZXggLm1hdGhzZiwua2F0ZXggLnRleHRzZntmb250LWZhbWlseTpLYVRlWF9TYW5zU2VyaWZ9LmthdGV4IC5tYXRoYm9sZHNmLC5rYXRleCAudGV4dGJvbGRzZntmb250LWZhbWlseTpLYVRlWF9TYW5zU2VyaWY7Zm9udC13ZWlnaHQ6NzAwfS5rYXRleCAubWF0aGl0c2YsLmthdGV4IC50ZXh0aXRzZntmb250LWZhbWlseTpLYVRlWF9TYW5zU2VyaWY7Zm9udC1zdHlsZTppdGFsaWN9LmthdGV4IC5tYWlucm17Zm9udC1mYW1pbHk6S2FUZVhfTWFpbjtmb250LXN0eWxlOm5vcm1hbH0ua2F0ZXggLnZsaXN0LXR7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2Rpc3BsYXk6aW5saW5lLXRhYmxlO3RhYmxlLWxheW91dDpmaXhlZH0ua2F0ZXggLnZsaXN0LXJ7ZGlzcGxheTp0YWJsZS1yb3d9LmthdGV4IC52bGlzdHtkaXNwbGF5OnRhYmxlLWNlbGw7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246Ym90dG9tfS5rYXRleCAudmxpc3Q+c3BhbntkaXNwbGF5OmJsb2NrO2hlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlfS5rYXRleCAudmxpc3Q+c3Bhbj5zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5rYXRleCAudmxpc3Q+c3Bhbj4ucHN0cnV0e292ZXJmbG93OmhpZGRlbjt3aWR0aDowfS5rYXRleCAudmxpc3QtdDJ7bWFyZ2luLXJpZ2h0Oi0ycHh9LmthdGV4IC52bGlzdC1ze2Rpc3BsYXk6dGFibGUtY2VsbDtmb250LXNpemU6MXB4O21pbi13aWR0aDoycHg7dmVydGljYWwtYWxpZ246Ym90dG9tO3dpZHRoOjJweH0ua2F0ZXggLnZib3h7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmU7YWxpZ24taXRlbXM6YmFzZWxpbmU7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmthdGV4IC5oYm94e3dpZHRoOjEwMCV9LmthdGV4IC5oYm94LC5rYXRleCAudGhpbmJveHstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsO2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5rYXRleCAudGhpbmJveHttYXgtd2lkdGg6MDt3aWR0aDowfS5rYXRleCAubXN1cHN1Ynt0ZXh0LWFsaWduOmxlZnR9LmthdGV4IC5tZnJhYz5zcGFuPnNwYW57dGV4dC1hbGlnbjpjZW50ZXJ9LmthdGV4IC5tZnJhYyAuZnJhYy1saW5le2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0ua2F0ZXggLmhkYXNobGluZSwua2F0ZXggLmhsaW5lLC5rYXRleCAubWZyYWMgLmZyYWMtbGluZSwua2F0ZXggLm92ZXJsaW5lIC5vdmVybGluZS1saW5lLC5rYXRleCAucnVsZSwua2F0ZXggLnVuZGVybGluZSAudW5kZXJsaW5lLWxpbmV7bWluLWhlaWdodDoxcHh9LmthdGV4IC5tc3BhY2V7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmthdGV4IC5jbGFwLC5rYXRleCAubGxhcCwua2F0ZXggLnJsYXB7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MH0ua2F0ZXggLmNsYXA+LmlubmVyLC5rYXRleCAubGxhcD4uaW5uZXIsLmthdGV4IC5ybGFwPi5pbm5lcntwb3NpdGlvbjphYnNvbHV0ZX0ua2F0ZXggLmNsYXA+LmZpeCwua2F0ZXggLmxsYXA+LmZpeCwua2F0ZXggLnJsYXA+LmZpeHtkaXNwbGF5OmlubGluZS1ibG9ja30ua2F0ZXggLmxsYXA+LmlubmVye3JpZ2h0OjB9LmthdGV4IC5jbGFwPi5pbm5lciwua2F0ZXggLnJsYXA+LmlubmVye2xlZnQ6MH0ua2F0ZXggLmNsYXA+LmlubmVyPnNwYW57bWFyZ2luLWxlZnQ6LTUwJTttYXJnaW4tcmlnaHQ6NTAlfS5rYXRleCAucnVsZXtib3JkZXI6MCBzb2xpZDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0ua2F0ZXggLmhsaW5lLC5rYXRleCAub3ZlcmxpbmUgLm92ZXJsaW5lLWxpbmUsLmthdGV4IC51bmRlcmxpbmUgLnVuZGVybGluZS1saW5le2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0ua2F0ZXggLmhkYXNobGluZXtib3JkZXItYm90dG9tLXN0eWxlOmRhc2hlZDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS5rYXRleCAuc3FydD4ucm9vdHttYXJnaW4tbGVmdDouMjc3Nzc3NzhlbTttYXJnaW4tcmlnaHQ6LS41NTU1NTU1NmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplMXtmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplMiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplMntmb250LXNpemU6MS4yZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemUzLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemUze2ZvbnQtc2l6ZToxLjRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTR7Zm9udC1zaXplOjEuNmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplNXtmb250LXNpemU6MS44ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemU2e2ZvbnQtc2l6ZToyZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemU3e2ZvbnQtc2l6ZToyLjRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTh7Zm9udC1zaXplOjIuODhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTl7Zm9udC1zaXplOjMuNDU2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplMTB7Zm9udC1zaXplOjQuMTQ4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemUxMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplMTF7Zm9udC1zaXplOjQuOTc2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemUxe2ZvbnQtc2l6ZTouODMzMzMzMzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTJ7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTN7Zm9udC1zaXplOjEuMTY2NjY2NjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTR7Zm9udC1zaXplOjEuMzMzMzMzMzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTV7Zm9udC1zaXplOjEuNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplNntmb250LXNpemU6MS42NjY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplN3tmb250LXNpemU6MmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplOHtmb250LXNpemU6Mi40ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemU5e2ZvbnQtc2l6ZToyLjg4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplMTB7Zm9udC1zaXplOjMuNDU2NjY2NjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemUxMXtmb250LXNpemU6NC4xNDY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplMXtmb250LXNpemU6LjcxNDI4NTcxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUzLnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUzLnNpemUye2ZvbnQtc2l6ZTouODU3MTQyODZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTN7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTR7Zm9udC1zaXplOjEuMTQyODU3MTRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTV7Zm9udC1zaXplOjEuMjg1NzE0MjllbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTZ7Zm9udC1zaXplOjEuNDI4NTcxNDNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTd7Zm9udC1zaXplOjEuNzE0Mjg1NzFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTh7Zm9udC1zaXplOjIuMDU3MTQyODZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTl7Zm9udC1zaXplOjIuNDY4NTcxNDNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUzLnNpemUxMHtmb250LXNpemU6Mi45NjI4NTcxNGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTExe2ZvbnQtc2l6ZTozLjU1NDI4NTcxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemUxe2ZvbnQtc2l6ZTouNjI1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemUye2ZvbnQtc2l6ZTouNzVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTN7Zm9udC1zaXplOi44NzVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTR7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTV7Zm9udC1zaXplOjEuMTI1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemU2e2ZvbnQtc2l6ZToxLjI1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemU3e2ZvbnQtc2l6ZToxLjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTh7Zm9udC1zaXplOjEuOGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplOXtmb250LXNpemU6Mi4xNmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTEwe2ZvbnQtc2l6ZToyLjU5MjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemUxMXtmb250LXNpemU6My4xMWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNS5zaXplMXtmb250LXNpemU6LjU1NTU1NTU2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemUye2ZvbnQtc2l6ZTouNjY2NjY2NjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTN7Zm9udC1zaXplOi43Nzc3Nzc3OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNS5zaXplNHtmb250LXNpemU6Ljg4ODg4ODg5ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemU1e2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemU2e2ZvbnQtc2l6ZToxLjExMTExMTExZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemU3e2ZvbnQtc2l6ZToxLjMzMzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemU4e2ZvbnQtc2l6ZToxLjZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTl7Zm9udC1zaXplOjEuOTJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemUxMHtmb250LXNpemU6Mi4zMDQ0NDQ0NGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTExe2ZvbnQtc2l6ZToyLjc2NDQ0NDQ0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemUxe2ZvbnQtc2l6ZTouNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplMiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplMntmb250LXNpemU6LjZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTN7Zm9udC1zaXplOi43ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemU0e2ZvbnQtc2l6ZTouOGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplNXtmb250LXNpemU6LjllbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTZ7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTd7Zm9udC1zaXplOjEuMmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplOHtmb250LXNpemU6MS40NGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplOXtmb250LXNpemU6MS43MjhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemUxMHtmb250LXNpemU6Mi4wNzRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemUxMXtmb250LXNpemU6Mi40ODhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTF7Zm9udC1zaXplOi40MTY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplMiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplMntmb250LXNpemU6LjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTN7Zm9udC1zaXplOi41ODMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplNHtmb250LXNpemU6LjY2NjY2NjY3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemU1e2ZvbnQtc2l6ZTouNzVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTZ7Zm9udC1zaXplOi44MzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplN3tmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplOHtmb250LXNpemU6MS4yZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemU5e2ZvbnQtc2l6ZToxLjQ0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplMTB7Zm9udC1zaXplOjEuNzI4MzMzMzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemUxMXtmb250LXNpemU6Mi4wNzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplMXtmb250LXNpemU6LjM0NzIyMjIyZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemUye2ZvbnQtc2l6ZTouNDE2NjY2NjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTN7Zm9udC1zaXplOi40ODYxMTExMWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplNHtmb250LXNpemU6LjU1NTU1NTU2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemU1e2ZvbnQtc2l6ZTouNjI1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemU2e2ZvbnQtc2l6ZTouNjk0NDQ0NDRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTd7Zm9udC1zaXplOi44MzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplOHtmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplOXtmb250LXNpemU6MS4yZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplMTB7Zm9udC1zaXplOjEuNDQwMjc3NzhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemUxMXtmb250LXNpemU6MS43Mjc3Nzc3OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplMXtmb250LXNpemU6LjI4OTM1MTg1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemUye2ZvbnQtc2l6ZTouMzQ3MjIyMjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTN7Zm9udC1zaXplOi40MDUwOTI1OWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplNHtmb250LXNpemU6LjQ2Mjk2Mjk2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemU1e2ZvbnQtc2l6ZTouNTIwODMzMzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTZ7Zm9udC1zaXplOi41Nzg3MDM3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemU3e2ZvbnQtc2l6ZTouNjk0NDQ0NDRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTh7Zm9udC1zaXplOi44MzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplOXtmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTEwe2ZvbnQtc2l6ZToxLjIwMDIzMTQ4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemUxMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplMTF7Zm9udC1zaXplOjEuNDM5ODE0ODFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplMXtmb250LXNpemU6LjI0MTA4MDA0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplMiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTJ7Zm9udC1zaXplOi4yODkyOTYwNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemUze2ZvbnQtc2l6ZTouMzM3NTEyMDVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplNHtmb250LXNpemU6LjM4NTcyODA2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTV7Zm9udC1zaXplOi40MzM5NDQwN2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemU2e2ZvbnQtc2l6ZTouNDgyMTYwMDhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplN3tmb250LXNpemU6LjU3ODU5MjA5ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTh7Zm9udC1zaXplOi42OTQzMTA1MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemU5e2ZvbnQtc2l6ZTouODMzMTcyNjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTEwe2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemUxMXtmb250LXNpemU6MS4xOTk2MTQyN2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemUxe2ZvbnQtc2l6ZTouMjAwOTY0NjNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplMntmb250LXNpemU6LjI0MTE1NzU2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTN7Zm9udC1zaXplOi4yODEzNTA0OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemU0e2ZvbnQtc2l6ZTouMzIxNTQzNDFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplNXtmb250LXNpemU6LjM2MTczNjMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTZ7Zm9udC1zaXplOi40MDE5MjkyNmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemU3e2ZvbnQtc2l6ZTouNDgyMzE1MTFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplOHtmb250LXNpemU6LjU3ODc3ODE0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTl7Zm9udC1zaXplOi42OTQ1MzM3NmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplMTB7Zm9udC1zaXplOi44MzM2MDEyOWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplMTF7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmRlbGltc2l6aW5nLnNpemUxe2ZvbnQtZmFtaWx5OkthVGVYX1NpemUxfS5rYXRleCAuZGVsaW1zaXppbmcuc2l6ZTJ7Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTJ9LmthdGV4IC5kZWxpbXNpemluZy5zaXplM3tmb250LWZhbWlseTpLYVRlWF9TaXplM30ua2F0ZXggLmRlbGltc2l6aW5nLnNpemU0e2ZvbnQtZmFtaWx5OkthVGVYX1NpemU0fS5rYXRleCAuZGVsaW1zaXppbmcubXVsdCAuZGVsaW0tc2l6ZTE+c3Bhbntmb250LWZhbWlseTpLYVRlWF9TaXplMX0ua2F0ZXggLmRlbGltc2l6aW5nLm11bHQgLmRlbGltLXNpemU0PnNwYW57Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTR9LmthdGV4IC5udWxsZGVsaW1pdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOi4xMmVtfS5rYXRleCAuZGVsaW1jZW50ZXIsLmthdGV4IC5vcC1zeW1ib2x7cG9zaXRpb246cmVsYXRpdmV9LmthdGV4IC5vcC1zeW1ib2wuc21hbGwtb3B7Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTF9LmthdGV4IC5vcC1zeW1ib2wubGFyZ2Utb3B7Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTJ9LmthdGV4IC5hY2NlbnQ+LnZsaXN0LXQsLmthdGV4IC5vcC1saW1pdHM+LnZsaXN0LXR7dGV4dC1hbGlnbjpjZW50ZXJ9LmthdGV4IC5hY2NlbnQgLmFjY2VudC1ib2R5e3Bvc2l0aW9uOnJlbGF0aXZlfS5rYXRleCAuYWNjZW50IC5hY2NlbnQtYm9keTpub3QoLmFjY2VudC1mdWxsKXt3aWR0aDowfS5rYXRleCAub3ZlcmxheXtkaXNwbGF5OmJsb2NrfS5rYXRleCAubXRhYmxlIC52ZXJ0aWNhbC1zZXBhcmF0b3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjFweH0ua2F0ZXggLm10YWJsZSAuYXJyYXljb2xzZXB7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmthdGV4IC5tdGFibGUgLmNvbC1hbGlnbi1jPi52bGlzdC10e3RleHQtYWxpZ246Y2VudGVyfS5rYXRleCAubXRhYmxlIC5jb2wtYWxpZ24tbD4udmxpc3QtdHt0ZXh0LWFsaWduOmxlZnR9LmthdGV4IC5tdGFibGUgLmNvbC1hbGlnbi1yPi52bGlzdC10e3RleHQtYWxpZ246cmlnaHR9LmthdGV4IC5zdmctYWxpZ257dGV4dC1hbGlnbjpsZWZ0fS5rYXRleCBzdmd7ZmlsbDpjdXJyZW50Q29sb3I7c3Ryb2tlOmN1cnJlbnRDb2xvcjtmaWxsLXJ1bGU6bm9uemVybztmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7ZGlzcGxheTpibG9jaztoZWlnaHQ6aW5oZXJpdDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS5rYXRleCBzdmcgcGF0aHtzdHJva2U6bm9uZX0ua2F0ZXggaW1ne2JvcmRlci1zdHlsZTpub25lO21heC1oZWlnaHQ6bm9uZTttYXgtd2lkdGg6bm9uZTttaW4taGVpZ2h0OjA7bWluLXdpZHRoOjB9LmthdGV4IC5zdHJldGNoeXtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5rYXRleCAuc3RyZXRjaHk6YWZ0ZXIsLmthdGV4IC5zdHJldGNoeTpiZWZvcmV7Y29udGVudDoiIn0ua2F0ZXggLmhpZGUtdGFpbHtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ua2F0ZXggLmhhbGZhcnJvdy1sZWZ0e2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NTAuMiV9LmthdGV4IC5oYWxmYXJyb3ctcmlnaHR7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6NTAuMiV9LmthdGV4IC5icmFjZS1sZWZ0e2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjUuMSV9LmthdGV4IC5icmFjZS1jZW50ZXJ7bGVmdDoyNSU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUwJX0ua2F0ZXggLmJyYWNlLXJpZ2h0e292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjI1LjElfS5rYXRleCAueC1hcnJvdy1wYWR7cGFkZGluZzowIC41ZW19LmthdGV4IC5jZC1hcnJvdy1wYWR7cGFkZGluZzowIC41NTU1NmVtIDAgLjI3Nzc4ZW19LmthdGV4IC5tb3Zlciwua2F0ZXggLm11bmRlciwua2F0ZXggLngtYXJyb3d7dGV4dC1hbGlnbjpjZW50ZXJ9LmthdGV4IC5ib3hwYWR7cGFkZGluZzowIC4zZW19LmthdGV4IC5mYm94LC5rYXRleCAuZmNvbG9yYm94e2JvcmRlcjouMDRlbSBzb2xpZDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmthdGV4IC5jYW5jZWwtcGFke3BhZGRpbmc6MCAuMmVtfS5rYXRleCAuY2FuY2VsLWxhcHttYXJnaW4tbGVmdDotLjJlbTttYXJnaW4tcmlnaHQ6LS4yZW19LmthdGV4IC5zb3V0e2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDhlbX0ua2F0ZXggLmFuZ2x7Ym9yZGVyLXJpZ2h0Oi4wNDllbSBzb2xpZDtib3JkZXItdG9wOi4wNDllbSBzb2xpZDtib3gtc2l6aW5nOmJvcmRlci1jb250ZW50O21hcmdpbi1yaWdodDouMDM4ODllbX0ua2F0ZXggLmFuZ2xwYWR7cGFkZGluZzowIC4wMzg4OWVtfS5rYXRleCAuZXFuLW51bTpiZWZvcmV7Y29udGVudDoiKCIgY291bnRlcihrYXRleEVxbk5vKSAiKSI7Y291bnRlci1pbmNyZW1lbnQ6a2F0ZXhFcW5Ob30ua2F0ZXggLm1tbC1lcW4tbnVtOmJlZm9yZXtjb250ZW50OiIoIiBjb3VudGVyKG1tbEVxbk5vKSAiKSI7Y291bnRlci1pbmNyZW1lbnQ6bW1sRXFuTm99LmthdGV4IC5tdHItZ2x1ZXt3aWR0aDo1MCV9LmthdGV4IC5jZC12ZXJ0LWFycm93e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5rYXRleCAuY2QtbGFiZWwtbGVmdHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotd2Via2l0LWNhbGMoNTAlICsgLjNlbSk7cmlnaHQ6Y2FsYyg1MCUgKyAuM2VtKTt0ZXh0LWFsaWduOmxlZnR9LmthdGV4IC5jZC1sYWJlbC1yaWdodHtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0Oi13ZWJraXQtY2FsYyg1MCUgKyAuM2VtKTtsZWZ0OmNhbGMoNTAlICsgLjNlbSk7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpyaWdodH0ua2F0ZXgtZGlzcGxheXtkaXNwbGF5OmJsb2NrO21hcmdpbjoxZW0gMDt0ZXh0LWFsaWduOmNlbnRlcn0ua2F0ZXgtZGlzcGxheT4ua2F0ZXh7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmthdGV4LWRpc3BsYXk+LmthdGV4Pi5rYXRleC1odG1se2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmthdGV4LWRpc3BsYXk+LmthdGV4Pi5rYXRleC1odG1sPi50YWd7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0ua2F0ZXgtZGlzcGxheS5sZXFubz4ua2F0ZXg+LmthdGV4LWh0bWw+LnRhZ3tsZWZ0OjA7cmlnaHQ6YXV0b30ua2F0ZXgtZGlzcGxheS5mbGVxbj4ua2F0ZXh7cGFkZGluZy1sZWZ0OjJlbTt0ZXh0LWFsaWduOmxlZnR9Ym9keXtjb3VudGVyLXJlc2V0OmthdGV4RXFuTm8gbW1sRXFuTm99Cg==`; \ No newline at end of file +module.exports = `QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9BTVM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfQ2FsaWdyYXBoaWM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NzAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtQm9sZC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfQ2FsaWdyYXBoaWM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfRnJha3R1cjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9GcmFrdHVyLUJvbGQud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9GcmFrdHVyLUJvbGQudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9GcmFrdHVyO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NzAwO3NyYzp1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tQm9sZC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfTWFpbjtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1Cb2xkSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9NYWluO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYWluLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01haW4tUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6S2FUZVhfTWF0aDtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDo3MDA7c3JjOnVybChmb250cy9LYVRlWF9NYXRoLUJvbGRJdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfTWF0aC1Cb2xkSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYXRoLUJvbGRJdGFsaWMudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9NYXRoO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9NYXRoLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJLYVRlWF9TYW5zU2VyaWYiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYpIGZvcm1hdCgid29mZiIpLHVybChmb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkthVGVYX1NjcmlwdDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoZm9udHMvS2FUZVhfU2NyaXB0LVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUxLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUxLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplMztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9TaXplNDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybChmb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKGZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIudHRmKSBmb3JtYXQoInRydWV0eXBlIil9QGZvbnQtZmFjZXtmb250LWZhbWlseTpLYVRlWF9UeXBld3JpdGVyO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKGZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybChmb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKGZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX0ua2F0ZXh7dGV4dC1yZW5kZXJpbmc6YXV0bztmb250Om5vcm1hbCAxLjIxZW0gS2FUZVhfTWFpbixUaW1lcyBOZXcgUm9tYW4sc2VyaWY7bGluZS1oZWlnaHQ6MS4yO3RleHQtaW5kZW50OjB9LmthdGV4ICp7LW1zLWhpZ2gtY29udHJhc3QtYWRqdXN0Om5vbmUhaW1wb3J0YW50O2JvcmRlci1jb2xvcjpjdXJyZW50Q29sb3J9LmthdGV4IC5rYXRleC12ZXJzaW9uOmFmdGVye2NvbnRlbnQ6IjAuMTMuMjQifS5rYXRleCAua2F0ZXgtbWF0aG1se2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2JvcmRlcjowO2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LmthdGV4IC5rYXRleC1odG1sPi5uZXdsaW5le2Rpc3BsYXk6YmxvY2t9LmthdGV4IC5iYXNle3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDotd2Via2l0LW1pbi1jb250ZW50O3dpZHRoOi1tb3otbWluLWNvbnRlbnQ7d2lkdGg6bWluLWNvbnRlbnR9LmthdGV4IC5iYXNlLC5rYXRleCAuc3RydXR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmthdGV4IC50ZXh0YmZ7Zm9udC13ZWlnaHQ6NzAwfS5rYXRleCAudGV4dGl0e2ZvbnQtc3R5bGU6aXRhbGljfS5rYXRleCAudGV4dHJte2ZvbnQtZmFtaWx5OkthVGVYX01haW59LmthdGV4IC50ZXh0c2Z7Zm9udC1mYW1pbHk6S2FUZVhfU2Fuc1NlcmlmfS5rYXRleCAudGV4dHR0e2ZvbnQtZmFtaWx5OkthVGVYX1R5cGV3cml0ZXJ9LmthdGV4IC5tYXRobm9ybWFse2ZvbnQtZmFtaWx5OkthVGVYX01hdGg7Zm9udC1zdHlsZTppdGFsaWN9LmthdGV4IC5tYXRoaXR7Zm9udC1mYW1pbHk6S2FUZVhfTWFpbjtmb250LXN0eWxlOml0YWxpY30ua2F0ZXggLm1hdGhybXtmb250LXN0eWxlOm5vcm1hbH0ua2F0ZXggLm1hdGhiZntmb250LWZhbWlseTpLYVRlWF9NYWluO2ZvbnQtd2VpZ2h0OjcwMH0ua2F0ZXggLmJvbGRzeW1ib2x7Zm9udC1mYW1pbHk6S2FUZVhfTWF0aDtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDo3MDB9LmthdGV4IC5hbXNybSwua2F0ZXggLm1hdGhiYiwua2F0ZXggLnRleHRiYntmb250LWZhbWlseTpLYVRlWF9BTVN9LmthdGV4IC5tYXRoY2Fse2ZvbnQtZmFtaWx5OkthVGVYX0NhbGlncmFwaGljfS5rYXRleCAubWF0aGZyYWssLmthdGV4IC50ZXh0ZnJha3tmb250LWZhbWlseTpLYVRlWF9GcmFrdHVyfS5rYXRleCAubWF0aHR0e2ZvbnQtZmFtaWx5OkthVGVYX1R5cGV3cml0ZXJ9LmthdGV4IC5tYXRoc2NyLC5rYXRleCAudGV4dHNjcntmb250LWZhbWlseTpLYVRlWF9TY3JpcHR9LmthdGV4IC5tYXRoc2YsLmthdGV4IC50ZXh0c2Z7Zm9udC1mYW1pbHk6S2FUZVhfU2Fuc1NlcmlmfS5rYXRleCAubWF0aGJvbGRzZiwua2F0ZXggLnRleHRib2xkc2Z7Zm9udC1mYW1pbHk6S2FUZVhfU2Fuc1NlcmlmO2ZvbnQtd2VpZ2h0OjcwMH0ua2F0ZXggLm1hdGhpdHNmLC5rYXRleCAudGV4dGl0c2Z7Zm9udC1mYW1pbHk6S2FUZVhfU2Fuc1NlcmlmO2ZvbnQtc3R5bGU6aXRhbGljfS5rYXRleCAubWFpbnJte2ZvbnQtZmFtaWx5OkthVGVYX01haW47Zm9udC1zdHlsZTpub3JtYWx9LmthdGV4IC52bGlzdC10e2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtkaXNwbGF5OmlubGluZS10YWJsZTt0YWJsZS1sYXlvdXQ6Zml4ZWR9LmthdGV4IC52bGlzdC1ye2Rpc3BsYXk6dGFibGUtcm93fS5rYXRleCAudmxpc3R7ZGlzcGxheTp0YWJsZS1jZWxsO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0ua2F0ZXggLnZsaXN0PnNwYW57ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0ua2F0ZXggLnZsaXN0PnNwYW4+c3BhbntkaXNwbGF5OmlubGluZS1ibG9ja30ua2F0ZXggLnZsaXN0PnNwYW4+LnBzdHJ1dHtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MH0ua2F0ZXggLnZsaXN0LXQye21hcmdpbi1yaWdodDotMnB4fS5rYXRleCAudmxpc3Qtc3tkaXNwbGF5OnRhYmxlLWNlbGw7Zm9udC1zaXplOjFweDttaW4td2lkdGg6MnB4O3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt3aWR0aDoycHh9LmthdGV4IC52Ym94e2FsaWduLWl0ZW1zOmJhc2VsaW5lO2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5rYXRleCAuaGJveHt3aWR0aDoxMDAlfS5rYXRleCAuaGJveCwua2F0ZXggLnRoaW5ib3h7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmthdGV4IC50aGluYm94e21heC13aWR0aDowO3dpZHRoOjB9LmthdGV4IC5tc3Vwc3Vie3RleHQtYWxpZ246bGVmdH0ua2F0ZXggLm1mcmFjPnNwYW4+c3Bhbnt0ZXh0LWFsaWduOmNlbnRlcn0ua2F0ZXggLm1mcmFjIC5mcmFjLWxpbmV7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS5rYXRleCAuaGRhc2hsaW5lLC5rYXRleCAuaGxpbmUsLmthdGV4IC5tZnJhYyAuZnJhYy1saW5lLC5rYXRleCAub3ZlcmxpbmUgLm92ZXJsaW5lLWxpbmUsLmthdGV4IC5ydWxlLC5rYXRleCAudW5kZXJsaW5lIC51bmRlcmxpbmUtbGluZXttaW4taGVpZ2h0OjFweH0ua2F0ZXggLm1zcGFjZXtkaXNwbGF5OmlubGluZS1ibG9ja30ua2F0ZXggLmNsYXAsLmthdGV4IC5sbGFwLC5rYXRleCAucmxhcHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDowfS5rYXRleCAuY2xhcD4uaW5uZXIsLmthdGV4IC5sbGFwPi5pbm5lciwua2F0ZXggLnJsYXA+LmlubmVye3Bvc2l0aW9uOmFic29sdXRlfS5rYXRleCAuY2xhcD4uZml4LC5rYXRleCAubGxhcD4uZml4LC5rYXRleCAucmxhcD4uZml4e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5rYXRleCAubGxhcD4uaW5uZXJ7cmlnaHQ6MH0ua2F0ZXggLmNsYXA+LmlubmVyLC5rYXRleCAucmxhcD4uaW5uZXJ7bGVmdDowfS5rYXRleCAuY2xhcD4uaW5uZXI+c3BhbnttYXJnaW4tbGVmdDotNTAlO21hcmdpbi1yaWdodDo1MCV9LmthdGV4IC5ydWxle2JvcmRlcjowIHNvbGlkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5rYXRleCAuaGxpbmUsLmthdGV4IC5vdmVybGluZSAub3ZlcmxpbmUtbGluZSwua2F0ZXggLnVuZGVybGluZSAudW5kZXJsaW5lLWxpbmV7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS5rYXRleCAuaGRhc2hsaW5le2JvcmRlci1ib3R0b20tc3R5bGU6ZGFzaGVkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCV9LmthdGV4IC5zcXJ0Pi5yb290e21hcmdpbi1sZWZ0Oi4yNzc3Nzc3OGVtO21hcmdpbi1yaWdodDotLjU1NTU1NTU2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemUxe2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemUye2ZvbnQtc2l6ZToxLjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTMsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTN7Zm9udC1zaXplOjEuNGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplNHtmb250LXNpemU6MS42ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxLnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemU1e2ZvbnQtc2l6ZToxLjhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTZ7Zm9udC1zaXplOjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEuc2l6ZTd7Zm9udC1zaXplOjIuNGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplOHtmb250LXNpemU6Mi44OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMS5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMS5zaXplOXtmb250LXNpemU6My40NTZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemUxMHtmb250LXNpemU6NC4xNDhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxLnNpemUxMXtmb250LXNpemU6NC45NzZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTF7Zm9udC1zaXplOi44MzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplMiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplMntmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplM3tmb250LXNpemU6MS4xNjY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplNHtmb250LXNpemU6MS4zMzMzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMi5zaXplNXtmb250LXNpemU6MS41ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemU2e2ZvbnQtc2l6ZToxLjY2NjY2NjY3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemU3e2ZvbnQtc2l6ZToyZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUyLnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemU4e2ZvbnQtc2l6ZToyLjRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTl7Zm9udC1zaXplOjIuODhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTIuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUyLnNpemUxMHtmb250LXNpemU6My40NTY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMi5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTIuc2l6ZTExe2ZvbnQtc2l6ZTo0LjE0NjY2NjY3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUzLnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUzLnNpemUxe2ZvbnQtc2l6ZTouNzE0Mjg1NzFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTMuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTJ7Zm9udC1zaXplOi44NTcxNDI4NmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplM3tmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplNHtmb250LXNpemU6MS4xNDI4NTcxNGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplNXtmb250LXNpemU6MS4yODU3MTQyOWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplNntmb250LXNpemU6MS40Mjg1NzE0M2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplN3tmb250LXNpemU6MS43MTQyODU3MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplOHtmb250LXNpemU6Mi4wNTcxNDI4NmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplOXtmb250LXNpemU6Mi40Njg1NzE0M2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMy5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTMuc2l6ZTEwe2ZvbnQtc2l6ZToyLjk2Mjg1NzE0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUzLnNpemUxMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMy5zaXplMTF7Zm9udC1zaXplOjMuNTU0Mjg1NzFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTF7Zm9udC1zaXplOi42MjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTJ7Zm9udC1zaXplOi43NWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplM3tmb250LXNpemU6Ljg3NWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplNHtmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplNSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplNXtmb250LXNpemU6MS4xMjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTZ7Zm9udC1zaXplOjEuMjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTQuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTd7Zm9udC1zaXplOjEuNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplOHtmb250LXNpemU6MS44ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU0LnNpemU5e2ZvbnQtc2l6ZToyLjE2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU0LnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNC5zaXplMTB7Zm9udC1zaXplOjIuNTkyNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNC5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTQuc2l6ZTExe2ZvbnQtc2l6ZTozLjExZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemUxe2ZvbnQtc2l6ZTouNTU1NTU1NTZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTJ7Zm9udC1zaXplOi42NjY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNS5zaXplM3tmb250LXNpemU6Ljc3Nzc3Nzc4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU1LnNpemU0e2ZvbnQtc2l6ZTouODg4ODg4ODllbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTV7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTZ7Zm9udC1zaXplOjEuMTExMTExMTFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTd7Zm9udC1zaXplOjEuMzMzMzMzMzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTUuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTh7Zm9udC1zaXplOjEuNmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNS5zaXplOXtmb250LXNpemU6MS45MmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNS5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTUuc2l6ZTEwe2ZvbnQtc2l6ZToyLjMwNDQ0NDQ0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU1LnNpemUxMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNS5zaXplMTF7Zm9udC1zaXplOjIuNzY0NDQ0NDRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTF7Zm9udC1zaXplOi41ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemUye2ZvbnQtc2l6ZTouNmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplM3tmb250LXNpemU6LjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTYuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTR7Zm9udC1zaXplOi44ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemU1e2ZvbnQtc2l6ZTouOWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplNntmb250LXNpemU6MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNi5zaXplN3tmb250LXNpemU6MS4yZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemU4e2ZvbnQtc2l6ZToxLjQ0ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU2LnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU2LnNpemU5e2ZvbnQtc2l6ZToxLjcyOGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTEwe2ZvbnQtc2l6ZToyLjA3NGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNi5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTYuc2l6ZTExe2ZvbnQtc2l6ZToyLjQ4OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplMXtmb250LXNpemU6LjQxNjY2NjY3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemUye2ZvbnQtc2l6ZTouNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplM3tmb250LXNpemU6LjU4MzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemU0e2ZvbnQtc2l6ZTouNjY2NjY2NjdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTV7Zm9udC1zaXplOi43NWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplNy5zaXplNntmb250LXNpemU6LjgzMzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemU3LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemU3e2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU3LnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemU4e2ZvbnQtc2l6ZToxLjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTksLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTl7Zm9udC1zaXplOjEuNDRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTcuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU3LnNpemUxMHtmb250LXNpemU6MS43MjgzMzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplNy5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTcuc2l6ZTExe2ZvbnQtc2l6ZToyLjA3MzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemUxe2ZvbnQtc2l6ZTouMzQ3MjIyMjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTJ7Zm9udC1zaXplOi40MTY2NjY2N2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplM3tmb250LXNpemU6LjQ4NjExMTExZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemU0e2ZvbnQtc2l6ZTouNTU1NTU1NTZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTV7Zm9udC1zaXplOi42MjVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTYsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTZ7Zm9udC1zaXplOi42OTQ0NDQ0NGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplOC5zaXplN3tmb250LXNpemU6LjgzMzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemU4e2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU4LnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemU5e2ZvbnQtc2l6ZToxLjJlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTguc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU4LnNpemUxMHtmb250LXNpemU6MS40NDAyNzc3OGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOC5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTguc2l6ZTExe2ZvbnQtc2l6ZToxLjcyNzc3Nzc4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemUxLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemUxe2ZvbnQtc2l6ZTouMjg5MzUxODVlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTJ7Zm9udC1zaXplOi4zNDcyMjIyMmVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplM3tmb250LXNpemU6LjQwNTA5MjU5ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemU0LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemU0e2ZvbnQtc2l6ZTouNDYyOTYyOTZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTV7Zm9udC1zaXplOi41MjA4MzMzM2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplNntmb250LXNpemU6LjU3ODcwMzdlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTkuc2l6ZTd7Zm9udC1zaXplOi42OTQ0NDQ0NGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplOS5zaXplOCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplOHtmb250LXNpemU6LjgzMzMzMzMzZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemU5e2ZvbnQtc2l6ZToxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemU5LnNpemUxMCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplOS5zaXplMTB7Zm9udC1zaXplOjEuMjAwMjMxNDhlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTkuc2l6ZTExLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemU5LnNpemUxMXtmb250LXNpemU6MS40Mzk4MTQ4MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemUxe2ZvbnQtc2l6ZTouMjQxMDgwMDRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemUyLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplMntmb250LXNpemU6LjI4OTI5NjA1ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplMywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTN7Zm9udC1zaXplOi4zMzc1MTIwNWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTQsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemU0e2ZvbnQtc2l6ZTouMzg1NzI4MDZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemU1LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplNXtmb250LXNpemU6LjQzMzk0NDA3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplNiwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTZ7Zm9udC1zaXplOi40ODIxNjAwOGVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTcsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTEwLnNpemU3e2ZvbnQtc2l6ZTouNTc4NTkyMDllbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemU4LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplOHtmb250LXNpemU6LjY5NDMxMDUxZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMC5zaXplOSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTl7Zm9udC1zaXplOi44MzMxNzI2MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTAuc2l6ZTEwLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMC5zaXplMTB7Zm9udC1zaXplOjFlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTEwLnNpemUxMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTAuc2l6ZTExe2ZvbnQtc2l6ZToxLjE5OTYxNDI3ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplMSwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTF7Zm9udC1zaXplOi4yMDA5NjQ2M2VtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTIsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemUye2ZvbnQtc2l6ZTouMjQxMTU3NTZlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemUzLC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplM3tmb250LXNpemU6LjI4MTM1MDQ4ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplNCwua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTR7Zm9udC1zaXplOi4zMjE1NDM0MWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTUsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemU1e2ZvbnQtc2l6ZTouMzYxNzM2MzNlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemU2LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplNntmb250LXNpemU6LjQwMTkyOTI2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplNywua2F0ZXggLnNpemluZy5yZXNldC1zaXplMTEuc2l6ZTd7Zm9udC1zaXplOi40ODIzMTUxMWVtfS5rYXRleCAuZm9udHNpemUtZW5zdXJlci5yZXNldC1zaXplMTEuc2l6ZTgsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemU4e2ZvbnQtc2l6ZTouNTc4Nzc4MTRlbX0ua2F0ZXggLmZvbnRzaXplLWVuc3VyZXIucmVzZXQtc2l6ZTExLnNpemU5LC5rYXRleCAuc2l6aW5nLnJlc2V0LXNpemUxMS5zaXplOXtmb250LXNpemU6LjY5NDUzMzc2ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplMTAsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemUxMHtmb250LXNpemU6LjgzMzYwMTI5ZW19LmthdGV4IC5mb250c2l6ZS1lbnN1cmVyLnJlc2V0LXNpemUxMS5zaXplMTEsLmthdGV4IC5zaXppbmcucmVzZXQtc2l6ZTExLnNpemUxMXtmb250LXNpemU6MWVtfS5rYXRleCAuZGVsaW1zaXppbmcuc2l6ZTF7Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTF9LmthdGV4IC5kZWxpbXNpemluZy5zaXplMntmb250LWZhbWlseTpLYVRlWF9TaXplMn0ua2F0ZXggLmRlbGltc2l6aW5nLnNpemUze2ZvbnQtZmFtaWx5OkthVGVYX1NpemUzfS5rYXRleCAuZGVsaW1zaXppbmcuc2l6ZTR7Zm9udC1mYW1pbHk6S2FUZVhfU2l6ZTR9LmthdGV4IC5kZWxpbXNpemluZy5tdWx0IC5kZWxpbS1zaXplMT5zcGFue2ZvbnQtZmFtaWx5OkthVGVYX1NpemUxfS5rYXRleCAuZGVsaW1zaXppbmcubXVsdCAuZGVsaW0tc2l6ZTQ+c3Bhbntmb250LWZhbWlseTpLYVRlWF9TaXplNH0ua2F0ZXggLm51bGxkZWxpbWl0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6LjEyZW19LmthdGV4IC5kZWxpbWNlbnRlciwua2F0ZXggLm9wLXN5bWJvbHtwb3NpdGlvbjpyZWxhdGl2ZX0ua2F0ZXggLm9wLXN5bWJvbC5zbWFsbC1vcHtmb250LWZhbWlseTpLYVRlWF9TaXplMX0ua2F0ZXggLm9wLXN5bWJvbC5sYXJnZS1vcHtmb250LWZhbWlseTpLYVRlWF9TaXplMn0ua2F0ZXggLmFjY2VudD4udmxpc3QtdCwua2F0ZXggLm9wLWxpbWl0cz4udmxpc3QtdHt0ZXh0LWFsaWduOmNlbnRlcn0ua2F0ZXggLmFjY2VudCAuYWNjZW50LWJvZHl7cG9zaXRpb246cmVsYXRpdmV9LmthdGV4IC5hY2NlbnQgLmFjY2VudC1ib2R5Om5vdCguYWNjZW50LWZ1bGwpe3dpZHRoOjB9LmthdGV4IC5vdmVybGF5e2Rpc3BsYXk6YmxvY2t9LmthdGV4IC5tdGFibGUgLnZlcnRpY2FsLXNlcGFyYXRvcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MXB4fS5rYXRleCAubXRhYmxlIC5hcnJheWNvbHNlcHtkaXNwbGF5OmlubGluZS1ibG9ja30ua2F0ZXggLm10YWJsZSAuY29sLWFsaWduLWM+LnZsaXN0LXR7dGV4dC1hbGlnbjpjZW50ZXJ9LmthdGV4IC5tdGFibGUgLmNvbC1hbGlnbi1sPi52bGlzdC10e3RleHQtYWxpZ246bGVmdH0ua2F0ZXggLm10YWJsZSAuY29sLWFsaWduLXI+LnZsaXN0LXR7dGV4dC1hbGlnbjpyaWdodH0ua2F0ZXggLnN2Zy1hbGlnbnt0ZXh0LWFsaWduOmxlZnR9LmthdGV4IHN2Z3tmaWxsOmN1cnJlbnRDb2xvcjtzdHJva2U6Y3VycmVudENvbG9yO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtkaXNwbGF5OmJsb2NrO2hlaWdodDppbmhlcml0O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9LmthdGV4IHN2ZyBwYXRoe3N0cm9rZTpub25lfS5rYXRleCBpbWd7Ym9yZGVyLXN0eWxlOm5vbmU7bWF4LWhlaWdodDpub25lO21heC13aWR0aDpub25lO21pbi1oZWlnaHQ6MDttaW4td2lkdGg6MH0ua2F0ZXggLnN0cmV0Y2h5e2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmthdGV4IC5zdHJldGNoeTphZnRlciwua2F0ZXggLnN0cmV0Y2h5OmJlZm9yZXtjb250ZW50OiIifS5rYXRleCAuaGlkZS10YWlse292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5rYXRleCAuaGFsZmFycm93LWxlZnR7bGVmdDowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo1MC4yJX0ua2F0ZXggLmhhbGZhcnJvdy1yaWdodHtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt3aWR0aDo1MC4yJX0ua2F0ZXggLmJyYWNlLWxlZnR7bGVmdDowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyNS4xJX0ua2F0ZXggLmJyYWNlLWNlbnRlcntsZWZ0OjI1JTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NTAlfS5rYXRleCAuYnJhY2UtcmlnaHR7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MjUuMSV9LmthdGV4IC54LWFycm93LXBhZHtwYWRkaW5nOjAgLjVlbX0ua2F0ZXggLmNkLWFycm93LXBhZHtwYWRkaW5nOjAgLjU1NTU2ZW0gMCAuMjc3NzhlbX0ua2F0ZXggLm1vdmVyLC5rYXRleCAubXVuZGVyLC5rYXRleCAueC1hcnJvd3t0ZXh0LWFsaWduOmNlbnRlcn0ua2F0ZXggLmJveHBhZHtwYWRkaW5nOjAgLjNlbX0ua2F0ZXggLmZib3gsLmthdGV4IC5mY29sb3Jib3h7Ym9yZGVyOi4wNGVtIHNvbGlkO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ua2F0ZXggLmNhbmNlbC1wYWR7cGFkZGluZzowIC4yZW19LmthdGV4IC5jYW5jZWwtbGFwe21hcmdpbi1sZWZ0Oi0uMmVtO21hcmdpbi1yaWdodDotLjJlbX0ua2F0ZXggLnNvdXR7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wOGVtfS5rYXRleCAuYW5nbHtib3JkZXItcmlnaHQ6LjA0OWVtIHNvbGlkO2JvcmRlci10b3A6LjA0OWVtIHNvbGlkO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tcmlnaHQ6LjAzODg5ZW19LmthdGV4IC5hbmdscGFke3BhZGRpbmc6MCAuMDM4ODllbX0ua2F0ZXggLmVxbi1udW06YmVmb3Jle2NvbnRlbnQ6IigiIGNvdW50ZXIoa2F0ZXhFcW5ObykgIikiO2NvdW50ZXItaW5jcmVtZW50OmthdGV4RXFuTm99LmthdGV4IC5tbWwtZXFuLW51bTpiZWZvcmV7Y29udGVudDoiKCIgY291bnRlcihtbWxFcW5ObykgIikiO2NvdW50ZXItaW5jcmVtZW50Om1tbEVxbk5vfS5rYXRleCAubXRyLWdsdWV7d2lkdGg6NTAlfS5rYXRleCAuY2QtdmVydC1hcnJvd3tkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0ua2F0ZXggLmNkLWxhYmVsLWxlZnR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6Y2FsYyg1MCUgKyAuM2VtKTt0ZXh0LWFsaWduOmxlZnR9LmthdGV4IC5jZC1sYWJlbC1yaWdodHtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0OmNhbGMoNTAlICsgLjNlbSk7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpyaWdodH0ua2F0ZXgtZGlzcGxheXtkaXNwbGF5OmJsb2NrO21hcmdpbjoxZW0gMDt0ZXh0LWFsaWduOmNlbnRlcn0ua2F0ZXgtZGlzcGxheT4ua2F0ZXh7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmthdGV4LWRpc3BsYXk+LmthdGV4Pi5rYXRleC1odG1se2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmthdGV4LWRpc3BsYXk+LmthdGV4Pi5rYXRleC1odG1sPi50YWd7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0ua2F0ZXgtZGlzcGxheS5sZXFubz4ua2F0ZXg+LmthdGV4LWh0bWw+LnRhZ3tsZWZ0OjA7cmlnaHQ6YXV0b30ua2F0ZXgtZGlzcGxheS5mbGVxbj4ua2F0ZXh7cGFkZGluZy1sZWZ0OjJlbTt0ZXh0LWFsaWduOmxlZnR9Ym9keXtjb3VudGVyLXJlc2V0OmthdGV4RXFuTm8gbW1sRXFuTm99Cg==`; \ No newline at end of file diff --git a/packages/app-mobile/pluginAssets/mermaid/mermaid.min.js.base64.js b/packages/app-mobile/pluginAssets/mermaid/mermaid.min.js.base64.js index e50e2bb64..c1f81ab05 100644 --- a/packages/app-mobile/pluginAssets/mermaid/mermaid.min.js.base64.js +++ b/packages/app-mobile/pluginAssets/mermaid/mermaid.min.js.base64.js @@ -1 +1 @@ -module.exports = `LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbWVybWFpZC5taW4uanMuTElDRU5TRS50eHQgKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMubWVybWFpZD1lKCk6dC5tZXJtYWlkPWUoKX0oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcywoZnVuY3Rpb24oKXtyZXR1cm4oKCk9Pnt2YXIgdD17NTA1MToodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsNl0sbj1bMSw3XSxyPVsxLDhdLGk9WzEsOV0sYT1bMSwxMl0sbz1bMSwxMV0scz1bMSwxNSwyNF0sYz1bMSwxOV0sdT1bMSwzMV0sbD1bMSwzNF0saD1bMSwzMl0sZj1bMSwzM10sZD1bMSwzNV0scD1bMSwzNl0seT1bMSwzN10sZz1bMSwzOF0sbT1bMSw0MV0sdj1bMSw0Ml0sYj1bMSw0M10sXz1bMSw0NF0seD1bMTUsMjRdLHc9WzEsNTZdLGs9WzEsNTddLFQ9WzEsNThdLEU9WzEsNTldLEM9WzEsNjBdLFM9WzEsNjFdLEE9WzE1LDI0LDMxLDM4LDM5LDQ3LDUwLDUxLDUyLDUzLDU0LDU1LDYwLDYyXSxNPVsxNSwyNCwyOSwzMSwzOCwzOSw0Myw0Nyw1MCw1MSw1Miw1Myw1NCw1NSw2MCw2Miw3Nyw3OCw3OSw4MF0sTj1bNyw4LDksMTAsMTUsMTgsMjIsMjRdLEQ9WzQ3LDc3LDc4LDc5LDgwXSxPPVs0Nyw1NCw1NSw3Nyw3OCw3OSw4MF0sQj1bNDcsNTAsNTEsNTIsNTMsNzcsNzgsNzksODBdLEw9WzE1LDI0LDMxXSxJPVsxLDkzXSxSPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxtZXJtYWlkRG9jOjQsZGlyZWN0aW9uOjUsZGlyZWN0aXZlOjYsZGlyZWN0aW9uX3RiOjcsZGlyZWN0aW9uX2J0OjgsZGlyZWN0aW9uX3JsOjksZGlyZWN0aW9uX2xyOjEwLGdyYXBoQ29uZmlnOjExLG9wZW5EaXJlY3RpdmU6MTIsdHlwZURpcmVjdGl2ZToxMyxjbG9zZURpcmVjdGl2ZToxNCxORVdMSU5FOjE1LCI6IjoxNixhcmdEaXJlY3RpdmU6MTcsb3Blbl9kaXJlY3RpdmU6MTgsdHlwZV9kaXJlY3RpdmU6MTksYXJnX2RpcmVjdGl2ZToyMCxjbG9zZV9kaXJlY3RpdmU6MjEsQ0xBU1NfRElBR1JBTToyMixzdGF0ZW1lbnRzOjIzLEVPRjoyNCxzdGF0ZW1lbnQ6MjUsY2xhc3NOYW1lOjI2LGFscGhhTnVtVG9rZW46MjcsY2xhc3NMaXRlcmFsTmFtZToyOCxHRU5FUklDVFlQRToyOSxyZWxhdGlvblN0YXRlbWVudDozMCxMQUJFTDozMSxjbGFzc1N0YXRlbWVudDozMixtZXRob2RTdGF0ZW1lbnQ6MzMsYW5ub3RhdGlvblN0YXRlbWVudDozNCxjbGlja1N0YXRlbWVudDozNSxjc3NDbGFzc1N0YXRlbWVudDozNixDTEFTUzozNyxTVFlMRV9TRVBBUkFUT1I6MzgsU1RSVUNUX1NUQVJUOjM5LG1lbWJlcnM6NDAsU1RSVUNUX1NUT1A6NDEsQU5OT1RBVElPTl9TVEFSVDo0MixBTk5PVEFUSU9OX0VORDo0MyxNRU1CRVI6NDQsU0VQQVJBVE9SOjQ1LHJlbGF0aW9uOjQ2LFNUUjo0NyxyZWxhdGlvblR5cGU6NDgsbGluZVR5cGU6NDksQUdHUkVHQVRJT046NTAsRVhURU5TSU9OOjUxLENPTVBPU0lUSU9OOjUyLERFUEVOREVOQ1k6NTMsTElORTo1NCxET1RURURfTElORTo1NSxDQUxMQkFDSzo1NixMSU5LOjU3LExJTktfVEFSR0VUOjU4LENMSUNLOjU5LENBTExCQUNLX05BTUU6NjAsQ0FMTEJBQ0tfQVJHUzo2MSxIUkVGOjYyLENTU0NMQVNTOjYzLGNvbW1lbnRUb2tlbjo2NCx0ZXh0VG9rZW46NjUsZ3JhcGhDb2RlVG9rZW5zOjY2LHRleHROb1RhZ3NUb2tlbjo2NyxUQUdTVEFSVDo2OCxUQUdFTkQ6NjksIj09Ijo3MCwiLS0iOjcxLFBDVDo3MixERUZBVUxUOjczLFNQQUNFOjc0LE1JTlVTOjc1LGtleXdvcmRzOjc2LFVOSUNPREVfVEVYVDo3NyxOVU06NzgsQUxQSEE6NzksQlFVT1RFX1NUUjo4MCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNzoiZGlyZWN0aW9uX3RiIiw4OiJkaXJlY3Rpb25fYnQiLDk6ImRpcmVjdGlvbl9ybCIsMTA6ImRpcmVjdGlvbl9sciIsMTU6Ik5FV0xJTkUiLDE2OiI6IiwxODoib3Blbl9kaXJlY3RpdmUiLDE5OiJ0eXBlX2RpcmVjdGl2ZSIsMjA6ImFyZ19kaXJlY3RpdmUiLDIxOiJjbG9zZV9kaXJlY3RpdmUiLDIyOiJDTEFTU19ESUFHUkFNIiwyNDoiRU9GIiwyOToiR0VORVJJQ1RZUEUiLDMxOiJMQUJFTCIsMzc6IkNMQVNTIiwzODoiU1RZTEVfU0VQQVJBVE9SIiwzOToiU1RSVUNUX1NUQVJUIiw0MToiU1RSVUNUX1NUT1AiLDQyOiJBTk5PVEFUSU9OX1NUQVJUIiw0MzoiQU5OT1RBVElPTl9FTkQiLDQ0OiJNRU1CRVIiLDQ1OiJTRVBBUkFUT1IiLDQ3OiJTVFIiLDUwOiJBR0dSRUdBVElPTiIsNTE6IkVYVEVOU0lPTiIsNTI6IkNPTVBPU0lUSU9OIiw1MzoiREVQRU5ERU5DWSIsNTQ6IkxJTkUiLDU1OiJET1RURURfTElORSIsNTY6IkNBTExCQUNLIiw1NzoiTElOSyIsNTg6IkxJTktfVEFSR0VUIiw1OToiQ0xJQ0siLDYwOiJDQUxMQkFDS19OQU1FIiw2MToiQ0FMTEJBQ0tfQVJHUyIsNjI6IkhSRUYiLDYzOiJDU1NDTEFTUyIsNjY6ImdyYXBoQ29kZVRva2VucyIsNjg6IlRBR1NUQVJUIiw2OToiVEFHRU5EIiw3MDoiPT0iLDcxOiItLSIsNzI6IlBDVCIsNzM6IkRFRkFVTFQiLDc0OiJTUEFDRSIsNzU6Ik1JTlVTIiw3Njoia2V5d29yZHMiLDc3OiJVTklDT0RFX1RFWFQiLDc4OiJOVU0iLDc5OiJBTFBIQSIsODA6IkJRVU9URV9TVFIifSxwcm9kdWN0aW9uc186WzAsWzMsMV0sWzMsMV0sWzMsMl0sWzUsMV0sWzUsMV0sWzUsMV0sWzUsMV0sWzQsMV0sWzYsNF0sWzYsNl0sWzEyLDFdLFsxMywxXSxbMTcsMV0sWzE0LDFdLFsxMSw0XSxbMjMsMV0sWzIzLDJdLFsyMywzXSxbMjYsMV0sWzI2LDFdLFsyNiwyXSxbMjYsMl0sWzI2LDJdLFsyNSwxXSxbMjUsMl0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI1LDFdLFszMiwyXSxbMzIsNF0sWzMyLDVdLFszMiw3XSxbMzQsNF0sWzQwLDFdLFs0MCwyXSxbMzMsMV0sWzMzLDJdLFszMywxXSxbMzMsMV0sWzMwLDNdLFszMCw0XSxbMzAsNF0sWzMwLDVdLFs0NiwzXSxbNDYsMl0sWzQ2LDJdLFs0NiwxXSxbNDgsMV0sWzQ4LDFdLFs0OCwxXSxbNDgsMV0sWzQ5LDFdLFs0OSwxXSxbMzUsM10sWzM1LDRdLFszNSwzXSxbMzUsNF0sWzM1LDRdLFszNSw1XSxbMzUsM10sWzM1LDRdLFszNSw0XSxbMzUsNV0sWzM1LDNdLFszNSw0XSxbMzUsNF0sWzM1LDVdLFszNiwzXSxbNjQsMV0sWzY0LDFdLFs2NSwxXSxbNjUsMV0sWzY1LDFdLFs2NSwxXSxbNjUsMV0sWzY1LDFdLFs2NSwxXSxbNjcsMV0sWzY3LDFdLFs2NywxXSxbNjcsMV0sWzI3LDFdLFsyNywxXSxbMjcsMV0sWzI4LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgNDpyLnNldERpcmVjdGlvbigiVEIiKTticmVhaztjYXNlIDU6ci5zZXREaXJlY3Rpb24oIkJUIik7YnJlYWs7Y2FzZSA2OnIuc2V0RGlyZWN0aW9uKCJSTCIpO2JyZWFrO2Nhc2UgNzpyLnNldERpcmVjdGlvbigiTFIiKTticmVhaztjYXNlIDExOnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxMjpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxMzphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTQ6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiY2xhc3MiKTticmVhaztjYXNlIDE5OmNhc2UgMjA6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAyMTp0aGlzLiQ9YVtzLTFdK2Fbc107YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOnRoaXMuJD1hW3MtMV0rIn4iK2Fbc107YnJlYWs7Y2FzZSAyNDpyLmFkZFJlbGF0aW9uKGFbc10pO2JyZWFrO2Nhc2UgMjU6YVtzLTFdLnRpdGxlPXIuY2xlYW51cExhYmVsKGFbc10pLHIuYWRkUmVsYXRpb24oYVtzLTFdKTticmVhaztjYXNlIDMzOnIuYWRkQ2xhc3MoYVtzXSk7YnJlYWs7Y2FzZSAzNDpyLmFkZENsYXNzKGFbcy0yXSksci5zZXRDc3NDbGFzcyhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAzNTpyLmFkZENsYXNzKGFbcy0zXSksci5hZGRNZW1iZXJzKGFbcy0zXSxhW3MtMV0pO2JyZWFrO2Nhc2UgMzY6ci5hZGRDbGFzcyhhW3MtNV0pLHIuc2V0Q3NzQ2xhc3MoYVtzLTVdLGFbcy0zXSksci5hZGRNZW1iZXJzKGFbcy01XSxhW3MtMV0pO2JyZWFrO2Nhc2UgMzc6ci5hZGRBbm5vdGF0aW9uKGFbc10sYVtzLTJdKTticmVhaztjYXNlIDM4OnRoaXMuJD1bYVtzXV07YnJlYWs7Y2FzZSAzOTphW3NdLnB1c2goYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDQwOmJyZWFrO2Nhc2UgNDE6ci5hZGRNZW1iZXIoYVtzLTFdLHIuY2xlYW51cExhYmVsKGFbc10pKTticmVhaztjYXNlIDQyOmNhc2UgNDM6YnJlYWs7Y2FzZSA0NDp0aGlzLiQ9e2lkMTphW3MtMl0saWQyOmFbc10scmVsYXRpb246YVtzLTFdLHJlbGF0aW9uVGl0bGUxOiJub25lIixyZWxhdGlvblRpdGxlMjoibm9uZSJ9O2JyZWFrO2Nhc2UgNDU6dGhpcy4kPXtpZDE6YVtzLTNdLGlkMjphW3NdLHJlbGF0aW9uOmFbcy0xXSxyZWxhdGlvblRpdGxlMTphW3MtMl0scmVsYXRpb25UaXRsZTI6Im5vbmUifTticmVhaztjYXNlIDQ2OnRoaXMuJD17aWQxOmFbcy0zXSxpZDI6YVtzXSxyZWxhdGlvbjphW3MtMl0scmVsYXRpb25UaXRsZTE6Im5vbmUiLHJlbGF0aW9uVGl0bGUyOmFbcy0xXX07YnJlYWs7Y2FzZSA0Nzp0aGlzLiQ9e2lkMTphW3MtNF0saWQyOmFbc10scmVsYXRpb246YVtzLTJdLHJlbGF0aW9uVGl0bGUxOmFbcy0zXSxyZWxhdGlvblRpdGxlMjphW3MtMV19O2JyZWFrO2Nhc2UgNDg6dGhpcy4kPXt0eXBlMTphW3MtMl0sdHlwZTI6YVtzXSxsaW5lVHlwZTphW3MtMV19O2JyZWFrO2Nhc2UgNDk6dGhpcy4kPXt0eXBlMToibm9uZSIsdHlwZTI6YVtzXSxsaW5lVHlwZTphW3MtMV19O2JyZWFrO2Nhc2UgNTA6dGhpcy4kPXt0eXBlMTphW3MtMV0sdHlwZTI6Im5vbmUiLGxpbmVUeXBlOmFbc119O2JyZWFrO2Nhc2UgNTE6dGhpcy4kPXt0eXBlMToibm9uZSIsdHlwZTI6Im5vbmUiLGxpbmVUeXBlOmFbc119O2JyZWFrO2Nhc2UgNTI6dGhpcy4kPXIucmVsYXRpb25UeXBlLkFHR1JFR0FUSU9OO2JyZWFrO2Nhc2UgNTM6dGhpcy4kPXIucmVsYXRpb25UeXBlLkVYVEVOU0lPTjticmVhaztjYXNlIDU0OnRoaXMuJD1yLnJlbGF0aW9uVHlwZS5DT01QT1NJVElPTjticmVhaztjYXNlIDU1OnRoaXMuJD1yLnJlbGF0aW9uVHlwZS5ERVBFTkRFTkNZO2JyZWFrO2Nhc2UgNTY6dGhpcy4kPXIubGluZVR5cGUuTElORTticmVhaztjYXNlIDU3OnRoaXMuJD1yLmxpbmVUeXBlLkRPVFRFRF9MSU5FO2JyZWFrO2Nhc2UgNTg6Y2FzZSA2NDp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMV0sYVtzXSk7YnJlYWs7Y2FzZSA1OTpjYXNlIDY1OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3MtMV0pLHIuc2V0VG9vbHRpcChhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSA2MDpjYXNlIDY4OnRoaXMuJD1hW3MtMl0sci5zZXRMaW5rKGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDYxOnRoaXMuJD1hW3MtM10sci5zZXRMaW5rKGFbcy0yXSxhW3MtMV0sYVtzXSk7YnJlYWs7Y2FzZSA2MjpjYXNlIDcwOnRoaXMuJD1hW3MtM10sci5zZXRMaW5rKGFbcy0yXSxhW3MtMV0pLHIuc2V0VG9vbHRpcChhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSA2MzpjYXNlIDcxOnRoaXMuJD1hW3MtNF0sci5zZXRMaW5rKGFbcy0zXSxhW3MtMl0sYVtzXSksci5zZXRUb29sdGlwKGFbcy0zXSxhW3MtMV0pO2JyZWFrO2Nhc2UgNjY6dGhpcy4kPWFbcy0zXSxyLnNldENsaWNrRXZlbnQoYVtzLTJdLGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDY3OnRoaXMuJD1hW3MtNF0sci5zZXRDbGlja0V2ZW50KGFbcy0zXSxhW3MtMl0sYVtzLTFdKSxyLnNldFRvb2x0aXAoYVtzLTNdLGFbc10pO2JyZWFrO2Nhc2UgNjk6dGhpcy4kPWFbcy0zXSxyLnNldExpbmsoYVtzLTJdLGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDcyOnIuc2V0Q3NzQ2xhc3MoYVtzLTFdLGFbc10pfX0sdGFibGU6W3szOjEsNDoyLDU6Myw2OjQsNzplLDg6biw5OnIsMTA6aSwxMTo1LDEyOjEwLDE4OmEsMjI6b30sezE6WzNdfSx7MTpbMiwxXX0sezE6WzIsMl19LHszOjEzLDQ6Miw1OjMsNjo0LDc6ZSw4Om4sOTpyLDEwOmksMTE6NSwxMjoxMCwxODphLDIyOm99LHsxOlsyLDhdfSx0KHMsWzIsNF0pLHQocyxbMiw1XSksdChzLFsyLDZdKSx0KHMsWzIsN10pLHsxMzoxNCwxOTpbMSwxNV19LHsxNTpbMSwxNl19LHsxOTpbMiwxMV19LHsxOlsyLDNdfSx7MTQ6MTcsMTY6WzEsMThdLDIxOmN9LHQoWzE2LDIxXSxbMiwxMl0pLHs1OjI5LDY6MjgsNzplLDg6biw5OnIsMTA6aSwxMjoxMCwxODphLDIzOjIwLDI1OjIxLDI2OjMwLDI3OjM5LDI4OjQwLDMwOjIyLDMyOjIzLDMzOjI0LDM0OjI1LDM1OjI2LDM2OjI3LDM3OnUsNDI6bCw0NDpoLDQ1OmYsNTY6ZCw1NzpwLDU5OnksNjM6Zyw3NzptLDc4OnYsNzk6Yiw4MDpffSx7MTU6WzEsNDVdfSx7MTc6NDYsMjA6WzEsNDddfSx7MTU6WzIsMTRdfSx7MjQ6WzEsNDhdfSx7MTU6WzEsNDldLDI0OlsyLDE2XX0sdCh4LFsyLDI0XSx7MzE6WzEsNTBdfSksdCh4LFsyLDI2XSksdCh4LFsyLDI3XSksdCh4LFsyLDI4XSksdCh4LFsyLDI5XSksdCh4LFsyLDMwXSksdCh4LFsyLDMxXSksdCh4LFsyLDMyXSksdCh4LFsyLDQwXSx7NDY6NTEsNDg6NTQsNDk6NTUsMzE6WzEsNTNdLDQ3OlsxLDUyXSw1MDp3LDUxOmssNTI6VCw1MzpFLDU0OkMsNTU6U30pLHsyNjo2MiwyNzozOSwyODo0MCw3NzptLDc4OnYsNzk6Yiw4MDpffSx0KHgsWzIsNDJdKSx0KHgsWzIsNDNdKSx7Mjc6NjMsNzc6bSw3ODp2LDc5OmJ9LHsyNjo2NCwyNzozOSwyODo0MCw3NzptLDc4OnYsNzk6Yiw4MDpffSx7MjY6NjUsMjc6MzksMjg6NDAsNzc6bSw3ODp2LDc5OmIsODA6X30sezI2OjY2LDI3OjM5LDI4OjQwLDc3Om0sNzg6diw3OTpiLDgwOl99LHs0NzpbMSw2N119LHQoQSxbMiwxOV0sezI3OjM5LDI4OjQwLDI2OjY4LDI5OlsxLDY5XSw3NzptLDc4OnYsNzk6Yiw4MDpffSksdChBLFsyLDIwXSx7Mjk6WzEsNzBdfSksdChNLFsyLDg2XSksdChNLFsyLDg3XSksdChNLFsyLDg4XSksdChbMTUsMjQsMjksMzEsMzgsMzksNDcsNTAsNTEsNTIsNTMsNTQsNTUsNjAsNjJdLFsyLDg5XSksdChOLFsyLDldKSx7MTQ6NzEsMjE6Y30sezIxOlsyLDEzXX0sezE6WzIsMTVdfSx7NToyOSw2OjI4LDc6ZSw4Om4sOTpyLDEwOmksMTI6MTAsMTg6YSwyMzo3MiwyNDpbMiwxN10sMjU6MjEsMjY6MzAsMjc6MzksMjg6NDAsMzA6MjIsMzI6MjMsMzM6MjQsMzQ6MjUsMzU6MjYsMzY6MjcsMzc6dSw0MjpsLDQ0OmgsNDU6Ziw1NjpkLDU3OnAsNTk6eSw2MzpnLDc3Om0sNzg6diw3OTpiLDgwOl99LHQoeCxbMiwyNV0pLHsyNjo3MywyNzozOSwyODo0MCw0NzpbMSw3NF0sNzc6bSw3ODp2LDc5OmIsODA6X30sezQ2Ojc1LDQ4OjU0LDQ5OjU1LDUwOncsNTE6ayw1MjpULDUzOkUsNTQ6Qyw1NTpTfSx0KHgsWzIsNDFdKSx7NDk6NzYsNTQ6Qyw1NTpTfSx0KEQsWzIsNTFdLHs0ODo3Nyw1MDp3LDUxOmssNTI6VCw1MzpFfSksdChPLFsyLDUyXSksdChPLFsyLDUzXSksdChPLFsyLDU0XSksdChPLFsyLDU1XSksdChCLFsyLDU2XSksdChCLFsyLDU3XSksdCh4LFsyLDMzXSx7Mzg6WzEsNzhdLDM5OlsxLDc5XX0pLHs0MzpbMSw4MF19LHs0NzpbMSw4MV19LHs0NzpbMSw4Ml19LHs2MDpbMSw4M10sNjI6WzEsODRdfSx7Mjc6ODUsNzc6bSw3ODp2LDc5OmJ9LHQoQSxbMiwyMV0pLHQoQSxbMiwyMl0pLHQoQSxbMiwyM10pLHsxNTpbMSw4Nl19LHsyNDpbMiwxOF19LHQoTCxbMiw0NF0pLHsyNjo4NywyNzozOSwyODo0MCw3NzptLDc4OnYsNzk6Yiw4MDpffSx7MjY6ODgsMjc6MzksMjg6NDAsNDc6WzEsODldLDc3Om0sNzg6diw3OTpiLDgwOl99LHQoRCxbMiw1MF0sezQ4OjkwLDUwOncsNTE6ayw1MjpULDUzOkV9KSx0KEQsWzIsNDldKSx7Mjc6OTEsNzc6bSw3ODp2LDc5OmJ9LHs0MDo5Miw0NDpJfSx7MjY6OTQsMjc6MzksMjg6NDAsNzc6bSw3ODp2LDc5OmIsODA6X30sdCh4LFsyLDU4XSx7NDc6WzEsOTVdfSksdCh4LFsyLDYwXSx7NDc6WzEsOTddLDU4OlsxLDk2XX0pLHQoeCxbMiw2NF0sezQ3OlsxLDk4XSw2MTpbMSw5OV19KSx0KHgsWzIsNjhdLHs0NzpbMSwxMDFdLDU4OlsxLDEwMF19KSx0KHgsWzIsNzJdKSx0KE4sWzIsMTBdKSx0KEwsWzIsNDZdKSx0KEwsWzIsNDVdKSx7MjY6MTAyLDI3OjM5LDI4OjQwLDc3Om0sNzg6diw3OTpiLDgwOl99LHQoRCxbMiw0OF0pLHQoeCxbMiwzNF0sezM5OlsxLDEwM119KSx7NDE6WzEsMTA0XX0sezQwOjEwNSw0MTpbMiwzOF0sNDQ6SX0sdCh4LFsyLDM3XSksdCh4LFsyLDU5XSksdCh4LFsyLDYxXSksdCh4LFsyLDYyXSx7NTg6WzEsMTA2XX0pLHQoeCxbMiw2NV0pLHQoeCxbMiw2Nl0sezQ3OlsxLDEwN119KSx0KHgsWzIsNjldKSx0KHgsWzIsNzBdLHs1ODpbMSwxMDhdfSksdChMLFsyLDQ3XSksezQwOjEwOSw0NDpJfSx0KHgsWzIsMzVdKSx7NDE6WzIsMzldfSx0KHgsWzIsNjNdKSx0KHgsWzIsNjddKSx0KHgsWzIsNzFdKSx7NDE6WzEsMTEwXX0sdCh4LFsyLDM2XSldLGRlZmF1bHRBY3Rpb25zOnsyOlsyLDFdLDM6WzIsMl0sNTpbMiw4XSwxMjpbMiwxMV0sMTM6WzIsM10sMTk6WzIsMTRdLDQ3OlsyLDEzXSw0ODpbMiwxNV0sNzI6WzIsMThdLDEwNTpbMiwzOV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxGPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6e30scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDE4O2Nhc2UgMTpyZXR1cm4gNztjYXNlIDI6cmV0dXJuIDg7Y2FzZSAzOnJldHVybiA5O2Nhc2UgNDpyZXR1cm4gMTA7Y2FzZSA1OnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDE5O2Nhc2UgNjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxNjtjYXNlIDc6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksMjE7Y2FzZSA4OnJldHVybiAyMDtjYXNlIDk6Y2FzZSAxMDpicmVhaztjYXNlIDExOnJldHVybiAxNTtjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6Y2FzZSAxNDpyZXR1cm4gMjI7Y2FzZSAxNTpyZXR1cm4gdGhpcy5iZWdpbigic3RydWN0IiksMzk7Y2FzZSAxNjpyZXR1cm4iRU9GX0lOX1NUUlVDVCI7Y2FzZSAxNzpyZXR1cm4iT1BFTl9JTl9TVFJVQ1QiO2Nhc2UgMTg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0MTtjYXNlIDE5OmJyZWFrO2Nhc2UgMjA6cmV0dXJuIk1FTUJFUiI7Y2FzZSAyMTpyZXR1cm4gMzc7Y2FzZSAyMjpyZXR1cm4gNjM7Y2FzZSAyMzpyZXR1cm4gNTY7Y2FzZSAyNDpyZXR1cm4gNTc7Y2FzZSAyNTpyZXR1cm4gNTk7Y2FzZSAyNjpyZXR1cm4gNDI7Y2FzZSAyNzpyZXR1cm4gNDM7Y2FzZSAyODp0aGlzLmJlZ2luKCJnZW5lcmljIik7YnJlYWs7Y2FzZSAyOTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzMDpyZXR1cm4iR0VORVJJQ1RZUEUiO2Nhc2UgMzE6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSAzMjp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzMzpyZXR1cm4iU1RSIjtjYXNlIDM0OnRoaXMuYmVnaW4oImJxc3RyaW5nIik7YnJlYWs7Y2FzZSAzNTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzNjpyZXR1cm4iQlFVT1RFX1NUUiI7Y2FzZSAzNzp0aGlzLmJlZ2luKCJocmVmIik7YnJlYWs7Y2FzZSAzODp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzOTpyZXR1cm4gNjI7Y2FzZSA0MDp0aGlzLmJlZ2luKCJjYWxsYmFja19uYW1lIik7YnJlYWs7Y2FzZSA0MTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA0Mjp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2tfYXJncyIpO2JyZWFrO2Nhc2UgNDM6cmV0dXJuIDYwO2Nhc2UgNDQ6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDU6cmV0dXJuIDYxO2Nhc2UgNDY6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgNDk6cmV0dXJuIDU4O2Nhc2UgNTA6Y2FzZSA1MTpyZXR1cm4gNTE7Y2FzZSA1MjpjYXNlIDUzOnJldHVybiA1MztjYXNlIDU0OnJldHVybiA1MjtjYXNlIDU1OnJldHVybiA1MDtjYXNlIDU2OnJldHVybiA1NDtjYXNlIDU3OnJldHVybiA1NTtjYXNlIDU4OnJldHVybiAzMTtjYXNlIDU5OnJldHVybiAzODtjYXNlIDYwOnJldHVybiA3NTtjYXNlIDYxOnJldHVybiJET1QiO2Nhc2UgNjI6cmV0dXJuIlBMVVMiO2Nhc2UgNjM6cmV0dXJuIDcyO2Nhc2UgNjQ6Y2FzZSA2NTpyZXR1cm4iRVFVQUxTIjtjYXNlIDY2OnJldHVybiA3OTtjYXNlIDY3OnJldHVybiJQVU5DVFVBVElPTiI7Y2FzZSA2ODpyZXR1cm4gNzg7Y2FzZSA2OTpyZXR1cm4gNzc7Y2FzZSA3MDpyZXR1cm4gNzQ7Y2FzZSA3MTpyZXR1cm4gMjR9fSxydWxlczpbL14oPzolJVx7KS8sL14oPzouKmRpcmVjdGlvblxzK1RCW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0JUW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0xSW15cbl0qKS8sL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvLC9eKD86OikvLC9eKD86XH0lJSkvLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvLC9eKD86JSUoPyFceykqW15cbl0qKFxyP1xuPykrKS8sL14oPzolJVteXG5dKihccj9cbikqKS8sL14oPzpccyooXHI/XG4pKykvLC9eKD86XHMrKS8sL14oPzpjbGFzc0RpYWdyYW0tdjJcYikvLC9eKD86Y2xhc3NEaWFncmFtXGIpLywvXig/Olt7XSkvLC9eKD86JCkvLC9eKD86W3tdKS8sL14oPzpbfV0pLywvXig/Oltcbl0pLywvXig/Oltee31cbl0qKS8sL14oPzpjbGFzc1xiKS8sL14oPzpjc3NDbGFzc1xiKS8sL14oPzpjYWxsYmFja1xiKS8sL14oPzpsaW5rXGIpLywvXig/OmNsaWNrXGIpLywvXig/Ojw8KS8sL14oPzo+PikvLC9eKD86W35dKS8sL14oPzpbfl0pLywvXig/Oltefl0qKS8sL14oPzpbIl0pLywvXig/OlsiXSkvLC9eKD86W14iXSopLywvXig/OltgXSkvLC9eKD86W2BdKS8sL14oPzpbXmBdKykvLC9eKD86aHJlZltcc10rWyJdKS8sL14oPzpbIl0pLywvXig/OlteIl0qKS8sL14oPzpjYWxsW1xzXSspLywvXig/OlwoW1xzXSpcKSkvLC9eKD86XCgpLywvXig/OlteKF0qKS8sL14oPzpcKSkvLC9eKD86W14pXSopLywvXig/Ol9zZWxmXGIpLywvXig/Ol9ibGFua1xiKS8sL14oPzpfcGFyZW50XGIpLywvXig/Ol90b3BcYikvLC9eKD86XHMqPFx8KS8sL14oPzpccypcfD4pLywvXig/OlxzKj4pLywvXig/OlxzKjwpLywvXig/OlxzKlwqKS8sL14oPzpccypvXGIpLywvXig/Oi0tKS8sL14oPzpcLlwuKS8sL14oPzo6ezF9W146XG47XSspLywvXig/Ojp7M30pLywvXig/Oi0pLywvXig/OlwuKS8sL14oPzpcKykvLC9eKD86JSkvLC9eKD86PSkvLC9eKD86PSkvLC9eKD86XHcrKS8sL14oPzpbISIjJCUmJyorLC0uYD9cXC9dKS8sL14oPzpbMC05XSspLywvXig/OltcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNl18W1x1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzddfFtcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XXxbXHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFdfFtcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVdfFtcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXXxbXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4QTBdfFtcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XXxbXHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMl18W1x1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQV18W1x1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XXxbXHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThdfFtcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENdfFtcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNdfFtcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XXxbXHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBdfFtcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRF18W1x1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNdfFtcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBdfFtcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXXxbXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MV18W1x1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM118W1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XXxbXHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFdfFtcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXXxbXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RF18W1x1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXXxbXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBdfFtcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q118W1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXXxbXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDddfFtcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXXxbXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZdfFtcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXXxbXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNdfFtcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXXxbXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RF18W1x1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXXxbXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rl18W1x1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOF18W1x1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRdfFtcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXXxbXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNl18W1x1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXXxbXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXXxbXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRdfFtcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ118W1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJdfFtcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RTVcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OF18W1x1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XXxbXHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJdfFtcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOF18W1x1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVdfFtcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XXxbXHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVdfFtcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RF18W1x1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XXxbXHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXXxbXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNdfFtcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRl18W1x1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXSkvLC9eKD86XHMpLywvXig/OiQpL10sY29uZGl0aW9uczp7YXJnX2RpcmVjdGl2ZTp7cnVsZXM6WzcsOF0saW5jbHVzaXZlOiExfSx0eXBlX2RpcmVjdGl2ZTp7cnVsZXM6WzYsN10saW5jbHVzaXZlOiExfSxvcGVuX2RpcmVjdGl2ZTp7cnVsZXM6WzVdLGluY2x1c2l2ZTohMX0sY2FsbGJhY2tfYXJnczp7cnVsZXM6WzQ0LDQ1XSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrX25hbWU6e3J1bGVzOls0MSw0Miw0M10saW5jbHVzaXZlOiExfSxocmVmOntydWxlczpbMzgsMzldLGluY2x1c2l2ZTohMX0sc3RydWN0OntydWxlczpbMTYsMTcsMTgsMTksMjBdLGluY2x1c2l2ZTohMX0sZ2VuZXJpYzp7cnVsZXM6WzI5LDMwXSxpbmNsdXNpdmU6ITF9LGJxc3RyaW5nOntydWxlczpbMzUsMzZdLGluY2x1c2l2ZTohMX0sc3RyaW5nOntydWxlczpbMzIsMzNdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsMSwyLDMsNCw5LDEwLDExLDEyLDEzLDE0LDE1LDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDMxLDM0LDM3LDQwLDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxXSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gUCgpe3RoaXMueXk9e319cmV0dXJuIFIubGV4ZXI9RixQLnByb3RvdHlwZT1SLFIuUGFyc2VyPVAsbmV3IFB9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9big4MjE4KS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDQ3MDE6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDJdLG49WzEsNV0scj1bNiw5LDExLDIzLDQwXSxpPVsxLDE3XSxhPVsxLDIwXSxvPVsxLDI1XSxzPVsxLDI2XSxjPVsxLDI3XSx1PVsxLDI4XSxsPVsxLDM3XSxoPVsyMywzNywzOF0sZj1bNCw2LDksMTEsMjMsNDBdLGQ9WzMzLDM0LDM1LDM2XSxwPVsyMiwyOV0seT17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsRVJfRElBR1JBTTo0LGRvY3VtZW50OjUsRU9GOjYsZGlyZWN0aXZlOjcsbGluZTo4LFNQQUNFOjksc3RhdGVtZW50OjEwLE5FV0xJTkU6MTEsb3BlbkRpcmVjdGl2ZToxMix0eXBlRGlyZWN0aXZlOjEzLGNsb3NlRGlyZWN0aXZlOjE0LCI6IjoxNSxhcmdEaXJlY3RpdmU6MTYsZW50aXR5TmFtZToxNyxyZWxTcGVjOjE4LHJvbGU6MTksQkxPQ0tfU1RBUlQ6MjAsYXR0cmlidXRlczoyMSxCTE9DS19TVE9QOjIyLEFMUEhBTlVNOjIzLGF0dHJpYnV0ZToyNCxhdHRyaWJ1dGVUeXBlOjI1LGF0dHJpYnV0ZU5hbWU6MjYsYXR0cmlidXRlS2V5VHlwZToyNyxDT01NRU5UOjI4LEFUVFJJQlVURV9XT1JEOjI5LEFUVFJJQlVURV9LRVk6MzAsY2FyZGluYWxpdHk6MzEscmVsVHlwZTozMixaRVJPX09SX09ORTozMyxaRVJPX09SX01PUkU6MzQsT05FX09SX01PUkU6MzUsT05MWV9PTkU6MzYsTk9OX0lERU5USUZZSU5HOjM3LElERU5USUZZSU5HOjM4LFdPUkQ6Mzksb3Blbl9kaXJlY3RpdmU6NDAsdHlwZV9kaXJlY3RpdmU6NDEsYXJnX2RpcmVjdGl2ZTo0MixjbG9zZV9kaXJlY3RpdmU6NDMsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6IkVSX0RJQUdSQU0iLDY6IkVPRiIsOToiU1BBQ0UiLDExOiJORVdMSU5FIiwxNToiOiIsMjA6IkJMT0NLX1NUQVJUIiwyMjoiQkxPQ0tfU1RPUCIsMjM6IkFMUEhBTlVNIiwyODoiQ09NTUVOVCIsMjk6IkFUVFJJQlVURV9XT1JEIiwzMDoiQVRUUklCVVRFX0tFWSIsMzM6IlpFUk9fT1JfT05FIiwzNDoiWkVST19PUl9NT1JFIiwzNToiT05FX09SX01PUkUiLDM2OiJPTkxZX09ORSIsMzc6Ik5PTl9JREVOVElGWUlORyIsMzg6IklERU5USUZZSU5HIiwzOToiV09SRCIsNDA6Im9wZW5fZGlyZWN0aXZlIiw0MToidHlwZV9kaXJlY3RpdmUiLDQyOiJhcmdfZGlyZWN0aXZlIiw0MzoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDNdLFszLDJdLFs1LDBdLFs1LDJdLFs4LDJdLFs4LDFdLFs4LDFdLFs4LDFdLFs3LDRdLFs3LDZdLFsxMCwxXSxbMTAsNV0sWzEwLDRdLFsxMCwzXSxbMTAsMV0sWzE3LDFdLFsyMSwxXSxbMjEsMl0sWzI0LDJdLFsyNCwzXSxbMjQsM10sWzI0LDRdLFsyNSwxXSxbMjYsMV0sWzI3LDFdLFsxOCwzXSxbMzEsMV0sWzMxLDFdLFszMSwxXSxbMzEsMV0sWzMyLDFdLFszMiwxXSxbMTksMV0sWzE5LDFdLFsxMiwxXSxbMTMsMV0sWzE2LDFdLFsxNCwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDE6YnJlYWs7Y2FzZSAzOnRoaXMuJD1bXTticmVhaztjYXNlIDQ6YVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDU6Y2FzZSA2OnRoaXMuJD1hW3NdO2JyZWFrO2Nhc2UgNzpjYXNlIDg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgMTI6ci5hZGRFbnRpdHkoYVtzLTRdKSxyLmFkZEVudGl0eShhW3MtMl0pLHIuYWRkUmVsYXRpb25zaGlwKGFbcy00XSxhW3NdLGFbcy0yXSxhW3MtM10pO2JyZWFrO2Nhc2UgMTM6ci5hZGRFbnRpdHkoYVtzLTNdKSxyLmFkZEF0dHJpYnV0ZXMoYVtzLTNdLGFbcy0xXSk7YnJlYWs7Y2FzZSAxNDpyLmFkZEVudGl0eShhW3MtMl0pO2JyZWFrO2Nhc2UgMTU6ci5hZGRFbnRpdHkoYVtzXSk7YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE3OnRoaXMuJD1bYVtzXV07YnJlYWs7Y2FzZSAxODphW3NdLnB1c2goYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE5OnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMV0sYXR0cmlidXRlTmFtZTphW3NdfTticmVhaztjYXNlIDIwOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMl0sYXR0cmlidXRlTmFtZTphW3MtMV0sYXR0cmlidXRlS2V5VHlwZTphW3NdfTticmVhaztjYXNlIDIxOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMl0sYXR0cmlidXRlTmFtZTphW3MtMV0sYXR0cmlidXRlQ29tbWVudDphW3NdfTticmVhaztjYXNlIDIyOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtM10sYXR0cmlidXRlTmFtZTphW3MtMl0sYXR0cmlidXRlS2V5VHlwZTphW3MtMV0sYXR0cmlidXRlQ29tbWVudDphW3NdfTticmVhaztjYXNlIDIzOmNhc2UgMjQ6Y2FzZSAyNTp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDI2OnRoaXMuJD17Y2FyZEE6YVtzXSxyZWxUeXBlOmFbcy0xXSxjYXJkQjphW3MtMl19O2JyZWFrO2Nhc2UgMjc6dGhpcy4kPXIuQ2FyZGluYWxpdHkuWkVST19PUl9PTkU7YnJlYWs7Y2FzZSAyODp0aGlzLiQ9ci5DYXJkaW5hbGl0eS5aRVJPX09SX01PUkU7YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9ci5DYXJkaW5hbGl0eS5PTkVfT1JfTU9SRTticmVhaztjYXNlIDMwOnRoaXMuJD1yLkNhcmRpbmFsaXR5Lk9OTFlfT05FO2JyZWFrO2Nhc2UgMzE6dGhpcy4kPXIuSWRlbnRpZmljYXRpb24uTk9OX0lERU5USUZZSU5HO2JyZWFrO2Nhc2UgMzI6dGhpcy4kPXIuSWRlbnRpZmljYXRpb24uSURFTlRJRllJTkc7YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9YVtzXS5yZXBsYWNlKC8iL2csIiIpO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAzNTpyLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzY6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzc6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDM4OnIucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImVyIil9fSx0YWJsZTpbezM6MSw0OmUsNzozLDEyOjQsNDA6bn0sezE6WzNdfSx0KHIsWzIsM10sezU6Nn0pLHszOjcsNDplLDc6MywxMjo0LDQwOm59LHsxMzo4LDQxOlsxLDldfSx7NDE6WzIsMzVdfSx7NjpbMSwxMF0sNzoxNSw4OjExLDk6WzEsMTJdLDEwOjEzLDExOlsxLDE0XSwxMjo0LDE3OjE2LDIzOmksNDA6bn0sezE6WzIsMl19LHsxNDoxOCwxNTpbMSwxOV0sNDM6YX0sdChbMTUsNDNdLFsyLDM2XSksdChyLFsyLDhdLHsxOlsyLDFdfSksdChyLFsyLDRdKSx7NzoxNSwxMDoyMSwxMjo0LDE3OjE2LDIzOmksNDA6bn0sdChyLFsyLDZdKSx0KHIsWzIsN10pLHQocixbMiwxMV0pLHQocixbMiwxNV0sezE4OjIyLDMxOjI0LDIwOlsxLDIzXSwzMzpvLDM0OnMsMzU6YywzNjp1fSksdChbNiw5LDExLDE1LDIwLDIzLDMzLDM0LDM1LDM2LDQwXSxbMiwxNl0pLHsxMTpbMSwyOV19LHsxNjozMCw0MjpbMSwzMV19LHsxMTpbMiwzOF19LHQocixbMiw1XSksezE3OjMyLDIzOml9LHsyMTozMywyMjpbMSwzNF0sMjQ6MzUsMjU6MzYsMjk6bH0sezMyOjM4LDM3OlsxLDM5XSwzODpbMSw0MF19LHQoaCxbMiwyN10pLHQoaCxbMiwyOF0pLHQoaCxbMiwyOV0pLHQoaCxbMiwzMF0pLHQoZixbMiw5XSksezE0OjQxLDQzOmF9LHs0MzpbMiwzN119LHsxNTpbMSw0Ml19LHsyMjpbMSw0M119LHQocixbMiwxNF0pLHsyMTo0NCwyMjpbMiwxN10sMjQ6MzUsMjU6MzYsMjk6bH0sezI2OjQ1LDI5OlsxLDQ2XX0sezI5OlsyLDIzXX0sezMxOjQ3LDMzOm8sMzQ6cywzNTpjLDM2OnV9LHQoZCxbMiwzMV0pLHQoZCxbMiwzMl0pLHsxMTpbMSw0OF19LHsxOTo0OSwyMzpbMSw1MV0sMzk6WzEsNTBdfSx0KHIsWzIsMTNdKSx7MjI6WzIsMThdfSx0KHAsWzIsMTldLHsyNzo1MiwyODpbMSw1M10sMzA6WzEsNTRdfSksdChbMjIsMjgsMjksMzBdLFsyLDI0XSksezIzOlsyLDI2XX0sdChmLFsyLDEwXSksdChyLFsyLDEyXSksdChyLFsyLDMzXSksdChyLFsyLDM0XSksdChwLFsyLDIwXSx7Mjg6WzEsNTVdfSksdChwLFsyLDIxXSksdChbMjIsMjgsMjldLFsyLDI1XSksdChwLFsyLDIyXSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDM1XSw3OlsyLDJdLDIwOlsyLDM4XSwzMTpbMiwzN10sMzc6WzIsMjNdLDQ0OlsyLDE4XSw0NzpbMiwyNl19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxnPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDQwO2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSw0MTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTU7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDQzO2Nhc2UgNDpyZXR1cm4gNDI7Y2FzZSA1OmNhc2UgNjpicmVhaztjYXNlIDc6cmV0dXJuIDExO2Nhc2UgODpicmVhaztjYXNlIDk6cmV0dXJuIDk7Y2FzZSAxMDpyZXR1cm4gMzk7Y2FzZSAxMTpyZXR1cm4gNDtjYXNlIDEyOnJldHVybiB0aGlzLmJlZ2luKCJibG9jayIpLDIwO2Nhc2UgMTM6YnJlYWs7Y2FzZSAxNDpyZXR1cm4gMzA7Y2FzZSAxNTpyZXR1cm4gMjk7Y2FzZSAxNjpyZXR1cm4gMjg7Y2FzZSAxNzpicmVhaztjYXNlIDE4OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjI7Y2FzZSAxOTpyZXR1cm4gZS55eXRleHRbMF07Y2FzZSAyMDpyZXR1cm4gMzM7Y2FzZSAyMTpyZXR1cm4gMzQ7Y2FzZSAyMjpyZXR1cm4gMzU7Y2FzZSAyMzpyZXR1cm4gMzY7Y2FzZSAyNDpyZXR1cm4gMzM7Y2FzZSAyNTpyZXR1cm4gMzQ7Y2FzZSAyNjpyZXR1cm4gMzU7Y2FzZSAyNzpyZXR1cm4gMzc7Y2FzZSAyODpyZXR1cm4gMzg7Y2FzZSAyOTpjYXNlIDMwOnJldHVybiAzNztjYXNlIDMxOnJldHVybiAyMztjYXNlIDMyOnJldHVybiBlLnl5dGV4dFswXTtjYXNlIDMzOnJldHVybiA2fX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/Oltcc10rKS9pLC9eKD86IlteIl0qIikvaSwvXig/OmVyRGlhZ3JhbVxiKS9pLC9eKD86XHspL2ksL14oPzpccyspL2ksL14oPzooPzpQSyl8KD86RkspKS9pLC9eKD86W0EtWmEtel1bQS1aYS16MC05XC1fXSopL2ksL14oPzoiW14iXSoiKS9pLC9eKD86W1xuXSspL2ksL14oPzpcfSkvaSwvXig/Oi4pL2ksL14oPzpcfG9cYikvaSwvXig/Olx9b1xiKS9pLC9eKD86XH1cfCkvaSwvXig/Olx8XHwpL2ksL14oPzpvXHwpL2ksL14oPzpvXHspL2ksL14oPzpcfFx7KS9pLC9eKD86XC5cLikvaSwvXig/Oi0tKS9pLC9eKD86XC4tKS9pLC9eKD86LVwuKS9pLC9eKD86W0EtWmEtel1bQS1aYS16MC05XC1fXSopL2ksL14oPzouKS9pLC9eKD86JCkvaV0sY29uZGl0aW9uczp7b3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sYmxvY2s6e3J1bGVzOlsxMywxNCwxNSwxNiwxNywxOCwxOV0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsNyw4LDksMTAsMTEsMTIsMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzNdLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiBtKCl7dGhpcy55eT17fX1yZXR1cm4geS5sZXhlcj1nLG0ucHJvdG90eXBlPXkseS5QYXJzZXI9bSxuZXcgbX0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDgwMDkpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sNzgwNToodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsOV0sbj1bMSw3XSxyPVsxLDZdLGk9WzEsOF0sYT1bMSwyMCwyMSwyMiwyMywzOCw0Nyw1OSw2MCw3OSw4MCw4MSw4Miw4Myw4NCw5OCw5OSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLG89WzIsMTBdLHM9WzEsMjBdLGM9WzEsMjFdLHU9WzEsMjJdLGw9WzEsMjNdLGg9WzEsMzBdLGY9WzEsNTldLGQ9WzEsNDVdLHA9WzEsNDldLHk9WzEsMzNdLGc9WzEsMzRdLG09WzEsMzVdLHY9WzEsMzZdLGI9WzEsMzddLF89WzEsNTNdLHg9WzEsNDhdLHc9WzEsNTBdLGs9WzEsNTJdLFQ9WzEsNTZdLEU9WzEsNTddLEM9WzEsMzhdLFM9WzEsMzldLEE9WzEsNDBdLE09WzEsNDFdLE49WzEsNThdLEQ9WzEsNDddLE89WzEsNTFdLEI9WzEsNTRdLEw9WzEsNTVdLEk9WzEsNDZdLFI9WzEsNjJdLEY9WzEsNjddLFA9WzEsMjAsMjEsMjIsMjMsMzgsNDIsNDcsNTksNjAsNzksODAsODEsODIsODMsODQsOTgsOTksMTAyLDEwNCwxMDUsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxqPVsxLDcxXSxZPVsxLDcwXSx6PVsxLDcyXSxVPVsyMCwyMSwyMyw3NCw3NV0scT1bMSw5M10sJD1bMSw5OF0sSD1bMSwxMDFdLFc9WzEsMTAyXSxWPVsxLDk1XSxHPVsxLDEwMF0sWD1bMSwxMDNdLFo9WzEsOTZdLFE9WzEsMTA4XSxLPVsxLDEwN10sSj1bMSw5N10sdHQ9WzEsOTldLGV0PVsxLDEwNF0sbnQ9WzEsMTA1XSxydD1bMSwxMDZdLGl0PVsxLDEwOV0sYXQ9WzIwLDIxLDIyLDIzLDc0LDc1XSxvdD1bMjAsMjEsMjIsMjMsNDgsNzQsNzVdLHN0PVsyMCwyMSwyMiwyMyw0MCw0Nyw0OCw1MCw1Miw1NCw1Niw1OCw1OSw2MCw2Miw2NCw2Niw2Nyw2OSw3NCw3NSw4NCw5OCw5OSwxMDIsMTA0LDEwNSwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0sY3Q9WzIwLDIxLDIzXSx1dD1bMjAsMjEsMjMsNDcsNTksNjAsNzQsNzUsODQsOTgsOTksMTAyLDEwNCwxMDUsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLGx0PVsxLDEyLDIwLDIxLDIyLDIzLDI0LDM4LDQyLDQ3LDU5LDYwLDc5LDgwLDgxLDgyLDgzLDg0LDk4LDk5LDEwMiwxMDQsMTA1LDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0saHQ9WzQ3LDU5LDYwLDg0LDk4LDk5LDEwMiwxMDQsMTA1LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxmdD1bMSwxNDJdLGR0PVsxLDE1MF0scHQ9WzEsMTUxXSx5dD1bMSwxNTJdLGd0PVsxLDE1M10sbXQ9WzEsMTM3XSx2dD1bMSwxMzhdLGJ0PVsxLDEzNF0sX3Q9WzEsMTQ1XSx4dD1bMSwxNDZdLHd0PVsxLDE0N10sa3Q9WzEsMTQ4XSxUdD1bMSwxNDldLEV0PVsxLDE1NF0sQ3Q9WzEsMTU1XSxTdD1bMSwxNDBdLEF0PVsxLDE0M10sTXQ9WzEsMTM5XSxOdD1bMSwxMzZdLER0PVsyMCwyMSwyMiwyMywzOCw0Miw0Nyw1OSw2MCw3OSw4MCw4MSw4Miw4Myw4NCw5OCw5OSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLE90PVsxLDE1OF0sQnQ9WzIwLDIxLDIyLDIzLDI2LDQ3LDU5LDYwLDg0LDk4LDk5LDEwMiwxMDQsMTA1LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxMdD1bMjAsMjEsMjIsMjMsMjQsMjYsMzgsNDAsNDEsNDIsNDcsNTEsNTMsNTUsNTcsNTksNjAsNjEsNjMsNjUsNjYsNjgsNzAsNzQsNzUsNzksODAsODEsODIsODMsODQsODUsODgsOTgsOTksMTAyLDEwNCwxMDUsMTA2LDEwNywxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0sSXQ9WzEyLDIxLDIyLDI0XSxSdD1bMjIsOTldLEZ0PVsxLDI0MV0sUHQ9WzEsMjM2XSxqdD1bMSwyMzddLFl0PVsxLDI0NV0senQ9WzEsMjQyXSxVdD1bMSwyMzldLHF0PVsxLDIzOF0sJHQ9WzEsMjQwXSxIdD1bMSwyNDNdLFd0PVsxLDI0NF0sVnQ9WzEsMjQ2XSxHdD1bMSwyNjRdLFh0PVsyMCwyMSwyMyw5OV0sWnQ9WzIwLDIxLDIyLDIzLDU5LDYwLDc5LDk1LDk4LDk5LDEwMiwxMDMsMTA0LDEwNSwxMDZdLFF0PXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxtZXJtYWlkRG9jOjQsZGlyZWN0aXZlOjUsb3BlbkRpcmVjdGl2ZTo2LHR5cGVEaXJlY3RpdmU6NyxjbG9zZURpcmVjdGl2ZTo4LHNlcGFyYXRvcjo5LCI6IjoxMCxhcmdEaXJlY3RpdmU6MTEsb3Blbl9kaXJlY3RpdmU6MTIsdHlwZV9kaXJlY3RpdmU6MTMsYXJnX2RpcmVjdGl2ZToxNCxjbG9zZV9kaXJlY3RpdmU6MTUsZ3JhcGhDb25maWc6MTYsZG9jdW1lbnQ6MTcsbGluZToxOCxzdGF0ZW1lbnQ6MTksU0VNSToyMCxORVdMSU5FOjIxLFNQQUNFOjIyLEVPRjoyMyxHUkFQSDoyNCxOT0RJUjoyNSxESVI6MjYsRmlyc3RTdG10U2VwZXJhdG9yOjI3LGVuZGluZzoyOCxlbmRUb2tlbjoyOSxzcGFjZUxpc3Q6MzAsc3BhY2VMaXN0TmV3bGluZTozMSx2ZXJ0aWNlU3RhdGVtZW50OjMyLHN0eWxlU3RhdGVtZW50OjMzLGxpbmtTdHlsZVN0YXRlbWVudDozNCxjbGFzc0RlZlN0YXRlbWVudDozNSxjbGFzc1N0YXRlbWVudDozNixjbGlja1N0YXRlbWVudDozNyxzdWJncmFwaDozOCx0ZXh0OjM5LFNRUzo0MCxTUUU6NDEsZW5kOjQyLGRpcmVjdGlvbjo0MyxsaW5rOjQ0LG5vZGU6NDUsdmVydGV4OjQ2LEFNUDo0NyxTVFlMRV9TRVBBUkFUT1I6NDgsaWRTdHJpbmc6NDksUFM6NTAsUEU6NTEsIigtIjo1MiwiLSkiOjUzLFNUQURJVU1TVEFSVDo1NCxTVEFESVVNRU5EOjU1LFNVQlJPVVRJTkVTVEFSVDo1NixTVUJST1VUSU5FRU5EOjU3LFZFUlRFWF9XSVRIX1BST1BTX1NUQVJUOjU4LEFMUEhBOjU5LENPTE9OOjYwLFBJUEU6NjEsQ1lMSU5ERVJTVEFSVDo2MixDWUxJTkRFUkVORDo2MyxESUFNT05EX1NUQVJUOjY0LERJQU1PTkRfU1RPUDo2NSxUQUdFTkQ6NjYsVFJBUFNUQVJUOjY3LFRSQVBFTkQ6NjgsSU5WVFJBUFNUQVJUOjY5LElOVlRSQVBFTkQ6NzAsbGlua1N0YXRlbWVudDo3MSxhcnJvd1RleHQ6NzIsVEVTVFNUUjo3MyxTVEFSVF9MSU5LOjc0LExJTks6NzUsdGV4dFRva2VuOjc2LFNUUjo3NyxrZXl3b3Jkczo3OCxTVFlMRTo3OSxMSU5LU1RZTEU6ODAsQ0xBU1NERUY6ODEsQ0xBU1M6ODIsQ0xJQ0s6ODMsRE9XTjo4NCxVUDo4NSx0ZXh0Tm9UYWdzOjg2LHRleHROb1RhZ3NUb2tlbjo4NyxERUZBVUxUOjg4LHN0eWxlc09wdDo4OSxhbHBoYU51bTo5MCxDQUxMQkFDS05BTUU6OTEsQ0FMTEJBQ0tBUkdTOjkyLEhSRUY6OTMsTElOS19UQVJHRVQ6OTQsSEVYOjk1LG51bUxpc3Q6OTYsSU5URVJQT0xBVEU6OTcsTlVNOjk4LENPTU1BOjk5LHN0eWxlOjEwMCxzdHlsZUNvbXBvbmVudDoxMDEsTUlOVVM6MTAyLFVOSVQ6MTAzLEJSS1Q6MTA0LERPVDoxMDUsUENUOjEwNixUQUdTVEFSVDoxMDcsYWxwaGFOdW1Ub2tlbjoxMDgsaWRTdHJpbmdUb2tlbjoxMDksYWxwaGFOdW1TdGF0ZW1lbnQ6MTEwLGRpcmVjdGlvbl90YjoxMTEsZGlyZWN0aW9uX2J0OjExMixkaXJlY3Rpb25fcmw6MTEzLGRpcmVjdGlvbl9scjoxMTQsUFVOQ1RVQVRJT046MTE1LFVOSUNPREVfVEVYVDoxMTYsUExVUzoxMTcsRVFVQUxTOjExOCxNVUxUOjExOSxVTkRFUlNDT1JFOjEyMCxncmFwaENvZGVUb2tlbnM6MTIxLEFSUk9XX0NST1NTOjEyMixBUlJPV19QT0lOVDoxMjMsQVJST1dfQ0lSQ0xFOjEyNCxBUlJPV19PUEVOOjEyNSxRVU9URToxMjYsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDEwOiI6IiwxMjoib3Blbl9kaXJlY3RpdmUiLDEzOiJ0eXBlX2RpcmVjdGl2ZSIsMTQ6ImFyZ19kaXJlY3RpdmUiLDE1OiJjbG9zZV9kaXJlY3RpdmUiLDIwOiJTRU1JIiwyMToiTkVXTElORSIsMjI6IlNQQUNFIiwyMzoiRU9GIiwyNDoiR1JBUEgiLDI1OiJOT0RJUiIsMjY6IkRJUiIsMzg6InN1YmdyYXBoIiw0MDoiU1FTIiw0MToiU1FFIiw0MjoiZW5kIiw0NzoiQU1QIiw0ODoiU1RZTEVfU0VQQVJBVE9SIiw1MDoiUFMiLDUxOiJQRSIsNTI6IigtIiw1MzoiLSkiLDU0OiJTVEFESVVNU1RBUlQiLDU1OiJTVEFESVVNRU5EIiw1NjoiU1VCUk9VVElORVNUQVJUIiw1NzoiU1VCUk9VVElORUVORCIsNTg6IlZFUlRFWF9XSVRIX1BST1BTX1NUQVJUIiw1OToiQUxQSEEiLDYwOiJDT0xPTiIsNjE6IlBJUEUiLDYyOiJDWUxJTkRFUlNUQVJUIiw2MzoiQ1lMSU5ERVJFTkQiLDY0OiJESUFNT05EX1NUQVJUIiw2NToiRElBTU9ORF9TVE9QIiw2NjoiVEFHRU5EIiw2NzoiVFJBUFNUQVJUIiw2ODoiVFJBUEVORCIsNjk6IklOVlRSQVBTVEFSVCIsNzA6IklOVlRSQVBFTkQiLDczOiJURVNUU1RSIiw3NDoiU1RBUlRfTElOSyIsNzU6IkxJTksiLDc3OiJTVFIiLDc5OiJTVFlMRSIsODA6IkxJTktTVFlMRSIsODE6IkNMQVNTREVGIiw4MjoiQ0xBU1MiLDgzOiJDTElDSyIsODQ6IkRPV04iLDg1OiJVUCIsODg6IkRFRkFVTFQiLDkxOiJDQUxMQkFDS05BTUUiLDkyOiJDQUxMQkFDS0FSR1MiLDkzOiJIUkVGIiw5NDoiTElOS19UQVJHRVQiLDk1OiJIRVgiLDk3OiJJTlRFUlBPTEFURSIsOTg6Ik5VTSIsOTk6IkNPTU1BIiwxMDI6Ik1JTlVTIiwxMDM6IlVOSVQiLDEwNDoiQlJLVCIsMTA1OiJET1QiLDEwNjoiUENUIiwxMDc6IlRBR1NUQVJUIiwxMTE6ImRpcmVjdGlvbl90YiIsMTEyOiJkaXJlY3Rpb25fYnQiLDExMzoiZGlyZWN0aW9uX3JsIiwxMTQ6ImRpcmVjdGlvbl9sciIsMTE1OiJQVU5DVFVBVElPTiIsMTE2OiJVTklDT0RFX1RFWFQiLDExNzoiUExVUyIsMTE4OiJFUVVBTFMiLDExOToiTVVMVCIsMTIwOiJVTkRFUlNDT1JFIiwxMjI6IkFSUk9XX0NST1NTIiwxMjM6IkFSUk9XX1BPSU5UIiwxMjQ6IkFSUk9XX0NJUkNMRSIsMTI1OiJBUlJPV19PUEVOIiwxMjY6IlFVT1RFIn0scHJvZHVjdGlvbnNfOlswLFszLDFdLFszLDJdLFs1LDRdLFs1LDZdLFs2LDFdLFs3LDFdLFsxMSwxXSxbOCwxXSxbNCwyXSxbMTcsMF0sWzE3LDJdLFsxOCwxXSxbMTgsMV0sWzE4LDFdLFsxOCwxXSxbMTgsMV0sWzE2LDJdLFsxNiwyXSxbMTYsMl0sWzE2LDNdLFsyOCwyXSxbMjgsMV0sWzI5LDFdLFsyOSwxXSxbMjksMV0sWzI3LDFdLFsyNywxXSxbMjcsMl0sWzMxLDJdLFszMSwyXSxbMzEsMV0sWzMxLDFdLFszMCwyXSxbMzAsMV0sWzE5LDJdLFsxOSwyXSxbMTksMl0sWzE5LDJdLFsxOSwyXSxbMTksMl0sWzE5LDldLFsxOSw2XSxbMTksNF0sWzE5LDFdLFs5LDFdLFs5LDFdLFs5LDFdLFszMiwzXSxbMzIsNF0sWzMyLDJdLFszMiwxXSxbNDUsMV0sWzQ1LDVdLFs0NSwzXSxbNDYsNF0sWzQ2LDZdLFs0Niw0XSxbNDYsNF0sWzQ2LDRdLFs0Niw4XSxbNDYsNF0sWzQ2LDRdLFs0Niw0XSxbNDYsNl0sWzQ2LDRdLFs0Niw0XSxbNDYsNF0sWzQ2LDRdLFs0Niw0XSxbNDYsMV0sWzQ0LDJdLFs0NCwzXSxbNDQsM10sWzQ0LDFdLFs0NCwzXSxbNzEsMV0sWzcyLDNdLFszOSwxXSxbMzksMl0sWzM5LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzg2LDFdLFs4NiwyXSxbMzUsNV0sWzM1LDVdLFszNiw1XSxbMzcsMl0sWzM3LDRdLFszNywzXSxbMzcsNV0sWzM3LDJdLFszNyw0XSxbMzcsNF0sWzM3LDZdLFszNywyXSxbMzcsNF0sWzM3LDJdLFszNyw0XSxbMzcsNF0sWzM3LDZdLFszMyw1XSxbMzMsNV0sWzM0LDVdLFszNCw1XSxbMzQsOV0sWzM0LDldLFszNCw3XSxbMzQsN10sWzk2LDFdLFs5NiwzXSxbODksMV0sWzg5LDNdLFsxMDAsMV0sWzEwMCwyXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzc2LDFdLFs3NiwxXSxbNzYsMV0sWzc2LDFdLFs3NiwxXSxbNzYsMV0sWzg3LDFdLFs4NywxXSxbODcsMV0sWzg3LDFdLFs0OSwxXSxbNDksMl0sWzkwLDFdLFs5MCwyXSxbMTEwLDFdLFsxMTAsMV0sWzExMCwxXSxbMTEwLDFdLFs0MywxXSxbNDMsMV0sWzQzLDFdLFs0MywxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDU6ci5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDY6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNzphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgODpyLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJmbG93Y2hhcnQiKTticmVhaztjYXNlIDEwOnRoaXMuJD1bXTticmVhaztjYXNlIDExOmFbc10hPT1bXSYmYVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDEyOmNhc2UgNzg6Y2FzZSA4MDpjYXNlIDkyOmNhc2UgMTQ4OmNhc2UgMTUwOmNhc2UgMTUxOnRoaXMuJD1hW3NdO2JyZWFrO2Nhc2UgMTk6ci5zZXREaXJlY3Rpb24oIlRCIiksdGhpcy4kPSJUQiI7YnJlYWs7Y2FzZSAyMDpyLnNldERpcmVjdGlvbihhW3MtMV0pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9YVtzLTFdLm5vZGVzO2JyZWFrO2Nhc2UgMzY6Y2FzZSAzNzpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0MTp0aGlzLiQ9ci5hZGRTdWJHcmFwaChhW3MtNl0sYVtzLTFdLGFbcy00XSk7YnJlYWs7Y2FzZSA0Mjp0aGlzLiQ9ci5hZGRTdWJHcmFwaChhW3MtM10sYVtzLTFdLGFbcy0zXSk7YnJlYWs7Y2FzZSA0Mzp0aGlzLiQ9ci5hZGRTdWJHcmFwaCh2b2lkIDAsYVtzLTFdLHZvaWQgMCk7YnJlYWs7Y2FzZSA0ODpyLmFkZExpbmsoYVtzLTJdLnN0bXQsYVtzXSxhW3MtMV0pLHRoaXMuJD17c3RtdDphW3NdLG5vZGVzOmFbc10uY29uY2F0KGFbcy0yXS5ub2Rlcyl9O2JyZWFrO2Nhc2UgNDk6ci5hZGRMaW5rKGFbcy0zXS5zdG10LGFbcy0xXSxhW3MtMl0pLHRoaXMuJD17c3RtdDphW3MtMV0sbm9kZXM6YVtzLTFdLmNvbmNhdChhW3MtM10ubm9kZXMpfTticmVhaztjYXNlIDUwOnRoaXMuJD17c3RtdDphW3MtMV0sbm9kZXM6YVtzLTFdfTticmVhaztjYXNlIDUxOnRoaXMuJD17c3RtdDphW3NdLG5vZGVzOmFbc119O2JyZWFrO2Nhc2UgNTI6dGhpcy4kPVthW3NdXTticmVhaztjYXNlIDUzOnRoaXMuJD1hW3MtNF0uY29uY2F0KGFbc10pO2JyZWFrO2Nhc2UgNTQ6dGhpcy4kPVthW3MtMl1dLHIuc2V0Q2xhc3MoYVtzLTJdLGFbc10pO2JyZWFrO2Nhc2UgNTU6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJzcXVhcmUiKTticmVhaztjYXNlIDU2OnRoaXMuJD1hW3MtNV0sci5hZGRWZXJ0ZXgoYVtzLTVdLGFbcy0yXSwiY2lyY2xlIik7YnJlYWs7Y2FzZSA1Nzp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sImVsbGlwc2UiKTticmVhaztjYXNlIDU4OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwic3RhZGl1bSIpO2JyZWFrO2Nhc2UgNTk6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJzdWJyb3V0aW5lIik7YnJlYWs7Y2FzZSA2MDp0aGlzLiQ9YVtzLTddLHIuYWRkVmVydGV4KGFbcy03XSxhW3MtMV0sInJlY3QiLHZvaWQgMCx2b2lkIDAsdm9pZCAwLE9iamVjdC5mcm9tRW50cmllcyhbW2Fbcy01XSxhW3MtM11dXSkpO2JyZWFrO2Nhc2UgNjE6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJjeWxpbmRlciIpO2JyZWFrO2Nhc2UgNjI6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJyb3VuZCIpO2JyZWFrO2Nhc2UgNjM6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJkaWFtb25kIik7YnJlYWs7Y2FzZSA2NDp0aGlzLiQ9YVtzLTVdLHIuYWRkVmVydGV4KGFbcy01XSxhW3MtMl0sImhleGFnb24iKTticmVhaztjYXNlIDY1OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwib2RkIik7YnJlYWs7Y2FzZSA2Njp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sInRyYXBlem9pZCIpO2JyZWFrO2Nhc2UgNjc6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJpbnZfdHJhcGV6b2lkIik7YnJlYWs7Y2FzZSA2ODp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sImxlYW5fcmlnaHQiKTticmVhaztjYXNlIDY5OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwibGVhbl9sZWZ0Iik7YnJlYWs7Y2FzZSA3MDp0aGlzLiQ9YVtzXSxyLmFkZFZlcnRleChhW3NdKTticmVhaztjYXNlIDcxOmFbcy0xXS50ZXh0PWFbc10sdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDcyOmNhc2UgNzM6YVtzLTJdLnRleHQ9YVtzLTFdLHRoaXMuJD1hW3MtMl07YnJlYWs7Y2FzZSA3NDp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDc1OnZhciBjPXIuZGVzdHJ1Y3RMaW5rKGFbc10sYVtzLTJdKTt0aGlzLiQ9e3R5cGU6Yy50eXBlLHN0cm9rZTpjLnN0cm9rZSxsZW5ndGg6Yy5sZW5ndGgsdGV4dDphW3MtMV19O2JyZWFrO2Nhc2UgNzY6Yz1yLmRlc3RydWN0TGluayhhW3NdKSx0aGlzLiQ9e3R5cGU6Yy50eXBlLHN0cm9rZTpjLnN0cm9rZSxsZW5ndGg6Yy5sZW5ndGh9O2JyZWFrO2Nhc2UgNzc6dGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDc5OmNhc2UgOTM6Y2FzZSAxNDk6dGhpcy4kPWFbcy0xXSsiIithW3NdO2JyZWFrO2Nhc2UgOTQ6Y2FzZSA5NTp0aGlzLiQ9YVtzLTRdLHIuYWRkQ2xhc3MoYVtzLTJdLGFbc10pO2JyZWFrO2Nhc2UgOTY6dGhpcy4kPWFbcy00XSxyLnNldENsYXNzKGFbcy0yXSxhW3NdKTticmVhaztjYXNlIDk3OmNhc2UgMTA1OnRoaXMuJD1hW3MtMV0sci5zZXRDbGlja0V2ZW50KGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDk4OmNhc2UgMTA2OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0zXSxhW3MtMl0pLHIuc2V0VG9vbHRpcChhW3MtM10sYVtzXSk7YnJlYWs7Y2FzZSA5OTp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMl0sYVtzLTFdLGFbc10pO2JyZWFrO2Nhc2UgMTAwOnRoaXMuJD1hW3MtNF0sci5zZXRDbGlja0V2ZW50KGFbcy00XSxhW3MtM10sYVtzLTJdKSxyLnNldFRvb2x0aXAoYVtzLTRdLGFbc10pO2JyZWFrO2Nhc2UgMTAxOmNhc2UgMTA3OnRoaXMuJD1hW3MtMV0sci5zZXRMaW5rKGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDEwMjpjYXNlIDEwODp0aGlzLiQ9YVtzLTNdLHIuc2V0TGluayhhW3MtM10sYVtzLTJdKSxyLnNldFRvb2x0aXAoYVtzLTNdLGFbc10pO2JyZWFrO2Nhc2UgMTAzOmNhc2UgMTA5OnRoaXMuJD1hW3MtM10sci5zZXRMaW5rKGFbcy0zXSxhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAxMDQ6Y2FzZSAxMTA6dGhpcy4kPWFbcy01XSxyLnNldExpbmsoYVtzLTVdLGFbcy00XSxhW3NdKSxyLnNldFRvb2x0aXAoYVtzLTVdLGFbcy0yXSk7YnJlYWs7Y2FzZSAxMTE6dGhpcy4kPWFbcy00XSxyLmFkZFZlcnRleChhW3MtMl0sdm9pZCAwLHZvaWQgMCxhW3NdKTticmVhaztjYXNlIDExMjpjYXNlIDExNDp0aGlzLiQ9YVtzLTRdLHIudXBkYXRlTGluayhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAxMTM6dGhpcy4kPWFbcy00XSxyLnVwZGF0ZUxpbmsoW2Fbcy0yXV0sYVtzXSk7YnJlYWs7Y2FzZSAxMTU6dGhpcy4kPWFbcy04XSxyLnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZShbYVtzLTZdXSxhW3MtMl0pLHIudXBkYXRlTGluayhbYVtzLTZdXSxhW3NdKTticmVhaztjYXNlIDExNjp0aGlzLiQ9YVtzLThdLHIudXBkYXRlTGlua0ludGVycG9sYXRlKGFbcy02XSxhW3MtMl0pLHIudXBkYXRlTGluayhhW3MtNl0sYVtzXSk7YnJlYWs7Y2FzZSAxMTc6dGhpcy4kPWFbcy02XSxyLnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZShbYVtzLTRdXSxhW3NdKTticmVhaztjYXNlIDExODp0aGlzLiQ9YVtzLTZdLHIudXBkYXRlTGlua0ludGVycG9sYXRlKGFbcy00XSxhW3NdKTticmVhaztjYXNlIDExOTpjYXNlIDEyMTp0aGlzLiQ9W2Fbc11dO2JyZWFrO2Nhc2UgMTIwOmNhc2UgMTIyOmFbcy0yXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMl07YnJlYWs7Y2FzZSAxMjQ6dGhpcy4kPWFbcy0xXSthW3NdO2JyZWFrO2Nhc2UgMTQ2OnRoaXMuJD1hW3NdO2JyZWFrO2Nhc2UgMTQ3OnRoaXMuJD1hW3MtMV0rIiIrYVtzXTticmVhaztjYXNlIDE1Mjp0aGlzLiQ9InYiO2JyZWFrO2Nhc2UgMTUzOnRoaXMuJD0iLSI7YnJlYWs7Y2FzZSAxNTQ6dGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJUQiJ9O2JyZWFrO2Nhc2UgMTU1OnRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiQlQifTticmVhaztjYXNlIDE1Njp0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IlJMIn07YnJlYWs7Y2FzZSAxNTc6dGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJMUiJ9fX0sdGFibGU6W3szOjEsNDoyLDU6Myw2OjUsMTI6ZSwxNjo0LDIxOm4sMjI6ciwyNDppfSx7MTpbM119LHsxOlsyLDFdfSx7MzoxMCw0OjIsNTozLDY6NSwxMjplLDE2OjQsMjE6biwyMjpyLDI0Oml9LHQoYSxvLHsxNzoxMX0pLHs3OjEyLDEzOlsxLDEzXX0sezE2OjE0LDIxOm4sMjI6ciwyNDppfSx7MTY6MTUsMjE6biwyMjpyLDI0Oml9LHsyNTpbMSwxNl0sMjY6WzEsMTddfSx7MTM6WzIsNV19LHsxOlsyLDJdfSx7MTpbMiw5XSwxODoxOCwxOToxOSwyMDpzLDIxOmMsMjI6dSwyMzpsLDMyOjI0LDMzOjI1LDM0OjI2LDM1OjI3LDM2OjI4LDM3OjI5LDM4OmgsNDM6MzEsNDU6MzIsNDY6NDIsNDc6Ziw0OTo0Myw1OTpkLDYwOnAsNzk6eSw4MDpnLDgxOm0sODI6diw4MzpiLDg0Ol8sOTg6eCw5OTp3LDEwMjprLDEwNDpULDEwNTpFLDEwOTo0NCwxMTE6QywxMTI6UywxMTM6QSwxMTQ6TSwxMTU6TiwxMTY6RCwxMTc6TywxMTg6QiwxMTk6TCwxMjA6SX0sezg6NjAsMTA6WzEsNjFdLDE1OlJ9LHQoWzEwLDE1XSxbMiw2XSksdChhLFsyLDE3XSksdChhLFsyLDE4XSksdChhLFsyLDE5XSksezIwOlsxLDY0XSwyMTpbMSw2NV0sMjI6RiwyNzo2MywzMDo2Nn0sdChQLFsyLDExXSksdChQLFsyLDEyXSksdChQLFsyLDEzXSksdChQLFsyLDE0XSksdChQLFsyLDE1XSksdChQLFsyLDE2XSksezk6NjgsMjA6aiwyMTpZLDIzOnosNDQ6NjksNzE6NzMsNzQ6WzEsNzRdLDc1OlsxLDc1XX0sezk6NzYsMjA6aiwyMTpZLDIzOnp9LHs5Ojc3LDIwOmosMjE6WSwyMzp6fSx7OTo3OCwyMDpqLDIxOlksMjM6en0sezk6NzksMjA6aiwyMTpZLDIzOnp9LHs5OjgwLDIwOmosMjE6WSwyMzp6fSx7OTo4MiwyMDpqLDIxOlksMjI6WzEsODFdLDIzOnp9LHQoUCxbMiw0NF0pLHQoVSxbMiw1MV0sezMwOjgzLDIyOkZ9KSx7MjI6WzEsODRdfSx7MjI6WzEsODVdfSx7MjI6WzEsODZdfSx7MjI6WzEsODddfSx7MjY6cSw0NzokLDU5OkgsNjA6Vyw3NzpbMSw5MV0sODQ6Viw5MDo5MCw5MTpbMSw4OF0sOTM6WzEsODldLDk4OkcsOTk6WCwxMDI6WiwxMDQ6USwxMDU6SywxMDg6OTQsMTEwOjkyLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHQoUCxbMiwxNTRdKSx0KFAsWzIsMTU1XSksdChQLFsyLDE1Nl0pLHQoUCxbMiwxNTddKSx0KGF0LFsyLDUyXSx7NDg6WzEsMTEwXX0pLHQob3QsWzIsNzBdLHsxMDk6MTIyLDQwOlsxLDExMV0sNDc6Ziw1MDpbMSwxMTJdLDUyOlsxLDExM10sNTQ6WzEsMTE0XSw1NjpbMSwxMTVdLDU4OlsxLDExNl0sNTk6ZCw2MDpwLDYyOlsxLDExN10sNjQ6WzEsMTE4XSw2NjpbMSwxMTldLDY3OlsxLDEyMF0sNjk6WzEsMTIxXSw4NDpfLDk4OngsOTk6dywxMDI6aywxMDQ6VCwxMDU6RSwxMTU6TiwxMTY6RCwxMTc6TywxMTg6QiwxMTk6TCwxMjA6SX0pLHQoc3QsWzIsMTQ2XSksdChzdCxbMiwxNzFdKSx0KHN0LFsyLDE3Ml0pLHQoc3QsWzIsMTczXSksdChzdCxbMiwxNzRdKSx0KHN0LFsyLDE3NV0pLHQoc3QsWzIsMTc2XSksdChzdCxbMiwxNzddKSx0KHN0LFsyLDE3OF0pLHQoc3QsWzIsMTc5XSksdChzdCxbMiwxODBdKSx0KHN0LFsyLDE4MV0pLHQoc3QsWzIsMTgyXSksdChzdCxbMiwxODNdKSx0KHN0LFsyLDE4NF0pLHQoc3QsWzIsMTg1XSksezk6MTIzLDIwOmosMjE6WSwyMzp6fSx7MTE6MTI0LDE0OlsxLDEyNV19LHQoY3QsWzIsOF0pLHQoYSxbMiwyMF0pLHQoYSxbMiwyNl0pLHQoYSxbMiwyN10pLHsyMTpbMSwxMjZdfSx0KHV0LFsyLDM0XSx7MzA6MTI3LDIyOkZ9KSx0KFAsWzIsMzVdKSx7NDU6MTI4LDQ2OjQyLDQ3OmYsNDk6NDMsNTk6ZCw2MDpwLDg0Ol8sOTg6eCw5OTp3LDEwMjprLDEwNDpULDEwNTpFLDEwOTo0NCwxMTU6TiwxMTY6RCwxMTc6TywxMTg6QiwxMTk6TCwxMjA6SX0sdChsdCxbMiw0NV0pLHQobHQsWzIsNDZdKSx0KGx0LFsyLDQ3XSksdChodCxbMiw3NF0sezcyOjEyOSw2MTpbMSwxMzFdLDczOlsxLDEzMF19KSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsMzk6MTMyLDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY2Om10LDc0OnZ0LDc2OjEzMyw3NzpidCw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHQoWzQ3LDU5LDYwLDYxLDczLDg0LDk4LDk5LDEwMiwxMDQsMTA1LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxbMiw3Nl0pLHQoUCxbMiwzNl0pLHQoUCxbMiwzN10pLHQoUCxbMiwzOF0pLHQoUCxbMiwzOV0pLHQoUCxbMiw0MF0pLHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCwzOToxNTYsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChEdCxvLHsxNzoxNTd9KSx0KFUsWzIsNTBdLHs0NzpPdH0pLHsyNjpxLDQ3OiQsNTk6SCw2MDpXLDg0OlYsOTA6MTU5LDk1OlsxLDE2MF0sOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6OTIsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezg4OlsxLDE2MV0sOTY6MTYyLDk4OlsxLDE2M119LHsyNjpxLDQ3OiQsNTk6SCw2MDpXLDg0OlYsODg6WzEsMTY0XSw5MDoxNjUsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6OTIsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezI2OnEsNDc6JCw1OTpILDYwOlcsODQ6Viw5MDoxNjYsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6OTIsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChjdCxbMiw5N10sezIyOlsxLDE2N10sOTI6WzEsMTY4XX0pLHQoY3QsWzIsMTAxXSx7MjI6WzEsMTY5XX0pLHQoY3QsWzIsMTA1XSx7MTA4Ojk0LDExMDoxNzEsMjI6WzEsMTcwXSwyNjpxLDQ3OiQsNTk6SCw2MDpXLDg0OlYsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9KSx0KGN0LFsyLDEwN10sezIyOlsxLDE3Ml19KSx0KEJ0LFsyLDE0OF0pLHQoQnQsWzIsMTUwXSksdChCdCxbMiwxNTFdKSx0KEJ0LFsyLDE1Ml0pLHQoQnQsWzIsMTUzXSksdChMdCxbMiwxNThdKSx0KEx0LFsyLDE1OV0pLHQoTHQsWzIsMTYwXSksdChMdCxbMiwxNjFdKSx0KEx0LFsyLDE2Ml0pLHQoTHQsWzIsMTYzXSksdChMdCxbMiwxNjRdKSx0KEx0LFsyLDE2NV0pLHQoTHQsWzIsMTY2XSksdChMdCxbMiwxNjddKSx0KEx0LFsyLDE2OF0pLHQoTHQsWzIsMTY5XSksdChMdCxbMiwxNzBdKSx7NDc6Ziw0OToxNzMsNTk6ZCw2MDpwLDg0Ol8sOTg6eCw5OTp3LDEwMjprLDEwNDpULDEwNTpFLDEwOTo0NCwxMTU6TiwxMTY6RCwxMTc6TywxMTg6QiwxMTk6TCwxMjA6SX0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjE3NCw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsMzk6MTc2LDQyOmd0LDQ3OiQsNTA6WzEsMTc1XSw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjE3Nyw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsMzk6MTc4LDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY2Om10LDc0OnZ0LDc2OjEzMyw3NzpidCw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCwzOToxNzksNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezU5OlsxLDE4MF19LHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCwzOToxODEsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjE4Miw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NDpbMSwxODNdLDY2Om10LDc0OnZ0LDc2OjEzMyw3NzpidCw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCwzOToxODQsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjE4NSw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsMzk6MTg2LDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY2Om10LDc0OnZ0LDc2OjEzMyw3NzpidCw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHQoc3QsWzIsMTQ3XSksdChJdCxbMiwzXSksezg6MTg3LDE1OlJ9LHsxNTpbMiw3XX0sdChhLFsyLDI4XSksdCh1dCxbMiwzM10pLHQoVSxbMiw0OF0sezMwOjE4OCwyMjpGfSksdChodCxbMiw3MV0sezIyOlsxLDE4OV19KSx7MjI6WzEsMTkwXX0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjE5MSw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzU6WzEsMTkyXSw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx0KEx0LFsyLDc4XSksdChMdCxbMiw4MF0pLHQoTHQsWzIsMTM2XSksdChMdCxbMiwxMzddKSx0KEx0LFsyLDEzOF0pLHQoTHQsWzIsMTM5XSksdChMdCxbMiwxNDBdKSx0KEx0LFsyLDE0MV0pLHQoTHQsWzIsMTQyXSksdChMdCxbMiwxNDNdKSx0KEx0LFsyLDE0NF0pLHQoTHQsWzIsMTQ1XSksdChMdCxbMiw4MV0pLHQoTHQsWzIsODJdKSx0KEx0LFsyLDgzXSksdChMdCxbMiw4NF0pLHQoTHQsWzIsODVdKSx0KEx0LFsyLDg2XSksdChMdCxbMiw4N10pLHQoTHQsWzIsODhdKSx0KEx0LFsyLDg5XSksdChMdCxbMiw5MF0pLHQoTHQsWzIsOTFdKSx7OToxOTUsMjA6aiwyMTpZLDIyOmZ0LDIzOnosMjQ6ZHQsMjY6cHQsMzg6eXQsNDA6WzEsMTk0XSw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MTg6MTgsMTk6MTksMjA6cywyMTpjLDIyOnUsMjM6bCwzMjoyNCwzMzoyNSwzNDoyNiwzNToyNywzNjoyOCwzNzoyOSwzODpoLDQyOlsxLDE5Nl0sNDM6MzEsNDU6MzIsNDY6NDIsNDc6Ziw0OTo0Myw1OTpkLDYwOnAsNzk6eSw4MDpnLDgxOm0sODI6diw4MzpiLDg0Ol8sOTg6eCw5OTp3LDEwMjprLDEwNDpULDEwNTpFLDEwOTo0NCwxMTE6QywxMTI6UywxMTM6QSwxMTQ6TSwxMTU6TiwxMTY6RCwxMTc6TywxMTg6QiwxMTk6TCwxMjA6SX0sezIyOkYsMzA6MTk3fSx7MjI6WzEsMTk4XSwyNjpxLDQ3OiQsNTk6SCw2MDpXLDg0OlYsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6MTcxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHsyMjpbMSwxOTldfSx7MjI6WzEsMjAwXX0sezIyOlsxLDIwMV0sOTk6WzEsMjAyXX0sdChSdCxbMiwxMTldKSx7MjI6WzEsMjAzXX0sezIyOlsxLDIwNF0sMjY6cSw0NzokLDU5OkgsNjA6Vyw4NDpWLDk4OkcsOTk6WCwxMDI6WiwxMDQ6USwxMDU6SywxMDg6OTQsMTEwOjE3MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6WzEsMjA1XSwyNjpxLDQ3OiQsNTk6SCw2MDpXLDg0OlYsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6MTcxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHs3NzpbMSwyMDZdfSx0KGN0LFsyLDk5XSx7MjI6WzEsMjA3XX0pLHs3NzpbMSwyMDhdLDk0OlsxLDIwOV19LHs3NzpbMSwyMTBdfSx0KEJ0LFsyLDE0OV0pLHs3NzpbMSwyMTFdLDk0OlsxLDIxMl19LHQoYXQsWzIsNTRdLHsxMDk6MTIyLDQ3OmYsNTk6ZCw2MDpwLDg0Ol8sOTg6eCw5OTp3LDEwMjprLDEwNDpULDEwNTpFLDExNTpOLDExNjpELDExNzpPLDExODpCLDExOTpMLDEyMDpJfSksezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQxOlsxLDIxM10sNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjIxNCw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1MTpbMSwyMTVdLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1MzpbMSwyMTZdLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1NTpbMSwyMTddLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1NzpbMSwyMThdLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7NjA6WzEsMjE5XX0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDYzOlsxLDIyMF0sNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY1OlsxLDIyMV0sNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDM5OjIyMiw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxMzMsNzc6YnQsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDE6WzEsMjIzXSw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw3NDp2dCw3NjoxOTMsNzg6MTQ0LDc5Ol90LDgwOnh0LDgxOnd0LDgyOmt0LDgzOlR0LDg0OkV0LDg1OkN0LDg3OjEzNSw4ODpTdCw5ODpHLDk5OlgsMTAyOkF0LDEwNDpRLDEwNTpLLDEwNjpNdCwxMDc6TnQsMTA4OjE0MSwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNjg6WzEsMjI0XSw3MDpbMSwyMjVdLDc0OnZ0LDc2OjE5Myw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NjptdCw2ODpbMSwyMjddLDcwOlsxLDIyNl0sNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezk6MjI4LDIwOmosMjE6WSwyMzp6fSx0KFUsWzIsNDldLHs0NzpPdH0pLHQoaHQsWzIsNzNdKSx0KGh0LFsyLDcyXSksezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDYxOlsxLDIyOV0sNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChodCxbMiw3NV0pLHQoTHQsWzIsNzldKSx7MjI6ZnQsMjQ6ZHQsMjY6cHQsMzg6eXQsMzk6MjMwLDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY2Om10LDc0OnZ0LDc2OjEzMyw3NzpidCw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHQoRHQsbyx7MTc6MjMxfSksdChQLFsyLDQzXSksezQ2OjIzMiw0NzpmLDQ5OjQzLDU5OmQsNjA6cCw4NDpfLDk4OngsOTk6dywxMDI6aywxMDQ6VCwxMDU6RSwxMDk6NDQsMTE1Ok4sMTE2OkQsMTE3Ok8sMTE4OkIsMTE5OkwsMTIwOkl9LHsyMjpGdCw1OTpQdCw2MDpqdCw3OTpZdCw4OToyMzMsOTU6enQsOTg6VXQsMTAwOjIzNCwxMDE6MjM1LDEwMjpxdCwxMDM6JHQsMTA0Okh0LDEwNTpXdCwxMDY6VnR9LHsyMjpGdCw1OTpQdCw2MDpqdCw3OTpZdCw4OToyNDcsOTU6enQsOTg6VXQsMTAwOjIzNCwxMDE6MjM1LDEwMjpxdCwxMDM6JHQsMTA0Okh0LDEwNTpXdCwxMDY6VnR9LHsyMjpGdCw1OTpQdCw2MDpqdCw3OTpZdCw4OToyNDgsOTU6enQsOTc6WzEsMjQ5XSw5ODpVdCwxMDA6MjM0LDEwMToyMzUsMTAyOnF0LDEwMzokdCwxMDQ6SHQsMTA1Old0LDEwNjpWdH0sezIyOkZ0LDU5OlB0LDYwOmp0LDc5Oll0LDg5OjI1MCw5NTp6dCw5NzpbMSwyNTFdLDk4OlV0LDEwMDoyMzQsMTAxOjIzNSwxMDI6cXQsMTAzOiR0LDEwNDpIdCwxMDU6V3QsMTA2OlZ0fSx7OTg6WzEsMjUyXX0sezIyOkZ0LDU5OlB0LDYwOmp0LDc5Oll0LDg5OjI1Myw5NTp6dCw5ODpVdCwxMDA6MjM0LDEwMToyMzUsMTAyOnF0LDEwMzokdCwxMDQ6SHQsMTA1Old0LDEwNjpWdH0sezIyOkZ0LDU5OlB0LDYwOmp0LDc5Oll0LDg5OjI1NCw5NTp6dCw5ODpVdCwxMDA6MjM0LDEwMToyMzUsMTAyOnF0LDEwMzokdCwxMDQ6SHQsMTA1Old0LDEwNjpWdH0sezI2OnEsNDc6JCw1OTpILDYwOlcsODQ6Viw5MDoyNTUsOTg6Ryw5OTpYLDEwMjpaLDEwNDpRLDEwNTpLLDEwODo5NCwxMTA6OTIsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChjdCxbMiw5OF0pLHs3NzpbMSwyNTZdfSx0KGN0LFsyLDEwMl0sezIyOlsxLDI1N119KSx0KGN0LFsyLDEwM10pLHQoY3QsWzIsMTA2XSksdChjdCxbMiwxMDhdLHsyMjpbMSwyNThdfSksdChjdCxbMiwxMDldKSx0KG90LFsyLDU1XSksezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQyOmd0LDQ3OiQsNTE6WzEsMjU5XSw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChvdCxbMiw2Ml0pLHQob3QsWzIsNTddKSx0KG90LFsyLDU4XSksdChvdCxbMiw1OV0pLHs1OTpbMSwyNjBdfSx0KG90LFsyLDYxXSksdChvdCxbMiw2M10pLHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCw0MjpndCw0NzokLDU5OkgsNjA6Vyw2NTpbMSwyNjFdLDY2Om10LDc0OnZ0LDc2OjE5Myw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHQob3QsWzIsNjVdKSx0KG90LFsyLDY2XSksdChvdCxbMiw2OF0pLHQob3QsWzIsNjddKSx0KG90LFsyLDY5XSksdChJdCxbMiw0XSksdChbMjIsNDcsNTksNjAsODQsOTgsOTksMTAyLDEwNCwxMDUsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLFsyLDc3XSksezIyOmZ0LDI0OmR0LDI2OnB0LDM4Onl0LDQxOlsxLDI2Ml0sNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTkzLDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sezE4OjE4LDE5OjE5LDIwOnMsMjE6YywyMjp1LDIzOmwsMzI6MjQsMzM6MjUsMzQ6MjYsMzU6MjcsMzY6MjgsMzc6MjksMzg6aCw0MjpbMSwyNjNdLDQzOjMxLDQ1OjMyLDQ2OjQyLDQ3OmYsNDk6NDMsNTk6ZCw2MDpwLDc5OnksODA6Zyw4MTptLDgyOnYsODM6Yiw4NDpfLDk4OngsOTk6dywxMDI6aywxMDQ6VCwxMDU6RSwxMDk6NDQsMTExOkMsMTEyOlMsMTEzOkEsMTE0Ok0sMTE1Ok4sMTE2OkQsMTE3Ok8sMTE4OkIsMTE5OkwsMTIwOkl9LHQoYXQsWzIsNTNdKSx0KGN0LFsyLDExMV0sezk5Okd0fSksdChYdCxbMiwxMjFdLHsxMDE6MjY1LDIyOkZ0LDU5OlB0LDYwOmp0LDc5Oll0LDk1Onp0LDk4OlV0LDEwMjpxdCwxMDM6JHQsMTA0Okh0LDEwNTpXdCwxMDY6VnR9KSx0KFp0LFsyLDEyM10pLHQoWnQsWzIsMTI1XSksdChadCxbMiwxMjZdKSx0KFp0LFsyLDEyN10pLHQoWnQsWzIsMTI4XSksdChadCxbMiwxMjldKSx0KFp0LFsyLDEzMF0pLHQoWnQsWzIsMTMxXSksdChadCxbMiwxMzJdKSx0KFp0LFsyLDEzM10pLHQoWnQsWzIsMTM0XSksdChadCxbMiwxMzVdKSx0KGN0LFsyLDExMl0sezk5Okd0fSksdChjdCxbMiwxMTNdLHs5OTpHdH0pLHsyMjpbMSwyNjZdfSx0KGN0LFsyLDExNF0sezk5Okd0fSksezIyOlsxLDI2N119LHQoUnQsWzIsMTIwXSksdChjdCxbMiw5NF0sezk5Okd0fSksdChjdCxbMiw5NV0sezk5Okd0fSksdChjdCxbMiw5Nl0sezEwODo5NCwxMTA6MTcxLDI2OnEsNDc6JCw1OTpILDYwOlcsODQ6Viw5ODpHLDk5OlgsMTAyOlosMTA0OlEsMTA1OkssMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0pLHQoY3QsWzIsMTAwXSksezk0OlsxLDI2OF19LHs5NDpbMSwyNjldfSx7NTE6WzEsMjcwXX0sezYxOlsxLDI3MV19LHs2NTpbMSwyNzJdfSx7OToyNzMsMjA6aiwyMTpZLDIzOnp9LHQoUCxbMiw0Ml0pLHsyMjpGdCw1OTpQdCw2MDpqdCw3OTpZdCw5NTp6dCw5ODpVdCwxMDA6Mjc0LDEwMToyMzUsMTAyOnF0LDEwMzokdCwxMDQ6SHQsMTA1Old0LDEwNjpWdH0sdChadCxbMiwxMjRdKSx7MjY6cSw0NzokLDU5OkgsNjA6Vyw4NDpWLDkwOjI3NSw5ODpHLDk5OlgsMTAyOlosMTA0OlEsMTA1OkssMTA4Ojk0LDExMDo5MiwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx7MjY6cSw0NzokLDU5OkgsNjA6Vyw4NDpWLDkwOjI3Niw5ODpHLDk5OlgsMTAyOlosMTA0OlEsMTA1OkssMTA4Ojk0LDExMDo5MiwxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSx0KGN0LFsyLDEwNF0pLHQoY3QsWzIsMTEwXSksdChvdCxbMiw1Nl0pLHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCwzOToyNzcsNDI6Z3QsNDc6JCw1OTpILDYwOlcsNjY6bXQsNzQ6dnQsNzY6MTMzLDc3OmJ0LDc4OjE0NCw3OTpfdCw4MDp4dCw4MTp3dCw4MjprdCw4MzpUdCw4NDpFdCw4NTpDdCw4NzoxMzUsODg6U3QsOTg6Ryw5OTpYLDEwMjpBdCwxMDQ6USwxMDU6SywxMDY6TXQsMTA3Ok50LDEwODoxNDEsMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0sdChvdCxbMiw2NF0pLHQoRHQsbyx7MTc6Mjc4fSksdChYdCxbMiwxMjJdLHsxMDE6MjY1LDIyOkZ0LDU5OlB0LDYwOmp0LDc5Oll0LDk1Onp0LDk4OlV0LDEwMjpxdCwxMDM6JHQsMTA0Okh0LDEwNTpXdCwxMDY6VnR9KSx0KGN0LFsyLDExN10sezEwODo5NCwxMTA6MTcxLDIyOlsxLDI3OV0sMjY6cSw0NzokLDU5OkgsNjA6Vyw4NDpWLDk4OkcsOTk6WCwxMDI6WiwxMDQ6USwxMDU6SywxMTU6SiwxMTY6dHQsMTE3OmV0LDExODpudCwxMTk6cnQsMTIwOml0fSksdChjdCxbMiwxMThdLHsxMDg6OTQsMTEwOjE3MSwyMjpbMSwyODBdLDI2OnEsNDc6JCw1OTpILDYwOlcsODQ6Viw5ODpHLDk5OlgsMTAyOlosMTA0OlEsMTA1OkssMTE1OkosMTE2OnR0LDExNzpldCwxMTg6bnQsMTE5OnJ0LDEyMDppdH0pLHsyMjpmdCwyNDpkdCwyNjpwdCwzODp5dCw0MTpbMSwyODFdLDQyOmd0LDQ3OiQsNTk6SCw2MDpXLDY2Om10LDc0OnZ0LDc2OjE5Myw3ODoxNDQsNzk6X3QsODA6eHQsODE6d3QsODI6a3QsODM6VHQsODQ6RXQsODU6Q3QsODc6MTM1LDg4OlN0LDk4OkcsOTk6WCwxMDI6QXQsMTA0OlEsMTA1OkssMTA2Ok10LDEwNzpOdCwxMDg6MTQxLDExNTpKLDExNjp0dCwxMTc6ZXQsMTE4Om50LDExOTpydCwxMjA6aXR9LHsxODoxOCwxOToxOSwyMDpzLDIxOmMsMjI6dSwyMzpsLDMyOjI0LDMzOjI1LDM0OjI2LDM1OjI3LDM2OjI4LDM3OjI5LDM4OmgsNDI6WzEsMjgyXSw0MzozMSw0NTozMiw0Njo0Miw0NzpmLDQ5OjQzLDU5OmQsNjA6cCw3OTp5LDgwOmcsODE6bSw4Mjp2LDgzOmIsODQ6Xyw5ODp4LDk5OncsMTAyOmssMTA0OlQsMTA1OkUsMTA5OjQ0LDExMTpDLDExMjpTLDExMzpBLDExNDpNLDExNTpOLDExNjpELDExNzpPLDExODpCLDExOTpMLDEyMDpJfSx7MjI6RnQsNTk6UHQsNjA6anQsNzk6WXQsODk6MjgzLDk1Onp0LDk4OlV0LDEwMDoyMzQsMTAxOjIzNSwxMDI6cXQsMTAzOiR0LDEwNDpIdCwxMDU6V3QsMTA2OlZ0fSx7MjI6RnQsNTk6UHQsNjA6anQsNzk6WXQsODk6Mjg0LDk1Onp0LDk4OlV0LDEwMDoyMzQsMTAxOjIzNSwxMDI6cXQsMTAzOiR0LDEwNDpIdCwxMDU6V3QsMTA2OlZ0fSx0KG90LFsyLDYwXSksdChQLFsyLDQxXSksdChjdCxbMiwxMTVdLHs5OTpHdH0pLHQoY3QsWzIsMTE2XSx7OTk6R3R9KV0sZGVmYXVsdEFjdGlvbnM6ezI6WzIsMV0sOTpbMiw1XSwxMDpbMiwyXSwxMjU6WzIsN119LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxLdD17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnl5LnBhcnNlcil0aHJvdyBuZXcgRXJyb3IodCk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcih0LGUpfSxzZXRJbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnl5PWV8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PXQsdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW5wdXRbMF07cmV0dXJuIHRoaXMueXl0ZXh0Kz10LHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz10LHRoaXMubWF0Y2hlZCs9dCx0Lm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksdH0sdW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbj10LnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9dCt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtZSksdGhpcy5vZmZzZXQtPWU7dmFyIHI9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksbi5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPW4ubGVuZ3RoLTEpO3ZhciBpPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpuPyhuLmxlbmd0aD09PXIubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStyW3IubGVuZ3RoLW4ubGVuZ3RoXS5sZW5ndGgtblswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baVswXSxpWzBdK3RoaXMueXlsZW5nLWVdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyPyh0aGlzLl9iYWNrdHJhY2s9ITAsdGhpcyk6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGVzczpmdW5jdGlvbih0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UodCkpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSt0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaDtyZXR1cm4gdC5sZW5ndGg8MjAmJih0Kz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC10Lmxlbmd0aCkpLCh0LnN1YnN0cigwLDIwKSsodC5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXN0SW5wdXQoKSxlPW5ldyBBcnJheSh0Lmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHQrdGhpcy51cGNvbWluZ0lucHV0KCkrIlxuIitlKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoaT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihpLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLChyPXRbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpKSYmKHRoaXMueXlsaW5lbm8rPXIubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46cj9yW3IubGVuZ3RoLTFdLmxlbmd0aC1yW3IubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rdFswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz10WzBdLHRoaXMubWF0Y2grPXRbMF0sdGhpcy5tYXRjaGVzPXQsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UodFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9dFswXSxuPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLGUsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksbilyZXR1cm4gbjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgYSBpbiBpKXRoaXNbYV09aVthXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dmFyIHQsZSxuLHI7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApLHRoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGk9dGhpcy5fY3VycmVudFJ1bGVzKCksYT0wO2E8aS5sZW5ndGg7YSsrKWlmKChuPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbaVthXV0pKSYmKCFlfHxuWzBdLmxlbmd0aD5lWzBdLmxlbmd0aCkpe2lmKGU9bixyPWEsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoITEhPT0odD10aGlzLnRlc3RfbWF0Y2gobixpW2FdKSkpcmV0dXJuIHQ7aWYodGhpcy5fYmFja3RyYWNrKXtlPSExO2NvbnRpbnVlfXJldHVybiExfWlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gZT8hMSE9PSh0PXRoaXMudGVzdF9tYXRjaChlLGlbcl0pKSYmdDoiIj09PXRoaXMuX2lucHV0P3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gVW5yZWNvZ25pemVkIHRleHQuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dCgpfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbih0KXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2godCl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKHR8fDApKT49MD90aGlzLmNvbmRpdGlvblN0YWNrW3RdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYmVnaW4odCl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnt9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSwxMjtjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksMTM7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDEwO2Nhc2UgMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSwxNTtjYXNlIDQ6cmV0dXJuIDE0O2Nhc2UgNTpjYXNlIDY6YnJlYWs7Y2FzZSA3OnRoaXMuYmVnaW4oInN0cmluZyIpO2JyZWFrO2Nhc2UgODp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA5OnJldHVybiJTVFIiO2Nhc2UgMTA6cmV0dXJuIDc5O2Nhc2UgMTE6cmV0dXJuIDg4O2Nhc2UgMTI6cmV0dXJuIDgwO2Nhc2UgMTM6cmV0dXJuIDk3O2Nhc2UgMTQ6cmV0dXJuIDgxO2Nhc2UgMTU6cmV0dXJuIDgyO2Nhc2UgMTY6dGhpcy5iZWdpbigiaHJlZiIpO2JyZWFrO2Nhc2UgMTc6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTg6cmV0dXJuIDkzO2Nhc2UgMTk6dGhpcy5iZWdpbigiY2FsbGJhY2tuYW1lIik7YnJlYWs7Y2FzZSAyMDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyMTp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2thcmdzIik7YnJlYWs7Y2FzZSAyMjpyZXR1cm4gOTE7Y2FzZSAyMzp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyNDpyZXR1cm4gOTI7Y2FzZSAyNTp0aGlzLmJlZ2luKCJjbGljayIpO2JyZWFrO2Nhc2UgMjY6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMjc6cmV0dXJuIDgzO2Nhc2UgMjg6Y2FzZSAyOTpyZXR1cm4gdC5sZXguZmlyc3RHcmFwaCgpJiZ0aGlzLmJlZ2luKCJkaXIiKSwyNDtjYXNlIDMwOnJldHVybiAzODtjYXNlIDMxOnJldHVybiA0MjtjYXNlIDMyOmNhc2UgMzM6Y2FzZSAzNDpjYXNlIDM1OnJldHVybiA5NDtjYXNlIDM2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjU7Y2FzZSAzNzpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDQxOmNhc2UgNDI6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNDc6cmV0dXJuIDExMTtjYXNlIDQ4OnJldHVybiAxMTI7Y2FzZSA0OTpyZXR1cm4gMTEzO2Nhc2UgNTA6cmV0dXJuIDExNDtjYXNlIDUxOnJldHVybiA5ODtjYXNlIDUyOnJldHVybiAxMDQ7Y2FzZSA1MzpyZXR1cm4gNDg7Y2FzZSA1NDpyZXR1cm4gNjA7Y2FzZSA1NTpyZXR1cm4gNDc7Y2FzZSA1NjpyZXR1cm4gMjA7Y2FzZSA1NzpyZXR1cm4gOTk7Y2FzZSA1ODpyZXR1cm4gMTE5O2Nhc2UgNTk6Y2FzZSA2MDpjYXNlIDYxOnJldHVybiA3NTtjYXNlIDYyOmNhc2UgNjM6Y2FzZSA2NDpyZXR1cm4gNzQ7Y2FzZSA2NTpyZXR1cm4gNTI7Y2FzZSA2NjpyZXR1cm4gNTM7Y2FzZSA2NzpyZXR1cm4gNTQ7Y2FzZSA2ODpyZXR1cm4gNTU7Y2FzZSA2OTpyZXR1cm4gNTY7Y2FzZSA3MDpyZXR1cm4gNTc7Y2FzZSA3MTpyZXR1cm4gNTg7Y2FzZSA3MjpyZXR1cm4gNjI7Y2FzZSA3MzpyZXR1cm4gNjM7Y2FzZSA3NDpyZXR1cm4gMTAyO2Nhc2UgNzU6cmV0dXJuIDEwNTtjYXNlIDc2OnJldHVybiAxMjA7Y2FzZSA3NzpyZXR1cm4gMTE3O2Nhc2UgNzg6cmV0dXJuIDEwNjtjYXNlIDc5OmNhc2UgODA6cmV0dXJuIDExODtjYXNlIDgxOnJldHVybiAxMDc7Y2FzZSA4MjpyZXR1cm4gNjY7Y2FzZSA4MzpyZXR1cm4gODU7Y2FzZSA4NDpyZXR1cm4iU0VQIjtjYXNlIDg1OnJldHVybiA4NDtjYXNlIDg2OnJldHVybiA1OTtjYXNlIDg3OnJldHVybiA2ODtjYXNlIDg4OnJldHVybiA2NztjYXNlIDg5OnJldHVybiA3MDtjYXNlIDkwOnJldHVybiA2OTtjYXNlIDkxOnJldHVybiAxMTU7Y2FzZSA5MjpyZXR1cm4gMTE2O2Nhc2UgOTM6cmV0dXJuIDYxO2Nhc2UgOTQ6cmV0dXJuIDUwO2Nhc2UgOTU6cmV0dXJuIDUxO2Nhc2UgOTY6cmV0dXJuIDQwO2Nhc2UgOTc6cmV0dXJuIDQxO2Nhc2UgOTg6cmV0dXJuIDY0O2Nhc2UgOTk6cmV0dXJuIDY1O2Nhc2UgMTAwOnJldHVybiAxMjY7Y2FzZSAxMDE6cmV0dXJuIDIxO2Nhc2UgMTAyOnJldHVybiAyMjtjYXNlIDEwMzpyZXR1cm4gMjN9fSxydWxlczpbL14oPzolJVx7KS8sL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvLC9eKD86OikvLC9eKD86XH0lJSkvLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvLC9eKD86JSUoPyFceylbXlxuXSopLywvXig/OlteXH1dJSVbXlxuXSopLywvXig/OlsiXSkvLC9eKD86WyJdKS8sL14oPzpbXiJdKikvLC9eKD86c3R5bGVcYikvLC9eKD86ZGVmYXVsdFxiKS8sL14oPzpsaW5rU3R5bGVcYikvLC9eKD86aW50ZXJwb2xhdGVcYikvLC9eKD86Y2xhc3NEZWZcYikvLC9eKD86Y2xhc3NcYikvLC9eKD86aHJlZltcc10rWyJdKS8sL14oPzpbIl0pLywvXig/OlteIl0qKS8sL14oPzpjYWxsW1xzXSspLywvXig/OlwoW1xzXSpcKSkvLC9eKD86XCgpLywvXig/OlteKF0qKS8sL14oPzpcKSkvLC9eKD86W14pXSopLywvXig/OmNsaWNrW1xzXSspLywvXig/Oltcc1xuXSkvLC9eKD86W15cc1xuXSopLywvXig/OmdyYXBoXGIpLywvXig/OmZsb3djaGFydFxiKS8sL14oPzpzdWJncmFwaFxiKS8sL14oPzplbmRcYlxzKikvLC9eKD86X3NlbGZcYikvLC9eKD86X2JsYW5rXGIpLywvXig/Ol9wYXJlbnRcYikvLC9eKD86X3RvcFxiKS8sL14oPzooXHI/XG4pKlxzKlxuKS8sL14oPzpccypMUlxiKS8sL14oPzpccypSTFxiKS8sL14oPzpccypUQlxiKS8sL14oPzpccypCVFxiKS8sL14oPzpccypURFxiKS8sL14oPzpccypCUlxiKS8sL14oPzpccyo8KS8sL14oPzpccyo+KS8sL14oPzpccypcXikvLC9eKD86XHMqdlxiKS8sL14oPzouKmRpcmVjdGlvblxzK1RCW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0JUW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0xSW15cbl0qKS8sL14oPzpbMC05XSspLywvXig/OiMpLywvXig/Ojo6OikvLC9eKD86OikvLC9eKD86JikvLC9eKD86OykvLC9eKD86LCkvLC9eKD86XCopLywvXig/OlxzKlt4bzxdPy0tK1steG8+XVxzKikvLC9eKD86XHMqW3hvPF0/PT0rWz14bz5dXHMqKS8sL14oPzpccypbeG88XT8tP1wuKy1beG8+XT9ccyopLywvXig/OlxzKlt4bzxdPy0tXHMqKS8sL14oPzpccypbeG88XT89PVxzKikvLC9eKD86XHMqW3hvPF0/LVwuXHMqKS8sL14oPzpcKC0pLywvXig/Oi1cKSkvLC9eKD86XChcWykvLC9eKD86XF1cKSkvLC9eKD86XFtcWykvLC9eKD86XF1cXSkvLC9eKD86XFtcfCkvLC9eKD86XFtcKCkvLC9eKD86XClcXSkvLC9eKD86LSkvLC9eKD86XC4pLywvXig/OltcX10pLywvXig/OlwrKS8sL14oPzolKS8sL14oPzo9KS8sL14oPzo9KS8sL14oPzo8KS8sL14oPzo+KS8sL14oPzpcXikvLC9eKD86XFxcfCkvLC9eKD86dlxiKS8sL14oPzpbQS1aYS16XSspLywvXig/OlxcXF0pLywvXig/OlxbXC8pLywvXig/OlwvXF0pLywvXig/OlxbXFwpLywvXig/OlshIiMkJSYnKissLS5gP1xcXy9dKS8sL14oPzpbXHUwMEFBXHUwMEI1XHUwMEJBXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZdfFtcdTAwRjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XXxbXHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNV18W1x1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXXxbXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXXxbXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQV18W1x1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOEEwXXxbXHUwOEEyLVx1MDhBQ1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk3N118W1x1MDk3OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJdfFtcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFdfFtcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOV18W1x1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XXxbXHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBDXXxbXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXXxbXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OV18W1x1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXXxbXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RdfFtcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXXxbXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXXxbXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMV18W1x1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFdfFtcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNdfFtcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNl18W1x1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXXxbXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MV18W1x1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERdfFtcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMF18W1x1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXXxbXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNdfFtcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMV18W1x1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XXxbXHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxQ118W1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XXxbXHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRl18W1x1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXXxbXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRF18W1x1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RdfFtcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM118W1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZdfFtcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhdfFtcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XXxbXHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM118W1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZdfFtcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRV18W1x1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ118W1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXXxbXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NdfFtcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXXxbXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhdfFtcdUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdBMC1cdUE3QUFcdUE3RjgtXHVBODAxXHVBODAzLVx1QTgwNV18W1x1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXXxbXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QUEwMC1cdUFBMjhdfFtcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBODAtXHVBQUFGXHVBQUIxXHVBQUI1XXxbXHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNF18W1x1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXXxbXHVBQkMwLVx1QUJFMlx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRdfFtcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNl18W1x1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRF18W1x1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXXxbXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZdfFtcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ10pLywvXig/Olx8KS8sL14oPzpcKCkvLC9eKD86XCkpLywvXig/OlxbKS8sL14oPzpcXSkvLC9eKD86XHspLywvXig/Olx9KS8sL14oPzoiKS8sL14oPzooXHI/XG4pKykvLC9eKD86XHMpLywvXig/OiQpL10sY29uZGl0aW9uczp7Y2xvc2VfZGlyZWN0aXZlOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOlsyLDNdLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrYXJnczp7cnVsZXM6WzIzLDI0XSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrbmFtZTp7cnVsZXM6WzIwLDIxLDIyXSxpbmNsdXNpdmU6ITF9LGhyZWY6e3J1bGVzOlsxNywxOF0saW5jbHVzaXZlOiExfSxjbGljazp7cnVsZXM6WzI2LDI3XSxpbmNsdXNpdmU6ITF9LHZlcnRleDp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxkaXI6e3J1bGVzOlszNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Nl0saW5jbHVzaXZlOiExfSxzdHJpbmc6e3J1bGVzOls4LDldLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw2LDcsMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTksMjUsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzXSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gSnQoKXt0aGlzLnl5PXt9fXJldHVybiBRdC5sZXhlcj1LdCxKdC5wcm90b3R5cGU9UXQsUXQuUGFyc2VyPUp0LG5ldyBKdH0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDUzNTQpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sMjA1NToodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsM10sbj1bMSw1XSxyPVs3LDksMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjIsMjksMzRdLGk9WzEsMTVdLGE9WzEsMTZdLG89WzEsMTddLHM9WzEsMThdLGM9WzEsMTldLHU9WzEsMjBdLGw9WzEsMjFdLGg9WzEsMjJdLGY9WzEsMjNdLGQ9WzEsMjVdLHA9WzEsMjddLHk9WzEsMzBdLGc9WzUsNyw5LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIyLDI5LDM0XSxtPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxkaXJlY3RpdmU6NCxnYW50dDo1LGRvY3VtZW50OjYsRU9GOjcsbGluZTo4LFNQQUNFOjksc3RhdGVtZW50OjEwLE5MOjExLGRhdGVGb3JtYXQ6MTIsaW5jbHVzaXZlRW5kRGF0ZXM6MTMsdG9wQXhpczoxNCxheGlzRm9ybWF0OjE1LGV4Y2x1ZGVzOjE2LGluY2x1ZGVzOjE3LHRvZGF5TWFya2VyOjE4LHRpdGxlOjE5LHNlY3Rpb246MjAsY2xpY2tTdGF0ZW1lbnQ6MjEsdGFza1R4dDoyMix0YXNrRGF0YToyMyxvcGVuRGlyZWN0aXZlOjI0LHR5cGVEaXJlY3RpdmU6MjUsY2xvc2VEaXJlY3RpdmU6MjYsIjoiOjI3LGFyZ0RpcmVjdGl2ZToyOCxjbGljazoyOSxjYWxsYmFja25hbWU6MzAsY2FsbGJhY2thcmdzOjMxLGhyZWY6MzIsY2xpY2tTdGF0ZW1lbnREZWJ1ZzozMyxvcGVuX2RpcmVjdGl2ZTozNCx0eXBlX2RpcmVjdGl2ZTozNSxhcmdfZGlyZWN0aXZlOjM2LGNsb3NlX2RpcmVjdGl2ZTozNywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiZ2FudHQiLDc6IkVPRiIsOToiU1BBQ0UiLDExOiJOTCIsMTI6ImRhdGVGb3JtYXQiLDEzOiJpbmNsdXNpdmVFbmREYXRlcyIsMTQ6InRvcEF4aXMiLDE1OiJheGlzRm9ybWF0IiwxNjoiZXhjbHVkZXMiLDE3OiJpbmNsdWRlcyIsMTg6InRvZGF5TWFya2VyIiwxOToidGl0bGUiLDIwOiJzZWN0aW9uIiwyMjoidGFza1R4dCIsMjM6InRhc2tEYXRhIiwyNzoiOiIsMjk6ImNsaWNrIiwzMDoiY2FsbGJhY2tuYW1lIiwzMToiY2FsbGJhY2thcmdzIiwzMjoiaHJlZiIsMzQ6Im9wZW5fZGlyZWN0aXZlIiwzNToidHlwZV9kaXJlY3RpdmUiLDM2OiJhcmdfZGlyZWN0aXZlIiwzNzoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFszLDNdLFs2LDBdLFs2LDJdLFs4LDJdLFs4LDFdLFs4LDFdLFs4LDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMl0sWzEwLDFdLFs0LDRdLFs0LDZdLFsyMSwyXSxbMjEsM10sWzIxLDNdLFsyMSw0XSxbMjEsM10sWzIxLDRdLFsyMSwyXSxbMzMsMl0sWzMzLDNdLFszMywzXSxbMzMsNF0sWzMzLDNdLFszMyw0XSxbMzMsMl0sWzI0LDFdLFsyNSwxXSxbMjgsMV0sWzI2LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgMjpyZXR1cm4gYVtzLTFdO2Nhc2UgMzp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0OmFbcy0xXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA1OmNhc2UgNjp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDc6Y2FzZSA4OnRoaXMuJD1bXTticmVhaztjYXNlIDk6ci5zZXREYXRlRm9ybWF0KGFbc10uc3Vic3RyKDExKSksdGhpcy4kPWFbc10uc3Vic3RyKDExKTticmVhaztjYXNlIDEwOnIuZW5hYmxlSW5jbHVzaXZlRW5kRGF0ZXMoKSx0aGlzLiQ9YVtzXS5zdWJzdHIoMTgpO2JyZWFrO2Nhc2UgMTE6ci5Ub3BBeGlzKCksdGhpcy4kPWFbc10uc3Vic3RyKDgpO2JyZWFrO2Nhc2UgMTI6ci5zZXRBeGlzRm9ybWF0KGFbc10uc3Vic3RyKDExKSksdGhpcy4kPWFbc10uc3Vic3RyKDExKTticmVhaztjYXNlIDEzOnIuc2V0RXhjbHVkZXMoYVtzXS5zdWJzdHIoOSkpLHRoaXMuJD1hW3NdLnN1YnN0cig5KTticmVhaztjYXNlIDE0OnIuc2V0SW5jbHVkZXMoYVtzXS5zdWJzdHIoOSkpLHRoaXMuJD1hW3NdLnN1YnN0cig5KTticmVhaztjYXNlIDE1OnIuc2V0VG9kYXlNYXJrZXIoYVtzXS5zdWJzdHIoMTIpKSx0aGlzLiQ9YVtzXS5zdWJzdHIoMTIpO2JyZWFrO2Nhc2UgMTY6ci5zZXRUaXRsZShhW3NdLnN1YnN0cig2KSksdGhpcy4kPWFbc10uc3Vic3RyKDYpO2JyZWFrO2Nhc2UgMTc6ci5hZGRTZWN0aW9uKGFbc10uc3Vic3RyKDgpKSx0aGlzLiQ9YVtzXS5zdWJzdHIoOCk7YnJlYWs7Y2FzZSAxOTpyLmFkZFRhc2soYVtzLTFdLGFbc10pLHRoaXMuJD0idGFzayI7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9YVtzLTFdLHIuc2V0Q2xpY2tFdmVudChhW3MtMV0sYVtzXSxudWxsKTticmVhaztjYXNlIDI0OnRoaXMuJD1hW3MtMl0sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3MtMV0sYVtzXSk7YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMl0sYVtzLTFdLG51bGwpLHIuc2V0TGluayhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9YVtzLTNdLHIuc2V0Q2xpY2tFdmVudChhW3MtM10sYVtzLTJdLGFbcy0xXSksci5zZXRMaW5rKGFbcy0zXSxhW3NdKTticmVhaztjYXNlIDI3OnRoaXMuJD1hW3MtMl0sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3NdLG51bGwpLHIuc2V0TGluayhhW3MtMl0sYVtzLTFdKTticmVhaztjYXNlIDI4OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0zXSxhW3MtMV0sYVtzXSksci5zZXRMaW5rKGFbcy0zXSxhW3MtMl0pO2JyZWFrO2Nhc2UgMjk6dGhpcy4kPWFbcy0xXSxyLnNldExpbmsoYVtzLTFdLGFbc10pO2JyZWFrO2Nhc2UgMzA6Y2FzZSAzNjp0aGlzLiQ9YVtzLTFdKyIgIithW3NdO2JyZWFrO2Nhc2UgMzE6Y2FzZSAzMjpjYXNlIDM0OnRoaXMuJD1hW3MtMl0rIiAiK2Fbcy0xXSsiICIrYVtzXTticmVhaztjYXNlIDMzOmNhc2UgMzU6dGhpcy4kPWFbcy0zXSsiICIrYVtzLTJdKyIgIithW3MtMV0rIiAiK2Fbc107YnJlYWs7Y2FzZSAzNzpyLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzg6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzk6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDQwOnIucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImdhbnR0Iil9fSx0YWJsZTpbezM6MSw0OjIsNTplLDI0OjQsMzQ6bn0sezE6WzNdfSx7Mzo2LDQ6Miw1OmUsMjQ6NCwzNDpufSx0KHIsWzIsM10sezY6N30pLHsyNTo4LDM1OlsxLDldfSx7MzU6WzIsMzddfSx7MTpbMiwxXX0sezQ6MjYsNzpbMSwxMF0sODoxMSw5OlsxLDEyXSwxMDoxMywxMTpbMSwxNF0sMTI6aSwxMzphLDE0Om8sMTU6cywxNjpjLDE3OnUsMTg6bCwxOTpoLDIwOmYsMjE6MjQsMjI6ZCwyNDo0LDI5OnAsMzQ6bn0sezI2OjI4LDI3OlsxLDI5XSwzNzp5fSx0KFsyNywzN10sWzIsMzhdKSx0KHIsWzIsOF0sezE6WzIsMl19KSx0KHIsWzIsNF0pLHs0OjI2LDEwOjMxLDEyOmksMTM6YSwxNDpvLDE1OnMsMTY6YywxNzp1LDE4OmwsMTk6aCwyMDpmLDIxOjI0LDIyOmQsMjQ6NCwyOTpwLDM0Om59LHQocixbMiw2XSksdChyLFsyLDddKSx0KHIsWzIsOV0pLHQocixbMiwxMF0pLHQocixbMiwxMV0pLHQocixbMiwxMl0pLHQocixbMiwxM10pLHQocixbMiwxNF0pLHQocixbMiwxNV0pLHQocixbMiwxNl0pLHQocixbMiwxN10pLHQocixbMiwxOF0pLHsyMzpbMSwzMl19LHQocixbMiwyMF0pLHszMDpbMSwzM10sMzI6WzEsMzRdfSx7MTE6WzEsMzVdfSx7Mjg6MzYsMzY6WzEsMzddfSx7MTE6WzIsNDBdfSx0KHIsWzIsNV0pLHQocixbMiwxOV0pLHQocixbMiwyM10sezMxOlsxLDM4XSwzMjpbMSwzOV19KSx0KHIsWzIsMjldLHszMDpbMSw0MF19KSx0KGcsWzIsMjFdKSx7MjY6NDEsMzc6eX0sezM3OlsyLDM5XX0sdChyLFsyLDI0XSx7MzI6WzEsNDJdfSksdChyLFsyLDI1XSksdChyLFsyLDI3XSx7MzE6WzEsNDNdfSksezExOlsxLDQ0XX0sdChyLFsyLDI2XSksdChyLFsyLDI4XSksdChnLFsyLDIyXSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDM3XSw2OlsyLDFdLDMwOlsyLDQwXSwzNzpbMiwzOV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSx2PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDM0O2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwzNTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMjc7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDM3O2Nhc2UgNDpyZXR1cm4gMzY7Y2FzZSA1OmNhc2UgNjpjYXNlIDc6YnJlYWs7Y2FzZSA4OnJldHVybiAxMTtjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmJyZWFrO2Nhc2UgMTI6dGhpcy5iZWdpbigiaHJlZiIpO2JyZWFrO2Nhc2UgMTM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTQ6cmV0dXJuIDMyO2Nhc2UgMTU6dGhpcy5iZWdpbigiY2FsbGJhY2tuYW1lIik7YnJlYWs7Y2FzZSAxNjp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxNzp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2thcmdzIik7YnJlYWs7Y2FzZSAxODpyZXR1cm4gMzA7Y2FzZSAxOTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyMDpyZXR1cm4gMzE7Y2FzZSAyMTp0aGlzLmJlZ2luKCJjbGljayIpO2JyZWFrO2Nhc2UgMjI6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMjM6cmV0dXJuIDI5O2Nhc2UgMjQ6cmV0dXJuIDU7Y2FzZSAyNTpyZXR1cm4gMTI7Y2FzZSAyNjpyZXR1cm4gMTM7Y2FzZSAyNzpyZXR1cm4gMTQ7Y2FzZSAyODpyZXR1cm4gMTU7Y2FzZSAyOTpyZXR1cm4gMTc7Y2FzZSAzMDpyZXR1cm4gMTY7Y2FzZSAzMTpyZXR1cm4gMTg7Y2FzZSAzMjpyZXR1cm4iZGF0ZSI7Y2FzZSAzMzpyZXR1cm4gMTk7Y2FzZSAzNDpyZXR1cm4gMjA7Y2FzZSAzNTpyZXR1cm4gMjI7Y2FzZSAzNjpyZXR1cm4gMjM7Y2FzZSAzNzpyZXR1cm4gMjc7Y2FzZSAzODpyZXR1cm4gNztjYXNlIDM5OnJldHVybiJJTlZBTElEIn19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/OiUlKD8hXHspKlteXG5dKikvaSwvXig/OlteXH1dJSUqW15cbl0qKS9pLC9eKD86JSUqW15cbl0qW1xuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86aHJlZltcc10rWyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpjYWxsW1xzXSspL2ksL14oPzpcKFtcc10qXCkpL2ksL14oPzpcKCkvaSwvXig/OlteKF0qKS9pLC9eKD86XCkpL2ksL14oPzpbXildKikvaSwvXig/OmNsaWNrW1xzXSspL2ksL14oPzpbXHNcbl0pL2ksL14oPzpbXlxzXG5dKikvaSwvXig/OmdhbnR0XGIpL2ksL14oPzpkYXRlRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1c2l2ZUVuZERhdGVzXGIpL2ksL14oPzp0b3BBeGlzXGIpL2ksL14oPzpheGlzRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OmV4Y2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OnRvZGF5TWFya2VyXHNbXlxuO10rKS9pLC9eKD86XGRcZFxkXGQtXGRcZC1cZFxkXGIpL2ksL14oPzp0aXRsZVxzW14jXG47XSspL2ksL14oPzpzZWN0aW9uXHNbXiM6XG47XSspL2ksL14oPzpbXiM6XG47XSspL2ksL14oPzo6W14jXG47XSspL2ksL14oPzo6KS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e2Nsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSxjYWxsYmFja2FyZ3M6e3J1bGVzOlsxOSwyMF0saW5jbHVzaXZlOiExfSxjYWxsYmFja25hbWU6e3J1bGVzOlsxNiwxNywxOF0saW5jbHVzaXZlOiExfSxocmVmOntydWxlczpbMTMsMTRdLGluY2x1c2l2ZTohMX0sY2xpY2s6e3J1bGVzOlsyMiwyM10saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsNyw4LDksMTAsMTEsMTIsMTUsMjEsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzldLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiBiKCl7dGhpcy55eT17fX1yZXR1cm4gbS5sZXhlcj12LGIucHJvdG90eXBlPW0sbS5QYXJzZXI9YixuZXcgYn0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDY4NzgpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sODQ1NDoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzIsM10sbj1bMSw3XSxyPVs3LDEyLDE1LDE3LDE5LDIwLDIxXSxpPVs3LDExLDEyLDE1LDE3LDE5LDIwLDIxXSxhPVsyLDIwXSxvPVsxLDMyXSxzPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxHRzo0LCI6Ijo1LGRvY3VtZW50OjYsRU9GOjcsRElSOjgsb3B0aW9uczo5LGJvZHk6MTAsT1BUOjExLE5MOjEyLGxpbmU6MTMsc3RhdGVtZW50OjE0LENPTU1JVDoxNSxjb21taXRfYXJnOjE2LEJSQU5DSDoxNyxJRDoxOCxDSEVDS09VVDoxOSxNRVJHRToyMCxSRVNFVDoyMSxyZXNldF9hcmc6MjIsU1RSOjIzLEhFQUQ6MjQscmVzZXRfcGFyZW50czoyNSxDQVJFVDoyNiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNDoiR0ciLDU6IjoiLDc6IkVPRiIsODoiRElSIiwxMToiT1BUIiwxMjoiTkwiLDE1OiJDT01NSVQiLDE3OiJCUkFOQ0giLDE4OiJJRCIsMTk6IkNIRUNLT1VUIiwyMDoiTUVSR0UiLDIxOiJSRVNFVCIsMjM6IlNUUiIsMjQ6IkhFQUQiLDI2OiJDQVJFVCJ9LHByb2R1Y3Rpb25zXzpbMCxbMyw0XSxbMyw1XSxbNiwwXSxbNiwyXSxbOSwyXSxbOSwxXSxbMTAsMF0sWzEwLDJdLFsxMywyXSxbMTMsMV0sWzE0LDJdLFsxNCwyXSxbMTQsMl0sWzE0LDJdLFsxNCwyXSxbMTYsMF0sWzE2LDFdLFsyMiwyXSxbMjIsMl0sWzI1LDBdLFsyNSwyXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDE6cmV0dXJuIGFbcy0xXTtjYXNlIDI6cmV0dXJuIHIuc2V0RGlyZWN0aW9uKGFbcy0zXSksYVtzLTFdO2Nhc2UgNDpyLnNldE9wdGlvbnMoYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDU6YVtzLTFdKz1hW3NdLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA3OnRoaXMuJD1bXTticmVhaztjYXNlIDg6YVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDk6dGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDExOnIuY29tbWl0KGFbc10pO2JyZWFrO2Nhc2UgMTI6ci5icmFuY2goYVtzXSk7YnJlYWs7Y2FzZSAxMzpyLmNoZWNrb3V0KGFbc10pO2JyZWFrO2Nhc2UgMTQ6ci5tZXJnZShhW3NdKTticmVhaztjYXNlIDE1OnIucmVzZXQoYVtzXSk7YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9IiI7YnJlYWs7Y2FzZSAxNzp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE4OnRoaXMuJD1hW3MtMV0rIjoiK2Fbc107YnJlYWs7Y2FzZSAxOTp0aGlzLiQ9YVtzLTFdKyI6IityLmNvdW50LHIuY291bnQ9MDticmVhaztjYXNlIDIwOnIuY291bnQ9MDticmVhaztjYXNlIDIxOnIuY291bnQrPTF9fSx0YWJsZTpbezM6MSw0OlsxLDJdfSx7MTpbM119LHs1OlsxLDNdLDg6WzEsNF19LHs2OjUsNzplLDk6NiwxMjpufSx7NTpbMSw4XX0sezc6WzEsOV19LHQocixbMiw3XSx7MTA6MTAsMTE6WzEsMTFdfSksdChpLFsyLDZdKSx7NjoxMiw3OmUsOTo2LDEyOm59LHsxOlsyLDFdfSx7NzpbMiw0XSwxMjpbMSwxNV0sMTM6MTMsMTQ6MTQsMTU6WzEsMTZdLDE3OlsxLDE3XSwxOTpbMSwxOF0sMjA6WzEsMTldLDIxOlsxLDIwXX0sdChpLFsyLDVdKSx7NzpbMSwyMV19LHQocixbMiw4XSksezEyOlsxLDIyXX0sdChyLFsyLDEwXSksezEyOlsyLDE2XSwxNjoyMywyMzpbMSwyNF19LHsxODpbMSwyNV19LHsxODpbMSwyNl19LHsxODpbMSwyN119LHsxODpbMSwzMF0sMjI6MjgsMjQ6WzEsMjldfSx7MTpbMiwyXX0sdChyLFsyLDldKSx7MTI6WzIsMTFdfSx7MTI6WzIsMTddfSx7MTI6WzIsMTJdfSx7MTI6WzIsMTNdfSx7MTI6WzIsMTRdfSx7MTI6WzIsMTVdfSx7MTI6YSwyNTozMSwyNjpvfSx7MTI6YSwyNTozMywyNjpvfSx7MTI6WzIsMThdfSx7MTI6YSwyNTozNCwyNjpvfSx7MTI6WzIsMTldfSx7MTI6WzIsMjFdfV0sZGVmYXVsdEFjdGlvbnM6ezk6WzIsMV0sMjE6WzIsMl0sMjM6WzIsMTFdLDI0OlsyLDE3XSwyNTpbMiwxMl0sMjY6WzIsMTNdLDI3OlsyLDE0XSwyODpbMiwxNV0sMzE6WzIsMThdLDMzOlsyLDE5XSwzNDpbMiwyMV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxjPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiAxMjtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpicmVhaztjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA1OnJldHVybiAxNTtjYXNlIDY6cmV0dXJuIDE3O2Nhc2UgNzpyZXR1cm4gMjA7Y2FzZSA4OnJldHVybiAyMTtjYXNlIDk6cmV0dXJuIDE5O2Nhc2UgMTA6Y2FzZSAxMTpyZXR1cm4gODtjYXNlIDEyOnJldHVybiA1O2Nhc2UgMTM6cmV0dXJuIDI2O2Nhc2UgMTQ6dGhpcy5iZWdpbigib3B0aW9ucyIpO2JyZWFrO2Nhc2UgMTU6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTY6cmV0dXJuIDExO2Nhc2UgMTc6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSAxODp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxOTpyZXR1cm4gMjM7Y2FzZSAyMDpyZXR1cm4gMTg7Y2FzZSAyMTpyZXR1cm4gN319LHJ1bGVzOlsvXig/Oihccj9cbikrKS9pLC9eKD86XHMrKS9pLC9eKD86I1teXG5dKikvaSwvXig/OiVbXlxuXSopL2ksL14oPzpnaXRHcmFwaFxiKS9pLC9eKD86Y29tbWl0XGIpL2ksL14oPzpicmFuY2hcYikvaSwvXig/Om1lcmdlXGIpL2ksL14oPzpyZXNldFxiKS9pLC9eKD86Y2hlY2tvdXRcYikvaSwvXig/OkxSXGIpL2ksL14oPzpCVFxiKS9pLC9eKD86OikvaSwvXig/OlxeKS9pLC9eKD86b3B0aW9uc1xyP1xuKS9pLC9eKD86ZW5kXHI/XG4pL2ksL14oPzpbXlxuXStccj9cbikvaSwvXig/OlsiXSkvaSwvXig/OlsiXSkvaSwvXig/OlteIl0qKS9pLC9eKD86W2EtekEtWl1bLV9cLmEtekEtWjAtOV0qWy1fYS16QS1aMC05XSkvaSwvXig/OiQpL2ldLGNvbmRpdGlvbnM6e29wdGlvbnM6e3J1bGVzOlsxNSwxNl0saW5jbHVzaXZlOiExfSxzdHJpbmc6e3J1bGVzOlsxOCwxOV0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNywyMCwyMV0saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIHUoKXt0aGlzLnl5PXt9fXJldHVybiBzLmxleGVyPWMsdS5wcm90b3R5cGU9cyxzLlBhcnNlcj11LG5ldyB1fSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oODE4MykucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSw0NjQ1Oih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bNiw5LDEwXSxuPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxpbmZvOjQsZG9jdW1lbnQ6NSxFT0Y6NixsaW5lOjcsc3RhdGVtZW50OjgsTkw6OSxzaG93SW5mbzoxMCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNDoiaW5mbyIsNjoiRU9GIiw5OiJOTCIsMTA6InNob3dJbmZvIn0scHJvZHVjdGlvbnNfOlswLFszLDNdLFs1LDBdLFs1LDJdLFs3LDFdLFs3LDFdLFs4LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3N3aXRjaChhLmxlbmd0aCxpKXtjYXNlIDE6cmV0dXJuIHI7Y2FzZSA0OmJyZWFrO2Nhc2UgNjpyLnNldEluZm8oITApfX0sdGFibGU6W3szOjEsNDpbMSwyXX0sezE6WzNdfSx0KGUsWzIsMl0sezU6M30pLHs2OlsxLDRdLDc6NSw4OjYsOTpbMSw3XSwxMDpbMSw4XX0sezE6WzIsMV19LHQoZSxbMiwzXSksdChlLFsyLDRdKSx0KGUsWzIsNV0pLHQoZSxbMiw2XSldLGRlZmF1bHRBY3Rpb25zOns0OlsyLDFdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIWUucmVjb3ZlcmFibGUpe3ZhciBuPW5ldyBFcnJvcih0KTt0aHJvdyBuLmhhc2g9ZSxufXRoaXMudHJhY2UodCl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bMF0scj1bXSxpPVtudWxsXSxhPVtdLG89dGhpcy50YWJsZSxzPSIiLGM9MCx1PTAsbD0wLGg9MixmPTEsZD1hLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHA9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSx5PXt5eTp7fX07Zm9yKHZhciBnIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksZykmJih5Lnl5W2ddPXRoaXMueXlbZ10pO3Auc2V0SW5wdXQodCx5Lnl5KSx5Lnl5LmxleGVyPXAseS55eS5wYXJzZXI9dGhpcyx2b2lkIDA9PT1wLnl5bGxvYyYmKHAueXlsbG9jPXt9KTt2YXIgbT1wLnl5bGxvYzthLnB1c2gobSk7dmFyIHY9cC5vcHRpb25zJiZwLm9wdGlvbnMucmFuZ2VzO2Z1bmN0aW9uIGIoKXt2YXIgdDtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mKHQ9ci5wb3AoKXx8cC5sZXgoKXx8ZikmJih0IGluc3RhbmNlb2YgQXJyYXkmJih0PShyPXQpLnBvcCgpKSx0PWUuc3ltYm9sc19bdF18fHQpLHR9ImZ1bmN0aW9uIj09dHlwZW9mIHkueXkucGFyc2VFcnJvcj90aGlzLnBhcnNlRXJyb3I9eS55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmb3IodmFyIF8seCx3LGssVCxFLEMsUyxBLE09e307Oyl7aWYodz1uW24ubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbd10/az10aGlzLmRlZmF1bHRBY3Rpb25zW3ddOihudWxsPT1fJiYoXz1iKCkpLGs9b1t3XSYmb1t3XVtfXSksdm9pZCAwPT09a3x8IWsubGVuZ3RofHwha1swXSl7dmFyIE49IiI7Zm9yKEUgaW4gQT1bXSxvW3ddKXRoaXMudGVybWluYWxzX1tFXSYmRT5oJiZBLnB1c2goIiciK3RoaXMudGVybWluYWxzX1tFXSsiJyIpO049cC5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOlxuIitwLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK0Euam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciOiJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjogVW5leHBlY3RlZCAiKyhfPT1mPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyIpLHRoaXMucGFyc2VFcnJvcihOLHt0ZXh0OnAubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW19dfHxfLGxpbmU6cC55eWxpbmVubyxsb2M6bSxleHBlY3RlZDpBfSl9aWYoa1swXWluc3RhbmNlb2YgQXJyYXkmJmsubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIit3KyIsIHRva2VuOiAiK18pO3N3aXRjaChrWzBdKXtjYXNlIDE6bi5wdXNoKF8pLGkucHVzaChwLnl5dGV4dCksYS5wdXNoKHAueXlsbG9jKSxuLnB1c2goa1sxXSksXz1udWxsLHg/KF89eCx4PW51bGwpOih1PXAueXlsZW5nLHM9cC55eXRleHQsYz1wLnl5bGluZW5vLG09cC55eWxsb2MsbD4wJiZsLS0pO2JyZWFrO2Nhc2UgMjppZihDPXRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzFdLE0uJD1pW2kubGVuZ3RoLUNdLE0uXyQ9e2ZpcnN0X2xpbmU6YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmFbYS5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOmFbYS5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LHYmJihNLl8kLnJhbmdlPVthW2EubGVuZ3RoLShDfHwxKV0ucmFuZ2VbMF0sYVthLmxlbmd0aC0xXS5yYW5nZVsxXV0pLHZvaWQgMCE9PShUPXRoaXMucGVyZm9ybUFjdGlvbi5hcHBseShNLFtzLHUsYyx5Lnl5LGtbMV0saSxhXS5jb25jYXQoZCkpKSlyZXR1cm4gVDtDJiYobj1uLnNsaWNlKDAsLTEqQyoyKSxpPWkuc2xpY2UoMCwtMSpDKSxhPWEuc2xpY2UoMCwtMSpDKSksbi5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzBdKSxpLnB1c2goTS4kKSxhLnB1c2goTS5fJCksUz1vW25bbi5sZW5ndGgtMl1dW25bbi5sZW5ndGgtMV1dLG4ucHVzaChTKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0scj17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnl5LnBhcnNlcil0aHJvdyBuZXcgRXJyb3IodCk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcih0LGUpfSxzZXRJbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnl5PWV8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PXQsdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW5wdXRbMF07cmV0dXJuIHRoaXMueXl0ZXh0Kz10LHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz10LHRoaXMubWF0Y2hlZCs9dCx0Lm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksdH0sdW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbj10LnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9dCt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtZSksdGhpcy5vZmZzZXQtPWU7dmFyIHI9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksbi5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPW4ubGVuZ3RoLTEpO3ZhciBpPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpuPyhuLmxlbmd0aD09PXIubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStyW3IubGVuZ3RoLW4ubGVuZ3RoXS5sZW5ndGgtblswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baVswXSxpWzBdK3RoaXMueXlsZW5nLWVdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyPyh0aGlzLl9iYWNrdHJhY2s9ITAsdGhpcyk6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGVzczpmdW5jdGlvbih0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UodCkpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSt0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaDtyZXR1cm4gdC5sZW5ndGg8MjAmJih0Kz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC10Lmxlbmd0aCkpLCh0LnN1YnN0cigwLDIwKSsodC5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXN0SW5wdXQoKSxlPW5ldyBBcnJheSh0Lmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHQrdGhpcy51cGNvbWluZ0lucHV0KCkrIlxuIitlKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoaT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihpLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLChyPXRbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpKSYmKHRoaXMueXlsaW5lbm8rPXIubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46cj9yW3IubGVuZ3RoLTFdLmxlbmd0aC1yW3IubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rdFswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz10WzBdLHRoaXMubWF0Y2grPXRbMF0sdGhpcy5tYXRjaGVzPXQsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UodFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9dFswXSxuPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLGUsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksbilyZXR1cm4gbjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgYSBpbiBpKXRoaXNbYV09aVthXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dmFyIHQsZSxuLHI7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApLHRoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGk9dGhpcy5fY3VycmVudFJ1bGVzKCksYT0wO2E8aS5sZW5ndGg7YSsrKWlmKChuPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbaVthXV0pKSYmKCFlfHxuWzBdLmxlbmd0aD5lWzBdLmxlbmd0aCkpe2lmKGU9bixyPWEsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoITEhPT0odD10aGlzLnRlc3RfbWF0Y2gobixpW2FdKSkpcmV0dXJuIHQ7aWYodGhpcy5fYmFja3RyYWNrKXtlPSExO2NvbnRpbnVlfXJldHVybiExfWlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gZT8hMSE9PSh0PXRoaXMudGVzdF9tYXRjaChlLGlbcl0pKSYmdDoiIj09PXRoaXMuX2lucHV0P3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gVW5yZWNvZ25pemVkIHRleHQuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dCgpfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbih0KXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2godCl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKHR8fDApKT49MD90aGlzLmNvbmRpdGlvblN0YWNrW3RdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYmVnaW4odCl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gNDtjYXNlIDE6cmV0dXJuIDk7Y2FzZSAyOnJldHVybiJzcGFjZSI7Y2FzZSAzOnJldHVybiAxMDtjYXNlIDQ6cmV0dXJuIDY7Y2FzZSA1OnJldHVybiJUWFQifX0scnVsZXM6Wy9eKD86aW5mb1xiKS9pLC9eKD86W1xzXG5ccl0rKS9pLC9eKD86W1xzXSspL2ksL14oPzpzaG93SW5mb1xiKS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e0lOSVRJQUw6e3J1bGVzOlswLDEsMiwzLDQsNV0saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIGkoKXt0aGlzLnl5PXt9fXJldHVybiBuLmxleGVyPXIsaS5wcm90b3R5cGU9bixuLlBhcnNlcj1pLG5ldyBpfSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oMTQyOCkucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSw1OTYzOih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bMSw0XSxuPVsxLDVdLHI9WzEsNl0saT1bMSw3XSxhPVsxLDldLG89WzEsMTEsMTMsMjAsMjEsMjIsMjNdLHM9WzIsNV0sYz1bMSw2LDExLDEzLDIwLDIxLDIyLDIzXSx1PVsyMCwyMSwyMl0sbD1bMiw4XSxoPVsxLDE4XSxmPVsxLDE5XSxkPVsxLDI0XSxwPVs2LDIwLDIxLDIyLDIzXSx5PXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6Myxlb2w6NCxkaXJlY3RpdmU6NSxQSUU6Nixkb2N1bWVudDo3LHNob3dEYXRhOjgsbGluZTo5LHN0YXRlbWVudDoxMCx0eHQ6MTEsdmFsdWU6MTIsdGl0bGU6MTMsdGl0bGVfdmFsdWU6MTQsb3BlbkRpcmVjdGl2ZToxNSx0eXBlRGlyZWN0aXZlOjE2LGNsb3NlRGlyZWN0aXZlOjE3LCI6IjoxOCxhcmdEaXJlY3RpdmU6MTksTkVXTElORToyMCwiOyI6MjEsRU9GOjIyLG9wZW5fZGlyZWN0aXZlOjIzLHR5cGVfZGlyZWN0aXZlOjI0LGFyZ19kaXJlY3RpdmU6MjUsY2xvc2VfZGlyZWN0aXZlOjI2LCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw2OiJQSUUiLDg6InNob3dEYXRhIiwxMToidHh0IiwxMjoidmFsdWUiLDEzOiJ0aXRsZSIsMTQ6InRpdGxlX3ZhbHVlIiwxODoiOiIsMjA6Ik5FV0xJTkUiLDIxOiI7IiwyMjoiRU9GIiwyMzoib3Blbl9kaXJlY3RpdmUiLDI0OiJ0eXBlX2RpcmVjdGl2ZSIsMjU6ImFyZ19kaXJlY3RpdmUiLDI2OiJjbG9zZV9kaXJlY3RpdmUifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzMsMl0sWzMsMl0sWzMsM10sWzcsMF0sWzcsMl0sWzksMl0sWzEwLDBdLFsxMCwyXSxbMTAsMl0sWzEwLDFdLFs1LDNdLFs1LDVdLFs0LDFdLFs0LDFdLFs0LDFdLFsxNSwxXSxbMTYsMV0sWzE5LDFdLFsxNywxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDQ6ci5zZXRTaG93RGF0YSghMCk7YnJlYWs7Y2FzZSA3OnRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA5OnIuYWRkU2VjdGlvbihhW3MtMV0sci5jbGVhbnVwVmFsdWUoYVtzXSkpO2JyZWFrO2Nhc2UgMTA6dGhpcy4kPWFbc10udHJpbSgpLHIuc2V0VGl0bGUodGhpcy4kKTticmVhaztjYXNlIDE3OnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxODpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxOTphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMjA6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwicGllIil9fSx0YWJsZTpbezM6MSw0OjIsNTozLDY6ZSwxNTo4LDIwOm4sMjE6ciwyMjppLDIzOmF9LHsxOlszXX0sezM6MTAsNDoyLDU6Myw2OmUsMTU6OCwyMDpuLDIxOnIsMjI6aSwyMzphfSx7MzoxMSw0OjIsNTozLDY6ZSwxNTo4LDIwOm4sMjE6ciwyMjppLDIzOmF9LHQobyxzLHs3OjEyLDg6WzEsMTNdfSksdChjLFsyLDE0XSksdChjLFsyLDE1XSksdChjLFsyLDE2XSksezE2OjE0LDI0OlsxLDE1XX0sezI0OlsyLDE3XX0sezE6WzIsMV19LHsxOlsyLDJdfSx0KHUsbCx7MTU6OCw5OjE2LDEwOjE3LDU6MjAsMTpbMiwzXSwxMTpoLDEzOmYsMjM6YX0pLHQobyxzLHs3OjIxfSksezE3OjIyLDE4OlsxLDIzXSwyNjpkfSx0KFsxOCwyNl0sWzIsMThdKSx0KG8sWzIsNl0pLHs0OjI1LDIwOm4sMjE6ciwyMjppfSx7MTI6WzEsMjZdfSx7MTQ6WzEsMjddfSx0KHUsWzIsMTFdKSx0KHUsbCx7MTU6OCw5OjE2LDEwOjE3LDU6MjAsMTpbMiw0XSwxMTpoLDEzOmYsMjM6YX0pLHQocCxbMiwxMl0pLHsxOToyOCwyNTpbMSwyOV19LHQocCxbMiwyMF0pLHQobyxbMiw3XSksdCh1LFsyLDldKSx0KHUsWzIsMTBdKSx7MTc6MzAsMjY6ZH0sezI2OlsyLDE5XX0sdChwLFsyLDEzXSldLGRlZmF1bHRBY3Rpb25zOns5OlsyLDE3XSwxMDpbMiwxXSwxMTpbMiwyXSwyOTpbMiwxOV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxnPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDIzO2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwyNDtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTg7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNDpyZXR1cm4gMjU7Y2FzZSA1OmNhc2UgNjpicmVhaztjYXNlIDc6cmV0dXJuIDIwO2Nhc2UgODpjYXNlIDk6YnJlYWs7Y2FzZSAxMDpyZXR1cm4gdGhpcy5iZWdpbigidGl0bGUiKSwxMztjYXNlIDExOnJldHVybiB0aGlzLnBvcFN0YXRlKCksInRpdGxlX3ZhbHVlIjtjYXNlIDEyOnRoaXMuYmVnaW4oInN0cmluZyIpO2JyZWFrO2Nhc2UgMTM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTQ6cmV0dXJuInR4dCI7Y2FzZSAxNTpyZXR1cm4gNjtjYXNlIDE2OnJldHVybiA4O2Nhc2UgMTc6cmV0dXJuInZhbHVlIjtjYXNlIDE4OnJldHVybiAyMn19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/OiUlKD8hXHspW15cbl0qKS9pLC9eKD86W15cfV0lJVteXG5dKikvaSwvXig/OltcblxyXSspL2ksL14oPzolJVteXG5dKikvaSwvXig/Oltcc10rKS9pLC9eKD86dGl0bGVcYikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OlsiXSkvaSwvXig/OlsiXSkvaSwvXig/OlteIl0qKS9pLC9eKD86cGllXGIpL2ksL14oPzpzaG93RGF0YVxiKS9pLC9eKD86Oltcc10qW1xkXSsoPzpcLltcZF0rKT8pL2ksL14oPzokKS9pXSxjb25kaXRpb25zOntjbG9zZV9kaXJlY3RpdmU6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sYXJnX2RpcmVjdGl2ZTp7cnVsZXM6WzMsNF0saW5jbHVzaXZlOiExfSx0eXBlX2RpcmVjdGl2ZTp7cnVsZXM6WzIsM10saW5jbHVzaXZlOiExfSxvcGVuX2RpcmVjdGl2ZTp7cnVsZXM6WzFdLGluY2x1c2l2ZTohMX0sdGl0bGU6e3J1bGVzOlsxMV0saW5jbHVzaXZlOiExfSxzdHJpbmc6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsNyw4LDksMTAsMTIsMTUsMTYsMTcsMThdLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiBtKCl7dGhpcy55eT17fX1yZXR1cm4geS5sZXhlcj1nLG0ucHJvdG90eXBlPXkseS5QYXJzZXI9bSxuZXcgbX0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDQ1NTEpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sNjQ2MzoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsM10sbj1bMSw1XSxyPVsxLDE3XSxpPVsyLDEwXSxhPVsxLDIxXSxvPVsxLDIyXSxzPVsxLDIzXSxjPVsxLDI0XSx1PVsxLDI1XSxsPVsxLDI2XSxoPVsxLDE5XSxmPVsxLDI3XSxkPVsxLDI4XSxwPVsxLDMxXSx5PVs2Niw2N10sZz1bNSw4LDE0LDM1LDM2LDM3LDM4LDM5LDQwLDQ4LDU1LDU3LDY2LDY3XSxtPVs1LDYsOCwxNCwzNSwzNiwzNywzOCwzOSw0MCw0OCw2Niw2N10sdj1bMSw1MV0sYj1bMSw1Ml0sXz1bMSw1M10seD1bMSw1NF0sdz1bMSw1NV0saz1bMSw1Nl0sVD1bMSw1N10sRT1bNTcsNThdLEM9WzEsNjldLFM9WzEsNjVdLEE9WzEsNjZdLE09WzEsNjddLE49WzEsNjhdLEQ9WzEsNzBdLE89WzEsNzRdLEI9WzEsNzVdLEw9WzEsNzJdLEk9WzEsNzNdLFI9WzUsOCwxNCwzNSwzNiwzNywzOCwzOSw0MCw0OCw2Niw2N10sRj17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsZGlyZWN0aXZlOjQsTkVXTElORTo1LFJEOjYsZGlhZ3JhbTo3LEVPRjo4LG9wZW5EaXJlY3RpdmU6OSx0eXBlRGlyZWN0aXZlOjEwLGNsb3NlRGlyZWN0aXZlOjExLCI6IjoxMixhcmdEaXJlY3RpdmU6MTMsb3Blbl9kaXJlY3RpdmU6MTQsdHlwZV9kaXJlY3RpdmU6MTUsYXJnX2RpcmVjdGl2ZToxNixjbG9zZV9kaXJlY3RpdmU6MTcscmVxdWlyZW1lbnREZWY6MTgsZWxlbWVudERlZjoxOSxyZWxhdGlvbnNoaXBEZWY6MjAscmVxdWlyZW1lbnRUeXBlOjIxLHJlcXVpcmVtZW50TmFtZToyMixTVFJVQ1RfU1RBUlQ6MjMscmVxdWlyZW1lbnRCb2R5OjI0LElEOjI1LENPTE9OU0VQOjI2LGlkOjI3LFRFWFQ6MjgsdGV4dDoyOSxSSVNLOjMwLHJpc2tMZXZlbDozMSxWRVJJRllNVEhEOjMyLHZlcmlmeVR5cGU6MzMsU1RSVUNUX1NUT1A6MzQsUkVRVUlSRU1FTlQ6MzUsRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDozNixJTlRFUkZBQ0VfUkVRVUlSRU1FTlQ6MzcsUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQ6MzgsUEhZU0lDQUxfUkVRVUlSRU1FTlQ6MzksREVTSUdOX0NPTlNUUkFJTlQ6NDAsTE9XX1JJU0s6NDEsTUVEX1JJU0s6NDIsSElHSF9SSVNLOjQzLFZFUklGWV9BTkFMWVNJUzo0NCxWRVJJRllfREVNT05TVFJBVElPTjo0NSxWRVJJRllfSU5TUEVDVElPTjo0NixWRVJJRllfVEVTVDo0NyxFTEVNRU5UOjQ4LGVsZW1lbnROYW1lOjQ5LGVsZW1lbnRCb2R5OjUwLFRZUEU6NTEsdHlwZTo1MixET0NSRUY6NTMscmVmOjU0LEVORF9BUlJPV19MOjU1LHJlbGF0aW9uc2hpcDo1NixMSU5FOjU3LEVORF9BUlJPV19SOjU4LENPTlRBSU5TOjU5LENPUElFUzo2MCxERVJJVkVTOjYxLFNBVElTRklFUzo2MixWRVJJRklFUzo2MyxSRUZJTkVTOjY0LFRSQUNFUzo2NSx1bnFTdHJpbmc6NjYscVN0cmluZzo2NywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiTkVXTElORSIsNjoiUkQiLDg6IkVPRiIsMTI6IjoiLDE0OiJvcGVuX2RpcmVjdGl2ZSIsMTU6InR5cGVfZGlyZWN0aXZlIiwxNjoiYXJnX2RpcmVjdGl2ZSIsMTc6ImNsb3NlX2RpcmVjdGl2ZSIsMjM6IlNUUlVDVF9TVEFSVCIsMjU6IklEIiwyNjoiQ09MT05TRVAiLDI4OiJURVhUIiwzMDoiUklTSyIsMzI6IlZFUklGWU1USEQiLDM0OiJTVFJVQ1RfU1RPUCIsMzU6IlJFUVVJUkVNRU5UIiwzNjoiRlVOQ1RJT05BTF9SRVFVSVJFTUVOVCIsMzc6IklOVEVSRkFDRV9SRVFVSVJFTUVOVCIsMzg6IlBFUkZPUk1BTkNFX1JFUVVJUkVNRU5UIiwzOToiUEhZU0lDQUxfUkVRVUlSRU1FTlQiLDQwOiJERVNJR05fQ09OU1RSQUlOVCIsNDE6IkxPV19SSVNLIiw0MjoiTUVEX1JJU0siLDQzOiJISUdIX1JJU0siLDQ0OiJWRVJJRllfQU5BTFlTSVMiLDQ1OiJWRVJJRllfREVNT05TVFJBVElPTiIsNDY6IlZFUklGWV9JTlNQRUNUSU9OIiw0NzoiVkVSSUZZX1RFU1QiLDQ4OiJFTEVNRU5UIiw1MToiVFlQRSIsNTM6IkRPQ1JFRiIsNTU6IkVORF9BUlJPV19MIiw1NzoiTElORSIsNTg6IkVORF9BUlJPV19SIiw1OToiQ09OVEFJTlMiLDYwOiJDT1BJRVMiLDYxOiJERVJJVkVTIiw2MjoiU0FUSVNGSUVTIiw2MzoiVkVSSUZJRVMiLDY0OiJSRUZJTkVTIiw2NToiVFJBQ0VTIiw2NjoidW5xU3RyaW5nIiw2NzoicVN0cmluZyJ9LHByb2R1Y3Rpb25zXzpbMCxbMywzXSxbMywyXSxbMyw0XSxbNCwzXSxbNCw1XSxbOSwxXSxbMTAsMV0sWzEzLDFdLFsxMSwxXSxbNywwXSxbNywyXSxbNywyXSxbNywyXSxbNywyXSxbNywyXSxbMTgsNV0sWzI0LDVdLFsyNCw1XSxbMjQsNV0sWzI0LDVdLFsyNCwyXSxbMjQsMV0sWzIxLDFdLFsyMSwxXSxbMjEsMV0sWzIxLDFdLFsyMSwxXSxbMjEsMV0sWzMxLDFdLFszMSwxXSxbMzEsMV0sWzMzLDFdLFszMywxXSxbMzMsMV0sWzMzLDFdLFsxOSw1XSxbNTAsNV0sWzUwLDVdLFs1MCwyXSxbNTAsMV0sWzIwLDVdLFsyMCw1XSxbNTYsMV0sWzU2LDFdLFs1NiwxXSxbNTYsMV0sWzU2LDFdLFs1NiwxXSxbNTYsMV0sWzIyLDFdLFsyMiwxXSxbMjcsMV0sWzI3LDFdLFsyOSwxXSxbMjksMV0sWzQ5LDFdLFs0OSwxXSxbNTIsMV0sWzUyLDFdLFs1NCwxXSxbNTQsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scixpLGEsbyl7dmFyIHM9YS5sZW5ndGgtMTtzd2l0Y2goaSl7Y2FzZSA2OnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA3OnIucGFyc2VEaXJlY3RpdmUoYVtzXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDg6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDk6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwicGllIik7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxNjpyLmFkZFJlcXVpcmVtZW50KGFbcy0zXSxhW3MtNF0pO2JyZWFrO2Nhc2UgMTc6ci5zZXROZXdSZXFJZChhW3MtMl0pO2JyZWFrO2Nhc2UgMTg6ci5zZXROZXdSZXFUZXh0KGFbcy0yXSk7YnJlYWs7Y2FzZSAxOTpyLnNldE5ld1JlcVJpc2soYVtzLTJdKTticmVhaztjYXNlIDIwOnIuc2V0TmV3UmVxVmVyaWZ5TWV0aG9kKGFbcy0yXSk7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9ci5SZXF1aXJlbWVudFR5cGUuUkVRVUlSRU1FTlQ7YnJlYWs7Y2FzZSAyNDp0aGlzLiQ9ci5SZXF1aXJlbWVudFR5cGUuRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDticmVhaztjYXNlIDI1OnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5JTlRFUkZBQ0VfUkVRVUlSRU1FTlQ7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9ci5SZXF1aXJlbWVudFR5cGUuUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQ7YnJlYWs7Y2FzZSAyNzp0aGlzLiQ9ci5SZXF1aXJlbWVudFR5cGUuUEhZU0lDQUxfUkVRVUlSRU1FTlQ7YnJlYWs7Y2FzZSAyODp0aGlzLiQ9ci5SZXF1aXJlbWVudFR5cGUuREVTSUdOX0NPTlNUUkFJTlQ7YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9ci5SaXNrTGV2ZWwuTE9XX1JJU0s7YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9ci5SaXNrTGV2ZWwuTUVEX1JJU0s7YnJlYWs7Y2FzZSAzMTp0aGlzLiQ9ci5SaXNrTGV2ZWwuSElHSF9SSVNLO2JyZWFrO2Nhc2UgMzI6dGhpcy4kPXIuVmVyaWZ5VHlwZS5WRVJJRllfQU5BTFlTSVM7YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9ci5WZXJpZnlUeXBlLlZFUklGWV9ERU1PTlNUUkFUSU9OO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPXIuVmVyaWZ5VHlwZS5WRVJJRllfSU5TUEVDVElPTjticmVhaztjYXNlIDM1OnRoaXMuJD1yLlZlcmlmeVR5cGUuVkVSSUZZX1RFU1Q7YnJlYWs7Y2FzZSAzNjpyLmFkZEVsZW1lbnQoYVtzLTNdKTticmVhaztjYXNlIDM3OnIuc2V0TmV3RWxlbWVudFR5cGUoYVtzLTJdKTticmVhaztjYXNlIDM4OnIuc2V0TmV3RWxlbWVudERvY1JlZihhW3MtMl0pO2JyZWFrO2Nhc2UgNDE6ci5hZGRSZWxhdGlvbnNoaXAoYVtzLTJdLGFbc10sYVtzLTRdKTticmVhaztjYXNlIDQyOnIuYWRkUmVsYXRpb25zaGlwKGFbcy0yXSxhW3MtNF0sYVtzXSk7YnJlYWs7Y2FzZSA0Mzp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLkNPTlRBSU5TO2JyZWFrO2Nhc2UgNDQ6dGhpcy4kPXIuUmVsYXRpb25zaGlwcy5DT1BJRVM7YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLkRFUklWRVM7YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLlNBVElTRklFUzticmVhaztjYXNlIDQ3OnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuVkVSSUZJRVM7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLlJFRklORVM7YnJlYWs7Y2FzZSA0OTp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLlRSQUNFU319LHRhYmxlOlt7MzoxLDQ6Miw2OmUsOTo0LDE0Om59LHsxOlszXX0sezM6Nyw0OjIsNTpbMSw2XSw2OmUsOTo0LDE0Om59LHs1OlsxLDhdfSx7MTA6OSwxNTpbMSwxMF19LHsxNTpbMiw2XX0sezM6MTEsNDoyLDY6ZSw5OjQsMTQ6bn0sezE6WzIsMl19LHs0OjE2LDU6ciw3OjEyLDg6aSw5OjQsMTQ6biwxODoxMywxOToxNCwyMDoxNSwyMToxOCwyNzoyMCwzNTphLDM2Om8sMzc6cywzODpjLDM5OnUsNDA6bCw0ODpoLDY2OmYsNjc6ZH0sezExOjI5LDEyOlsxLDMwXSwxNzpwfSx0KFsxMiwxN10sWzIsN10pLHsxOlsyLDFdfSx7ODpbMSwzMl19LHs0OjE2LDU6ciw3OjMzLDg6aSw5OjQsMTQ6biwxODoxMywxOToxNCwyMDoxNSwyMToxOCwyNzoyMCwzNTphLDM2Om8sMzc6cywzODpjLDM5OnUsNDA6bCw0ODpoLDY2OmYsNjc6ZH0sezQ6MTYsNTpyLDc6MzQsODppLDk6NCwxNDpuLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE4LDI3OjIwLDM1OmEsMzY6bywzNzpzLDM4OmMsMzk6dSw0MDpsLDQ4OmgsNjY6Ziw2NzpkfSx7NDoxNiw1OnIsNzozNSw4OmksOTo0LDE0Om4sMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTgsMjc6MjAsMzU6YSwzNjpvLDM3OnMsMzg6YywzOTp1LDQwOmwsNDg6aCw2NjpmLDY3OmR9LHs0OjE2LDU6ciw3OjM2LDg6aSw5OjQsMTQ6biwxODoxMywxOToxNCwyMDoxNSwyMToxOCwyNzoyMCwzNTphLDM2Om8sMzc6cywzODpjLDM5OnUsNDA6bCw0ODpoLDY2OmYsNjc6ZH0sezQ6MTYsNTpyLDc6MzcsODppLDk6NCwxNDpuLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE4LDI3OjIwLDM1OmEsMzY6bywzNzpzLDM4OmMsMzk6dSw0MDpsLDQ4OmgsNjY6Ziw2NzpkfSx7MjI6MzgsNjY6WzEsMzldLDY3OlsxLDQwXX0sezQ5OjQxLDY2OlsxLDQyXSw2NzpbMSw0M119LHs1NTpbMSw0NF0sNTc6WzEsNDVdfSx0KHksWzIsMjNdKSx0KHksWzIsMjRdKSx0KHksWzIsMjVdKSx0KHksWzIsMjZdKSx0KHksWzIsMjddKSx0KHksWzIsMjhdKSx0KGcsWzIsNTJdKSx0KGcsWzIsNTNdKSx0KG0sWzIsNF0pLHsxMzo0NiwxNjpbMSw0N119LHQobSxbMiw5XSksezE6WzIsM119LHs4OlsyLDExXX0sezg6WzIsMTJdfSx7ODpbMiwxM119LHs4OlsyLDE0XX0sezg6WzIsMTVdfSx7MjM6WzEsNDhdfSx7MjM6WzIsNTBdfSx7MjM6WzIsNTFdfSx7MjM6WzEsNDldfSx7MjM6WzIsNTZdfSx7MjM6WzIsNTddfSx7NTY6NTAsNTk6diw2MDpiLDYxOl8sNjI6eCw2Mzp3LDY0OmssNjU6VH0sezU2OjU4LDU5OnYsNjA6Yiw2MTpfLDYyOngsNjM6dyw2NDprLDY1OlR9LHsxMTo1OSwxNzpwfSx7MTc6WzIsOF19LHs1OlsxLDYwXX0sezU6WzEsNjFdfSx7NTc6WzEsNjJdfSx0KEUsWzIsNDNdKSx0KEUsWzIsNDRdKSx0KEUsWzIsNDVdKSx0KEUsWzIsNDZdKSx0KEUsWzIsNDddKSx0KEUsWzIsNDhdKSx0KEUsWzIsNDldKSx7NTg6WzEsNjNdfSx0KG0sWzIsNV0pLHs1OkMsMjQ6NjQsMjU6UywyODpBLDMwOk0sMzI6TiwzNDpEfSx7NTpPLDM0OkIsNTA6NzEsNTE6TCw1MzpJfSx7Mjc6NzYsNjY6Ziw2NzpkfSx7Mjc6NzcsNjY6Ziw2NzpkfSx0KFIsWzIsMTZdKSx7MjY6WzEsNzhdfSx7MjY6WzEsNzldfSx7MjY6WzEsODBdfSx7MjY6WzEsODFdfSx7NTpDLDI0OjgyLDI1OlMsMjg6QSwzMDpNLDMyOk4sMzQ6RH0sdChSLFsyLDIyXSksdChSLFsyLDM2XSksezI2OlsxLDgzXX0sezI2OlsxLDg0XX0sezU6TywzNDpCLDUwOjg1LDUxOkwsNTM6SX0sdChSLFsyLDQwXSksdChSLFsyLDQxXSksdChSLFsyLDQyXSksezI3Ojg2LDY2OmYsNjc6ZH0sezI5Ojg3LDY2OlsxLDg4XSw2NzpbMSw4OV19LHszMTo5MCw0MTpbMSw5MV0sNDI6WzEsOTJdLDQzOlsxLDkzXX0sezMzOjk0LDQ0OlsxLDk1XSw0NTpbMSw5Nl0sNDY6WzEsOTddLDQ3OlsxLDk4XX0sdChSLFsyLDIxXSksezUyOjk5LDY2OlsxLDEwMF0sNjc6WzEsMTAxXX0sezU0OjEwMiw2NjpbMSwxMDNdLDY3OlsxLDEwNF19LHQoUixbMiwzOV0pLHs1OlsxLDEwNV19LHs1OlsxLDEwNl19LHs1OlsyLDU0XX0sezU6WzIsNTVdfSx7NTpbMSwxMDddfSx7NTpbMiwyOV19LHs1OlsyLDMwXX0sezU6WzIsMzFdfSx7NTpbMSwxMDhdfSx7NTpbMiwzMl19LHs1OlsyLDMzXX0sezU6WzIsMzRdfSx7NTpbMiwzNV19LHs1OlsxLDEwOV19LHs1OlsyLDU4XX0sezU6WzIsNTldfSx7NTpbMSwxMTBdfSx7NTpbMiw2MF19LHs1OlsyLDYxXX0sezU6QywyNDoxMTEsMjU6UywyODpBLDMwOk0sMzI6TiwzNDpEfSx7NTpDLDI0OjExMiwyNTpTLDI4OkEsMzA6TSwzMjpOLDM0OkR9LHs1OkMsMjQ6MTEzLDI1OlMsMjg6QSwzMDpNLDMyOk4sMzQ6RH0sezU6QywyNDoxMTQsMjU6UywyODpBLDMwOk0sMzI6TiwzNDpEfSx7NTpPLDM0OkIsNTA6MTE1LDUxOkwsNTM6SX0sezU6TywzNDpCLDUwOjExNiw1MTpMLDUzOkl9LHQoUixbMiwxN10pLHQoUixbMiwxOF0pLHQoUixbMiwxOV0pLHQoUixbMiwyMF0pLHQoUixbMiwzN10pLHQoUixbMiwzOF0pXSxkZWZhdWx0QWN0aW9uczp7NTpbMiw2XSw3OlsyLDJdLDExOlsyLDFdLDMyOlsyLDNdLDMzOlsyLDExXSwzNDpbMiwxMl0sMzU6WzIsMTNdLDM2OlsyLDE0XSwzNzpbMiwxNV0sMzk6WzIsNTBdLDQwOlsyLDUxXSw0MjpbMiw1Nl0sNDM6WzIsNTddLDQ3OlsyLDhdLDg4OlsyLDU0XSw4OTpbMiw1NV0sOTE6WzIsMjldLDkyOlsyLDMwXSw5MzpbMiwzMV0sOTU6WzIsMzJdLDk2OlsyLDMzXSw5NzpbMiwzNF0sOTg6WzIsMzVdLDEwMDpbMiw1OF0sMTAxOlsyLDU5XSwxMDM6WzIsNjBdLDEwNDpbMiw2MV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxQPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDE0O2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwxNTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTI7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDE3O2Nhc2UgNDpyZXR1cm4gMTY7Y2FzZSA1OnJldHVybiA1O2Nhc2UgNjpjYXNlIDc6Y2FzZSA4OmJyZWFrO2Nhc2UgOTpyZXR1cm4gODtjYXNlIDEwOnJldHVybiA2O2Nhc2UgMTE6cmV0dXJuIDIzO2Nhc2UgMTI6cmV0dXJuIDM0O2Nhc2UgMTM6cmV0dXJuIDI2O2Nhc2UgMTQ6cmV0dXJuIDI1O2Nhc2UgMTU6cmV0dXJuIDI4O2Nhc2UgMTY6cmV0dXJuIDMwO2Nhc2UgMTc6cmV0dXJuIDMyO2Nhc2UgMTg6cmV0dXJuIDM1O2Nhc2UgMTk6cmV0dXJuIDM2O2Nhc2UgMjA6cmV0dXJuIDM3O2Nhc2UgMjE6cmV0dXJuIDM4O2Nhc2UgMjI6cmV0dXJuIDM5O2Nhc2UgMjM6cmV0dXJuIDQwO2Nhc2UgMjQ6cmV0dXJuIDQxO2Nhc2UgMjU6cmV0dXJuIDQyO2Nhc2UgMjY6cmV0dXJuIDQzO2Nhc2UgMjc6cmV0dXJuIDQ0O2Nhc2UgMjg6cmV0dXJuIDQ1O2Nhc2UgMjk6cmV0dXJuIDQ2O2Nhc2UgMzA6cmV0dXJuIDQ3O2Nhc2UgMzE6cmV0dXJuIDQ4O2Nhc2UgMzI6cmV0dXJuIDU5O2Nhc2UgMzM6cmV0dXJuIDYwO2Nhc2UgMzQ6cmV0dXJuIDYxO2Nhc2UgMzU6cmV0dXJuIDYyO2Nhc2UgMzY6cmV0dXJuIDYzO2Nhc2UgMzc6cmV0dXJuIDY0O2Nhc2UgMzg6cmV0dXJuIDY1O2Nhc2UgMzk6cmV0dXJuIDUxO2Nhc2UgNDA6cmV0dXJuIDUzO2Nhc2UgNDE6cmV0dXJuIDU1O2Nhc2UgNDI6cmV0dXJuIDU4O2Nhc2UgNDM6cmV0dXJuIDU3O2Nhc2UgNDQ6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSA0NTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA0NjpyZXR1cm4icVN0cmluZyI7Y2FzZSA0NzpyZXR1cm4gZS55eXRleHQ9ZS55eXRleHQudHJpbSgpLDY2fX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86KFxyP1xuKSspL2ksL14oPzpccyspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JVteXG5dKikvaSwvXig/OiQpL2ksL14oPzpyZXF1aXJlbWVudERpYWdyYW1cYikvaSwvXig/Olx7KS9pLC9eKD86XH0pL2ksL14oPzo6KS9pLC9eKD86aWRcYikvaSwvXig/OnRleHRcYikvaSwvXig/OnJpc2tcYikvaSwvXig/OnZlcmlmeU1ldGhvZFxiKS9pLC9eKD86cmVxdWlyZW1lbnRcYikvaSwvXig/OmZ1bmN0aW9uYWxSZXF1aXJlbWVudFxiKS9pLC9eKD86aW50ZXJmYWNlUmVxdWlyZW1lbnRcYikvaSwvXig/OnBlcmZvcm1hbmNlUmVxdWlyZW1lbnRcYikvaSwvXig/OnBoeXNpY2FsUmVxdWlyZW1lbnRcYikvaSwvXig/OmRlc2lnbkNvbnN0cmFpbnRcYikvaSwvXig/Omxvd1xiKS9pLC9eKD86bWVkaXVtXGIpL2ksL14oPzpoaWdoXGIpL2ksL14oPzphbmFseXNpc1xiKS9pLC9eKD86ZGVtb25zdHJhdGlvblxiKS9pLC9eKD86aW5zcGVjdGlvblxiKS9pLC9eKD86dGVzdFxiKS9pLC9eKD86ZWxlbWVudFxiKS9pLC9eKD86Y29udGFpbnNcYikvaSwvXig/OmNvcGllc1xiKS9pLC9eKD86ZGVyaXZlc1xiKS9pLC9eKD86c2F0aXNmaWVzXGIpL2ksL14oPzp2ZXJpZmllc1xiKS9pLC9eKD86cmVmaW5lc1xiKS9pLC9eKD86dHJhY2VzXGIpL2ksL14oPzp0eXBlXGIpL2ksL14oPzpkb2NyZWZcYikvaSwvXig/OjwtKS9pLC9eKD86LT4pL2ksL14oPzotKS9pLC9eKD86WyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpbXHddW15cclxuXHtcPFw+XC1cPV0qKS9pXSxjb25kaXRpb25zOntjbG9zZV9kaXJlY3RpdmU6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sYXJnX2RpcmVjdGl2ZTp7cnVsZXM6WzMsNF0saW5jbHVzaXZlOiExfSx0eXBlX2RpcmVjdGl2ZTp7cnVsZXM6WzIsM10saW5jbHVzaXZlOiExfSxvcGVuX2RpcmVjdGl2ZTp7cnVsZXM6WzFdLGluY2x1c2l2ZTohMX0sdW5xU3RyaW5nOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LHRva2VuOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzQ1LDQ2XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0N10saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIGooKXt0aGlzLnl5PXt9fXJldHVybiBGLmxleGVyPVAsai5wcm90b3R5cGU9RixGLlBhcnNlcj1qLG5ldyBqfSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oODgwMCkucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSw5OTIzOih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bMSwyXSxuPVsxLDNdLHI9WzEsNV0saT1bMSw3XSxhPVsyLDVdLG89WzEsMTVdLHM9WzEsMTddLGM9WzEsMThdLHU9WzEsMTldLGw9WzEsMjFdLGg9WzEsMjJdLGY9WzEsMjNdLGQ9WzEsMjldLHA9WzEsMzBdLHk9WzEsMzFdLGc9WzEsMzJdLG09WzEsMzNdLHY9WzEsMzRdLGI9WzEsMzddLF89WzEsMzhdLHg9WzEsMzldLHc9WzEsNDBdLGs9WzEsNDFdLFQ9WzEsNDJdLEU9WzEsNDVdLEM9WzEsNCw1LDE2LDIwLDIyLDIzLDI0LDMwLDMyLDMzLDM0LDM1LDM2LDM4LDQwLDQxLDQyLDQ2LDQ3LDQ4LDQ5LDU3LDY3XSxTPVsxLDU4XSxBPVs0LDUsMTYsMjAsMjIsMjMsMjQsMzAsMzIsMzMsMzQsMzUsMzYsMzgsNDIsNDYsNDcsNDgsNDksNTcsNjddLE09WzQsNSwxNiwyMCwyMiwyMywyNCwzMCwzMiwzMywzNCwzNSwzNiwzOCw0MSw0Miw0Niw0Nyw0OCw0OSw1Nyw2N10sTj1bNCw1LDE2LDIwLDIyLDIzLDI0LDMwLDMyLDMzLDM0LDM1LDM2LDM4LDQwLDQyLDQ2LDQ3LDQ4LDQ5LDU3LDY3XSxEPVs1NSw1Niw1N10sTz1bMSw0LDUsNywxNiwyMCwyMiwyMywyNCwzMCwzMiwzMywzNCwzNSwzNiwzOCw0MCw0MSw0Miw0Niw0Nyw0OCw0OSw1Nyw2N10sQj17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsU1BBQ0U6NCxORVdMSU5FOjUsZGlyZWN0aXZlOjYsU0Q6Nyxkb2N1bWVudDo4LGxpbmU6OSxzdGF0ZW1lbnQ6MTAsb3BlbkRpcmVjdGl2ZToxMSx0eXBlRGlyZWN0aXZlOjEyLGNsb3NlRGlyZWN0aXZlOjEzLCI6IjoxNCxhcmdEaXJlY3RpdmU6MTUscGFydGljaXBhbnQ6MTYsYWN0b3I6MTcsQVM6MTgscmVzdE9mTGluZToxOSxwYXJ0aWNpcGFudF9hY3RvcjoyMCxzaWduYWw6MjEsYXV0b251bWJlcjoyMixhY3RpdmF0ZToyMyxkZWFjdGl2YXRlOjI0LG5vdGVfc3RhdGVtZW50OjI1LGxpbmtzX3N0YXRlbWVudDoyNixsaW5rX3N0YXRlbWVudDoyNyxwcm9wZXJ0aWVzX3N0YXRlbWVudDoyOCxkZXRhaWxzX3N0YXRlbWVudDoyOSx0aXRsZTozMCx0ZXh0MjozMSxsb29wOjMyLGVuZDozMyxyZWN0OjM0LG9wdDozNSxhbHQ6MzYsZWxzZV9zZWN0aW9uczozNyxwYXI6MzgscGFyX3NlY3Rpb25zOjM5LGFuZDo0MCxlbHNlOjQxLG5vdGU6NDIscGxhY2VtZW50OjQzLG92ZXI6NDQsYWN0b3JfcGFpcjo0NSxsaW5rczo0NixsaW5rOjQ3LHByb3BlcnRpZXM6NDgsZGV0YWlsczo0OSxzcGFjZUxpc3Q6NTAsIiwiOjUxLGxlZnRfb2Y6NTIscmlnaHRfb2Y6NTMsc2lnbmFsdHlwZTo1NCwiKyI6NTUsIi0iOjU2LEFDVE9SOjU3LFNPTElEX09QRU5fQVJST1c6NTgsRE9UVEVEX09QRU5fQVJST1c6NTksU09MSURfQVJST1c6NjAsRE9UVEVEX0FSUk9XOjYxLFNPTElEX0NST1NTOjYyLERPVFRFRF9DUk9TUzo2MyxTT0xJRF9QT0lOVDo2NCxET1RURURfUE9JTlQ6NjUsVFhUOjY2LG9wZW5fZGlyZWN0aXZlOjY3LHR5cGVfZGlyZWN0aXZlOjY4LGFyZ19kaXJlY3RpdmU6NjksY2xvc2VfZGlyZWN0aXZlOjcwLCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJTUEFDRSIsNToiTkVXTElORSIsNzoiU0QiLDE0OiI6IiwxNjoicGFydGljaXBhbnQiLDE4OiJBUyIsMTk6InJlc3RPZkxpbmUiLDIwOiJwYXJ0aWNpcGFudF9hY3RvciIsMjI6ImF1dG9udW1iZXIiLDIzOiJhY3RpdmF0ZSIsMjQ6ImRlYWN0aXZhdGUiLDMwOiJ0aXRsZSIsMzI6Imxvb3AiLDMzOiJlbmQiLDM0OiJyZWN0IiwzNToib3B0IiwzNjoiYWx0IiwzODoicGFyIiw0MDoiYW5kIiw0MToiZWxzZSIsNDI6Im5vdGUiLDQ0OiJvdmVyIiw0NjoibGlua3MiLDQ3OiJsaW5rIiw0ODoicHJvcGVydGllcyIsNDk6ImRldGFpbHMiLDUxOiIsIiw1MjoibGVmdF9vZiIsNTM6InJpZ2h0X29mIiw1NToiKyIsNTY6Ii0iLDU3OiJBQ1RPUiIsNTg6IlNPTElEX09QRU5fQVJST1ciLDU5OiJET1RURURfT1BFTl9BUlJPVyIsNjA6IlNPTElEX0FSUk9XIiw2MToiRE9UVEVEX0FSUk9XIiw2MjoiU09MSURfQ1JPU1MiLDYzOiJET1RURURfQ1JPU1MiLDY0OiJTT0xJRF9QT0lOVCIsNjU6IkRPVFRFRF9QT0lOVCIsNjY6IlRYVCIsNjc6Im9wZW5fZGlyZWN0aXZlIiw2ODoidHlwZV9kaXJlY3RpdmUiLDY5OiJhcmdfZGlyZWN0aXZlIiw3MDoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFszLDJdLFszLDJdLFszLDJdLFs4LDBdLFs4LDJdLFs5LDJdLFs5LDFdLFs5LDFdLFs2LDRdLFs2LDZdLFsxMCw1XSxbMTAsM10sWzEwLDVdLFsxMCwzXSxbMTAsMl0sWzEwLDFdLFsxMCwzXSxbMTAsM10sWzEwLDJdLFsxMCwyXSxbMTAsMl0sWzEwLDJdLFsxMCwyXSxbMTAsM10sWzEwLDRdLFsxMCw0XSxbMTAsNF0sWzEwLDRdLFsxMCw0XSxbMTAsMV0sWzM5LDFdLFszOSw0XSxbMzcsMV0sWzM3LDRdLFsyNSw0XSxbMjUsNF0sWzI2LDNdLFsyNywzXSxbMjgsM10sWzI5LDNdLFs1MCwyXSxbNTAsMV0sWzQ1LDNdLFs0NSwxXSxbNDMsMV0sWzQzLDFdLFsyMSw1XSxbMjEsNV0sWzIxLDRdLFsxNywxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFszMSwxXSxbMTEsMV0sWzEyLDFdLFsxNSwxXSxbMTMsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scixpLGEsbyl7dmFyIHM9YS5sZW5ndGgtMTtzd2l0Y2goaSl7Y2FzZSA0OnJldHVybiByLmFwcGx5KGFbc10pLGFbc107Y2FzZSA1OnRoaXMuJD1bXTticmVhaztjYXNlIDY6YVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDc6Y2FzZSA4OnRoaXMuJD1hW3NdO2JyZWFrO2Nhc2UgOTp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxMjphW3MtM10udHlwZT0iYWRkUGFydGljaXBhbnQiLGFbcy0zXS5kZXNjcmlwdGlvbj1yLnBhcnNlTWVzc2FnZShhW3MtMV0pLHRoaXMuJD1hW3MtM107YnJlYWs7Y2FzZSAxMzphW3MtMV0udHlwZT0iYWRkUGFydGljaXBhbnQiLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAxNDphW3MtM10udHlwZT0iYWRkQWN0b3IiLGFbcy0zXS5kZXNjcmlwdGlvbj1yLnBhcnNlTWVzc2FnZShhW3MtMV0pLHRoaXMuJD1hW3MtM107YnJlYWs7Y2FzZSAxNTphW3MtMV0udHlwZT0iYWRkQWN0b3IiLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAxNzpyLmVuYWJsZVNlcXVlbmNlTnVtYmVycygpO2JyZWFrO2Nhc2UgMTg6dGhpcy4kPXt0eXBlOiJhY3RpdmVTdGFydCIsc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkFDVElWRV9TVEFSVCxhY3RvcjphW3MtMV19O2JyZWFrO2Nhc2UgMTk6dGhpcy4kPXt0eXBlOiJhY3RpdmVFbmQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BQ1RJVkVfRU5ELGFjdG9yOmFbcy0xXX07YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9W3t0eXBlOiJzZXRUaXRsZSIsdGV4dDphW3MtMV19XTticmVhaztjYXNlIDI2OmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJsb29wU3RhcnQiLGxvb3BUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkxPT1BfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToibG9vcEVuZCIsbG9vcFRleHQ6YVtzLTJdLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5MT09QX0VORH0pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAyNzphW3MtMV0udW5zaGlmdCh7dHlwZToicmVjdFN0YXJ0Iixjb2xvcjpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5SRUNUX1NUQVJUfSksYVtzLTFdLnB1c2goe3R5cGU6InJlY3RFbmQiLGNvbG9yOnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLlJFQ1RfRU5EfSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDI4OmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJvcHRTdGFydCIsb3B0VGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5PUFRfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToib3B0RW5kIixvcHRUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLk9QVF9FTkR9KSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgMjk6YVtzLTFdLnVuc2hpZnQoe3R5cGU6ImFsdFN0YXJ0IixhbHRUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkFMVF9TVEFSVH0pLGFbcy0xXS5wdXNoKHt0eXBlOiJhbHRFbmQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BTFRfRU5EfSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDMwOmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJwYXJTdGFydCIscGFyVGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5QQVJfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToicGFyRW5kIixzaWduYWxUeXBlOnIuTElORVRZUEUuUEFSX0VORH0pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9YVtzLTNdLmNvbmNhdChbe3R5cGU6ImFuZCIscGFyVGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMV0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5QQVJfQU5EfSxhW3NdXSk7YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9YVtzLTNdLmNvbmNhdChbe3R5cGU6ImVsc2UiLGFsdFRleHQ6ci5wYXJzZU1lc3NhZ2UoYVtzLTFdKSxzaWduYWxUeXBlOnIuTElORVRZUEUuQUxUX0VMU0V9LGFbc11dKTticmVhaztjYXNlIDM2OnRoaXMuJD1bYVtzLTFdLHt0eXBlOiJhZGROb3RlIixwbGFjZW1lbnQ6YVtzLTJdLGFjdG9yOmFbcy0xXS5hY3Rvcix0ZXh0OmFbc119XTticmVhaztjYXNlIDM3OmFbcy0yXT1bXS5jb25jYXQoYVtzLTFdLGFbcy0xXSkuc2xpY2UoMCwyKSxhW3MtMl1bMF09YVtzLTJdWzBdLmFjdG9yLGFbcy0yXVsxXT1hW3MtMl1bMV0uYWN0b3IsdGhpcy4kPVthW3MtMV0se3R5cGU6ImFkZE5vdGUiLHBsYWNlbWVudDpyLlBMQUNFTUVOVC5PVkVSLGFjdG9yOmFbcy0yXS5zbGljZSgwLDIpLHRleHQ6YVtzXX1dO2JyZWFrO2Nhc2UgMzg6dGhpcy4kPVthW3MtMV0se3R5cGU6ImFkZExpbmtzIixhY3RvcjphW3MtMV0uYWN0b3IsdGV4dDphW3NdfV07YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9W2Fbcy0xXSx7dHlwZToiYWRkQUxpbmsiLGFjdG9yOmFbcy0xXS5hY3Rvcix0ZXh0OmFbc119XTticmVhaztjYXNlIDQwOnRoaXMuJD1bYVtzLTFdLHt0eXBlOiJhZGRQcm9wZXJ0aWVzIixhY3RvcjphW3MtMV0uYWN0b3IsdGV4dDphW3NdfV07YnJlYWs7Y2FzZSA0MTp0aGlzLiQ9W2Fbcy0xXSx7dHlwZToiYWRkRGV0YWlscyIsYWN0b3I6YVtzLTFdLmFjdG9yLHRleHQ6YVtzXX1dO2JyZWFrO2Nhc2UgNDQ6dGhpcy4kPVthW3MtMl0sYVtzXV07YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDQ2OnRoaXMuJD1yLlBMQUNFTUVOVC5MRUZUT0Y7YnJlYWs7Y2FzZSA0Nzp0aGlzLiQ9ci5QTEFDRU1FTlQuUklHSFRPRjticmVhaztjYXNlIDQ4OnRoaXMuJD1bYVtzLTRdLGFbcy0xXSx7dHlwZToiYWRkTWVzc2FnZSIsZnJvbTphW3MtNF0uYWN0b3IsdG86YVtzLTFdLmFjdG9yLHNpZ25hbFR5cGU6YVtzLTNdLG1zZzphW3NdfSx7dHlwZToiYWN0aXZlU3RhcnQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BQ1RJVkVfU1RBUlQsYWN0b3I6YVtzLTFdfV07YnJlYWs7Y2FzZSA0OTp0aGlzLiQ9W2Fbcy00XSxhW3MtMV0se3R5cGU6ImFkZE1lc3NhZ2UiLGZyb206YVtzLTRdLmFjdG9yLHRvOmFbcy0xXS5hY3RvcixzaWduYWxUeXBlOmFbcy0zXSxtc2c6YVtzXX0se3R5cGU6ImFjdGl2ZUVuZCIsc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkFDVElWRV9FTkQsYWN0b3I6YVtzLTRdfV07YnJlYWs7Y2FzZSA1MDp0aGlzLiQ9W2Fbcy0zXSxhW3MtMV0se3R5cGU6ImFkZE1lc3NhZ2UiLGZyb206YVtzLTNdLmFjdG9yLHRvOmFbcy0xXS5hY3RvcixzaWduYWxUeXBlOmFbcy0yXSxtc2c6YVtzXX1dO2JyZWFrO2Nhc2UgNTE6dGhpcy4kPXt0eXBlOiJhZGRQYXJ0aWNpcGFudCIsYWN0b3I6YVtzXX07YnJlYWs7Y2FzZSA1Mjp0aGlzLiQ9ci5MSU5FVFlQRS5TT0xJRF9PUEVOO2JyZWFrO2Nhc2UgNTM6dGhpcy4kPXIuTElORVRZUEUuRE9UVEVEX09QRU47YnJlYWs7Y2FzZSA1NDp0aGlzLiQ9ci5MSU5FVFlQRS5TT0xJRDticmVhaztjYXNlIDU1OnRoaXMuJD1yLkxJTkVUWVBFLkRPVFRFRDticmVhaztjYXNlIDU2OnRoaXMuJD1yLkxJTkVUWVBFLlNPTElEX0NST1NTO2JyZWFrO2Nhc2UgNTc6dGhpcy4kPXIuTElORVRZUEUuRE9UVEVEX0NST1NTO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPXIuTElORVRZUEUuU09MSURfUE9JTlQ7YnJlYWs7Y2FzZSA1OTp0aGlzLiQ9ci5MSU5FVFlQRS5ET1RURURfUE9JTlQ7YnJlYWs7Y2FzZSA2MDp0aGlzLiQ9ci5wYXJzZU1lc3NhZ2UoYVtzXS50cmltKCkuc3Vic3RyaW5nKDEpKTticmVhaztjYXNlIDYxOnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA2MjpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA2MzphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNjQ6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwic2VxdWVuY2UiKX19LHRhYmxlOlt7MzoxLDQ6ZSw1Om4sNjo0LDc6ciwxMTo2LDY3Oml9LHsxOlszXX0sezM6OCw0OmUsNTpuLDY6NCw3OnIsMTE6Niw2NzppfSx7Mzo5LDQ6ZSw1Om4sNjo0LDc6ciwxMTo2LDY3Oml9LHszOjEwLDQ6ZSw1Om4sNjo0LDc6ciwxMTo2LDY3Oml9LHQoWzEsNCw1LDE2LDIwLDIyLDIzLDI0LDMwLDMyLDM0LDM1LDM2LDM4LDQyLDQ2LDQ3LDQ4LDQ5LDU3LDY3XSxhLHs4OjExfSksezEyOjEyLDY4OlsxLDEzXX0sezY4OlsyLDYxXX0sezE6WzIsMV19LHsxOlsyLDJdfSx7MTpbMiwzXX0sezE6WzIsNF0sNDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDM0OnksMzU6ZywzNjptLDM4OnYsNDI6Yiw0NjpfLDQ3OngsNDg6dyw0OTprLDU3OlQsNjc6aX0sezEzOjQzLDE0OlsxLDQ0XSw3MDpFfSx0KFsxNCw3MF0sWzIsNjJdKSx0KEMsWzIsNl0pLHs2OjM1LDEwOjQ2LDExOjYsMTY6YywxNzozNiwyMDp1LDIxOjIwLDIyOmwsMjM6aCwyNDpmLDI1OjI0LDI2OjI1LDI3OjI2LDI4OjI3LDI5OjI4LDMwOmQsMzI6cCwzNDp5LDM1OmcsMzY6bSwzODp2LDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHQoQyxbMiw4XSksdChDLFsyLDldKSx7MTc6NDcsNTc6VH0sezE3OjQ4LDU3OlR9LHs1OlsxLDQ5XX0sdChDLFsyLDE3XSksezE3OjUwLDU3OlR9LHsxNzo1MSw1NzpUfSx7NTpbMSw1Ml19LHs1OlsxLDUzXX0sezU6WzEsNTRdfSx7NTpbMSw1NV19LHs1OlsxLDU2XX0sezMxOjU3LDY2OlN9LHsxOTpbMSw1OV19LHsxOTpbMSw2MF19LHsxOTpbMSw2MV19LHsxOTpbMSw2Ml19LHsxOTpbMSw2M119LHQoQyxbMiwzMV0pLHs1NDo2NCw1ODpbMSw2NV0sNTk6WzEsNjZdLDYwOlsxLDY3XSw2MTpbMSw2OF0sNjI6WzEsNjldLDYzOlsxLDcwXSw2NDpbMSw3MV0sNjU6WzEsNzJdfSx7NDM6NzMsNDQ6WzEsNzRdLDUyOlsxLDc1XSw1MzpbMSw3Nl19LHsxNzo3Nyw1NzpUfSx7MTc6NzgsNTc6VH0sezE3Ojc5LDU3OlR9LHsxNzo4MCw1NzpUfSx0KFs1LDE4LDUxLDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2XSxbMiw1MV0pLHs1OlsxLDgxXX0sezE1OjgyLDY5OlsxLDgzXX0sezU6WzIsNjRdfSx0KEMsWzIsN10pLHs1OlsxLDg1XSwxODpbMSw4NF19LHs1OlsxLDg3XSwxODpbMSw4Nl19LHQoQyxbMiwxNl0pLHs1OlsxLDg4XX0sezU6WzEsODldfSx0KEMsWzIsMjBdKSx0KEMsWzIsMjFdKSx0KEMsWzIsMjJdKSx0KEMsWzIsMjNdKSx0KEMsWzIsMjRdKSx7NTpbMSw5MF19LHs1OlsyLDYwXX0sdChBLGEsezg6OTF9KSx0KEEsYSx7ODo5Mn0pLHQoQSxhLHs4OjkzfSksdChNLGEsezM3Ojk0LDg6OTV9KSx0KE4sYSx7Mzk6OTYsODo5N30pLHsxNzoxMDAsNTU6WzEsOThdLDU2OlsxLDk5XSw1NzpUfSx0KEQsWzIsNTJdKSx0KEQsWzIsNTNdKSx0KEQsWzIsNTRdKSx0KEQsWzIsNTVdKSx0KEQsWzIsNTZdKSx0KEQsWzIsNTddKSx0KEQsWzIsNThdKSx0KEQsWzIsNTldKSx7MTc6MTAxLDU3OlR9LHsxNzoxMDMsNDU6MTAyLDU3OlR9LHs1NzpbMiw0Nl19LHs1NzpbMiw0N119LHszMToxMDQsNjY6U30sezMxOjEwNSw2NjpTfSx7MzE6MTA2LDY2OlN9LHszMToxMDcsNjY6U30sdChPLFsyLDEwXSksezEzOjEwOCw3MDpFfSx7NzA6WzIsNjNdfSx7MTk6WzEsMTA5XX0sdChDLFsyLDEzXSksezE5OlsxLDExMF19LHQoQyxbMiwxNV0pLHQoQyxbMiwxOF0pLHQoQyxbMiwxOV0pLHQoQyxbMiwyNV0pLHs0Om8sNTpzLDY6MzUsOToxNCwxMDoxNiwxMTo2LDE2OmMsMTc6MzYsMjA6dSwyMToyMCwyMjpsLDIzOmgsMjQ6ZiwyNToyNCwyNjoyNSwyNzoyNiwyODoyNywyOToyOCwzMDpkLDMyOnAsMzM6WzEsMTExXSwzNDp5LDM1OmcsMzY6bSwzODp2LDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHs0Om8sNTpzLDY6MzUsOToxNCwxMDoxNiwxMTo2LDE2OmMsMTc6MzYsMjA6dSwyMToyMCwyMjpsLDIzOmgsMjQ6ZiwyNToyNCwyNjoyNSwyNzoyNiwyODoyNywyOToyOCwzMDpkLDMyOnAsMzM6WzEsMTEyXSwzNDp5LDM1OmcsMzY6bSwzODp2LDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHs0Om8sNTpzLDY6MzUsOToxNCwxMDoxNiwxMTo2LDE2OmMsMTc6MzYsMjA6dSwyMToyMCwyMjpsLDIzOmgsMjQ6ZiwyNToyNCwyNjoyNSwyNzoyNiwyODoyNywyOToyOCwzMDpkLDMyOnAsMzM6WzEsMTEzXSwzNDp5LDM1OmcsMzY6bSwzODp2LDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHszMzpbMSwxMTRdfSx7NDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDMzOlsyLDM0XSwzNDp5LDM1OmcsMzY6bSwzODp2LDQxOlsxLDExNV0sNDI6Yiw0NjpfLDQ3OngsNDg6dyw0OTprLDU3OlQsNjc6aX0sezMzOlsxLDExNl19LHs0Om8sNTpzLDY6MzUsOToxNCwxMDoxNiwxMTo2LDE2OmMsMTc6MzYsMjA6dSwyMToyMCwyMjpsLDIzOmgsMjQ6ZiwyNToyNCwyNjoyNSwyNzoyNiwyODoyNywyOToyOCwzMDpkLDMyOnAsMzM6WzIsMzJdLDM0OnksMzU6ZywzNjptLDM4OnYsNDA6WzEsMTE3XSw0MjpiLDQ2Ol8sNDc6eCw0ODp3LDQ5OmssNTc6VCw2NzppfSx7MTc6MTE4LDU3OlR9LHsxNzoxMTksNTc6VH0sezMxOjEyMCw2NjpTfSx7MzE6MTIxLDY2OlN9LHszMToxMjIsNjY6U30sezUxOlsxLDEyM10sNjY6WzIsNDVdfSx7NTpbMiwzOF19LHs1OlsyLDM5XX0sezU6WzIsNDBdfSx7NTpbMiw0MV19LHs1OlsxLDEyNF19LHs1OlsxLDEyNV19LHs1OlsxLDEyNl19LHQoQyxbMiwyNl0pLHQoQyxbMiwyN10pLHQoQyxbMiwyOF0pLHQoQyxbMiwyOV0pLHsxOTpbMSwxMjddfSx0KEMsWzIsMzBdKSx7MTk6WzEsMTI4XX0sezMxOjEyOSw2NjpTfSx7MzE6MTMwLDY2OlN9LHs1OlsyLDUwXX0sezU6WzIsMzZdfSx7NTpbMiwzN119LHsxNzoxMzEsNTc6VH0sdChPLFsyLDExXSksdChDLFsyLDEyXSksdChDLFsyLDE0XSksdChNLGEsezg6OTUsMzc6MTMyfSksdChOLGEsezg6OTcsMzk6MTMzfSksezU6WzIsNDhdfSx7NTpbMiw0OV19LHs2NjpbMiw0NF19LHszMzpbMiwzNV19LHszMzpbMiwzM119XSxkZWZhdWx0QWN0aW9uczp7NzpbMiw2MV0sODpbMiwxXSw5OlsyLDJdLDEwOlsyLDNdLDQ1OlsyLDY0XSw1ODpbMiw2MF0sNzU6WzIsNDZdLDc2OlsyLDQ3XSw4MzpbMiw2M10sMTA0OlsyLDM4XSwxMDU6WzIsMzldLDEwNjpbMiw0MF0sMTA3OlsyLDQxXSwxMjA6WzIsNTBdLDEyMTpbMiwzNl0sMTIyOlsyLDM3XSwxMjk6WzIsNDhdLDEzMDpbMiw0OV0sMTMxOlsyLDQ0XSwxMzI6WzIsMzVdLDEzMzpbMiwzM119LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxMPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDY3O2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSw2ODtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTQ7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDcwO2Nhc2UgNDpyZXR1cm4gNjk7Y2FzZSA1OnJldHVybiA1O2Nhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmJyZWFrO2Nhc2UgMTE6cmV0dXJuIHRoaXMuYmVnaW4oIklEIiksMTY7Y2FzZSAxMjpyZXR1cm4gdGhpcy5iZWdpbigiSUQiKSwyMDtjYXNlIDEzOnJldHVybiBlLnl5dGV4dD1lLnl5dGV4dC50cmltKCksdGhpcy5iZWdpbigiQUxJQVMiKSw1NztjYXNlIDE0OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oIkxJTkUiKSwxODtjYXNlIDE1OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDU7Y2FzZSAxNjpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDMyO2Nhc2UgMTc6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSwzNDtjYXNlIDE4OnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksMzU7Y2FzZSAxOTpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDM2O2Nhc2UgMjA6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSw0MTtjYXNlIDIxOnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksMzg7Y2FzZSAyMjpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDQwO2Nhc2UgMjM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxOTtjYXNlIDI0OnJldHVybiAzMztjYXNlIDI1OnJldHVybiA1MjtjYXNlIDI2OnJldHVybiA1MztjYXNlIDI3OnJldHVybiA0NjtjYXNlIDI4OnJldHVybiA0NztjYXNlIDI5OnJldHVybiA0ODtjYXNlIDMwOnJldHVybiA0OTtjYXNlIDMxOnJldHVybiA0NDtjYXNlIDMyOnJldHVybiA0MjtjYXNlIDMzOnJldHVybiB0aGlzLmJlZ2luKCJJRCIpLDIzO2Nhc2UgMzQ6cmV0dXJuIHRoaXMuYmVnaW4oIklEIiksMjQ7Y2FzZSAzNTpyZXR1cm4gMzA7Y2FzZSAzNjpyZXR1cm4gNztjYXNlIDM3OnJldHVybiAyMjtjYXNlIDM4OnJldHVybiA1MTtjYXNlIDM5OnJldHVybiA1O2Nhc2UgNDA6cmV0dXJuIGUueXl0ZXh0PWUueXl0ZXh0LnRyaW0oKSw1NztjYXNlIDQxOnJldHVybiA2MDtjYXNlIDQyOnJldHVybiA2MTtjYXNlIDQzOnJldHVybiA1ODtjYXNlIDQ0OnJldHVybiA1OTtjYXNlIDQ1OnJldHVybiA2MjtjYXNlIDQ2OnJldHVybiA2MztjYXNlIDQ3OnJldHVybiA2NDtjYXNlIDQ4OnJldHVybiA2NTtjYXNlIDQ5OnJldHVybiA2NjtjYXNlIDUwOnJldHVybiA1NTtjYXNlIDUxOnJldHVybiA1NjtjYXNlIDUyOnJldHVybiA1O2Nhc2UgNTM6cmV0dXJuIklOVkFMSUQifX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86W1xuXSspL2ksL14oPzpccyspL2ksL14oPzooKD8hXG4pXHMpKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolKD8hXHspW15cbl0qKS9pLC9eKD86W15cfV0lJVteXG5dKikvaSwvXig/OnBhcnRpY2lwYW50XGIpL2ksL14oPzphY3RvclxiKS9pLC9eKD86W15cLT46XG4sO10rPyg/PSgoPyFcbilccykrYXMoPyFcbilcc3xbI1xuO118JCkpL2ksL14oPzphc1xiKS9pLC9eKD86KD86KSkvaSwvXig/Omxvb3BcYikvaSwvXig/OnJlY3RcYikvaSwvXig/Om9wdFxiKS9pLC9eKD86YWx0XGIpL2ksL14oPzplbHNlXGIpL2ksL14oPzpwYXJcYikvaSwvXig/OmFuZFxiKS9pLC9eKD86KD86WzpdPyg/Om5vKT93cmFwKT9bXiNcbjtdKikvaSwvXig/OmVuZFxiKS9pLC9eKD86bGVmdCBvZlxiKS9pLC9eKD86cmlnaHQgb2ZcYikvaSwvXig/OmxpbmtzXGIpL2ksL14oPzpsaW5rXGIpL2ksL14oPzpwcm9wZXJ0aWVzXGIpL2ksL14oPzpkZXRhaWxzXGIpL2ksL14oPzpvdmVyXGIpL2ksL14oPzpub3RlXGIpL2ksL14oPzphY3RpdmF0ZVxiKS9pLC9eKD86ZGVhY3RpdmF0ZVxiKS9pLC9eKD86dGl0bGVcYikvaSwvXig/OnNlcXVlbmNlRGlhZ3JhbVxiKS9pLC9eKD86YXV0b251bWJlclxiKS9pLC9eKD86LCkvaSwvXig/OjspL2ksL14oPzpbXlwrXC0+OlxuLDtdKygoPyEoLXh8LS14fC1cKXwtLVwpKSlbXC1dKlteXCtcLT46XG4sO10rKSopL2ksL14oPzotPj4pL2ksL14oPzotLT4+KS9pLC9eKD86LT4pL2ksL14oPzotLT4pL2ksL14oPzotW3hdKS9pLC9eKD86LS1beF0pL2ksL14oPzotW1wpXSkvaSwvXig/Oi0tW1wpXSkvaSwvXig/OjooPzooPzpubyk/d3JhcCk/W14jXG47XSspL2ksL14oPzpcKykvaSwvXig/Oi0pL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7b3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxLDhdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOlsyLDMsOF0saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0LDhdLGluY2x1c2l2ZTohMX0sSUQ6e3J1bGVzOls3LDgsMTNdLGluY2x1c2l2ZTohMX0sQUxJQVM6e3J1bGVzOls3LDgsMTQsMTVdLGluY2x1c2l2ZTohMX0sTElORTp7cnVsZXM6WzcsOCwyM10saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsOCw5LDEwLDExLDEyLDE2LDE3LDE4LDE5LDIwLDIxLDIyLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzXSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gSSgpe3RoaXMueXk9e319cmV0dXJuIEIubGV4ZXI9TCxJLnByb3RvdHlwZT1CLEIuUGFyc2VyPUksbmV3IEl9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9bigxOTkzKS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDU1Mzc6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDJdLG49WzEsM10scj1bMSw1XSxpPVsxLDddLGE9WzIsNV0sbz1bMSwxNV0scz1bMSwxN10sYz1bMSwxOV0sdT1bMSwyMF0sbD1bMSwyMV0saD1bMSwyMl0sZj1bMSwzMF0sZD1bMSwyM10scD1bMSwyNF0seT1bMSwyNV0sZz1bMSwyNl0sbT1bMSwyN10sdj1bMSwzMl0sYj1bMSwzM10sXz1bMSwzNF0seD1bMSwzNV0sdz1bMSwzMV0saz1bMSwzOF0sVD1bMSw0LDUsMTQsMTUsMTcsMTksMjAsMjIsMjMsMjQsMjUsMjYsMjcsMzYsMzcsMzgsMzksNDIsNDVdLEU9WzEsNCw1LDEyLDEzLDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDM2LDM3LDM4LDM5LDQyLDQ1XSxDPVsxLDQsNSw3LDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDM2LDM3LDM4LDM5LDQyLDQ1XSxTPVs0LDUsMTQsMTUsMTcsMTksMjAsMjIsMjMsMjQsMjUsMjYsMjcsMzYsMzcsMzgsMzksNDIsNDVdLEE9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLFNQQUNFOjQsTkw6NSxkaXJlY3RpdmU6NixTRDo3LGRvY3VtZW50OjgsbGluZTo5LHN0YXRlbWVudDoxMCxpZFN0YXRlbWVudDoxMSxERVNDUjoxMiwiLS1ceDNlIjoxMyxISURFX0VNUFRZOjE0LHNjYWxlOjE1LFdJRFRIOjE2LENPTVBPU0lUX1NUQVRFOjE3LFNUUlVDVF9TVEFSVDoxOCxTVFJVQ1RfU1RPUDoxOSxTVEFURV9ERVNDUjoyMCxBUzoyMSxJRDoyMixGT1JLOjIzLEpPSU46MjQsQ0hPSUNFOjI1LENPTkNVUlJFTlQ6MjYsbm90ZToyNyxub3RlUG9zaXRpb246MjgsTk9URV9URVhUOjI5LGRpcmVjdGlvbjozMCxvcGVuRGlyZWN0aXZlOjMxLHR5cGVEaXJlY3RpdmU6MzIsY2xvc2VEaXJlY3RpdmU6MzMsIjoiOjM0LGFyZ0RpcmVjdGl2ZTozNSxkaXJlY3Rpb25fdGI6MzYsZGlyZWN0aW9uX2J0OjM3LGRpcmVjdGlvbl9ybDozOCxkaXJlY3Rpb25fbHI6MzksZW9sOjQwLCI7Ijo0MSxFREdFX1NUQVRFOjQyLGxlZnRfb2Y6NDMscmlnaHRfb2Y6NDQsb3Blbl9kaXJlY3RpdmU6NDUsdHlwZV9kaXJlY3RpdmU6NDYsYXJnX2RpcmVjdGl2ZTo0NyxjbG9zZV9kaXJlY3RpdmU6NDgsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6IlNQQUNFIiw1OiJOTCIsNzoiU0QiLDEyOiJERVNDUiIsMTM6Ii0tXHgzZSIsMTQ6IkhJREVfRU1QVFkiLDE1OiJzY2FsZSIsMTY6IldJRFRIIiwxNzoiQ09NUE9TSVRfU1RBVEUiLDE4OiJTVFJVQ1RfU1RBUlQiLDE5OiJTVFJVQ1RfU1RPUCIsMjA6IlNUQVRFX0RFU0NSIiwyMToiQVMiLDIyOiJJRCIsMjM6IkZPUksiLDI0OiJKT0lOIiwyNToiQ0hPSUNFIiwyNjoiQ09OQ1VSUkVOVCIsMjc6Im5vdGUiLDI5OiJOT1RFX1RFWFQiLDM0OiI6IiwzNjoiZGlyZWN0aW9uX3RiIiwzNzoiZGlyZWN0aW9uX2J0IiwzODoiZGlyZWN0aW9uX3JsIiwzOToiZGlyZWN0aW9uX2xyIiw0MToiOyIsNDI6IkVER0VfU1RBVEUiLDQzOiJsZWZ0X29mIiw0NDoicmlnaHRfb2YiLDQ1OiJvcGVuX2RpcmVjdGl2ZSIsNDY6InR5cGVfZGlyZWN0aXZlIiw0NzoiYXJnX2RpcmVjdGl2ZSIsNDg6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbMywyXSxbMywyXSxbMywyXSxbOCwwXSxbOCwyXSxbOSwyXSxbOSwxXSxbOSwxXSxbMTAsMV0sWzEwLDJdLFsxMCwzXSxbMTAsNF0sWzEwLDFdLFsxMCwyXSxbMTAsMV0sWzEwLDRdLFsxMCwzXSxbMTAsNl0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCw0XSxbMTAsNF0sWzEwLDFdLFsxMCwxXSxbNiwzXSxbNiw1XSxbMzAsMV0sWzMwLDFdLFszMCwxXSxbMzAsMV0sWzQwLDFdLFs0MCwxXSxbMTEsMV0sWzExLDFdLFsyOCwxXSxbMjgsMV0sWzMxLDFdLFszMiwxXSxbMzUsMV0sWzMzLDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgNDpyZXR1cm4gci5zZXRSb290RG9jKGFbc10pLGFbc107Y2FzZSA1OnRoaXMuJD1bXTticmVhaztjYXNlIDY6Im5sIiE9YVtzXSYmKGFbcy0xXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMV0pO2JyZWFrO2Nhc2UgNzpjYXNlIDg6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSA5OnRoaXMuJD0ibmwiO2JyZWFrO2Nhc2UgMTA6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6YVtzXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiIn07YnJlYWs7Y2FzZSAxMTp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDphW3MtMV0sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246ci50cmltQ29sb24oYVtzXSl9O2JyZWFrO2Nhc2UgMTI6dGhpcy4kPXtzdG10OiJyZWxhdGlvbiIsc3RhdGUxOntzdG10OiJzdGF0ZSIsaWQ6YVtzLTJdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIifSxzdGF0ZTI6e3N0bXQ6InN0YXRlIixpZDphW3NdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIifX07YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9e3N0bXQ6InJlbGF0aW9uIixzdGF0ZTE6e3N0bXQ6InN0YXRlIixpZDphW3MtM10sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9LHN0YXRlMjp7c3RtdDoic3RhdGUiLGlkOmFbcy0xXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiIn0sZGVzY3JpcHRpb246YVtzXS5zdWJzdHIoMSkudHJpbSgpfTticmVhaztjYXNlIDE3OnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbcy0zXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiIixkb2M6YVtzLTFdfTticmVhaztjYXNlIDE4OnZhciBjPWFbc10sdT1hW3MtMl0udHJpbSgpO2lmKGFbc10ubWF0Y2goIjoiKSl7dmFyIGw9YVtzXS5zcGxpdCgiOiIpO2M9bFswXSx1PVt1LGxbMV1dfXRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmMsdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246dX07YnJlYWs7Y2FzZSAxOTp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDphW3MtM10sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246YVtzLTVdLGRvYzphW3MtMV19O2JyZWFrO2Nhc2UgMjA6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6YVtzXSx0eXBlOiJmb3JrIn07YnJlYWs7Y2FzZSAyMTp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDphW3NdLHR5cGU6ImpvaW4ifTticmVhaztjYXNlIDIyOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbc10sdHlwZToiY2hvaWNlIn07YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDpyLmdldERpdmlkZXJJZCgpLHR5cGU6ImRpdmlkZXIifTticmVhaztjYXNlIDI0OnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbcy0xXS50cmltKCksbm90ZTp7cG9zaXRpb246YVtzLTJdLnRyaW0oKSx0ZXh0OmFbc10udHJpbSgpfX07YnJlYWs7Y2FzZSAzMDpyLnNldERpcmVjdGlvbigiVEIiKSx0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IlRCIn07YnJlYWs7Y2FzZSAzMTpyLnNldERpcmVjdGlvbigiQlQiKSx0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IkJUIn07YnJlYWs7Y2FzZSAzMjpyLnNldERpcmVjdGlvbigiUkwiKSx0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IlJMIn07YnJlYWs7Y2FzZSAzMzpyLnNldERpcmVjdGlvbigiTFIiKSx0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IkxSIn07YnJlYWs7Y2FzZSAzNjpjYXNlIDM3OnRoaXMuJD1hW3NdO2JyZWFrO2Nhc2UgNDA6ci5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDQxOnIucGFyc2VEaXJlY3RpdmUoYVtzXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDQyOmFbc109YVtzXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksci5wYXJzZURpcmVjdGl2ZShhW3NdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA0MzpyLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJzdGF0ZSIpfX0sdGFibGU6W3szOjEsNDplLDU6biw2OjQsNzpyLDMxOjYsNDU6aX0sezE6WzNdfSx7Mzo4LDQ6ZSw1Om4sNjo0LDc6ciwzMTo2LDQ1Oml9LHszOjksNDplLDU6biw2OjQsNzpyLDMxOjYsNDU6aX0sezM6MTAsNDplLDU6biw2OjQsNzpyLDMxOjYsNDU6aX0sdChbMSw0LDUsMTQsMTUsMTcsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMzYsMzcsMzgsMzksNDIsNDVdLGEsezg6MTF9KSx7MzI6MTIsNDY6WzEsMTNdfSx7NDY6WzIsNDBdfSx7MTpbMiwxXX0sezE6WzIsMl19LHsxOlsyLDNdfSx7MTpbMiw0XSw0Om8sNTpzLDY6MjgsOToxNCwxMDoxNiwxMToxOCwxNDpjLDE1OnUsMTc6bCwyMDpoLDIyOmYsMjM6ZCwyNDpwLDI1OnksMjY6ZywyNzptLDMwOjI5LDMxOjYsMzY6diwzNzpiLDM4Ol8sMzk6eCw0Mjp3LDQ1Oml9LHszMzozNiwzNDpbMSwzN10sNDg6a30sdChbMzQsNDhdLFsyLDQxXSksdChULFsyLDZdKSx7NjoyOCwxMDozOSwxMToxOCwxNDpjLDE1OnUsMTc6bCwyMDpoLDIyOmYsMjM6ZCwyNDpwLDI1OnksMjY6ZywyNzptLDMwOjI5LDMxOjYsMzY6diwzNzpiLDM4Ol8sMzk6eCw0Mjp3LDQ1Oml9LHQoVCxbMiw4XSksdChULFsyLDldKSx0KFQsWzIsMTBdLHsxMjpbMSw0MF0sMTM6WzEsNDFdfSksdChULFsyLDE0XSksezE2OlsxLDQyXX0sdChULFsyLDE2XSx7MTg6WzEsNDNdfSksezIxOlsxLDQ0XX0sdChULFsyLDIwXSksdChULFsyLDIxXSksdChULFsyLDIyXSksdChULFsyLDIzXSksezI4OjQ1LDI5OlsxLDQ2XSw0MzpbMSw0N10sNDQ6WzEsNDhdfSx0KFQsWzIsMjZdKSx0KFQsWzIsMjddKSx0KEUsWzIsMzZdKSx0KEUsWzIsMzddKSx0KFQsWzIsMzBdKSx0KFQsWzIsMzFdKSx0KFQsWzIsMzJdKSx0KFQsWzIsMzNdKSx0KEMsWzIsMjhdKSx7MzU6NDksNDc6WzEsNTBdfSx0KEMsWzIsNDNdKSx0KFQsWzIsN10pLHQoVCxbMiwxMV0pLHsxMTo1MSwyMjpmLDQyOnd9LHQoVCxbMiwxNV0pLHQoUyxhLHs4OjUyfSksezIyOlsxLDUzXX0sezIyOlsxLDU0XX0sezIxOlsxLDU1XX0sezIyOlsyLDM4XX0sezIyOlsyLDM5XX0sezMzOjU2LDQ4Omt9LHs0ODpbMiw0Ml19LHQoVCxbMiwxMl0sezEyOlsxLDU3XX0pLHs0Om8sNTpzLDY6MjgsOToxNCwxMDoxNiwxMToxOCwxNDpjLDE1OnUsMTc6bCwxOTpbMSw1OF0sMjA6aCwyMjpmLDIzOmQsMjQ6cCwyNTp5LDI2OmcsMjc6bSwzMDoyOSwzMTo2LDM2OnYsMzc6YiwzODpfLDM5OngsNDI6dyw0NTppfSx0KFQsWzIsMThdLHsxODpbMSw1OV19KSx7Mjk6WzEsNjBdfSx7MjI6WzEsNjFdfSx0KEMsWzIsMjldKSx0KFQsWzIsMTNdKSx0KFQsWzIsMTddKSx0KFMsYSx7ODo2Mn0pLHQoVCxbMiwyNF0pLHQoVCxbMiwyNV0pLHs0Om8sNTpzLDY6MjgsOToxNCwxMDoxNiwxMToxOCwxNDpjLDE1OnUsMTc6bCwxOTpbMSw2M10sMjA6aCwyMjpmLDIzOmQsMjQ6cCwyNTp5LDI2OmcsMjc6bSwzMDoyOSwzMTo2LDM2OnYsMzc6YiwzODpfLDM5OngsNDI6dyw0NTppfSx0KFQsWzIsMTldKV0sZGVmYXVsdEFjdGlvbnM6ezc6WzIsNDBdLDg6WzIsMV0sOTpbMiwyXSwxMDpbMiwzXSw0NzpbMiwzOF0sNDg6WzIsMzldLDUwOlsyLDQyXX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LE09e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKHQpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IodCxlKX0sc2V0SW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy55eT1lfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lucHV0WzBdO3JldHVybiB0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQsdC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUpLHRoaXMub2Zmc2V0LT1lO3ZhciByPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLG4ubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1uLmxlbmd0aC0xKTt2YXIgaT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46bj8obi5sZW5ndGg9PT1yLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcltyLmxlbmd0aC1uLmxlbmd0aF0ubGVuZ3RoLW5bMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2lbMF0saVswXSt0aGlzLnl5bGVuZy1lXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcj8odGhpcy5fYmFja3RyYWNrPSEwLHRoaXMpOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxlc3M6ZnVuY3Rpb24odCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHQpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih0Lmxlbmd0aD4yMD8iLi4uIjoiIikrdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2g7cmV0dXJuIHQubGVuZ3RoPDIwJiYodCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtdC5sZW5ndGgpKSwodC5zdWJzdHIoMCwyMCkrKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFzdElucHV0KCksZT1uZXcgQXJyYXkodC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB0K3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIrZSsiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKGk9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoaS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSwocj10WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSkmJih0aGlzLnl5bGluZW5vKz1yLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnI/cltyLmxlbmd0aC0xXS5sZW5ndGgtcltyLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9dFswXSx0aGlzLm1hdGNoKz10WzBdLHRoaXMubWF0Y2hlcz10LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHRbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPXRbMF0sbj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxlLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLG4pcmV0dXJuIG47aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGEgaW4gaSl0aGlzW2FdPWlbYV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3ZhciB0LGUsbixyO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKSx0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBpPXRoaXMuX2N1cnJlbnRSdWxlcygpLGE9MDthPGkubGVuZ3RoO2ErKylpZigobj10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2lbYV1dKSkmJighZXx8blswXS5sZW5ndGg+ZVswXS5sZW5ndGgpKXtpZihlPW4scj1hLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKCExIT09KHQ9dGhpcy50ZXN0X21hdGNoKG4saVthXSkpKXJldHVybiB0O2lmKHRoaXMuX2JhY2t0cmFjayl7ZT0hMTtjb250aW51ZX1yZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGU/ITEhPT0odD10aGlzLnRlc3RfbWF0Y2goZSxpW3JdKSkmJnQ6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHQoKXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyh0fHwwKSk+PTA/dGhpcy5jb25kaXRpb25TdGFja1t0XToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbih0KXt0aGlzLmJlZ2luKHQpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIDM2O2Nhc2UgMTpyZXR1cm4gMzc7Y2FzZSAyOnJldHVybiAzODtjYXNlIDM6cmV0dXJuIDM5O2Nhc2UgNDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSw0NTtjYXNlIDU6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksNDY7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDM0O2Nhc2UgNzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSw0ODtjYXNlIDg6cmV0dXJuIDQ3O2Nhc2UgOTpjYXNlIDEwOmJyZWFrO2Nhc2UgMTE6cmV0dXJuIDU7Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxNTpicmVhaztjYXNlIDE2OnJldHVybiB0aGlzLnB1c2hTdGF0ZSgiU0NBTEUiKSwxNTtjYXNlIDE3OnJldHVybiAxNjtjYXNlIDE4OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDE5OnRoaXMucHVzaFN0YXRlKCJTVEFURSIpO2JyZWFrO2Nhc2UgMjA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSxlLnl5dGV4dD1lLnl5dGV4dC5zbGljZSgwLC04KS50cmltKCksMjM7Y2FzZSAyMTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLGUueXl0ZXh0PWUueXl0ZXh0LnNsaWNlKDAsLTgpLnRyaW0oKSwyNDtjYXNlIDIyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksZS55eXRleHQ9ZS55eXRleHQuc2xpY2UoMCwtMTApLnRyaW0oKSwyNTtjYXNlIDIzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksZS55eXRleHQ9ZS55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDIzO2Nhc2UgMjQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSxlLnl5dGV4dD1lLnl5dGV4dC5zbGljZSgwLC04KS50cmltKCksMjQ7Y2FzZSAyNTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLGUueXl0ZXh0PWUueXl0ZXh0LnNsaWNlKDAsLTEwKS50cmltKCksMjU7Y2FzZSAyNjpyZXR1cm4gMzY7Y2FzZSAyNzpyZXR1cm4gMzc7Y2FzZSAyODpyZXR1cm4gMzg7Y2FzZSAyOTpyZXR1cm4gMzk7Y2FzZSAzMDp0aGlzLmJlZ2luKCJTVEFURV9TVFJJTkciKTticmVhaztjYXNlIDMxOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIlNUQVRFX0lEIiksIkFTIjtjYXNlIDMyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksIklEIjtjYXNlIDMzOnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDM0OnJldHVybiJTVEFURV9ERVNDUiI7Y2FzZSAzNTpyZXR1cm4gMTc7Y2FzZSAzNjp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzNzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJzdHJ1Y3QiKSwxODtjYXNlIDM4OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTk7Y2FzZSAzOTpicmVhaztjYXNlIDQwOnJldHVybiB0aGlzLmJlZ2luKCJOT1RFIiksMjc7Y2FzZSA0MTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX0lEIiksNDM7Y2FzZSA0MjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX0lEIiksNDQ7Y2FzZSA0Mzp0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIkZMT0FUSU5HX05PVEUiKTticmVhaztjYXNlIDQ0OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIkZMT0FUSU5HX05PVEVfSUQiKSwiQVMiO2Nhc2UgNDU6YnJlYWs7Y2FzZSA0NjpyZXR1cm4iTk9URV9URVhUIjtjYXNlIDQ3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksIklEIjtjYXNlIDQ4OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIk5PVEVfVEVYVCIpLDIyO2Nhc2UgNDk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSxlLnl5dGV4dD1lLnl5dGV4dC5zdWJzdHIoMikudHJpbSgpLDI5O2Nhc2UgNTA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSxlLnl5dGV4dD1lLnl5dGV4dC5zbGljZSgwLC04KS50cmltKCksMjk7Y2FzZSA1MTpjYXNlIDUyOnJldHVybiA3O2Nhc2UgNTM6cmV0dXJuIDE0O2Nhc2UgNTQ6cmV0dXJuIDQyO2Nhc2UgNTU6cmV0dXJuIDIyO2Nhc2UgNTY6cmV0dXJuIGUueXl0ZXh0PWUueXl0ZXh0LnRyaW0oKSwxMjtjYXNlIDU3OnJldHVybiAxMztjYXNlIDU4OnJldHVybiAyNjtjYXNlIDU5OnJldHVybiA1O2Nhc2UgNjA6cmV0dXJuIklOVkFMSUQifX0scnVsZXM6Wy9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrQlRbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvaSwvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/OiUlKD8hXHspW15cbl0qKS9pLC9eKD86W15cfV0lJVteXG5dKikvaSwvXig/Oltcbl0rKS9pLC9eKD86W1xzXSspL2ksL14oPzooKD8hXG4pXHMpKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86c2NhbGVccyspL2ksL14oPzpcZCspL2ksL14oPzpccyt3aWR0aFxiKS9pLC9eKD86c3RhdGVccyspL2ksL14oPzouKjw8Zm9yaz4+KS9pLC9eKD86Lio8PGpvaW4+PikvaSwvXig/Oi4qPDxjaG9pY2U+PikvaSwvXig/Oi4qXFtcW2ZvcmtcXVxdKS9pLC9eKD86LipcW1xbam9pblxdXF0pL2ksL14oPzouKlxbXFtjaG9pY2VcXVxdKS9pLC9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrQlRbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvaSwvXig/OlsiXSkvaSwvXig/OlxzKmFzXHMrKS9pLC9eKD86W15cblx7XSopL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/OlteXG5cc1x7XSspL2ksL14oPzpcbikvaSwvXig/Olx7KS9pLC9eKD86XH0pL2ksL14oPzpbXG5dKS9pLC9eKD86bm90ZVxzKykvaSwvXig/OmxlZnQgb2ZcYikvaSwvXig/OnJpZ2h0IG9mXGIpL2ksL14oPzoiKS9pLC9eKD86XHMqYXNccyopL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/OlteXG5dKikvaSwvXig/OlxzKlteOlxuXHNcLV0rKS9pLC9eKD86XHMqOlteOlxuO10rKS9pLC9eKD86W1xzXFNdKj9lbmQgbm90ZVxiKS9pLC9eKD86c3RhdGVEaWFncmFtXHMrKS9pLC9eKD86c3RhdGVEaWFncmFtLXYyXHMrKS9pLC9eKD86aGlkZSBlbXB0eSBkZXNjcmlwdGlvblxiKS9pLC9eKD86XFtcKlxdKS9pLC9eKD86W146XG5cc1wtXHtdKykvaSwvXig/OlxzKjpbXjpcbjtdKykvaSwvXig/Oi0tPikvaSwvXig/Oi0tKS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e0xJTkU6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxjbG9zZV9kaXJlY3RpdmU6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbNyw4LDEzLDE0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbNiw3LDEzLDE0XSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbNSwxMywxNF0saW5jbHVzaXZlOiExfSxzdHJ1Y3Q6e3J1bGVzOlsxMywxNCwxOSwyNiwyNywyOCwyOSwzOCwzOSw0MCw1NCw1NSw1Niw1Nyw1OF0saW5jbHVzaXZlOiExfSxGTE9BVElOR19OT1RFX0lEOntydWxlczpbNDddLGluY2x1c2l2ZTohMX0sRkxPQVRJTkdfTk9URTp7cnVsZXM6WzQ0LDQ1LDQ2XSxpbmNsdXNpdmU6ITF9LE5PVEVfVEVYVDp7cnVsZXM6WzQ5LDUwXSxpbmNsdXNpdmU6ITF9LE5PVEVfSUQ6e3J1bGVzOls0OF0saW5jbHVzaXZlOiExfSxOT1RFOntydWxlczpbNDEsNDIsNDNdLGluY2x1c2l2ZTohMX0sU0NBTEU6e3J1bGVzOlsxNywxOF0saW5jbHVzaXZlOiExfSxBTElBUzp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxTVEFURV9JRDp7cnVsZXM6WzMyXSxpbmNsdXNpdmU6ITF9LFNUQVRFX1NUUklORzp7cnVsZXM6WzMzLDM0XSxpbmNsdXNpdmU6ITF9LEZPUktfU1RBVEU6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sU1RBVEU6e3J1bGVzOlsxMywxNCwyMCwyMSwyMiwyMywyNCwyNSwzMCwzMSwzNSwzNiwzN10saW5jbHVzaXZlOiExfSxJRDp7cnVsZXM6WzEzLDE0XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDEsMiwzLDQsOSwxMCwxMSwxMiwxNCwxNSwxNiwxOSwzNyw0MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OSw2MF0saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIE4oKXt0aGlzLnl5PXt9fXJldHVybiBBLmxleGVyPU0sTi5wcm90b3R5cGU9QSxBLlBhcnNlcj1OLG5ldyBOfSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oMzA2OSkucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSw2NzQxOih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bMSwyXSxuPVsxLDVdLHI9WzYsOSwxMSwxNywxOCwxOSwyMV0saT1bMSwxNV0sYT1bMSwxNl0sbz1bMSwxN10scz1bMSwyMV0sYz1bNCw2LDksMTEsMTcsMTgsMTksMjFdLHU9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLGpvdXJuZXk6NCxkb2N1bWVudDo1LEVPRjo2LGRpcmVjdGl2ZTo3LGxpbmU6OCxTUEFDRTo5LHN0YXRlbWVudDoxMCxORVdMSU5FOjExLG9wZW5EaXJlY3RpdmU6MTIsdHlwZURpcmVjdGl2ZToxMyxjbG9zZURpcmVjdGl2ZToxNCwiOiI6MTUsYXJnRGlyZWN0aXZlOjE2LHRpdGxlOjE3LHNlY3Rpb246MTgsdGFza05hbWU6MTksdGFza0RhdGE6MjAsb3Blbl9kaXJlY3RpdmU6MjEsdHlwZV9kaXJlY3RpdmU6MjIsYXJnX2RpcmVjdGl2ZToyMyxjbG9zZV9kaXJlY3RpdmU6MjQsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6ImpvdXJuZXkiLDY6IkVPRiIsOToiU1BBQ0UiLDExOiJORVdMSU5FIiwxNToiOiIsMTc6InRpdGxlIiwxODoic2VjdGlvbiIsMTk6InRhc2tOYW1lIiwyMDoidGFza0RhdGEiLDIxOiJvcGVuX2RpcmVjdGl2ZSIsMjI6InR5cGVfZGlyZWN0aXZlIiwyMzoiYXJnX2RpcmVjdGl2ZSIsMjQ6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywzXSxbMywyXSxbNSwwXSxbNSwyXSxbOCwyXSxbOCwxXSxbOCwxXSxbOCwxXSxbNyw0XSxbNyw2XSxbMTAsMV0sWzEwLDFdLFsxMCwyXSxbMTAsMV0sWzEyLDFdLFsxMywxXSxbMTYsMV0sWzE0LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgMTpyZXR1cm4gYVtzLTFdO2Nhc2UgMzp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0OmFbcy0xXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA1OmNhc2UgNjp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDc6Y2FzZSA4OnRoaXMuJD1bXTticmVhaztjYXNlIDExOnIuc2V0VGl0bGUoYVtzXS5zdWJzdHIoNikpLHRoaXMuJD1hW3NdLnN1YnN0cig2KTticmVhaztjYXNlIDEyOnIuYWRkU2VjdGlvbihhW3NdLnN1YnN0cig4KSksdGhpcy4kPWFbc10uc3Vic3RyKDgpO2JyZWFrO2Nhc2UgMTM6ci5hZGRUYXNrKGFbcy0xXSxhW3NdKSx0aGlzLiQ9InRhc2siO2JyZWFrO2Nhc2UgMTU6ci5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDE2OnIucGFyc2VEaXJlY3RpdmUoYVtzXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDE3OmFbc109YVtzXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksci5wYXJzZURpcmVjdGl2ZShhW3NdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxODpyLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJqb3VybmV5Iil9fSx0YWJsZTpbezM6MSw0OmUsNzozLDEyOjQsMjE6bn0sezE6WzNdfSx0KHIsWzIsM10sezU6Nn0pLHszOjcsNDplLDc6MywxMjo0LDIxOm59LHsxMzo4LDIyOlsxLDldfSx7MjI6WzIsMTVdfSx7NjpbMSwxMF0sNzoxOCw4OjExLDk6WzEsMTJdLDEwOjEzLDExOlsxLDE0XSwxMjo0LDE3OmksMTg6YSwxOTpvLDIxOm59LHsxOlsyLDJdfSx7MTQ6MTksMTU6WzEsMjBdLDI0OnN9LHQoWzE1LDI0XSxbMiwxNl0pLHQocixbMiw4XSx7MTpbMiwxXX0pLHQocixbMiw0XSksezc6MTgsMTA6MjIsMTI6NCwxNzppLDE4OmEsMTk6bywyMTpufSx0KHIsWzIsNl0pLHQocixbMiw3XSksdChyLFsyLDExXSksdChyLFsyLDEyXSksezIwOlsxLDIzXX0sdChyLFsyLDE0XSksezExOlsxLDI0XX0sezE2OjI1LDIzOlsxLDI2XX0sezExOlsyLDE4XX0sdChyLFsyLDVdKSx0KHIsWzIsMTNdKSx0KGMsWzIsOV0pLHsxNDoyNywyNDpzfSx7MjQ6WzIsMTddfSx7MTE6WzEsMjhdfSx0KGMsWzIsMTBdKV0sZGVmYXVsdEFjdGlvbnM6ezU6WzIsMTVdLDc6WzIsMl0sMjE6WzIsMThdLDI2OlsyLDE3XX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LGw9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKHQpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IodCxlKX0sc2V0SW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy55eT1lfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lucHV0WzBdO3JldHVybiB0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQsdC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUpLHRoaXMub2Zmc2V0LT1lO3ZhciByPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLG4ubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1uLmxlbmd0aC0xKTt2YXIgaT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46bj8obi5sZW5ndGg9PT1yLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcltyLmxlbmd0aC1uLmxlbmd0aF0ubGVuZ3RoLW5bMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2lbMF0saVswXSt0aGlzLnl5bGVuZy1lXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcj8odGhpcy5fYmFja3RyYWNrPSEwLHRoaXMpOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxlc3M6ZnVuY3Rpb24odCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHQpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih0Lmxlbmd0aD4yMD8iLi4uIjoiIikrdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2g7cmV0dXJuIHQubGVuZ3RoPDIwJiYodCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtdC5sZW5ndGgpKSwodC5zdWJzdHIoMCwyMCkrKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFzdElucHV0KCksZT1uZXcgQXJyYXkodC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB0K3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIrZSsiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKGk9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoaS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSwocj10WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSkmJih0aGlzLnl5bGluZW5vKz1yLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnI/cltyLmxlbmd0aC0xXS5sZW5ndGgtcltyLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9dFswXSx0aGlzLm1hdGNoKz10WzBdLHRoaXMubWF0Y2hlcz10LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHRbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPXRbMF0sbj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxlLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLG4pcmV0dXJuIG47aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGEgaW4gaSl0aGlzW2FdPWlbYV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3ZhciB0LGUsbixyO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKSx0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBpPXRoaXMuX2N1cnJlbnRSdWxlcygpLGE9MDthPGkubGVuZ3RoO2ErKylpZigobj10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2lbYV1dKSkmJighZXx8blswXS5sZW5ndGg+ZVswXS5sZW5ndGgpKXtpZihlPW4scj1hLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKCExIT09KHQ9dGhpcy50ZXN0X21hdGNoKG4saVthXSkpKXJldHVybiB0O2lmKHRoaXMuX2JhY2t0cmFjayl7ZT0hMTtjb250aW51ZX1yZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGU/ITEhPT0odD10aGlzLnRlc3RfbWF0Y2goZSxpW3JdKSkmJnQ6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHQoKXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyh0fHwwKSk+PTA/dGhpcy5jb25kaXRpb25TdGFja1t0XToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbih0KXt0aGlzLmJlZ2luKHQpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksMjE7Y2FzZSAxOnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDIyO2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxNTtjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksMjQ7Y2FzZSA0OnJldHVybiAyMztjYXNlIDU6Y2FzZSA2OmJyZWFrO2Nhc2UgNzpyZXR1cm4gMTE7Y2FzZSA4OmNhc2UgOTpicmVhaztjYXNlIDEwOnJldHVybiA0O2Nhc2UgMTE6cmV0dXJuIDE3O2Nhc2UgMTI6cmV0dXJuIDE4O2Nhc2UgMTM6cmV0dXJuIDE5O2Nhc2UgMTQ6cmV0dXJuIDIwO2Nhc2UgMTU6cmV0dXJuIDE1O2Nhc2UgMTY6cmV0dXJuIDY7Y2FzZSAxNzpyZXR1cm4iSU5WQUxJRCJ9fSxydWxlczpbL14oPzolJVx7KS9pLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpL2ksL14oPzo6KS9pLC9eKD86XH0lJSkvaSwvXig/OigoPzooPyFcfSUlKS58XG4pKikpL2ksL14oPzolKD8hXHspW15cbl0qKS9pLC9eKD86W15cfV0lJVteXG5dKikvaSwvXig/Oltcbl0rKS9pLC9eKD86XHMrKS9pLC9eKD86I1teXG5dKikvaSwvXig/OmpvdXJuZXlcYikvaSwvXig/OnRpdGxlXHNbXiNcbjtdKykvaSwvXig/OnNlY3Rpb25cc1teIzpcbjtdKykvaSwvXig/OlteIzpcbjtdKykvaSwvXig/OjpbXiNcbjtdKykvaSwvXig/OjopL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7b3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3XSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gaCgpe3RoaXMueXk9e319cmV0dXJuIHUubGV4ZXI9bCxoLnByb3RvdHlwZT11LHUuUGFyc2VyPWgsbmV3IGh9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9big5MTQzKS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDk2MDk6dD0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT0vXiglMjB8XHMpKihqYXZhc2NyaXB0fGRhdGEpL2ltLG49L1teXHgyMC1ceDdFXS9naW0scj0vXihbXjpdKyk6L2dtLGk9WyIuIiwiLyJdO3QuZXhwb3J0cz17c2FuaXRpemVVcmw6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuImFib3V0OmJsYW5rIjt2YXIgYSxvLHM9dC5yZXBsYWNlKG4sIiIpLnRyaW0oKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5kZXhPZih0WzBdKT4tMX0ocyk/czoobz1zLm1hdGNoKHIpKT8oYT1vWzBdLGUudGVzdChhKT8iYWJvdXQ6YmxhbmsiOnMpOiJhYm91dDpibGFuayJ9fX0sMzg0MTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaW50ZXJzZWN0KGUpfX0sNzQ1ODoodCxlLG4pPT57InVzZSBzdHJpY3QiO24uZChlLHtkZWZhdWx0OigpPT5jQ30pO3ZhciByPW4oMTk0MSksaT1uLm4ociksYT17ZGVidWc6MSxpbmZvOjIsd2FybjozLGVycm9yOjQsZmF0YWw6NX0sbz17ZGVidWc6ZnVuY3Rpb24oKXt9LGluZm86ZnVuY3Rpb24oKXt9LHdhcm46ZnVuY3Rpb24oKXt9LGVycm9yOmZ1bmN0aW9uKCl7fSxmYXRhbDpmdW5jdGlvbigpe319LHM9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ImZhdGFsIjtpc05hTih0KSYmKHQ9dC50b0xvd2VyQ2FzZSgpLHZvaWQgMCE9PWFbdF0mJih0PWFbdF0pKSxvLnRyYWNlPWZ1bmN0aW9uKCl7fSxvLmRlYnVnPWZ1bmN0aW9uKCl7fSxvLmluZm89ZnVuY3Rpb24oKXt9LG8ud2Fybj1mdW5jdGlvbigpe30sby5lcnJvcj1mdW5jdGlvbigpe30sby5mYXRhbD1mdW5jdGlvbigpe30sdDw9YS5mYXRhbCYmKG8uZmF0YWw9Y29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSxjKCJGQVRBTCIpLCJjb2xvcjogb3JhbmdlIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCIbWzM1bSIsYygiRkFUQUwiKSkpLHQ8PWEuZXJyb3ImJihvLmVycm9yPWNvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUsYygiRVJST1IiKSwiY29sb3I6IG9yYW5nZSIpOmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwiG1szMW0iLGMoIkVSUk9SIikpKSx0PD1hLndhcm4mJihvLndhcm49Y29uc29sZS53YXJuP2NvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUsYygiV0FSTiIpLCJjb2xvcjogb3JhbmdlIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCIbWzMzbSIsYygiV0FSTiIpKSksdDw9YS5pbmZvJiYoby5pbmZvPWNvbnNvbGUuaW5mbz9jb25zb2xlLmluZm8uYmluZChjb25zb2xlLGMoIklORk8iKSwiY29sb3I6IGxpZ2h0Ymx1ZSIpOmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwiG1szNG0iLGMoIklORk8iKSkpLHQ8PWEuZGVidWcmJihvLmRlYnVnPWNvbnNvbGUuZGVidWc/Y29uc29sZS5kZWJ1Zy5iaW5kKGNvbnNvbGUsYygiREVCVUciKSwiY29sb3I6IGxpZ2h0Z3JlZW4iKTpjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIhtbMzJtIixjKCJERUJVRyIpKSl9LGM9ZnVuY3Rpb24odCl7dmFyIGU9aSgpKCkuZm9ybWF0KCJzcy5TU1MiKTtyZXR1cm4iJWMiLmNvbmNhdChlLCIgOiAiKS5jb25jYXQodCwiIDogIil9O2Z1bmN0aW9uIHUodCxlKXtsZXQgbjtpZih2b2lkIDA9PT1lKWZvcihjb25zdCBlIG9mIHQpbnVsbCE9ZSYmKG48ZXx8dm9pZCAwPT09biYmZT49ZSkmJihuPWUpO2Vsc2V7bGV0IHI9LTE7Zm9yKGxldCBpIG9mIHQpbnVsbCE9KGk9ZShpLCsrcix0KSkmJihuPGl8fHZvaWQgMD09PW4mJmk+PWkpJiYobj1pKX1yZXR1cm4gbn1mdW5jdGlvbiBsKHQsZSl7bGV0IG47aWYodm9pZCAwPT09ZSlmb3IoY29uc3QgZSBvZiB0KW51bGwhPWUmJihuPmV8fHZvaWQgMD09PW4mJmU+PWUpJiYobj1lKTtlbHNle2xldCByPS0xO2ZvcihsZXQgaSBvZiB0KW51bGwhPShpPWUoaSwrK3IsdCkpJiYobj5pfHx2b2lkIDA9PT1uJiZpPj1pKSYmKG49aSl9cmV0dXJuIG59ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdH12YXIgZj0xZS02O2Z1bmN0aW9uIGQodCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QrIiwwKSJ9ZnVuY3Rpb24gcCh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIit0KyIpIn1mdW5jdGlvbiB5KHQpe3JldHVybiBlPT4rdChlKX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTIqZSkvMix0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLG49Pit0KG4pK2V9ZnVuY3Rpb24gbSgpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiB2KHQsZSl7dmFyIG49W10scj1udWxsLGk9bnVsbCxhPTYsbz02LHM9MyxjPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbz4xPzA6LjUsdT0xPT09dHx8ND09PXQ/LTE6MSxsPTQ9PT10fHwyPT09dD8ieCI6InkiLHY9MT09PXR8fDM9PT10P2Q6cDtmdW5jdGlvbiBiKGQpe3ZhciBwPW51bGw9PXI/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTpyLGI9bnVsbD09aT9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6aDppLF89TWF0aC5tYXgoYSwwKStzLHg9ZS5yYW5nZSgpLHc9K3hbMF0rYyxrPSt4W3gubGVuZ3RoLTFdK2MsVD0oZS5iYW5kd2lkdGg/Zzp5KShlLmNvcHkoKSxjKSxFPWQuc2VsZWN0aW9uP2Quc2VsZWN0aW9uKCk6ZCxDPUUuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLFM9RS5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShwLGUpLm9yZGVyKCksQT1TLmV4aXQoKSxNPVMuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxOPVMuc2VsZWN0KCJsaW5lIiksRD1TLnNlbGVjdCgidGV4dCIpO0M9Qy5tZXJnZShDLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxTPVMubWVyZ2UoTSksTj1OLm1lcmdlKE0uYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihsKyIyIix1KmEpKSxEPUQubWVyZ2UoTS5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihsLHUqXykuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSksZCE9PUUmJihDPUMudHJhbnNpdGlvbihkKSxTPVMudHJhbnNpdGlvbihkKSxOPU4udHJhbnNpdGlvbihkKSxEPUQudHJhbnNpdGlvbihkKSxBPUEudHJhbnNpdGlvbihkKS5hdHRyKCJvcGFjaXR5IixmKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1UKHQpKT92KHQrYyk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLE0uYXR0cigib3BhY2l0eSIsZikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gdigoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOlQodCkpK2MpfSkpKSxBLnJlbW92ZSgpLEMuYXR0cigiZCIsND09PXR8fDI9PT10P28/Ik0iK3UqbysiLCIrdysiSCIrYysiViIraysiSCIrdSpvOiJNIitjKyIsIit3KyJWIitrOm8/Ik0iK3crIiwiK3UqbysiViIrYysiSCIraysiViIrdSpvOiJNIit3KyIsIitjKyJIIitrKSxTLmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB2KFQodCkrYyl9KSksTi5hdHRyKGwrIjIiLHUqYSksRC5hdHRyKGwsdSpfKS50ZXh0KGIpLEUuZmlsdGVyKG0pLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigidGV4dC1hbmNob3IiLDI9PT10PyJzdGFydCI6ND09PXQ/ImVuZCI6Im1pZGRsZSIpLEUuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLl9fYXhpcz1UfSkpfXJldHVybiBiLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYik6ZX0sYi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBuPUFycmF5LmZyb20oYXJndW1lbnRzKSxifSxiLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9bXTpBcnJheS5mcm9tKHQpLGIpOm4uc2xpY2UoKX0sYi50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDpBcnJheS5mcm9tKHQpLGIpOnImJnIuc2xpY2UoKX0sYi50aWNrRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsYik6aX0sYi50aWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1vPSt0LGIpOmF9LGIudGlja1NpemVJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxiKTphfSxiLnRpY2tTaXplT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYik6b30sYi50aWNrUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxiKTpzfSxiLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCxiKTpjfSxifWZ1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gbnVsbD09dD9iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24geCh0KXtyZXR1cm4gbnVsbD09dD9bXTpBcnJheS5pc0FycmF5KHQpP3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiB3KCl7cmV0dXJuW119ZnVuY3Rpb24gayh0KXtyZXR1cm4gbnVsbD09dD93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gVCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBFKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRjaGVzKHQpfX12YXIgQz1BcnJheS5wcm90b3R5cGUuZmluZDtmdW5jdGlvbiBTKCl7cmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGR9dmFyIEE9QXJyYXkucHJvdG90eXBlLmZpbHRlcjtmdW5jdGlvbiBNKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbil9ZnVuY3Rpb24gTih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBEKHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIE8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEIodCxlLG4scixpLGEpe2Zvcih2YXIgbyxzPTAsYz1lLmxlbmd0aCx1PWEubGVuZ3RoO3M8dTsrK3MpKG89ZVtzXSk/KG8uX19kYXRhX189YVtzXSxyW3NdPW8pOm5bc109bmV3IEQodCxhW3NdKTtmb3IoO3M8YzsrK3MpKG89ZVtzXSkmJihpW3NdPW8pfWZ1bmN0aW9uIEwodCxlLG4scixpLGEsbyl7dmFyIHMsYyx1LGw9bmV3IE1hcCxoPWUubGVuZ3RoLGY9YS5sZW5ndGgsZD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShjPWVbc10pJiYoZFtzXT11PW8uY2FsbChjLGMuX19kYXRhX18scyxlKSsiIixsLmhhcyh1KT9pW3NdPWM6bC5zZXQodSxjKSk7Zm9yKHM9MDtzPGY7KytzKXU9by5jYWxsKHQsYVtzXSxzLGEpKyIiLChjPWwuZ2V0KHUpKT8ocltzXT1jLGMuX19kYXRhX189YVtzXSxsLmRlbGV0ZSh1KSk6bltzXT1uZXcgRCh0LGFbc10pO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmbC5nZXQoZFtzXSk9PT1jJiYoaVtzXT1jKX1mdW5jdGlvbiBJKHQpe3JldHVybiB0Ll9fZGF0YV9ffWZ1bmN0aW9uIFIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYibGVuZ3RoImluIHQ/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIEYodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59RC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkQsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX07dmFyIFA9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IGo9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOlAseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBZKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmpbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiB6KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBVKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gVyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBWKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBHKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIFgodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBaKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsbil9fWZ1bmN0aW9uIFEodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxWKHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEsodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIEoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIHR0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIGV0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBudCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBydCh0KX1mdW5jdGlvbiBydCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ZXQodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBpdCh0LGUpe2Zvcih2YXIgbj1udCh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4uYWRkKGVbcl0pfWZ1bmN0aW9uIGF0KHQsZSl7Zm9yKHZhciBuPW50KHQpLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspbi5yZW1vdmUoZVtyXSl9ZnVuY3Rpb24gb3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7aXQodGhpcyx0KX19ZnVuY3Rpb24gc3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YXQodGhpcyx0KX19ZnVuY3Rpb24gY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/aXQ6YXQpKHRoaXMsdCl9fWZ1bmN0aW9uIHV0KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIGh0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBmdCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIGR0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIHB0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24geXQoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gZ3QoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBtdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PVAmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVA/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGJ0KHQpe3ZhciBlPVkodCk7cmV0dXJuKGUubG9jYWw/dnQ6bXQpKGUpfWZ1bmN0aW9uIF90KCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24geHQoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiB3dCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24ga3QoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFR0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIEV0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4scj0wLGk9LTEsYT1lLmxlbmd0aDtyPGE7KytyKW49ZVtyXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytpXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLm9wdGlvbnMpOysraT9lLmxlbmd0aD1pOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBDdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsaT10aGlzLl9fb24sYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5jYWxsKHRoaXMsZSx0aGlzLl9fZGF0YV9fKX19KGUpO2lmKGkpZm9yKHZhciBvPTAscz1pLmxlbmd0aDtvPHM7KytvKWlmKChyPWlbb10pLnR5cGU9PT10LnR5cGUmJnIubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHIudHlwZSxyLmxpc3RlbmVyLHIub3B0aW9ucyksdGhpcy5hZGRFdmVudExpc3RlbmVyKHIudHlwZSxyLmxpc3RlbmVyPWEsci5vcHRpb25zPW4pLHZvaWQoci52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGEsbikscj17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjphLG9wdGlvbnM6bn0saT9pLnB1c2gocik6dGhpcy5fX29uPVtyXX19ZnVuY3Rpb24gU3QodCxlLG4pe3ZhciByPVYodCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkoZSxuKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KGkuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksaS5kZXRhaWw9bi5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gQXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gU3QodGhpcyx0LGUpfX1mdW5jdGlvbiBNdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBTdCh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1ydC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBOdD1bbnVsbF07ZnVuY3Rpb24gRHQodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gT3QoKXtyZXR1cm4gbmV3IER0KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sTnQpfUR0LnByb3RvdHlwZT1PdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkR0LHNlbGVjdDpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Xyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvLHM9ZVtpXSxjPXMubGVuZ3RoLHU9cltpXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKGE9c1tsXSkmJihvPXQuY2FsbChhLGEuX19kYXRhX18sbCxzKSkmJigiX19kYXRhX18iaW4gYSYmKG8uX19kYXRhX189YS5fX2RhdGFfXyksdVtsXT1vKTtyZXR1cm4gbmV3IER0KHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXt0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19KHQpOmsodCk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9W10saT1bXSxhPTA7YTxuOysrYSlmb3IodmFyIG8scz1lW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpKG89c1t1XSkmJihyLnB1c2godC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSxpLnB1c2gobykpO3JldHVybiBuZXcgRHQocixpKX0sc2VsZWN0Q2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KG51bGw9PXQ/UzpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQy5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90OkUodCkpKX0sc2VsZWN0Q2hpbGRyZW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0QWxsKG51bGw9PXQ/TTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90OkUodCkpKX0sZmlsdGVyOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1UKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBEdChyLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uKHQsZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIEFycmF5LmZyb20odGhpcyxJKTt2YXIgbj1lP0w6QixyPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PU8odCkpO2Zvcih2YXIgYT1pLmxlbmd0aCxvPW5ldyBBcnJheShhKSxzPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGw9clt1XSxoPWlbdV0sZj1oLmxlbmd0aCxkPVIodC5jYWxsKGwsbCYmbC5fX2RhdGFfXyx1LHIpKSxwPWQubGVuZ3RoLHk9c1t1XT1uZXcgQXJyYXkocCksZz1vW3VdPW5ldyBBcnJheShwKSxtPWNbdV09bmV3IEFycmF5KGYpO24obCxoLHksZyxtLGQsZSk7Zm9yKHZhciB2LGIsXz0wLHg9MDtfPHA7KytfKWlmKHY9eVtfXSl7Zm9yKF8+PXgmJih4PV8rMSk7IShiPWdbeF0pJiYrK3g8cDspO3YuX25leHQ9Ynx8bnVsbH19cmV0dXJuKG89bmV3IER0KG8scikpLl9lbnRlcj1zLG8uX2V4aXQ9YyxvfSxlbnRlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgRHQodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoTiksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IER0KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoTiksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD8ocj10KHIpKSYmKHI9ci5zZWxlY3Rpb24oKSk6cj1yLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYoaT1lKGkpKSYmKGk9aS5zZWxlY3Rpb24oKSksbnVsbD09bj9hLnJlbW92ZSgpOm4oYSksciYmaT9yLm1lcmdlKGkpLm9yZGVyKCk6aX0sbWVyZ2U6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dCxuPXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxpPW4ubGVuZ3RoLGE9ci5sZW5ndGgsbz1NYXRoLm1pbihpLGEpLHM9bmV3IEFycmF5KGkpLGM9MDtjPG87KytjKWZvcih2YXIgdSxsPW5bY10saD1yW2NdLGY9bC5sZW5ndGgsZD1zW2NdPW5ldyBBcnJheShmKSxwPTA7cDxmOysrcCkodT1sW3BdfHxoW3BdKSYmKGRbcF09dSk7Zm9yKDtjPGk7KytjKXNbY109bltjXTtyZXR1cm4gbmV3IER0KHMsdGhpcy5fcGFyZW50cyl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxvcmRlcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIHIsaT10W2VdLGE9aS5sZW5ndGgtMSxvPWlbYV07LS1hPj0wOykocj1pW2FdKSYmKG8mJjReci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKSYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLG8pLG89cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1GKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLHI9bi5sZW5ndGgsaT1uZXcgQXJyYXkociksYT0wO2E8cjsrK2Epe2Zvcih2YXIgbyxzPW5bYV0sYz1zLmxlbmd0aCx1PWlbYV09bmV3IEFycmF5KGMpLGw9MDtsPGM7KytsKShvPXNbbF0pJiYodVtsXT1vKTt1LnNvcnQoZSl9cmV0dXJuIG5ldyBEdChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcyl9LG5vZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByPXRbZV0saT0wLGE9ci5sZW5ndGg7aTxhOysraSl7dmFyIG89cltpXTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uKCl7bGV0IHQ9MDtmb3IoY29uc3QgZSBvZiB0aGlzKSsrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAscj1lLmxlbmd0aDtuPHI7KytuKWZvcih2YXIgaSxhPWVbbl0sbz0wLHM9YS5sZW5ndGg7bzxzOysrbykoaT1hW29dKSYmdC5jYWxsKGksaS5fX2RhdGFfXyxvLGEpO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uKHQsZSl7dmFyIG49WSh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/VTp6OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/VzpIOm4ubG9jYWw/JDpxKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0c6ImZ1bmN0aW9uIj09dHlwZW9mIGU/WjpYKSh0LGUsbnVsbD09bj8iIjpuKSk6USh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9LOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3R0OkopKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZXQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9bnQodGhpcy5ub2RlKCkpLGk9LTEsYT1uLmxlbmd0aDsrK2k8YTspaWYoIXIuY29udGFpbnMobltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/Y3Q6ZT9vdDpzdCkobixlKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/dXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2h0Omx0KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/ZnQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3B0OmR0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goeXQpfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZ3QpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpidCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmJ0KHQpLHI9bnVsbD09ZT9fdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOl8oZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goeHQpfSxjbG9uZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9rdDp3dCl9LGRhdHVtOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYT1UdCh0KyIiKSxvPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9DdDpFdCxyPTA7cjxvOysrcil0aGlzLmVhY2gocyhhW3JdLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGMsdT0wLGw9cy5sZW5ndGg7dTxsOysrdSlmb3Iocj0wLGM9c1t1XTtyPG87KytyKWlmKChpPWFbcl0pLnR5cGU9PT1jLnR5cGUmJmkubmFtZT09PWMubmFtZSlyZXR1cm4gYy52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9NdDpBdCkodCxlKSl9LFtTeW1ib2wuaXRlcmF0b3JdOmZ1bmN0aW9uKigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIHIsaT10W2VdLGE9MCxvPWkubGVuZ3RoO2E8bzsrK2EpKHI9aVthXSkmJih5aWVsZCByKX19O2NvbnN0IEJ0PU90O3ZhciBMdD17dmFsdWU6KCk9Pnt9fTtmdW5jdGlvbiBJdCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLHI9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gcnx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO3JbdF09W119cmV0dXJuIG5ldyBSdChyKX1mdW5jdGlvbiBSdCh0KXt0aGlzLl89dH1mdW5jdGlvbiBGdCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLHI9dC5pbmRleE9mKCIuIik7aWYocj49MCYmKG49dC5zbGljZShyKzEpLHQ9dC5zbGljZSgwLHIpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gUHQodCxlKXtmb3IodmFyIG4scj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZigobj10W3JdKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBqdCh0LGUsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7KytyKWlmKHRbcl0ubmFtZT09PWUpe3Rbcl09THQsdD10LnNsaWNlKDAscikuY29uY2F0KHQuc2xpY2UocisxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fVJ0LnByb3RvdHlwZT1JdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlJ0LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj10aGlzLl8saT1GdCh0KyIiLHIpLGE9LTEsbz1pLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrYTxvOylpZihuPSh0PWlbYV0pLnR5cGUpcltuXT1qdChyW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gcilyW25dPWp0KHJbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KythPG87KWlmKChuPSh0PWlbYV0pLnR5cGUpJiYobj1QdChyW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBSdCh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4scixpPW5ldyBBcnJheShuKSxhPTA7YTxuOysrYSlpW2FdPWFyZ3VtZW50c1thKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKGE9MCxuPShyPXRoaXMuX1t0XSkubGVuZ3RoO2E8bjsrK2EpclthXS52YWx1ZS5hcHBseShlLGkpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIHI9dGhpcy5fW3RdLGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpcltpXS52YWx1ZS5hcHBseShlLG4pfX07Y29uc3QgWXQ9SXQ7dmFyIHp0LFV0LHF0PTAsJHQ9MCxIdD0wLFd0PTAsVnQ9MCxHdD0wLFh0PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFp0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFF0KCl7cmV0dXJuIFZ0fHwoWnQoS3QpLFZ0PVh0Lm5vdygpK0d0KX1mdW5jdGlvbiBLdCgpe1Z0PTB9ZnVuY3Rpb24gSnQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIHRlKHQsZSxuKXt2YXIgcj1uZXcgSnQ7cmV0dXJuIHIucmVzdGFydCh0LGUsbikscn1mdW5jdGlvbiBlZSgpe1Z0PShXdD1YdC5ub3coKSkrR3QscXQ9JHQ9MDt0cnl7IWZ1bmN0aW9uKCl7UXQoKSwrK3F0O2Zvcih2YXIgdCxlPXp0O2U7KSh0PVZ0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwodm9pZCAwLHQpLGU9ZS5fbmV4dDstLXF0fSgpfWZpbmFsbHl7cXQ9MCxmdW5jdGlvbigpe2Zvcih2YXIgdCxlLG49enQscj0xLzA7bjspbi5fY2FsbD8ocj5uLl90aW1lJiYocj1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOnp0PWUpO1V0PXQscmUocil9KCksVnQ9MH19ZnVuY3Rpb24gbmUoKXt2YXIgdD1YdC5ub3coKSxlPXQtV3Q7ZT4xZTMmJihHdC09ZSxXdD10KX1mdW5jdGlvbiByZSh0KXtxdHx8KCR0JiYoJHQ9Y2xlYXJUaW1lb3V0KCR0KSksdC1WdD4yND8odDwxLzAmJigkdD1zZXRUaW1lb3V0KGVlLHQtWHQubm93KCktR3QpKSxIdCYmKEh0PWNsZWFySW50ZXJ2YWwoSHQpKSk6KEh0fHwoV3Q9WHQubm93KCksSHQ9c2V0SW50ZXJ2YWwobmUsMWUzKSkscXQ9MSxadChlZSkpKX1mdW5jdGlvbiBpZSh0LGUsbil7dmFyIHI9bmV3IEp0O3JldHVybiBlPW51bGw9PWU/MDorZSxyLnJlc3RhcnQoKG49PntyLnN0b3AoKSx0KG4rZSl9KSxlLG4pLHJ9SnQucHJvdG90eXBlPXRlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SnQscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1F0KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fFV0PT09dGhpc3x8KFV0P1V0Ll9uZXh0PXRoaXM6enQ9dGhpcyxVdD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHJlKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHJlKCkpfX07dmFyIGFlPVl0KCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG9lPVtdO2Z1bmN0aW9uIHNlKHQsZSxuLHIsaSxhKXt2YXIgbz10Ll9fdHJhbnNpdGlvbjtpZihvKXtpZihuIGluIG8pcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIGEoYyl7dmFyIHUsbCxoLGY7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIHMoKTtmb3IodSBpbiBpKWlmKChmPWlbdV0pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1mLnN0YXRlKXJldHVybiBpZShhKTs0PT09Zi5zdGF0ZT8oZi5zdGF0ZT02LGYudGltZXIuc3RvcCgpLGYub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZi5pbmRleCxmLmdyb3VwKSxkZWxldGUgaVt1XSk6K3U8ZSYmKGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pfWlmKGllKChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxvKGMpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMscj1uZXcgQXJyYXkoaD1uLnR3ZWVuLmxlbmd0aCksdT0wLGw9LTE7dTxoOysrdSkoZj1uLnR3ZWVuW3VdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYoclsrK2xdPWYpO3IubGVuZ3RoPWwrMX19ZnVuY3Rpb24gbyhlKXtmb3IodmFyIGk9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KHMpLG4uc3RhdGU9NSwxKSxhPS0xLG89ci5sZW5ndGg7KythPG87KXJbYV0uY2FsbCh0LGkpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLHMoKSl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgciBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIGlbZV0saSlyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufWlbZV09bixuLnRpbWVyPXRlKChmdW5jdGlvbih0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX0pLDAsbi50aW1lKX0odCxuLHtuYW1lOmUsaW5kZXg6cixncm91cDppLG9uOmFlLHR3ZWVuOm9lLHRpbWU6YS50aW1lLGRlbGF5OmEuZGVsYXksZHVyYXRpb246YS5kdXJhdGlvbixlYXNlOmEuZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBjZSh0LGUpe3ZhciBuPWxlKHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gdWUodCxlKXt2YXIgbj1sZSh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBsZSh0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIGhlKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fXZhciBmZSxkZT0xODAvTWF0aC5QSSxwZT17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiB5ZSh0LGUsbixyLGksYSl7dmFyIG8scyxjO3JldHVybihvPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1vLGUvPW8pLChjPXQqbitlKnIpJiYobi09dCpjLHItPWUqYyksKHM9TWF0aC5zcXJ0KG4qbityKnIpKSYmKG4vPXMsci89cyxjLz1zKSx0KnI8ZSpuJiYodD0tdCxlPS1lLGM9LWMsbz0tbykse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpkZSxza2V3WDpNYXRoLmF0YW4oYykqZGUsc2NhbGVYOm8sc2NhbGVZOnN9fWZ1bmN0aW9uIGdlKHQsZSxuLHIpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLG8pe3ZhciBzPVtdLGM9W107cmV0dXJuIGE9dChhKSxvPXQobyksZnVuY3Rpb24odCxyLGksYSxvLHMpe2lmKHQhPT1pfHxyIT09YSl7dmFyIGM9by5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6Yy00LHg6aGUodCxpKX0se2k6Yy0yLHg6aGUocixhKX0pfWVsc2UoaXx8YSkmJm8ucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxhLnB1c2goe2k6bi5wdXNoKGkobikrInJvdGF0ZSgiLG51bGwsciktMix4OmhlKHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urcil9KGEucm90YXRlLG8ucm90YXRlLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/YS5wdXNoKHtpOm4ucHVzaChpKG4pKyJza2V3WCgiLG51bGwsciktMix4OmhlKHQsZSl9KTplJiZuLnB1c2goaShuKSsic2tld1goIitlK3IpfShhLnNrZXdYLG8uc2tld1gscyxjKSxmdW5jdGlvbih0LGUsbixyLGEsbyl7aWYodCE9PW58fGUhPT1yKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7by5wdXNoKHtpOnMtNCx4OmhlKHQsbil9LHtpOnMtMix4OmhlKGUscil9KX1lbHNlIDE9PT1uJiYxPT09cnx8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrcisiKSIpfShhLnNjYWxlWCxhLnNjYWxlWSxvLnNjYWxlWCxvLnNjYWxlWSxzLGMpLGE9bz1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLHI9Yy5sZW5ndGg7KytuPHI7KXNbKGU9Y1tuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIG1lPWdlKChmdW5jdGlvbih0KXtjb25zdCBlPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgRE9NTWF0cml4P0RPTU1hdHJpeDpXZWJLaXRDU1NNYXRyaXgpKHQrIiIpO3JldHVybiBlLmlzSWRlbnRpdHk/cGU6eWUoZS5hLGUuYixlLmMsZS5kLGUuZSxlLmYpfSksInB4LCAiLCJweCkiLCJkZWcpIiksdmU9Z2UoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3BlOihmZXx8KGZlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLGZlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1mZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT95ZSgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpwZSl9KSwiLCAiLCIpIiwiKSIpO2Z1bmN0aW9uIGJlKHQsZSl7dmFyIG4scjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT11ZSh0aGlzLHQpLGE9aS50d2VlbjtpZihhIT09bilmb3IodmFyIG89MCxzPShyPW49YSkubGVuZ3RoO288czsrK28paWYocltvXS5uYW1lPT09ZSl7KHI9ci5zbGljZSgpKS5zcGxpY2UobywxKTticmVha31pLnR3ZWVuPXJ9fWZ1bmN0aW9uIF9lKHQsZSxuKXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT11ZSh0aGlzLHQpLG89YS50d2VlbjtpZihvIT09cil7aT0ocj1vKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGM9MCx1PWkubGVuZ3RoO2M8dTsrK2MpaWYoaVtjXS5uYW1lPT09ZSl7aVtjXT1zO2JyZWFrfWM9PT11JiZpLnB1c2gocyl9YS50d2Vlbj1pfX1mdW5jdGlvbiB4ZSh0LGUsbil7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD11ZSh0aGlzLHIpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBsZSh0LHIpLnZhbHVlW2VdfX1mdW5jdGlvbiB3ZSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24ga2UodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gZSluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gVGUoKXt9dmFyIEVlPS43LENlPTEvRWUsU2U9IlxccyooWystXT9cXGQrKVxccyoiLEFlPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLE1lPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixOZT0vXiMoWzAtOWEtZl17Myw4fSkkLyxEZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbU2UsU2UsU2VdKyJcXCkkIiksT2U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW01lLE1lLE1lXSsiXFwpJCIpLEJlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbU2UsU2UsU2UsQWVdKyJcXCkkIiksTGU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tNZSxNZSxNZSxBZV0rIlxcKSQiKSxJZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbQWUsTWUsTWVdKyJcXCkkIiksUmU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tBZSxNZSxNZSxBZV0rIlxcKSQiKSxGZT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBQZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIGplKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gWWUodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9TmUuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj96ZShlKTozPT09bj9uZXcgSGUoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP1VlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP1VlKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9RGUuZXhlYyh0KSk/bmV3IEhlKGVbMV0sZVsyXSxlWzNdLDEpOihlPU9lLmV4ZWModCkpP25ldyBIZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1CZS5leGVjKHQpKT9VZShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1MZS5leGVjKHQpKT9VZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1JZS5leGVjKHQpKT9YZShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVJlLmV4ZWModCkpP1hlKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6RmUuaGFzT3duUHJvcGVydHkodCk/emUoRmVbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBIZShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHplKHQpe3JldHVybiBuZXcgSGUodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFVlKHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgSGUodCxlLG4scil9ZnVuY3Rpb24gcWUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUZXx8KHQ9WWUodCkpLHQ/bmV3IEhlKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBIZX1mdW5jdGlvbiAkZSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/cWUodCk6bmV3IEhlKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBIZSh0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gV2UoKXtyZXR1cm4iIyIrR2UodGhpcy5yKStHZSh0aGlzLmcpK0dlKHRoaXMuYil9ZnVuY3Rpb24gVmUoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBHZSh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFhlKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgUWUodCxlLG4scil9ZnVuY3Rpb24gWmUodCl7aWYodCBpbnN0YW5jZW9mIFFlKXJldHVybiBuZXcgUWUodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgVGV8fCh0PVllKHQpKSwhdClyZXR1cm4gbmV3IFFlO2lmKHQgaW5zdGFuY2VvZiBRZSlyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IFFlKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gUWUodCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIEtlKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBKZSh0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fXdlKFRlLFllLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OlBlLGZvcm1hdEhleDpQZSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4gWmUodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpqZSx0b1N0cmluZzpqZX0pLHdlKEhlLCRlLGtlKFRlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0NlOk1hdGgucG93KENlLHQpLG5ldyBIZSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9FZTpNYXRoLnBvdyhFZSx0KSxuZXcgSGUodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpXZSxmb3JtYXRIZXg6V2UsZm9ybWF0UmdiOlZlLHRvU3RyaW5nOlZlfSkpLHdlKFFlLChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WmUodCk6bmV3IFFlKHQsZSxuLG51bGw9PXI/MTpyKX0pLGtlKFRlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0NlOk1hdGgucG93KENlLHQpLG5ldyBRZSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0VlOk1hdGgucG93KEVlLHQpLG5ldyBRZSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxyPW4rKG48LjU/bjoxLW4pKmUsaT0yKm4tcjtyZXR1cm4gbmV3IEhlKEtlKHQ+PTI0MD90LTI0MDp0KzEyMCxpLHIpLEtlKHQsaSxyKSxLZSh0PDEyMD90KzI0MDp0LTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO2NvbnN0IHRuPXQ9PigpPT50O2Z1bmN0aW9uIGVuKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KHQsbik6dG4oaXNOYU4odCk/ZTp0KX1jb25zdCBubj1mdW5jdGlvbiB0KGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT0odD0rdCk/ZW46ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnBvdyh0K3IqZSxuKX19KGUsbix0KTp0bihpc05hTihlKT9uOmUpfX0oZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciByPW4oKHQ9JGUodCkpLnIsKGU9JGUoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYiksbz1lbih0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1yKGUpLHQuZz1pKGUpLHQuYj1hKGUpLHQub3BhY2l0eT1vKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0oMSk7ZnVuY3Rpb24gcm4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLHIsaT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pcj0kZShlW25dKSxhW25dPXIucnx8MCxvW25dPXIuZ3x8MCxzW25dPXIuYnx8MDtyZXR1cm4gYT10KGEpLG89dChvKSxzPXQocyksci5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIHIucj1hKHQpLHIuZz1vKHQpLHIuYj1zKHQpLHIrIiJ9fX1ybigoZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLGk9dFtyXSxhPXRbcisxXSxvPXI+MD90W3ItMV06MippLWEscz1yPGUtMT90W3IrMl06MiphLWk7cmV0dXJuIEplKChuLXIvZSkqZSxvLGksYSxzKX19KSkscm4oKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSksaT10WyhyK2UtMSklZV0sYT10W3IlZV0sbz10WyhyKzEpJWVdLHM9dFsocisyKSVlXTtyZXR1cm4gSmUoKG4tci9lKSplLGksYSxvLHMpfX0pKTt2YXIgYW49L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLG9uPW5ldyBSZWdFeHAoYW4uc291cmNlLCJnIik7ZnVuY3Rpb24gc24odCxlKXt2YXIgbixyLGksYT1hbi5sYXN0SW5kZXg9b24ubGFzdEluZGV4PTAsbz0tMSxzPVtdLGM9W107Zm9yKHQrPSIiLGUrPSIiOyhuPWFuLmV4ZWModCkpJiYocj1vbi5leGVjKGUpKTspKGk9ci5pbmRleCk+YSYmKGk9ZS5zbGljZShhLGkpLHNbb10/c1tvXSs9aTpzWysrb109aSksKG49blswXSk9PT0ocj1yWzBdKT9zW29dP3Nbb10rPXI6c1srK29dPXI6KHNbKytvXT1udWxsLGMucHVzaCh7aTpvLHg6aGUobixyKX0pKSxhPW9uLmxhc3RJbmRleDtyZXR1cm4gYTxlLmxlbmd0aCYmKGk9ZS5zbGljZShhKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLHMubGVuZ3RoPDI/Y1swXT9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fShjWzBdLngpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0oZSk6KGU9Yy5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLHI9MDtyPGU7KytyKXNbKG49Y1tyXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gY24odCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP2hlOmUgaW5zdGFuY2VvZiBZZT9ubjoobj1ZZShlKSk/KGU9bixubik6c24pKHQsZSl9ZnVuY3Rpb24gdW4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGxuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gaG4odCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19ZnVuY3Rpb24gZm4odCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIGRuKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1jKyIiKT9udWxsOm89PT1yJiZzPT09aT9hOihpPXMsYT1lKHI9byxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHBuKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24geW4odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGduKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gbW4odCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZnbih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gdm4odCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZ5bih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gYm4odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtjZSh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gX24odCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2NlKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24geG4odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt1ZSh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gd24odCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3VlKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24ga24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dWUodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIFRuKHQsZSxuKXt2YXIgcixpLGE9ZnVuY3Rpb24odCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfShlKT9jZTp1ZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1hKHRoaXMsdCkscz1vLm9uO3MhPT1yJiYoaT0ocj1zKS5jb3B5KCkpLm9uKGUsbiksby5vbj1pfX12YXIgRW49QnQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIENuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIFNuKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLHIpLG4pfX1mdW5jdGlvbiBBbih0LGUsbil7dmFyIHIsaTtmdW5jdGlvbiBhKCl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYocj0oaT1hKSYmU24odCxhLG4pKSxyfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gTW4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIE5uKHQpe3ZhciBlLG47ZnVuY3Rpb24gcigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09biYmKGU9KG49cikmJk1uKHIpKSxlfXJldHVybiByLl92YWx1ZT10LHJ9dmFyIERuPTA7ZnVuY3Rpb24gT24odCxlLG4scil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1yfWZ1bmN0aW9uIEJuKCl7cmV0dXJuKytEbn12YXIgTG49QnQucHJvdG90eXBlO09uLnByb3RvdHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gQnQoKS50cmFuc2l0aW9uKHQpfS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOk9uLHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PV8odCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbylmb3IodmFyIHMsYyx1PXJbb10sbD11Lmxlbmd0aCxoPWFbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKShzPXVbZl0pJiYoYz10LmNhbGwocyxzLl9fZGF0YV9fLGYsdSkpJiYoIl9fZGF0YV9fImluIHMmJihjLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZl09YyxzZShoW2ZdLGUsbixmLGgsbGUocyxuKSkpO3JldHVybiBuZXcgT24oYSx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWsodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPVtdLG89W10scz0wO3M8aTsrK3MpZm9yKHZhciBjLHU9cltzXSxsPXUubGVuZ3RoLGg9MDtoPGw7KytoKWlmKGM9dVtoXSl7Zm9yKHZhciBmLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxoLHUpLHA9bGUoYyxuKSx5PTAsZz1kLmxlbmd0aDt5PGc7Kyt5KShmPWRbeV0pJiZzZShmLGUsbix5LGQscCk7YS5wdXNoKGQpLG8ucHVzaChjKX1yZXR1cm4gbmV3IE9uKGEsbyxlLG4pfSxzZWxlY3RDaGlsZDpMbi5zZWxlY3RDaGlsZCxzZWxlY3RDaGlsZHJlbjpMbi5zZWxlY3RDaGlsZHJlbixmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbz1lW2ldLHM9by5sZW5ndGgsYz1yW2ldPVtdLHU9MDt1PHM7Kyt1KShhPW9bdV0pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLHUsbykmJmMucHVzaChhKTtyZXR1cm4gbmV3IE9uKHIsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24odCl7aWYodC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxyPWUubGVuZ3RoLGk9bi5sZW5ndGgsYT1NYXRoLm1pbihyLGkpLG89bmV3IEFycmF5KHIpLHM9MDtzPGE7KytzKWZvcih2YXIgYyx1PWVbc10sbD1uW3NdLGg9dS5sZW5ndGgsZj1vW3NdPW5ldyBBcnJheShoKSxkPTA7ZDxoOysrZCkoYz11W2RdfHxsW2RdKSYmKGZbZF09Yyk7Zm9yKDtzPHI7KytzKW9bc109ZVtzXTtyZXR1cm4gbmV3IE9uKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBFbih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49Qm4oKSxyPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgbyxzPXJbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSlpZihvPXNbdV0pe3ZhciBsPWxlKG8sZSk7c2Uobyx0LG4sdSxzLHt0aW1lOmwudGltZStsLmRlbGF5K2wuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjpsLmR1cmF0aW9uLGVhc2U6bC5lYXNlfSl9cmV0dXJuIG5ldyBPbihyLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpMbi5jYWxsLG5vZGVzOkxuLm5vZGVzLG5vZGU6TG4ubm9kZSxzaXplOkxuLnNpemUsZW1wdHk6TG4uZW1wdHksZWFjaDpMbi5lYWNoLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9sZSh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goVG4obix0LGUpKX0sYXR0cjpmdW5jdGlvbih0LGUpe3ZhciBuPVkodCkscj0idHJhbnNmb3JtIj09PW4/dmU6Y247cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/cG46ZG4pKG4scix4ZSh0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD9sbjp1bikobik6KG4ubG9jYWw/Zm46aG4pKG4scixlKSl9LGF0dHJUd2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIHI9WSh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChyLmxvY2FsP21uOnZuKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP21lOmNuO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVEodGhpcyx0KSxvPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLFEodGhpcyx0KSk7cmV0dXJuIGE9PT1vP251bGw6YT09PW4mJm89PT1yP2k6aT1lKG49YSxyPW8pfX0odCxyKSkub24oImVuZC5zdHlsZS4iK3QsQ24odCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89USh0aGlzLHQpLHM9bih0aGlzKSxjPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9cz1RKHRoaXMsdCkpLG89PT1jP251bGw6bz09PXImJmM9PT1pP2E6KGk9YyxhPWUocj1vLHMpKX19KHQscix4ZSh0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpLGEsbz0ic3R5bGUuIitlLHM9ImVuZC4iK287cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9dWUodGhpcyx0KSx1PWMub24sbD1udWxsPT1jLnZhbHVlW29dP2F8fChhPUNuKGUpKTp2b2lkIDA7dT09PW4mJmk9PT1sfHwocj0obj11KS5jb3B5KCkpLm9uKHMsaT1sKSxjLm9uPXJ9fSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPVEodGhpcyx0KTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fSh0LHIsZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihyPXRoaXMudHdlZW4ocikpJiZyLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKHIsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKHIsQW4odCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0oeGUodGhpcywidGV4dCIsdCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KG51bGw9PXQ/IiI6dCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24odCl7dmFyIGU9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVsbD09dClyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihlLE5uKHQpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT10KXJldHVybjtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfX0odGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcixpPWxlKHRoaXMubm9kZSgpLG4pLnR3ZWVuLGE9MCxvPWkubGVuZ3RoO2E8bzsrK2EpaWYoKHI9aVthXSkubmFtZT09PXQpcmV0dXJuIHIudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9iZTpfZSkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9ibjpfbikoZSx0KSk6bGUodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eG46d24pKGUsdCkpOmxlKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChrbihlLHQpKTpsZSh0aGlzLm5vZGUoKSxlKS5lYXNlfSxlYXNlVmFyeWluZzpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjt1ZSh0aGlzLHQpLmVhc2U9bn19KHRoaXMuX2lkLHQpKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIHQsZSxuPXRoaXMscj1uLl9pZCxpPW4uc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oYSxvKXt2YXIgcz17dmFsdWU6b30sYz17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLWkmJmEoKX19O24uZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj11ZSh0aGlzLHIpLGk9bi5vbjtpIT09dCYmKChlPSh0PWkpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGMpKSxuLm9uPWV9KSksMD09PWkmJmEoKX0pKX0sW1N5bWJvbC5pdGVyYXRvcl06TG5bU3ltYm9sLml0ZXJhdG9yXX07dmFyIEluPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn19O2Z1bmN0aW9uIFJuKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpdGhyb3cgbmV3IEVycm9yKGB0cmFuc2l0aW9uICR7ZX0gbm90IGZvdW5kYCk7cmV0dXJuIG59QnQucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhPXQuX190cmFuc2l0aW9uLG89ITA7aWYoYSl7Zm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixhKShuPWFbaV0pLm5hbWU9PT1lPyhyPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgYVtpXSk6bz0hMTtvJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fSh0aGlzLHQpfSkpfSxCdC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBPbj8oZT10Ll9pZCx0PXQuX25hbWUpOihlPUJuKCksKG49SW4pLnRpbWU9UXQoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiZzZShvLHQsZSx1LHMsbnx8Um4obyxlKSk7cmV0dXJuIG5ldyBPbihyLHRoaXMuX3BhcmVudHMsdCxlKX07Y29uc3R7YWJzOkZuLG1heDpQbixtaW46am59PU1hdGg7ZnVuY3Rpb24gWW4odCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gem4odCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIFVuKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHFuKCl7fVsidyIsImUiXS5tYXAoWW4pLFsibiIsInMiXS5tYXAoWW4pLFsibiIsInciLCJlIiwicyIsIm53IiwibmUiLCJzdyIsInNlIl0ubWFwKFluKTt2YXIgJG49LjcsSG49MS8kbixXbj0iXFxzKihbKy1dP1xcZCspXFxzKiIsVm49IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsR249IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLFhuPS9eIyhbMC05YS1mXXszLDh9KSQvLFpuPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tXbixXbixXbl0rIlxcKSQiKSxRbj1uZXcgUmVnRXhwKCJecmdiXFwoIitbR24sR24sR25dKyJcXCkkIiksS249bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tXbixXbixXbixWbl0rIlxcKSQiKSxKbj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW0duLEduLEduLFZuXSsiXFwpJCIpLHRyPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tWbixHbixHbl0rIlxcKSQiKSxlcj1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW1ZuLEduLEduLFZuXSsiXFwpJCIpLG5yPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIHJyKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gaXIoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBhcih0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1Ybi5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP29yKGUpOjM9PT1uP25ldyBscihlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/c3IoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/c3IoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1abi5leGVjKHQpKT9uZXcgbHIoZVsxXSxlWzJdLGVbM10sMSk6KGU9UW4uZXhlYyh0KSk/bmV3IGxyKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPUtuLmV4ZWModCkpP3NyKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPUpuLmV4ZWModCkpP3NyKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXRyLmV4ZWModCkpP3ByKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9ZXIuZXhlYyh0KSk/cHIoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpuci5oYXNPd25Qcm9wZXJ0eSh0KT9vcihuclt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IGxyKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gb3IodCl7cmV0dXJuIG5ldyBscih0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gc3IodCxlLG4scil7cmV0dXJuIHI8PTAmJih0PWU9bj1OYU4pLG5ldyBscih0LGUsbixyKX1mdW5jdGlvbiBjcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHFufHwodD1hcih0KSksdD9uZXcgbHIoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IGxyfWZ1bmN0aW9uIHVyKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jcih0KTpuZXcgbHIodCxlLG4sbnVsbD09cj8xOnIpfWZ1bmN0aW9uIGxyKHQsZSxuLHIpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBocigpe3JldHVybiIjIitkcih0aGlzLnIpK2RyKHRoaXMuZykrZHIodGhpcy5iKX1mdW5jdGlvbiBmcigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIGRyKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24gcHIodCxlLG4scil7cmV0dXJuIHI8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBncih0LGUsbixyKX1mdW5jdGlvbiB5cih0KXtpZih0IGluc3RhbmNlb2YgZ3IpcmV0dXJuIG5ldyBncih0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBxbnx8KHQ9YXIodCkpLCF0KXJldHVybiBuZXcgZ3I7aWYodCBpbnN0YW5jZW9mIGdyKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxyPXQuYi8yNTUsaT1NYXRoLm1pbihlLG4sciksYT1NYXRoLm1heChlLG4sciksbz1OYU4scz1hLWksYz0oYStpKS8yO3JldHVybiBzPyhvPWU9PT1hPyhuLXIpL3MrNioobjxyKTpuPT09YT8oci1lKS9zKzI6KGUtbikvcys0LHMvPWM8LjU/YStpOjItYS1pLG8qPTYwKTpzPWM+MCYmYzwxPzA6byxuZXcgZ3IobyxzLGMsdC5vcGFjaXR5KX1mdW5jdGlvbiBncih0LGUsbixyKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gbXIodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfXpuKHFuLGFyLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OnJyLGZvcm1hdEhleDpycixmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4geXIodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjppcix0b1N0cmluZzppcn0pLHpuKGxyLHVyLFVuKHFuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0huOk1hdGgucG93KEhuLHQpLG5ldyBscih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8kbjpNYXRoLnBvdygkbix0KSxuZXcgbHIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpocixmb3JtYXRIZXg6aHIsZm9ybWF0UmdiOmZyLHRvU3RyaW5nOmZyfSkpLHpuKGdyLChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/eXIodCk6bmV3IGdyKHQsZSxuLG51bGw9PXI/MTpyKX0pLFVuKHFuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0huOk1hdGgucG93KEhuLHQpLG5ldyBncih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10PyRuOk1hdGgucG93KCRuLHQpLG5ldyBncih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxyPW4rKG48LjU/bjoxLW4pKmUsaT0yKm4tcjtyZXR1cm4gbmV3IGxyKG1yKHQ+PTI0MD90LTI0MDp0KzEyMCxpLHIpLG1yKHQsaSxyKSxtcih0PDEyMD90KzI0MDp0LTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO2NvbnN0IHZyPU1hdGguUEkvMTgwLGJyPTE4MC9NYXRoLlBJLF9yPS45NjQyMix4cj0uODI1MjEsd3I9NC8yOSxrcj02LzI5LFRyPTMqa3Iqa3I7ZnVuY3Rpb24gRXIodCl7aWYodCBpbnN0YW5jZW9mIENyKXJldHVybiBuZXcgQ3IodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgQnIpcmV0dXJuIExyKHQpO3QgaW5zdGFuY2VvZiBscnx8KHQ9Y3IodCkpO3ZhciBlLG4scj1Ocih0LnIpLGk9TnIodC5nKSxhPU5yKHQuYiksbz1TcigoLjIyMjUwNDUqcisuNzE2ODc4NippKy4wNjA2MTY5KmEpLzEpO3JldHVybiByPT09aSYmaT09PWE/ZT1uPW86KGU9U3IoKC40MzYwNzQ3KnIrLjM4NTA2NDkqaSsuMTQzMDgwNCphKS9fciksbj1TcigoLjAxMzkzMjIqcisuMDk3MTA0NSppKy43MTQxNzMzKmEpL3hyKSksbmV3IENyKDExNipvLTE2LDUwMCooZS1vKSwyMDAqKG8tbiksdC5vcGFjaXR5KX1mdW5jdGlvbiBDcih0LGUsbixyKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gU3IodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9Ucit3cn1mdW5jdGlvbiBBcih0KXtyZXR1cm4gdD5rcj90KnQqdDpUcioodC13cil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBOcih0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBEcih0KXtpZih0IGluc3RhbmNlb2YgQnIpcmV0dXJuIG5ldyBCcih0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBDcnx8KHQ9RXIodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyBCcihOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSpicjtyZXR1cm4gbmV3IEJyKGU8MD9lKzM2MDplLE1hdGguc3FydCh0LmEqdC5hK3QuYip0LmIpLHQubCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIE9yKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9Ecih0KTpuZXcgQnIodCxlLG4sbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEJyKHQsZSxuLHIpe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBMcih0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgQ3IodC5sLDAsMCx0Lm9wYWNpdHkpO3ZhciBlPXQuaCp2cjtyZXR1cm4gbmV3IENyKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9em4oQ3IsKGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9Fcih0KTpuZXcgQ3IodCxlLG4sbnVsbD09cj8xOnIpfSksVW4ocW4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQ3IodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBDcih0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgbHIoTXIoMy4xMzM4NTYxKihlPV9yKkFyKGUpKS0xLjYxNjg2NjcqKHQ9MSpBcih0KSktLjQ5MDYxNDYqKG49eHIqQXIobikpKSxNcigtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLE1yKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksem4oQnIsT3IsVW4ocW4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQnIodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCcih0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBMcih0aGlzKS5yZ2IoKX19KSk7Y29uc3QgSXI9dD0+KCk9PnQ7ZnVuY3Rpb24gUnIodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBGcih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9Scih0LG4pOklyKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24gUHIodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9dCgoZT1PcihlKSkuaCwobj1PcihuKSkuaCksaT1GcihlLmMsbi5jKSxhPUZyKGUubCxuLmwpLG89RnIoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9cih0KSxlLmM9aSh0KSxlLmw9YSh0KSxlLm9wYWNpdHk9byh0KSxlKyIifX19Y29uc3QganI9UHIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP1JyKHQsbj4xODB8fG48LTE4MD9uLTM2MCpNYXRoLnJvdW5kKG4vMzYwKTpuKTpJcihpc05hTih0KT9lOnQpfSkpO1ByKEZyKTt2YXIgWXI9TWF0aC5zcXJ0KDUwKSx6cj1NYXRoLnNxcnQoMTApLFVyPU1hdGguc3FydCgyKTtmdW5jdGlvbiBxcih0LGUsbil7dmFyIHI9KGUtdCkvTWF0aC5tYXgoMCxuKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKSxhPXIvTWF0aC5wb3coMTAsaSk7cmV0dXJuIGk+PTA/KGE+PVlyPzEwOmE+PXpyPzU6YT49VXI/MjoxKSpNYXRoLnBvdygxMCxpKTotTWF0aC5wb3coMTAsLWkpLyhhPj1Zcj8xMDphPj16cj81OmE+PVVyPzI6MSl9ZnVuY3Rpb24gJHIodCxlLG4pe3ZhciByPU1hdGguYWJzKGUtdCkvTWF0aC5tYXgoMCxuKSxpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKSksYT1yL2k7cmV0dXJuIGE+PVlyP2kqPTEwOmE+PXpyP2kqPTU6YT49VXImJihpKj0yKSxlPHQ/LWk6aX1mdW5jdGlvbiBIcih0LGUpe3JldHVybiBudWxsPT10fHxudWxsPT1lP05hTjp0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBXcih0KXtsZXQgZT10LG49dDtmdW5jdGlvbiByKHQsZSxyLGkpe2ZvcihudWxsPT1yJiYocj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7cjxpOyl7Y29uc3QgYT1yK2k+Pj4xO24odFthXSxlKTwwP3I9YSsxOmk9YX1yZXR1cm4gcn1yZXR1cm4gMT09PXQubGVuZ3RoJiYoZT0oZSxuKT0+dChlKS1uLG49ZnVuY3Rpb24odCl7cmV0dXJuKGUsbik9PkhyKHQoZSksbil9KHQpKSx7bGVmdDpyLGNlbnRlcjpmdW5jdGlvbih0LG4saSxhKXtudWxsPT1pJiYoaT0wKSxudWxsPT1hJiYoYT10Lmxlbmd0aCk7Y29uc3Qgbz1yKHQsbixpLGEtMSk7cmV0dXJuIG8+aSYmZSh0W28tMV0sbik+LWUodFtvXSxuKT9vLTE6b30scmlnaHQ6ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPXQubGVuZ3RoKTtyPGk7KXtjb25zdCBhPXIraT4+PjE7bih0W2FdLGUpPjA/aT1hOnI9YSsxfXJldHVybiByfX19Y29uc3QgVnI9V3IoSHIpLEdyPVZyLnJpZ2h0LFhyPShWci5sZWZ0LFdyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fSkpLmNlbnRlcixHcik7ZnVuY3Rpb24gWnIodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIFFyKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIEtyKCl7fXZhciBKcj0uNyx0aT0xLjQyODU3MTQyODU3MTQyODYsZWk9IlxccyooWystXT9cXGQrKVxccyoiLG5pPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLHJpPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixpaT0vXiMoWzAtOWEtZl17Myw4fSkkLyxhaT1uZXcgUmVnRXhwKCJecmdiXFwoIitbZWksZWksZWldKyJcXCkkIiksb2k9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3JpLHJpLHJpXSsiXFwpJCIpLHNpPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZWksZWksZWksbmldKyJcXCkkIiksY2k9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tyaSxyaSxyaSxuaV0rIlxcKSQiKSx1aT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbbmkscmkscmldKyJcXCkkIiksbGk9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tuaSxyaSxyaSxuaV0rIlxcKSQiKSxoaT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBmaSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIGRpKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gcGkodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9aWkuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj95aShlKTozPT09bj9uZXcgYmkoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP2dpKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP2dpKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9YWkuZXhlYyh0KSk/bmV3IGJpKGVbMV0sZVsyXSxlWzNdLDEpOihlPW9pLmV4ZWModCkpP25ldyBiaSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1zaS5leGVjKHQpKT9naShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1jaS5leGVjKHQpKT9naSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT11aS5leGVjKHQpKT9raShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPWxpLmV4ZWModCkpP2tpKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6aGkuaGFzT3duUHJvcGVydHkodCk/eWkoaGlbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBiaShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHlpKHQpe3JldHVybiBuZXcgYmkodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIGdpKHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgYmkodCxlLG4scil9ZnVuY3Rpb24gbWkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBLcnx8KHQ9cGkodCkpLHQ/bmV3IGJpKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBiaX1mdW5jdGlvbiB2aSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/bWkodCk6bmV3IGJpKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBiaSh0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gX2koKXtyZXR1cm4iIyIrd2kodGhpcy5yKSt3aSh0aGlzLmcpK3dpKHRoaXMuYil9ZnVuY3Rpb24geGkoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiB3aSh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGtpKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgRWkodCxlLG4scil9ZnVuY3Rpb24gVGkodCl7aWYodCBpbnN0YW5jZW9mIEVpKXJldHVybiBuZXcgRWkodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgS3J8fCh0PXBpKHQpKSwhdClyZXR1cm4gbmV3IEVpO2lmKHQgaW5zdGFuY2VvZiBFaSlyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IEVpKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gRWkodCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIENpKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBTaSh0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fVpyKEtyLHBpLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmZpLGZvcm1hdEhleDpmaSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4gVGkodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpkaSx0b1N0cmluZzpkaX0pLFpyKGJpLHZpLFFyKEtyLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P3RpOk1hdGgucG93KHRpLHQpLG5ldyBiaSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9KcjpNYXRoLnBvdyhKcix0KSxuZXcgYmkodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpfaSxmb3JtYXRIZXg6X2ksZm9ybWF0UmdiOnhpLHRvU3RyaW5nOnhpfSkpLFpyKEVpLChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VGkodCk6bmV3IEVpKHQsZSxuLG51bGw9PXI/MTpyKX0pLFFyKEtyLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P3RpOk1hdGgucG93KHRpLHQpLG5ldyBFaSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0pyOk1hdGgucG93KEpyLHQpLG5ldyBFaSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxyPW4rKG48LjU/bjoxLW4pKmUsaT0yKm4tcjtyZXR1cm4gbmV3IGJpKENpKHQ+PTI0MD90LTI0MDp0KzEyMCxpLHIpLENpKHQsaSxyKSxDaSh0PDEyMD90KzI0MDp0LTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO2NvbnN0IEFpPXQ9PigpPT50O2Z1bmN0aW9uIE1pKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KHQsbik6QWkoaXNOYU4odCk/ZTp0KX1jb25zdCBOaT1mdW5jdGlvbiB0KGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT0odD0rdCk/TWk6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnBvdyh0K3IqZSxuKX19KGUsbix0KTpBaShpc05hTihlKT9uOmUpfX0oZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciByPW4oKHQ9dmkodCkpLnIsKGU9dmkoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYiksbz1NaSh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1yKGUpLHQuZz1pKGUpLHQuYj1hKGUpLHQub3BhY2l0eT1vKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0oMSk7ZnVuY3Rpb24gRGkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLHIsaT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pcj12aShlW25dKSxhW25dPXIucnx8MCxvW25dPXIuZ3x8MCxzW25dPXIuYnx8MDtyZXR1cm4gYT10KGEpLG89dChvKSxzPXQocyksci5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIHIucj1hKHQpLHIuZz1vKHQpLHIuYj1zKHQpLHIrIiJ9fX1mdW5jdGlvbiBPaSh0LGUpe3ZhciBuLHI9ZT9lLmxlbmd0aDowLGk9dD9NYXRoLm1pbihyLHQubGVuZ3RoKTowLGE9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KHIpO2ZvcihuPTA7bjxpOysrbilhW25dPVlpKHRbbl0sZVtuXSk7Zm9yKDtuPHI7KytuKW9bbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPGk7KytuKW9bbl09YVtuXSh0KTtyZXR1cm4gb319ZnVuY3Rpb24gQmkodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKHIpe3JldHVybiBuLnNldFRpbWUodCooMS1yKStlKnIpLG59fWZ1bmN0aW9uIExpKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fWZ1bmN0aW9uIElpKHQsZSl7dmFyIG4scj17fSxpPXt9O2ZvcihuIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfHwoZT17fSksZSluIGluIHQ/cltuXT1ZaSh0W25dLGVbbl0pOmlbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gcilpW25dPXJbbl0odCk7cmV0dXJuIGl9fURpKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSksaT10W3JdLGE9dFtyKzFdLG89cj4wP3Rbci0xXToyKmktYSxzPXI8ZS0xP3RbcisyXToyKmEtaTtyZXR1cm4gU2koKG4tci9lKSplLG8saSxhLHMpfX0pKSxEaSgoZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKSxpPXRbKHIrZS0xKSVlXSxhPXRbciVlXSxvPXRbKHIrMSklZV0scz10WyhyKzIpJWVdO3JldHVybiBTaSgobi1yL2UpKmUsaSxhLG8scyl9fSkpO3ZhciBSaT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csRmk9bmV3IFJlZ0V4cChSaS5zb3VyY2UsImciKTtmdW5jdGlvbiBQaSh0LGUpe3ZhciBuLHIsaSxhPVJpLmxhc3RJbmRleD1GaS5sYXN0SW5kZXg9MCxvPS0xLHM9W10sYz1bXTtmb3IodCs9IiIsZSs9IiI7KG49UmkuZXhlYyh0KSkmJihyPUZpLmV4ZWMoZSkpOykoaT1yLmluZGV4KT5hJiYoaT1lLnNsaWNlKGEsaSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSwobj1uWzBdKT09PShyPXJbMF0pP3Nbb10/c1tvXSs9cjpzWysrb109cjooc1srK29dPW51bGwsYy5wdXNoKHtpOm8seDpMaShuLHIpfSkpLGE9RmkubGFzdEluZGV4O3JldHVybiBhPGUubGVuZ3RoJiYoaT1lLnNsaWNlKGEpLHNbb10/c1tvXSs9aTpzWysrb109aSkscy5sZW5ndGg8Mj9jWzBdP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KGNbMF0ueCk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fShlKTooZT1jLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4scj0wO3I8ZTsrK3Ipc1sobj1jW3JdKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBqaSh0LGUpe2V8fChlPVtdKTt2YXIgbixyPXQ/TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpOjAsaT1lLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKGEpe2ZvcihuPTA7bjxyOysrbilpW25dPXRbbl0qKDEtYSkrZVtuXSphO3JldHVybiBpfX1mdW5jdGlvbiBZaSh0LGUpe3ZhciBuLHIsaT10eXBlb2YgZTtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT09aT9BaShlKTooIm51bWJlciI9PT1pP0xpOiJzdHJpbmciPT09aT8obj1waShlKSk/KGU9bixOaSk6UGk6ZSBpbnN0YW5jZW9mIHBpP05pOmUgaW5zdGFuY2VvZiBEYXRlP0JpOihyPWUsIUFycmF5QnVmZmVyLmlzVmlldyhyKXx8ciBpbnN0YW5jZW9mIERhdGFWaWV3P0FycmF5LmlzQXJyYXkoZSk/T2k6ImZ1bmN0aW9uIiE9dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmd8fGlzTmFOKGUpP0lpOkxpOmppKSkodCxlKX1mdW5jdGlvbiB6aSh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQodCooMS1uKStlKm4pfX1mdW5jdGlvbiBVaSh0KXtyZXR1cm4rdH12YXIgcWk9WzAsMV07ZnVuY3Rpb24gJGkodCl7cmV0dXJuIHR9ZnVuY3Rpb24gSGkodCxlKXtyZXR1cm4oZS09dD0rdCk/ZnVuY3Rpb24obil7cmV0dXJuKG4tdCkvZX06KG49aXNOYU4oZSk/TmFOOi41LGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgbn1mdW5jdGlvbiBXaSh0LGUsbil7dmFyIHI9dFswXSxpPXRbMV0sYT1lWzBdLG89ZVsxXTtyZXR1cm4gaTxyPyhyPUhpKGksciksYT1uKG8sYSkpOihyPUhpKHIsaSksYT1uKGEsbykpLGZ1bmN0aW9uKHQpe3JldHVybiBhKHIodCkpfX1mdW5jdGlvbiBWaSh0LGUsbil7dmFyIHI9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz0tMTtmb3IodFtyXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytvPHI7KWlbb109SGkodFtvXSx0W28rMV0pLGFbb109bihlW29dLGVbbysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVhyKHQsZSwxLHIpLTE7cmV0dXJuIGFbbl0oaVtuXShlKSl9fWZ1bmN0aW9uIEdpKHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpLnVua25vd24odC51bmtub3duKCkpfWZ1bmN0aW9uIFhpKCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsZSxuLHIsaSxhLG89cWkscz1xaSxjPVlpLHU9JGk7ZnVuY3Rpb24gbCgpe3ZhciB0LGUsbixjPU1hdGgubWluKG8ubGVuZ3RoLHMubGVuZ3RoKTtyZXR1cm4gdSE9PSRpJiYodD1vWzBdLGU9b1tjLTFdLHQ+ZSYmKG49dCx0PWUsZT1uKSx1PWZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLm1heCh0LE1hdGgubWluKGUsbikpfSkscj1jPjI/Vmk6V2ksaT1hPW51bGwsaH1mdW5jdGlvbiBoKGUpe3JldHVybiBudWxsPT1lfHxpc05hTihlPStlKT9uOihpfHwoaT1yKG8ubWFwKHQpLHMsYykpKSh0KHUoZSkpKX1yZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIHUoZSgoYXx8KGE9cihzLG8ubWFwKHQpLExpKSkpKG4pKSl9LGguZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPUFycmF5LmZyb20odCxVaSksbCgpKTpvLnNsaWNlKCl9LGgucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9QXJyYXkuZnJvbSh0KSxsKCkpOnMuc2xpY2UoKX0saC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPUFycmF5LmZyb20odCksYz16aSxsKCl9LGguY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ISF0fHwkaSxsKCkpOnUhPT0kaX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LGwoKSk6Y30saC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaCk6bn0sZnVuY3Rpb24obixyKXtyZXR1cm4gdD1uLGU9cixsKCl9fSgpKCRpLCRpKX1mdW5jdGlvbiBaaSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc312YXIgUWksS2k9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7ZnVuY3Rpb24gSmkodCl7aWYoIShlPUtpLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGU7cmV0dXJuIG5ldyB0YSh7ZmlsbDplWzFdLGFsaWduOmVbMl0sc2lnbjplWzNdLHN5bWJvbDplWzRdLHplcm86ZVs1XSx3aWR0aDplWzZdLGNvbW1hOmVbN10scHJlY2lzaW9uOmVbOF0mJmVbOF0uc2xpY2UoMSksdHJpbTplWzldLHR5cGU6ZVsxMF19KX1mdW5jdGlvbiB0YSh0KXt0aGlzLmZpbGw9dm9pZCAwPT09dC5maWxsPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT10LmFsaWduPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT10LnNpZ24/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT10LnN5bWJvbD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT10LndpZHRoP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT10LnByZWNpc2lvbj92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dm9pZCAwPT09dC50eXBlPyIiOnQudHlwZSsiIn1mdW5jdGlvbiBlYSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixyPXQuc2xpY2UoMCxuKTtyZXR1cm5bci5sZW5ndGg+MT9yWzBdK3Iuc2xpY2UoMik6ciwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBuYSh0KXtyZXR1cm4odD1lYShNYXRoLmFicyh0KSkpP3RbMV06TmFOfWZ1bmN0aW9uIHJhKHQsZSl7dmFyIG49ZWEodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgcj1uWzBdLGk9blsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrcjpyLmxlbmd0aD5pKzE/ci5zbGljZSgwLGkrMSkrIi4iK3Iuc2xpY2UoaSsxKTpyK25ldyBBcnJheShpLXIubGVuZ3RoKzIpLmpvaW4oIjAiKX1KaS5wcm90b3R5cGU9dGEucHJvdG90eXBlLHRhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O2NvbnN0IGlhPXsiJSI6KHQsZSk9PigxMDAqdCkudG9GaXhlZChlKSxiOnQ9Pk1hdGgucm91bmQodCkudG9TdHJpbmcoMiksYzp0PT50KyIiLGQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOih0LGUpPT50LnRvRXhwb25lbnRpYWwoZSksZjoodCxlKT0+dC50b0ZpeGVkKGUpLGc6KHQsZSk9PnQudG9QcmVjaXNpb24oZSksbzp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpLHA6KHQsZSk9PnJhKDEwMCp0LGUpLHI6cmEsczpmdW5jdGlvbih0LGUpe3ZhciBuPWVhKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIHI9blswXSxpPW5bMV0sYT1pLShRaT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkpKzEsbz1yLmxlbmd0aDtyZXR1cm4gYT09PW8/cjphPm8/cituZXcgQXJyYXkoYS1vKzEpLmpvaW4oIjAiKTphPjA/ci5zbGljZSgwLGEpKyIuIityLnNsaWNlKGEpOiIwLiIrbmV3IEFycmF5KDEtYSkuam9pbigiMCIpK2VhKHQsTWF0aC5tYXgoMCxlK2EtMSkpWzBdfSxYOnQ9Pk1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkseDp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX07ZnVuY3Rpb24gYWEodCl7cmV0dXJuIHR9dmFyIG9hLHNhLGNhLHVhPUFycmF5LnByb3RvdHlwZS5tYXAsbGE9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIGhhKHQpe3ZhciBlPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuPWUoKTtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvLHM9LTE7aWYobj0rbiwodD0rdCk9PShlPStlKSYmbj4wKXJldHVyblt0XTtpZigocj1lPHQpJiYoaT10LHQ9ZSxlPWkpLDA9PT0obz1xcih0LGUsbikpfHwhaXNGaW5pdGUobykpcmV0dXJuW107aWYobz4wKXtsZXQgbj1NYXRoLnJvdW5kKHQvbykscj1NYXRoLnJvdW5kKGUvbyk7Zm9yKG4qbzx0JiYrK24scipvPmUmJi0tcixhPW5ldyBBcnJheShpPXItbisxKTsrK3M8aTspYVtzXT0obitzKSpvfWVsc2V7bz0tbztsZXQgbj1NYXRoLnJvdW5kKHQqbykscj1NYXRoLnJvdW5kKGUqbyk7Zm9yKG4vbzx0JiYrK24sci9vPmUmJi0tcixhPW5ldyBBcnJheShpPXItbisxKTsrK3M8aTspYVtzXT0obitzKS9vfXJldHVybiByJiZhLnJldmVyc2UoKSxhfShuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7dmFyIHI9ZSgpO3JldHVybiBmdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhPSRyKHQsZSxuKTtzd2l0Y2goKHI9SmkobnVsbD09cj8iLGYiOnIpKS50eXBlKXtjYXNlInMiOnZhciBvPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgoMCwzKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihuYShlKS8zKSkpLW5hKE1hdGguYWJzKHQpKSl9KGEsbykpfHwoci5wcmVjaXNpb249aSksY2EocixvKTtjYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjpudWxsIT1yLnByZWNpc2lvbnx8aXNOYU4oaT1mdW5jdGlvbih0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLG5hKGUpLW5hKHQpKSsxfShhLE1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSkpfHwoci5wcmVjaXNpb249aS0oImUiPT09ci50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPXIucHJlY2lzaW9ufHxpc05hTihpPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLC1uYShNYXRoLmFicyh0KSkpfShhKSl8fChyLnByZWNpc2lvbj1pLTIqKCIlIj09PXIudHlwZSkpfXJldHVybiBzYShyKX0oclswXSxyW3IubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCxuKX0sdC5uaWNlPWZ1bmN0aW9uKG4pe251bGw9PW4mJihuPTEwKTt2YXIgcixpLGE9ZSgpLG89MCxzPWEubGVuZ3RoLTEsYz1hW29dLHU9YVtzXSxsPTEwO2Zvcih1PGMmJihpPWMsYz11LHU9aSxpPW8sbz1zLHM9aSk7bC0tID4wOyl7aWYoKGk9cXIoYyx1LG4pKT09PXIpcmV0dXJuIGFbb109YyxhW3NdPXUsZShhKTtpZihpPjApYz1NYXRoLmZsb29yKGMvaSkqaSx1PU1hdGguY2VpbCh1L2kpKmk7ZWxzZXtpZighKGk8MCkpYnJlYWs7Yz1NYXRoLmNlaWwoYyppKS9pLHU9TWF0aC5mbG9vcih1KmkpL2l9cj1pfXJldHVybiB0fSx0fWZ1bmN0aW9uIGZhKCl7dmFyIHQ9WGkoKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEdpKHQsZmEoKSl9LFppLmFwcGx5KHQsYXJndW1lbnRzKSxoYSh0KX1vYT1mdW5jdGlvbih0KXt2YXIgZSxuLHI9dm9pZCAwPT09dC5ncm91cGluZ3x8dm9pZCAwPT09dC50aG91c2FuZHM/YWE6KGU9dWEuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksbj10LnRob3VzYW5kcysiIixmdW5jdGlvbih0LHIpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLG89MCxzPWVbMF0sYz0wO2k+MCYmcz4wJiYoYytzKzE+ciYmKHM9TWF0aC5tYXgoMSxyLWMpKSxhLnB1c2godC5zdWJzdHJpbmcoaS09cyxpK3MpKSwhKChjKz1zKzEpPnIpKTspcz1lW289KG8rMSklZS5sZW5ndGhdO3JldHVybiBhLnJldmVyc2UoKS5qb2luKG4pfSksaT12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMF0rIiIsYT12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMV0rIiIsbz12b2lkIDA9PT10LmRlY2ltYWw/Ii4iOnQuZGVjaW1hbCsiIixzPXZvaWQgMD09PXQubnVtZXJhbHM/YWE6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KHVhLmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxjPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLHU9dm9pZCAwPT09dC5taW51cz8i4oiSIjp0Lm1pbnVzKyIiLGw9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gaCh0KXt2YXIgZT0odD1KaSh0KSkuZmlsbCxuPXQuYWxpZ24saD10LnNpZ24sZj10LnN5bWJvbCxkPXQuemVybyxwPXQud2lkdGgseT10LmNvbW1hLGc9dC5wcmVjaXNpb24sbT10LnRyaW0sdj10LnR5cGU7Im4iPT09dj8oeT0hMCx2PSJnIik6aWFbdl18fCh2b2lkIDA9PT1nJiYoZz0xMiksbT0hMCx2PSJnIiksKGR8fCIwIj09PWUmJiI9Ij09PW4pJiYoZD0hMCxlPSIwIixuPSI9Iik7dmFyIGI9IiQiPT09Zj9pOiIjIj09PWYmJi9bYm94WF0vLnRlc3Qodik/IjAiK3YudG9Mb3dlckNhc2UoKToiIixfPSIkIj09PWY/YTovWyVwXS8udGVzdCh2KT9jOiIiLHg9aWFbdl0sdz0vW2RlZmdwcnMlXS8udGVzdCh2KTtmdW5jdGlvbiBrKHQpe3ZhciBpLGEsYyxmPWIsaz1fO2lmKCJjIj09PXYpaz14KHQpK2ssdD0iIjtlbHNle3ZhciBUPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP2w6eChNYXRoLmFicyh0KSxnKSxtJiYodD1mdW5jdGlvbih0KXt0OmZvcih2YXIgZSxuPXQubGVuZ3RoLHI9MSxpPS0xO3I8bjsrK3Ipc3dpdGNoKHRbcl0pe2Nhc2UiLiI6aT1lPXI7YnJlYWs7Y2FzZSIwIjowPT09aSYmKGk9ciksZT1yO2JyZWFrO2RlZmF1bHQ6aWYoISt0W3JdKWJyZWFrIHQ7aT4wJiYoaT0wKX1yZXR1cm4gaT4wP3Quc2xpY2UoMCxpKSt0LnNsaWNlKGUrMSk6dH0odCkpLFQmJjA9PSt0JiYiKyIhPT1oJiYoVD0hMSksZj0oVD8iKCI9PT1oP2g6dToiLSI9PT1ofHwiKCI9PT1oPyIiOmgpK2Ysaz0oInMiPT09dj9sYVs4K1FpLzNdOiIiKStrKyhUJiYiKCI9PT1oPyIpIjoiIiksdylmb3IoaT0tMSxhPXQubGVuZ3RoOysraTxhOylpZig0OD4oYz10LmNoYXJDb2RlQXQoaSkpfHxjPjU3KXtrPSg0Nj09PWM/byt0LnNsaWNlKGkrMSk6dC5zbGljZShpKSkrayx0PXQuc2xpY2UoMCxpKTticmVha319eSYmIWQmJih0PXIodCwxLzApKTt2YXIgRT1mLmxlbmd0aCt0Lmxlbmd0aCtrLmxlbmd0aCxDPUU8cD9uZXcgQXJyYXkocC1FKzEpLmpvaW4oZSk6IiI7c3dpdGNoKHkmJmQmJih0PXIoQyt0LEMubGVuZ3RoP3Atay5sZW5ndGg6MS8wKSxDPSIiKSxuKXtjYXNlIjwiOnQ9Zit0K2srQzticmVhaztjYXNlIj0iOnQ9ZitDK3QrazticmVhaztjYXNlIl4iOnQ9Qy5zbGljZSgwLEU9Qy5sZW5ndGg+PjEpK2YrdCtrK0Muc2xpY2UoRSk7YnJlYWs7ZGVmYXVsdDp0PUMrZit0K2t9cmV0dXJuIHModCl9cmV0dXJuIGc9dm9pZCAwPT09Zz82Oi9bZ3Byc10vLnRlc3Qodik/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxnKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxnKSksay50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSxrfXJldHVybntmb3JtYXQ6aCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24odCxlKXt2YXIgbj1oKCgodD1KaSh0KSkudHlwZT0iZiIsdCkpLHI9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IobmEoZSkvMykpKSxpPU1hdGgucG93KDEwLC1yKSxhPWxhWzgrci8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4oaSp0KSthfX19fSh7dGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KSxzYT1vYS5mb3JtYXQsY2E9b2EuZm9ybWF0UHJlZml4O2NsYXNzIGRhIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKHQsZT15YSl7aWYoc3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtfaW50ZXJuOnt2YWx1ZTpuZXcgTWFwfSxfa2V5Ont2YWx1ZTplfX0pLG51bGwhPXQpZm9yKGNvbnN0W2Usbl1vZiB0KXRoaXMuc2V0KGUsbil9Z2V0KHQpe3JldHVybiBzdXBlci5nZXQocGEodGhpcyx0KSl9aGFzKHQpe3JldHVybiBzdXBlci5oYXMocGEodGhpcyx0KSl9c2V0KHQsZSl7cmV0dXJuIHN1cGVyLnNldChmdW5jdGlvbih7X2ludGVybjp0LF9rZXk6ZX0sbil7Y29uc3Qgcj1lKG4pO3JldHVybiB0LmhhcyhyKT90LmdldChyKToodC5zZXQocixuKSxuKX0odGhpcyx0KSxlKX1kZWxldGUodCl7cmV0dXJuIHN1cGVyLmRlbGV0ZShmdW5jdGlvbih7X2ludGVybjp0LF9rZXk6ZX0sbil7Y29uc3Qgcj1lKG4pO3JldHVybiB0LmhhcyhyKSYmKG49dC5nZXQobiksdC5kZWxldGUocikpLG59KHRoaXMsdCkpfX1mdW5jdGlvbiBwYSh7X2ludGVybjp0LF9rZXk6ZX0sbil7Y29uc3Qgcj1lKG4pO3JldHVybiB0LmhhcyhyKT90LmdldChyKTpufWZ1bmN0aW9uIHlhKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0P3QudmFsdWVPZigpOnR9U2V0O2NvbnN0IGdhPVN5bWJvbCgiaW1wbGljaXQiKTtmdW5jdGlvbiBtYSgpe3ZhciB0PW5ldyBkYSxlPVtdLG49W10scj1nYTtmdW5jdGlvbiBpKGkpe2xldCBhPXQuZ2V0KGkpO2lmKHZvaWQgMD09PWEpe2lmKHIhPT1nYSlyZXR1cm4gcjt0LnNldChpLGE9ZS5wdXNoKGkpLTEpfXJldHVybiBuW2Elbi5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W10sdD1uZXcgZGE7Zm9yKGNvbnN0IHIgb2Ygbil0LmhhcyhyKXx8dC5zZXQocixlLnB1c2gociktMSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49QXJyYXkuZnJvbSh0KSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBtYShlLG4pLnVua25vd24ocil9LFppLmFwcGx5KGksYXJndW1lbnRzKSxpfWNvbnN0IHZhPTFlMyxiYT02ZTQsX2E9MzZlNSx4YT04NjRlNSx3YT02MDQ4ZTUsa2E9MzE1MzZlNjt2YXIgVGE9bmV3IERhdGUsRWE9bmV3IERhdGU7ZnVuY3Rpb24gQ2EodCxlLG4scil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0saS5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1pKHQpLG49aS5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0saS5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0saS5yYW5nZT1mdW5jdGlvbihuLHIsYSl7dmFyIG8scz1bXTtpZihuPWkuY2VpbChuKSxhPW51bGw9PWE/MTpNYXRoLmZsb29yKGEpLCEobjxyJiZhPjApKXJldHVybiBzO2Rve3MucHVzaChvPW5ldyBEYXRlKCtuKSksZShuLGEpLHQobil9d2hpbGUobzxuJiZuPHIpO3JldHVybiBzfSxpLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gQ2EoKGZ1bmN0aW9uKGUpe2lmKGU+PWUpZm9yKDt0KGUpLCFuKGUpOyllLnNldFRpbWUoZS0xKX0pLChmdW5jdGlvbih0LHIpe2lmKHQ+PXQpaWYocjwwKWZvcig7KytyPD0wOylmb3IoO2UodCwtMSksIW4odCk7KTtlbHNlIGZvcig7LS1yPj0wOylmb3IoO2UodCwxKSwhbih0KTspO30pKX0sbiYmKGkuY291bnQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gVGEuc2V0VGltZSgrZSksRWEuc2V0VGltZSgrciksdChUYSksdChFYSksTWF0aC5mbG9vcihuKFRhLEVhKSl9LGkuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9pLmZpbHRlcihyP2Z1bmN0aW9uKGUpe3JldHVybiByKGUpJXQ9PTB9OmZ1bmN0aW9uKGUpe3JldHVybiBpLmNvdW50KDAsZSkldD09MH0pOmk6bnVsbH0pLGl9dmFyIFNhPUNhKChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7U2EuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9DYSgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpTYTpudWxsfTtjb25zdCBBYT1TYTtTYS5yYW5nZTt2YXIgTWE9Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCkpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdmEpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdmF9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSkpO2NvbnN0IE5hPU1hO01hLnJhbmdlO3ZhciBEYT1DYSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSp2YSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpiYSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9iYX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSk7Y29uc3QgT2E9RGE7RGEucmFuZ2U7dmFyIEJhPUNhKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKnZhLXQuZ2V0TWludXRlcygpKmJhKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKl9hKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL19hfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSk7Y29uc3QgTGE9QmE7QmEucmFuZ2U7dmFyIElhPUNhKCh0PT50LnNldEhvdXJzKDAsMCwwLDApKSwoKHQsZSk9PnQuc2V0RGF0ZSh0LmdldERhdGUoKStlKSksKCh0LGUpPT4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpiYSkveGEpLCh0PT50LmdldERhdGUoKS0xKSk7Y29uc3QgUmE9SWE7ZnVuY3Rpb24gRmEodCl7cmV0dXJuIENhKChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpiYSkvd2F9KSl9SWEucmFuZ2U7dmFyIFBhPUZhKDApLGphPUZhKDEpLFlhPUZhKDIpLHphPUZhKDMpLFVhPUZhKDQpLHFhPUZhKDUpLCRhPUZhKDYpLEhhPShQYS5yYW5nZSxqYS5yYW5nZSxZYS5yYW5nZSx6YS5yYW5nZSxVYS5yYW5nZSxxYS5yYW5nZSwkYS5yYW5nZSxDYSgoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpKTtjb25zdCBXYT1IYTtIYS5yYW5nZTt2YXIgVmE9Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO1ZhLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/Q2EoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IEdhPVZhO1ZhLnJhbmdlO3ZhciBYYT1DYSgoZnVuY3Rpb24odCl7dC5zZXRVVENTZWNvbmRzKDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpiYSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9iYX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSk7Y29uc3QgWmE9WGE7WGEucmFuZ2U7dmFyIFFhPUNhKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqX2EpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvX2F9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKTtjb25zdCBLYT1RYTtRYS5yYW5nZTt2YXIgSmE9Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS94YX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKTtjb25zdCB0bz1KYTtmdW5jdGlvbiBlbyh0KXtyZXR1cm4gQ2EoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3dhfSkpfUphLnJhbmdlO3ZhciBubz1lbygwKSxybz1lbygxKSxpbz1lbygyKSxhbz1lbygzKSxvbz1lbyg0KSxzbz1lbyg1KSxjbz1lbyg2KSx1bz0obm8ucmFuZ2Uscm8ucmFuZ2UsaW8ucmFuZ2UsYW8ucmFuZ2Usb28ucmFuZ2Usc28ucmFuZ2UsY28ucmFuZ2UsQ2EoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSk7Y29uc3QgbG89dW87dW8ucmFuZ2U7dmFyIGhvPUNhKChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtoby5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0NhKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTtjb25zdCBmbz1obztmdW5jdGlvbiBwbyh0LGUsbixyLGksYSl7Y29uc3Qgbz1bW05hLDEsdmFdLFtOYSw1LDVlM10sW05hLDE1LDE1ZTNdLFtOYSwzMCwzZTRdLFthLDEsYmFdLFthLDUsM2U1XSxbYSwxNSw5ZTVdLFthLDMwLDE4ZTVdLFtpLDEsX2FdLFtpLDMsMTA4ZTVdLFtpLDYsMjE2ZTVdLFtpLDEyLDQzMmU1XSxbciwxLHhhXSxbciwyLDE3MjhlNV0sW24sMSx3YV0sW2UsMSwyNTkyZTZdLFtlLDMsNzc3NmU2XSxbdCwxLGthXV07ZnVuY3Rpb24gcyhlLG4scil7Y29uc3QgaT1NYXRoLmFicyhuLWUpL3IsYT1XcigoKFssLHRdKT0+dCkpLnJpZ2h0KG8saSk7aWYoYT09PW8ubGVuZ3RoKXJldHVybiB0LmV2ZXJ5KCRyKGUva2Esbi9rYSxyKSk7aWYoMD09PWEpcmV0dXJuIEFhLmV2ZXJ5KE1hdGgubWF4KCRyKGUsbixyKSwxKSk7Y29uc3RbcyxjXT1vW2kvb1thLTFdWzJdPG9bYV1bMl0vaT9hLTE6YV07cmV0dXJuIHMuZXZlcnkoYyl9cmV0dXJuW2Z1bmN0aW9uKHQsZSxuKXtjb25zdCByPWU8dDtyJiYoW3QsZV09W2UsdF0pO2NvbnN0IGk9biYmImZ1bmN0aW9uIj09dHlwZW9mIG4ucmFuZ2U/bjpzKHQsZSxuKSxhPWk/aS5yYW5nZSh0LCtlKzEpOltdO3JldHVybiByP2EucmV2ZXJzZSgpOmF9LHNdfWhvLnJhbmdlO2NvbnN0W3lvLGdvXT1wbyhmbyxsbyxubyx0byxLYSxaYSksW21vLHZvXT1wbyhHYSxXYSxQYSxSYSxMYSxPYSk7ZnVuY3Rpb24gYm8odCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIF9vKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIHhvKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX12YXIgd28sa28sVG89eyItIjoiIixfOiIgIiwwOiIwIn0sRW89L15ccypcZCsvLENvPS9eJS8sU289L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIEFvKHQsZSxuKXt2YXIgcj10PDA/Ii0iOiIiLGk9KHI/LXQ6dCkrIiIsYT1pLmxlbmd0aDtyZXR1cm4gcisoYTxuP25ldyBBcnJheShuLWErMSkuam9pbihlKStpOmkpfWZ1bmN0aW9uIE1vKHQpe3JldHVybiB0LnJlcGxhY2UoU28sIlxcJCYiKX1mdW5jdGlvbiBObyh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoTW8pLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBEbyh0KXtyZXR1cm4gbmV3IE1hcCh0Lm1hcCgoKHQsZSk9Plt0LnRvTG93ZXJDYXNlKCksZV0pKSl9ZnVuY3Rpb24gT28odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQm8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0LnU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTG8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSW8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlY9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUm8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Llc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRm8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiByPyh0Lnk9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUG8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqbyh0LGUsbil7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFlvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC5xPTMqclswXS0zLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHpvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBxbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiAkbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBIbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBWbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KHQuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBYbyh0LGUsbil7dmFyIHI9Q28uZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/bityWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBabyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5RPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFFvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LnM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS28odCxlKXtyZXR1cm4gQW8odC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBKbyh0LGUpe3JldHVybiBBbyh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiB0cyh0LGUpe3JldHVybiBBbyh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gZXModCxlKXtyZXR1cm4gQW8oMStSYS5jb3VudChHYSh0KSx0KSxlLDMpfWZ1bmN0aW9uIG5zKHQsZSl7cmV0dXJuIEFvKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBycyh0LGUpe3JldHVybiBucyh0LGUpKyIwMDAifWZ1bmN0aW9uIGlzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gYXModCxlKXtyZXR1cm4gQW8odC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBvcyh0LGUpe3JldHVybiBBbyh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIHNzKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBjcyh0LGUpe3JldHVybiBBbyhQYS5jb3VudChHYSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gdXModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/VWEodCk6VWEuY2VpbCh0KX1mdW5jdGlvbiBscyh0LGUpe3JldHVybiB0PXVzKHQpLEFvKFVhLmNvdW50KEdhKHQpLHQpKyg0PT09R2EodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gaHModCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gZnModCxlKXtyZXR1cm4gQW8oamEuY291bnQoR2EodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGRzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBwcyh0LGUpe3JldHVybiBBbygodD11cyh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB5cyh0LGUpe3JldHVybiBBbyh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZ3ModCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiBBbygodD1uPj00fHwwPT09bj9VYSh0KTpVYS5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIG1zKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrQW8oZS82MHwwLCIwIiwyKStBbyhlJTYwLCIwIiwyKX1mdW5jdGlvbiB2cyh0LGUpe3JldHVybiBBbyh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIGJzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIF9zKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiB4cyh0LGUpe3JldHVybiBBbygxK3RvLmNvdW50KGZvKHQpLHQpLGUsMyl9ZnVuY3Rpb24gd3ModCxlKXtyZXR1cm4gQW8odC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIGtzKHQsZSl7cmV0dXJuIHdzKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gVHModCxlKXtyZXR1cm4gQW8odC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBFcyh0LGUpe3JldHVybiBBbyh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIENzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gU3ModCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIEFzKHQsZSl7cmV0dXJuIEFvKG5vLmNvdW50KGZvKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBNcyh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9vbyh0KTpvby5jZWlsKHQpfWZ1bmN0aW9uIE5zKHQsZSl7cmV0dXJuIHQ9TXModCksQW8ob28uY291bnQoZm8odCksdCkrKDQ9PT1mbyh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBEcyh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBPcyh0LGUpe3JldHVybiBBbyhyby5jb3VudChmbyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gQnModCxlKXtyZXR1cm4gQW8odC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIExzKHQsZSl7cmV0dXJuIEFvKCh0PU1zKHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIElzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBScyh0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIEFvKCh0PW4+PTR8fDA9PT1uP29vKHQpOm9vLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gRnMoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIFBzKCl7cmV0dXJuIiUifWZ1bmN0aW9uIGpzKHQpe3JldHVybit0fWZ1bmN0aW9uIFlzKHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9ZnVuY3Rpb24genModCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIFVzKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIHFzKHQsZSxuLHIsaSxhLG8scyxjLHUpe3ZhciBsPVhpKCksaD1sLmludmVydCxmPWwuZG9tYWluLGQ9dSgiLiVMIikscD11KCI6JVMiKSx5PXUoIiVJOiVNIiksZz11KCIlSSAlcCIpLG09dSgiJWEgJWQiKSx2PXUoIiViICVkIiksYj11KCIlQiIpLF89dSgiJVkiKTtmdW5jdGlvbiB4KHQpe3JldHVybihjKHQpPHQ/ZDpzKHQpPHQ/cDpvKHQpPHQ/eTphKHQpPHQ/ZzpyKHQpPHQ/aSh0KTx0P206djpuKHQpPHQ/YjpfKSh0KX1yZXR1cm4gbC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKGgodCkpfSxsLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9mKEFycmF5LmZyb20odCxVcykpOmYoKS5tYXAoenMpfSxsLnRpY2tzPWZ1bmN0aW9uKGUpe3ZhciBuPWYoKTtyZXR1cm4gdChuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09ZT8xMDplKX0sbC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/eDp1KGUpfSxsLm5pY2U9ZnVuY3Rpb24odCl7dmFyIG49ZigpO3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yYW5nZXx8KHQ9ZShuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KSksdD9mKGZ1bmN0aW9uKHQsZSl7dmFyIG4scj0wLGk9KHQ9dC5zbGljZSgpKS5sZW5ndGgtMSxhPXRbcl0sbz10W2ldO3JldHVybiBvPGEmJihuPXIscj1pLGk9bixuPWEsYT1vLG89biksdFtyXT1lLmZsb29yKGEpLHRbaV09ZS5jZWlsKG8pLHR9KG4sdCkpOmx9LGwuY29weT1mdW5jdGlvbigpe3JldHVybiBHaShsLHFzKHQsZSxuLHIsaSxhLG8scyxjLHUpKX0sbH1mdW5jdGlvbiAkcygpe31mdW5jdGlvbiBIcyh0KXtyZXR1cm4gbnVsbD09dD8kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIFdzKHQpe3JldHVybiBudWxsPT10P1tdOkFycmF5LmlzQXJyYXkodCk/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIFZzKCl7cmV0dXJuW119ZnVuY3Rpb24gR3ModCl7cmV0dXJuIG51bGw9PXQ/VnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBYcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBacyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2hlcyh0KX19d289ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxyPXQudGltZSxpPXQucGVyaW9kcyxhPXQuZGF5cyxvPXQuc2hvcnREYXlzLHM9dC5tb250aHMsYz10LnNob3J0TW9udGhzLHU9Tm8oaSksbD1EbyhpKSxoPU5vKGEpLGY9RG8oYSksZD1ObyhvKSxwPURvKG8pLHk9Tm8ocyksZz1EbyhzKSxtPU5vKGMpLHY9RG8oYyksYj17YTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldERheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiBzW3QuZ2V0TW9udGgoKV19LGM6bnVsbCxkOktvLGU6S28sZjpycyxnOnBzLEc6Z3MsSDpKbyxJOnRzLGo6ZXMsTDpucyxtOmlzLE06YXMscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6anMsczpZcyxTOm9zLHU6c3MsVTpjcyxWOmxzLHc6aHMsVzpmcyx4Om51bGwsWDpudWxsLHk6ZHMsWTp5cyxaOm1zLCIlIjpQc30sXz17YTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiBzW3QuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOnZzLGU6dnMsZjprcyxnOkxzLEc6UnMsSDpicyxJOl9zLGo6eHMsTDp3cyxtOlRzLE06RXMscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6anMsczpZcyxTOkNzLHU6U3MsVTpBcyxWOk5zLHc6RHMsVzpPcyx4Om51bGwsWDpudWxsLHk6QnMsWTpJcyxaOkZzLCIlIjpQc30seD17YTpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9cC5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LGUsbil7dmFyIHI9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9Zi5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lm09di5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lm09Zy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LG4scil7cmV0dXJuIFQodCxlLG4scil9LGQ6VW8sZTpVbyxmOkdvLGc6UG8sRzpGbyxIOiRvLEk6JG8sajpxbyxMOlZvLG06em8sTTpIbyxwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj11LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQucD1sLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxxOllvLFE6Wm8sczpRbyxTOldvLHU6Qm8sVTpMbyxWOklvLHc6T28sVzpSbyx4OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gVCh0LG4sZSxyKX0sWDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIFQodCxyLGUsbil9LHk6UG8sWTpGbyxaOmpvLCIlIjpYb307ZnVuY3Rpb24gdyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixpLGEsbz1bXSxzPS0xLGM9MCx1PXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8dTspMzc9PT10LmNoYXJDb2RlQXQocykmJihvLnB1c2godC5zbGljZShjLHMpKSxudWxsIT0oaT1Ub1tyPXQuY2hhckF0KCsrcyldKT9yPXQuY2hhckF0KCsrcyk6aT0iZSI9PT1yPyIgIjoiMCIsKGE9ZVtyXSkmJihyPWEobixpKSksby5wdXNoKHIpLGM9cysxKTtyZXR1cm4gby5wdXNoKHQuc2xpY2UoYyxzKSksby5qb2luKCIiKX19ZnVuY3Rpb24gayh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixpLGE9eG8oMTkwMCx2b2lkIDAsMSk7aWYoVChhLHQsbis9IiIsMCkhPW4ubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIGEpcmV0dXJuIG5ldyBEYXRlKGEuUSk7aWYoInMiaW4gYSlyZXR1cm4gbmV3IERhdGUoMWUzKmEucysoIkwiaW4gYT9hLkw6MCkpO2lmKGUmJiEoIloiaW4gYSkmJihhLlo9MCksInAiaW4gYSYmKGEuSD1hLkglMTIrMTIqYS5wKSx2b2lkIDA9PT1hLm0mJihhLm09InEiaW4gYT9hLnE6MCksIlYiaW4gYSl7aWYoYS5WPDF8fGEuVj41MylyZXR1cm4gbnVsbDsidyJpbiBhfHwoYS53PTEpLCJaImluIGE/KGk9KHI9X28oeG8oYS55LDAsMSkpKS5nZXRVVENEYXkoKSxyPWk+NHx8MD09PWk/cm8uY2VpbChyKTpybyhyKSxyPXRvLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0VVRDRnVsbFllYXIoKSxhLm09ci5nZXRVVENNb250aCgpLGEuZD1yLmdldFVUQ0RhdGUoKSsoYS53KzYpJTcpOihpPShyPWJvKHhvKGEueSwwLDEpKSkuZ2V0RGF5KCkscj1pPjR8fDA9PT1pP2phLmNlaWwocik6amEocikscj1SYS5vZmZzZXQociw3KihhLlYtMSkpLGEueT1yLmdldEZ1bGxZZWFyKCksYS5tPXIuZ2V0TW9udGgoKSxhLmQ9ci5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/X28oeG8oYS55LDAsMSkpLmdldFVUQ0RheSgpOmJvKHhvKGEueSwwLDEpKS5nZXREYXkoKSxhLm09MCxhLmQ9IlciaW4gYT8oYS53KzYpJTcrNyphLlctKGkrNSklNzphLncrNyphLlUtKGkrNiklNyk7cmV0dXJuIloiaW4gYT8oYS5IKz1hLlovMTAwfDAsYS5NKz1hLlolMTAwLF9vKGEpKTpibyhhKX19ZnVuY3Rpb24gVCh0LGUsbixyKXtmb3IodmFyIGksYSxvPTAscz1lLmxlbmd0aCxjPW4ubGVuZ3RoO288czspe2lmKHI+PWMpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQobysrKSkpe2lmKGk9ZS5jaGFyQXQobysrKSwhKGE9eFtpIGluIFRvP2UuY2hhckF0KG8rKyk6aV0pfHwocj1hKHQsbixyKSk8MClyZXR1cm4tMX1lbHNlIGlmKGkhPW4uY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfXJldHVybiBiLng9dyhuLGIpLGIuWD13KHIsYiksYi5jPXcoZSxiKSxfLng9dyhuLF8pLF8uWD13KHIsXyksXy5jPXcoZSxfKSx7Zm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPXcodCs9IiIsYik7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9ayh0Kz0iIiwhMSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPXcodCs9IiIsXyk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9ayh0Kz0iIiwhMCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pLGtvPXdvLmZvcm1hdCx3by5wYXJzZSx3by51dGNGb3JtYXQsd28udXRjUGFyc2U7dmFyIFFzPUFycmF5LnByb3RvdHlwZS5maW5kO2Z1bmN0aW9uIEtzKCl7cmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGR9dmFyIEpzPUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gdGMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKX1mdW5jdGlvbiBlYyh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBuYyh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiByYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gaWModCxlLG4scixpLGEpe2Zvcih2YXIgbyxzPTAsYz1lLmxlbmd0aCx1PWEubGVuZ3RoO3M8dTsrK3MpKG89ZVtzXSk/KG8uX19kYXRhX189YVtzXSxyW3NdPW8pOm5bc109bmV3IG5jKHQsYVtzXSk7Zm9yKDtzPGM7KytzKShvPWVbc10pJiYoaVtzXT1vKX1mdW5jdGlvbiBhYyh0LGUsbixyLGksYSxvKXt2YXIgcyxjLHUsbD1uZXcgTWFwLGg9ZS5sZW5ndGgsZj1hLmxlbmd0aCxkPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGM9ZVtzXSkmJihkW3NdPXU9by5jYWxsKGMsYy5fX2RhdGFfXyxzLGUpKyIiLGwuaGFzKHUpP2lbc109YzpsLnNldCh1LGMpKTtmb3Iocz0wO3M8ZjsrK3MpdT1vLmNhbGwodCxhW3NdLHMsYSkrIiIsKGM9bC5nZXQodSkpPyhyW3NdPWMsYy5fX2RhdGFfXz1hW3NdLGwuZGVsZXRlKHUpKTpuW3NdPW5ldyBuYyh0LGFbc10pO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmbC5nZXQoZFtzXSk9PT1jJiYoaVtzXT1jKX1mdW5jdGlvbiBvYyh0KXtyZXR1cm4gdC5fX2RhdGFfX31mdW5jdGlvbiBzYyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJsZW5ndGgiaW4gdD90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gY2ModCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59bmMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuYyxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTt2YXIgdWM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IGxjPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDp1Yyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIGhjKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGxjLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpsY1tlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIGZjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBkYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24geWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gZ2ModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIG1jKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIHZjKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBiYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBfYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIHhjKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsbil9fWZ1bmN0aW9uIHdjKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8dmModCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24ga2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFRjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBFYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBDYyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gU2ModCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgQWModCl9ZnVuY3Rpb24gQWModCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPUNjKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTWModCxlKXtmb3IodmFyIG49U2ModCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLmFkZChlW3JdKX1mdW5jdGlvbiBOYyh0LGUpe2Zvcih2YXIgbj1TYyh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4ucmVtb3ZlKGVbcl0pfWZ1bmN0aW9uIERjKHQpe3JldHVybiBmdW5jdGlvbigpe01jKHRoaXMsdCl9fWZ1bmN0aW9uIE9jKHQpe3JldHVybiBmdW5jdGlvbigpe05jKHRoaXMsdCl9fWZ1bmN0aW9uIEJjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP01jOk5jKSh0aGlzLHQpfX1mdW5jdGlvbiBMYygpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gSWModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBSYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gRmMoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBQYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBqYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIFljKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHpjKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gVWModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT11YyYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09dWM/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIHFjKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uICRjKHQpe3ZhciBlPWhjKHQpO3JldHVybihlLmxvY2FsP3FjOlVjKShlKX1mdW5jdGlvbiBIYygpe3JldHVybiBudWxsfWZ1bmN0aW9uIFdjKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVmMoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIEdjKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBYYyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBaYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLHI9MCxpPS0xLGE9ZS5sZW5ndGg7cjxhOysrciluPWVbcl0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5vcHRpb25zKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gUWModCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByLGk9dGhpcy5fX29uLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUsdGhpcy5fX2RhdGFfXyl9fShlKTtpZihpKWZvcih2YXIgbz0wLHM9aS5sZW5ndGg7bzxzOysrbylpZigocj1pW29dKS50eXBlPT09dC50eXBlJiZyLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcixyLm9wdGlvbnMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcj1hLHIub3B0aW9ucz1uKSx2b2lkKHIudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxhLG4pLHI9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YSxvcHRpb25zOm59LGk/aS5wdXNoKHIpOnRoaXMuX19vbj1bcl19fWZ1bmN0aW9uIEtjKHQsZSxuKXt2YXIgcj12Yyh0KSxpPXIuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIGk/aT1uZXcgaShlLG4pOihpPXIuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oaS5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxpLmRldGFpbD1uLmRldGFpbCk6aS5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBKYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBLYyh0aGlzLHQsZSl9fWZ1bmN0aW9uIHR1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEtjKHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fUFjLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIGV1PVtudWxsXTtmdW5jdGlvbiBudSh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBydSgpe3JldHVybiBuZXcgbnUoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxldSl9bnUucHJvdG90eXBlPXJ1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6bnUsc2VsZWN0OmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1Icyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvLHM9ZVtpXSxjPXMubGVuZ3RoLHU9cltpXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKGE9c1tsXSkmJihvPXQuY2FsbChhLGEuX19kYXRhX18sbCxzKSkmJigiX19kYXRhX18iaW4gYSYmKG8uX19kYXRhX189YS5fX2RhdGFfXyksdVtsXT1vKTtyZXR1cm4gbmV3IG51KHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXt0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXcyh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSh0KTpHcyh0KTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1bXSxpPVtdLGE9MDthPG47KythKWZvcih2YXIgbyxzPWVbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSkobz1zW3VdKSYmKHIucHVzaCh0LmNhbGwobyxvLl9fZGF0YV9fLHUscykpLGkucHVzaChvKSk7cmV0dXJuIG5ldyBudShyLGkpfSxzZWxlY3RDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QobnVsbD09dD9LczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUXMuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpacyh0KSkpfSxzZWxlY3RDaGlsZHJlbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3RBbGwobnVsbD09dD90YzpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSnMuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpacyh0KSkpfSxmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhzKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBudShyLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uKHQsZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIEFycmF5LmZyb20odGhpcyxvYyk7dmFyIG49ZT9hYzppYyxyPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXJjKHQpKTtmb3IodmFyIGE9aS5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBsPXJbdV0saD1pW3VdLGY9aC5sZW5ndGgsZD1zYyh0LmNhbGwobCxsJiZsLl9fZGF0YV9fLHUscikpLHA9ZC5sZW5ndGgseT1zW3VdPW5ldyBBcnJheShwKSxnPW9bdV09bmV3IEFycmF5KHApLG09Y1t1XT1uZXcgQXJyYXkoZik7bihsLGgseSxnLG0sZCxlKTtmb3IodmFyIHYsYixfPTAseD0wO188cDsrK18paWYodj15W19dKXtmb3IoXz49eCYmKHg9XysxKTshKGI9Z1t4XSkmJisreDxwOyk7di5fbmV4dD1ifHxudWxsfX1yZXR1cm4obz1uZXcgbnUobyxyKSkuX2VudGVyPXMsby5fZXhpdD1jLG99LGVudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBudSh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChlYyksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG51KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoZWMpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmVudGVyKCksaT10aGlzLGE9dGhpcy5leGl0KCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/KHI9dChyKSkmJihyPXIuc2VsZWN0aW9uKCkpOnI9ci5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKGk9ZShpKSkmJihpPWkuc2VsZWN0aW9uKCkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLHImJmk/ci5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQsbj10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsaT1uLmxlbmd0aCxhPXIubGVuZ3RoLG89TWF0aC5taW4oaSxhKSxzPW5ldyBBcnJheShpKSxjPTA7YzxvOysrYylmb3IodmFyIHUsbD1uW2NdLGg9cltjXSxmPWwubGVuZ3RoLGQ9c1tjXT1uZXcgQXJyYXkoZikscD0wO3A8ZjsrK3ApKHU9bFtwXXx8aFtwXSkmJihkW3BdPXUpO2Zvcig7YzxpOysrYylzW2NdPW5bY107cmV0dXJuIG5ldyBudShzLHRoaXMuX3BhcmVudHMpfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sb3JkZXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciByLGk9dFtlXSxhPWkubGVuZ3RoLTEsbz1pW2FdOy0tYT49MDspKHI9aVthXSkmJihvJiY0XnIuY29tcGFyZURvY3VtZW50UG9zaXRpb24obykmJm8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixvKSxvPXIpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9Y2MpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMscj1uLmxlbmd0aCxpPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSl7Zm9yKHZhciBvLHM9blthXSxjPXMubGVuZ3RoLHU9aVthXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKG89c1tsXSkmJih1W2xdPW8pO3Uuc29ydChlKX1yZXR1cm4gbmV3IG51KGksdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzKX0sbm9kZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIHI9dFtlXSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXt2YXIgbz1yW2ldO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24oKXtsZXQgdD0wO2Zvcihjb25zdCBlIG9mIHRoaXMpKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxyPWUubGVuZ3RoO248cjsrK24pZm9yKHZhciBpLGE9ZVtuXSxvPTAscz1hLmxlbmd0aDtvPHM7KytvKShpPWFbb10pJiZ0LmNhbGwoaSxpLl9fZGF0YV9fLG8sYSk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1oYyh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/ZGM6ZmM6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9tYzpnYzpuLmxvY2FsP3ljOnBjKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2JjOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3hjOl9jKSh0LGUsbnVsbD09bj8iIjpuKSk6d2ModGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/a2M6ImZ1bmN0aW9uIj09dHlwZW9mIGU/RWM6VGMpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49Q2ModCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9U2ModGhpcy5ub2RlKCkpLGk9LTEsYT1uLmxlbmd0aDsrK2k8YTspaWYoIXIuY29udGFpbnMobltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/QmM6ZT9EYzpPYykobixlKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TGM6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1JjOkljKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/RmM6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2pjOlBjKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goWWMpfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goemMpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokYyh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRjKHQpLHI9bnVsbD09ZT9IYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOkhzKGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKFdjKX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/R2M6VmMpfSxkYXR1bTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9WGModCsiIiksbz1hLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/UWM6WmMscj0wO3I8bzsrK3IpdGhpcy5lYWNoKHMoYVtyXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBjLHU9MCxsPXMubGVuZ3RoO3U8bDsrK3UpZm9yKHI9MCxjPXNbdV07cjxvOysrcilpZigoaT1hW3JdKS50eXBlPT09Yy50eXBlJiZpLm5hbWU9PT1jLm5hbWUpcmV0dXJuIGMudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/dHU6SmMpKHQsZSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpmdW5jdGlvbiooKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByLGk9dFtlXSxhPTAsbz1pLmxlbmd0aDthPG87KythKShyPWlbYV0pJiYoeWllbGQgcil9fTtjb25zdCBpdT1ydTtmdW5jdGlvbiBhdSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IG51KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgbnUoW1t0XV0sZXUpfWZ1bmN0aW9uIG91KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgbnUoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgbnUoW1dzKHQpXSxldSl9Y29uc3Qgc3U9TWF0aC5QSSxjdT0yKnN1LHV1PTFlLTYsbHU9Y3UtdXU7ZnVuY3Rpb24gaHUoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBmdSgpe3JldHVybiBuZXcgaHV9aHUucHJvdG90eXBlPWZ1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6aHUsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLHIpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K3IpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK3IrIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rYSl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLHIsaSl7dD0rdCxlPStlLG49K24scj0rcixpPStpO3ZhciBhPXRoaXMuX3gxLG89dGhpcy5feTEscz1uLXQsYz1yLWUsdT1hLXQsbD1vLWUsaD11KnUrbCpsO2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPnV1KWlmKE1hdGguYWJzKGwqcy1jKnUpPnV1JiZpKXt2YXIgZj1uLWEsZD1yLW8scD1zKnMrYypjLHk9ZipmK2QqZCxnPU1hdGguc3FydChwKSxtPU1hdGguc3FydChoKSx2PWkqTWF0aC50YW4oKHN1LU1hdGguYWNvcygocCtoLXkpLygyKmcqbSkpKS8yKSxiPXYvbSxfPXYvZztNYXRoLmFicyhiLTEpPnV1JiYodGhpcy5fKz0iTCIrKHQrYip1KSsiLCIrKGUrYipsKSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAsMCwiKyArKGwqZj51KmQpKyIsIisodGhpcy5feDE9dCtfKnMpKyIsIisodGhpcy5feTE9ZStfKmMpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSl9LGFyYzpmdW5jdGlvbih0LGUsbixyLGksYSl7dD0rdCxlPStlLGE9ISFhO3ZhciBvPShuPStuKSpNYXRoLmNvcyhyKSxzPW4qTWF0aC5zaW4ociksYz10K28sdT1lK3MsbD0xXmEsaD1hP3ItaTppLXI7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitjKyIsIit1OihNYXRoLmFicyh0aGlzLl94MS1jKT51dXx8TWF0aC5hYnModGhpcy5feTEtdSk+dXUpJiYodGhpcy5fKz0iTCIrYysiLCIrdSksbiYmKGg8MCYmKGg9aCVjdStjdSksaD5sdT90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrbCsiLCIrKHQtbykrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrbCsiLCIrKHRoaXMuX3gxPWMpKyIsIisodGhpcy5feTE9dSk6aD51dSYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49c3UpKyIsIitsKyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKGkpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihpKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixyKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyArcisiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTtjb25zdCBkdT1mdTtmdW5jdGlvbiBwdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIHl1PU1hdGguYWJzLGd1PU1hdGguYXRhbjIsbXU9TWF0aC5jb3MsdnU9TWF0aC5tYXgsYnU9TWF0aC5taW4sX3U9TWF0aC5zaW4seHU9TWF0aC5zcXJ0LHd1PTFlLTEyLGt1PU1hdGguUEksVHU9a3UvMixFdT0yKmt1O2Z1bmN0aW9uIEN1KHQpe3JldHVybiB0PjE/MDp0PC0xP2t1Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBTdSh0KXtyZXR1cm4gdD49MT9UdTp0PD0tMT8tVHU6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIEF1KHQpe3JldHVybiB0LmlubmVyUmFkaXVzfWZ1bmN0aW9uIE11KHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIE51KHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gT3UodCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gQnUodCxlLG4scixpLGEsbyxzKXt2YXIgYz1uLXQsdT1yLWUsbD1vLWksaD1zLWEsZj1oKmMtbCp1O2lmKCEoZipmPHd1KSlyZXR1cm5bdCsoZj0obCooZS1hKS1oKih0LWkpKS9mKSpjLGUrZip1XX1mdW5jdGlvbiBMdSh0LGUsbixyLGksYSxvKXt2YXIgcz10LW4sYz1lLXIsdT0obz9hOi1hKS94dShzKnMrYypjKSxsPXUqYyxoPS11KnMsZj10K2wsZD1lK2gscD1uK2wseT1yK2gsZz0oZitwKS8yLG09KGQreSkvMix2PXAtZixiPXktZCxfPXYqditiKmIseD1pLWEsdz1mKnktcCpkLGs9KGI8MD8tMToxKSp4dSh2dSgwLHgqeCpfLXcqdykpLFQ9KHcqYi12KmspL18sRT0oLXcqdi1iKmspL18sQz0odypiK3YqaykvXyxTPSgtdyp2K2IqaykvXyxBPVQtZyxNPUUtbSxOPUMtZyxEPVMtbTtyZXR1cm4gQSpBK00qTT5OKk4rRCpEJiYoVD1DLEU9Uykse2N4OlQsY3k6RSx4MDE6LWwseTAxOi1oLHgxMTpUKihpL3gtMSkseTExOkUqKGkveC0xKX19ZnVuY3Rpb24gSXUoKXt2YXIgdD1BdSxlPU11LG49cHUoMCkscj1udWxsLGk9TnUsYT1EdSxvPU91LHM9bnVsbDtmdW5jdGlvbiBjKCl7dmFyIGMsdSxsPSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxmPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLVR1LGQ9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyktVHUscD15dShkLWYpLHk9ZD5mO2lmKHN8fChzPWM9ZHUoKSksaDxsJiYodT1oLGg9bCxsPXUpLGg+d3UpaWYocD5FdS13dSlzLm1vdmVUbyhoKm11KGYpLGgqX3UoZikpLHMuYXJjKDAsMCxoLGYsZCwheSksbD53dSYmKHMubW92ZVRvKGwqbXUoZCksbCpfdShkKSkscy5hcmMoMCwwLGwsZCxmLHkpKTtlbHNle3ZhciBnLG0sdj1mLGI9ZCxfPWYseD1kLHc9cCxrPXAsVD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS8yLEU9VD53dSYmKHI/K3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnh1KGwqbCtoKmgpKSxDPWJ1KHl1KGgtbCkvMiwrbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFM9QyxBPUM7aWYoRT53dSl7dmFyIE09U3UoRS9sKl91KFQpKSxOPVN1KEUvaCpfdShUKSk7KHctPTIqTSk+d3U/KF8rPU0qPXk/MTotMSx4LT1NKToodz0wLF89eD0oZitkKS8yKSwoay09MipOKT53dT8odis9Tio9eT8xOi0xLGItPU4pOihrPTAsdj1iPShmK2QpLzIpfXZhciBEPWgqbXUodiksTz1oKl91KHYpLEI9bCptdSh4KSxMPWwqX3UoeCk7aWYoQz53dSl7dmFyIEksUj1oKm11KGIpLEY9aCpfdShiKSxQPWwqbXUoXyksaj1sKl91KF8pO2lmKHA8a3UmJihJPUJ1KEQsTyxQLGosUixGLEIsTCkpKXt2YXIgWT1ELUlbMF0sej1PLUlbMV0sVT1SLUlbMF0scT1GLUlbMV0sJD0xL191KEN1KChZKlUreipxKS8oeHUoWSpZK3oqeikqeHUoVSpVK3EqcSkpKS8yKSxIPXh1KElbMF0qSVswXStJWzFdKklbMV0pO1M9YnUoQywobC1IKS8oJC0xKSksQT1idShDLChoLUgpLygkKzEpKX19az53dT9BPnd1PyhnPUx1KFAsaixELE8saCxBLHkpLG09THUoUixGLEIsTCxoLEEseSkscy5tb3ZlVG8oZy5jeCtnLngwMSxnLmN5K2cueTAxKSxBPEM/cy5hcmMoZy5jeCxnLmN5LEEsZ3UoZy55MDEsZy54MDEpLGd1KG0ueTAxLG0ueDAxKSwheSk6KHMuYXJjKGcuY3gsZy5jeSxBLGd1KGcueTAxLGcueDAxKSxndShnLnkxMSxnLngxMSksIXkpLHMuYXJjKDAsMCxoLGd1KGcuY3krZy55MTEsZy5jeCtnLngxMSksZ3UobS5jeSttLnkxMSxtLmN4K20ueDExKSwheSkscy5hcmMobS5jeCxtLmN5LEEsZ3UobS55MTEsbS54MTEpLGd1KG0ueTAxLG0ueDAxKSwheSkpKToocy5tb3ZlVG8oRCxPKSxzLmFyYygwLDAsaCx2LGIsIXkpKTpzLm1vdmVUbyhELE8pLGw+d3UmJnc+d3U/Uz53dT8oZz1MdShCLEwsUixGLGwsLVMseSksbT1MdShELE8sUCxqLGwsLVMseSkscy5saW5lVG8oZy5jeCtnLngwMSxnLmN5K2cueTAxKSxTPEM/cy5hcmMoZy5jeCxnLmN5LFMsZ3UoZy55MDEsZy54MDEpLGd1KG0ueTAxLG0ueDAxKSwheSk6KHMuYXJjKGcuY3gsZy5jeSxTLGd1KGcueTAxLGcueDAxKSxndShnLnkxMSxnLngxMSksIXkpLHMuYXJjKDAsMCxsLGd1KGcuY3krZy55MTEsZy5jeCtnLngxMSksZ3UobS5jeSttLnkxMSxtLmN4K20ueDExKSx5KSxzLmFyYyhtLmN4LG0uY3ksUyxndShtLnkxMSxtLngxMSksZ3UobS55MDEsbS54MDEpLCF5KSkpOnMuYXJjKDAsMCxsLHgsXyx5KTpzLmxpbmVUbyhCLEwpfWVsc2Ugcy5tb3ZlVG8oMCwwKTtpZihzLmNsb3NlUGF0aCgpLGMpcmV0dXJuIHM9bnVsbCxjKyIifHxudWxsfXJldHVybiBjLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIG49KCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLHI9KCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2EuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLWt1LzI7cmV0dXJuW211KHIpKm4sX3Uocikqbl19LGMuaW5uZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpwdSgrZSksYyk6dH0sYy5vdXRlclJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxjKTplfSxjLmNvcm5lclJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxjKTpufSxjLnBhZFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksYyk6cn0sYy5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLGMpOml9LGMuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksYyk6YX0sYy5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxjKTpvfSxjLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09dD9udWxsOnQsYyk6c30sY31mdW5jdGlvbiBSdSh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJsZW5ndGgiaW4gdD90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gRnUodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFB1KHQpe3JldHVybiBuZXcgRnUodCl9ZnVuY3Rpb24ganUodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gWXUodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24genUodCxlKXt2YXIgbj1wdSghMCkscj1udWxsLGk9UHUsYT1udWxsO2Z1bmN0aW9uIG8obyl7dmFyIHMsYyx1LGw9KG89UnUobykpLmxlbmd0aCxoPSExO2ZvcihudWxsPT1yJiYoYT1pKHU9ZHUoKSkpLHM9MDtzPD1sOysrcykhKHM8bCYmbihjPW9bc10scyxvKSk9PT1oJiYoKGg9IWgpP2EubGluZVN0YXJ0KCk6YS5saW5lRW5kKCkpLGgmJmEucG9pbnQoK3QoYyxzLG8pLCtlKGMscyxvKSk7aWYodSlyZXR1cm4gYT1udWxsLHUrIiJ8fG51bGx9cmV0dXJuIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDA9PT10P2p1OnB1KHQpLGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp2b2lkIDA9PT1lP1l1OnB1KGUpLG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnB1KCtlKSxvKTp0fSxvLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksbyk6ZX0sby5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoISF0KSxvKTpufSxvLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbnVsbCE9ciYmKGE9aShyKSksbyk6aX0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P3I9YT1udWxsOmE9aShyPXQpLG8pOnJ9LG99ZnVuY3Rpb24gVXUodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gcXUodCl7cmV0dXJuIHR9ZnVuY3Rpb24gJHUoKXt9ZnVuY3Rpb24gSHUodCxlLG4pe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbygoMip0Ll94MCt0Ll94MSkvMywoMip0Ll95MCt0Ll95MSkvMywodC5feDArMip0Ll94MSkvMywodC5feTArMip0Ll95MSkvMywodC5feDArNCp0Ll94MStlKS82LCh0Ll95MCs0KnQuX3kxK24pLzYpfWZ1bmN0aW9uIFd1KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBWdSh0KXtyZXR1cm4gbmV3IFd1KHQpfWZ1bmN0aW9uIEd1KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBYdSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWnUodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFF1KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBLdSh0LGUsbil7dmFyIHI9dC5feDEtdC5feDAsaT1lLXQuX3gxLGE9KHQuX3kxLXQuX3kwKS8ocnx8aTwwJiYtMCksbz0obi10Ll95MSkvKGl8fHI8MCYmLTApLHM9KGEqaStvKnIpLyhyK2kpO3JldHVybihRdShhKStRdShvKSkqTWF0aC5taW4oTWF0aC5hYnMoYSksTWF0aC5hYnMobyksLjUqTWF0aC5hYnMocykpfHwwfWZ1bmN0aW9uIEp1KHQsZSl7dmFyIG49dC5feDEtdC5feDA7cmV0dXJuIG4/KDMqKHQuX3kxLXQuX3kwKS9uLWUpLzI6ZX1mdW5jdGlvbiB0bCh0LGUsbil7dmFyIHI9dC5feDAsaT10Ll95MCxhPXQuX3gxLG89dC5feTEscz0oYS1yKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhyK3MsaStzKmUsYS1zLG8tcypuLGEsbyl9ZnVuY3Rpb24gZWwodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIG5sKHQpe3RoaXMuX2NvbnRleHQ9bmV3IHJsKHQpfWZ1bmN0aW9uIHJsKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBpbCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gYWwodCl7dmFyIGUsbixyPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxhWzBdPTIsb1swXT10WzBdKzIqdFsxXSxlPTE7ZTxyLTE7KytlKWlbZV09MSxhW2VdPTQsb1tlXT00KnRbZV0rMip0W2UrMV07Zm9yKGlbci0xXT0yLGFbci0xXT03LG9bci0xXT04KnRbci0xXSt0W3JdLGU9MTtlPHI7KytlKW49aVtlXS9hW2UtMV0sYVtlXS09bixvW2VdLT1uKm9bZS0xXTtmb3IoaVtyLTFdPW9bci0xXS9hW3ItMV0sZT1yLTI7ZT49MDstLWUpaVtlXT0ob1tlXS1pW2UrMV0pL2FbZV07Zm9yKGFbci0xXT0odFtyXStpW3ItMV0pLzIsZT0wO2U8ci0xOysrZSlhW2VdPTIqdFtlKzFdLWlbZSsxXTtyZXR1cm5baSxhXX1mdW5jdGlvbiBvbCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9QXJyYXkucHJvdG90eXBlLnNsaWNlLEZ1LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19LFd1LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6SHUodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6SHUodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LEd1LnByb3RvdHlwZT17YXJlYVN0YXJ0OiR1LGFyZWFFbmQ6JHUsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95MysyKnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0Okh1KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxYdS5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgbj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LHI9KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKG4scik6dGhpcy5fY29udGV4dC5tb3ZlVG8obixyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Okh1KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxadS5wcm90b3R5cGU9e2FyZWFTdGFydDokdSxhcmVhRW5kOiR1LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LGVsLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzp0bCh0aGlzLHRoaXMuX3QwLEp1KHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0bCh0aGlzLEp1KHRoaXMsbj1LdSh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6dGwodGhpcyx0aGlzLl90MCxuPUt1KHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKG5sLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGVsLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7ZWwucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxybC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQscixuLGEsaSl9fSxpbC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgcj1hbCh0KSxpPWFsKGUpLGE9MCxvPTE7bzxuOysrYSwrK28pdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHJbMF1bYV0saVswXVthXSxyWzFdW2FdLGlbMV1bYV0sdFtvXSxlW29dKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxvbC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgc2w9bmV3IERhdGUsY2w9bmV3IERhdGU7ZnVuY3Rpb24gdWwodCxlLG4scil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0saS5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1pKHQpLG49aS5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0saS5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0saS5yYW5nZT1mdW5jdGlvbihuLHIsYSl7dmFyIG8scz1bXTtpZihuPWkuY2VpbChuKSxhPW51bGw9PWE/MTpNYXRoLmZsb29yKGEpLCEobjxyJiZhPjApKXJldHVybiBzO2Rve3MucHVzaChvPW5ldyBEYXRlKCtuKSksZShuLGEpLHQobil9d2hpbGUobzxuJiZuPHIpO3JldHVybiBzfSxpLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gdWwoKGZ1bmN0aW9uKGUpe2lmKGU+PWUpZm9yKDt0KGUpLCFuKGUpOyllLnNldFRpbWUoZS0xKX0pLChmdW5jdGlvbih0LHIpe2lmKHQ+PXQpaWYocjwwKWZvcig7KytyPD0wOylmb3IoO2UodCwtMSksIW4odCk7KTtlbHNlIGZvcig7LS1yPj0wOylmb3IoO2UodCwxKSwhbih0KTspO30pKX0sbiYmKGkuY291bnQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gc2wuc2V0VGltZSgrZSksY2wuc2V0VGltZSgrciksdChzbCksdChjbCksTWF0aC5mbG9vcihuKHNsLGNsKSl9LGkuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9pLmZpbHRlcihyP2Z1bmN0aW9uKGUpe3JldHVybiByKGUpJXQ9PTB9OmZ1bmN0aW9uKGUpe3JldHVybiBpLmNvdW50KDAsZSkldD09MH0pOmk6bnVsbH0pLGl9Y29uc3QgbGw9ODY0ZTUsaGw9NjA0OGU1O2Z1bmN0aW9uIGZsKHQpe3JldHVybiB1bCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvaGx9KSl9dmFyIGRsPWZsKDApLHBsPWZsKDEpLHlsPWZsKDIpLGdsPWZsKDMpLG1sPWZsKDQpLHZsPWZsKDUpLGJsPWZsKDYpLF9sPShkbC5yYW5nZSxwbC5yYW5nZSx5bC5yYW5nZSxnbC5yYW5nZSxtbC5yYW5nZSx2bC5yYW5nZSxibC5yYW5nZSx1bCgoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2xsfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpKTtjb25zdCB4bD1fbDtmdW5jdGlvbiB3bCh0KXtyZXR1cm4gdWwoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvaGx9KSl9X2wucmFuZ2U7dmFyIGtsPXdsKDApLFRsPXdsKDEpLEVsPXdsKDIpLENsPXdsKDMpLFNsPXdsKDQpLEFsPXdsKDUpLE1sPXdsKDYpLE5sPShrbC5yYW5nZSxUbC5yYW5nZSxFbC5yYW5nZSxDbC5yYW5nZSxTbC5yYW5nZSxBbC5yYW5nZSxNbC5yYW5nZSx1bCgodD0+dC5zZXRIb3VycygwLDAsMCwwKSksKCh0LGUpPT50LnNldERhdGUodC5nZXREYXRlKCkrZSkpLCgodCxlKT0+KGUtdC02ZTQqKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKS9sbCksKHQ9PnQuZ2V0RGF0ZSgpLTEpKSk7Y29uc3QgRGw9Tmw7TmwucmFuZ2U7dmFyIE9sPXVsKChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtPbC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP3VsKChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTtjb25zdCBCbD1PbDtPbC5yYW5nZTt2YXIgTGw9dWwoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO0xsLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dWwoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IElsPUxsO2Z1bmN0aW9uIFJsKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBGbCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBQbCh0LGUsbil7cmV0dXJue3k6dCxtOmUsZDpuLEg6MCxNOjAsUzowLEw6MH19TGwucmFuZ2U7dmFyIGpsLFlsLHpsPXsiLSI6IiIsXzoiICIsMDoiMCJ9LFVsPS9eXHMqXGQrLyxxbD0vXiUvLCRsPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBIbCh0LGUsbil7dmFyIHI9dDwwPyItIjoiIixpPShyPy10OnQpKyIiLGE9aS5sZW5ndGg7cmV0dXJuIHIrKGE8bj9uZXcgQXJyYXkobi1hKzEpLmpvaW4oZSkraTppKX1mdW5jdGlvbiBXbCh0KXtyZXR1cm4gdC5yZXBsYWNlKCRsLCJcXCQmIil9ZnVuY3Rpb24gVmwodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKFdsKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gR2wodCl7cmV0dXJuIG5ldyBNYXAodC5tYXAoKCh0LGUpPT5bdC50b0xvd2VyQ2FzZSgpLGVdKSkpfWZ1bmN0aW9uIFhsKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC53PStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFpsKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC51PStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFFsKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5VPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEtsKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5WPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEpsKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5XPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRoKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gcj8odC55PStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVoKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC55PStyWzBdKygrclswXT42OD8xOTAwOjJlMyksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbmgodCxlLG4pe3ZhciByPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gcj8odC5aPXJbMV0/MDotKHJbMl0rKHJbM118fCIwMCIpKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiByaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/KHQucT0zKnJbMF0tMyxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQubT1yWzBdLTEsbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYWgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LmQ9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gb2godCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiByPyh0Lm09MCx0LmQ9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gc2godCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lkg9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gY2godCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lk09K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdWgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbGgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiByPyh0Lkw9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaGgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiByPyh0Lkw9TWF0aC5mbG9vcihyWzBdLzFlMyksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZmgodCxlLG4pe3ZhciByPXFsLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByP24rclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gZGgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQuUT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5zPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHloKHQsZSl7cmV0dXJuIEhsKHQuZ2V0RGF0ZSgpLGUsMil9ZnVuY3Rpb24gZ2godCxlKXtyZXR1cm4gSGwodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gbWgodCxlKXtyZXR1cm4gSGwodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIHZoKHQsZSl7cmV0dXJuIEhsKDErRGwuY291bnQoQmwodCksdCksZSwzKX1mdW5jdGlvbiBiaCh0LGUpe3JldHVybiBIbCh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gX2godCxlKXtyZXR1cm4gYmgodCxlKSsiMDAwIn1mdW5jdGlvbiB4aCh0LGUpe3JldHVybiBIbCh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIHdoKHQsZSl7cmV0dXJuIEhsKHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24ga2godCxlKXtyZXR1cm4gSGwodC5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBUaCh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gRWgodCxlKXtyZXR1cm4gSGwoa2wuY291bnQoQmwodCktMSx0KSxlLDIpfWZ1bmN0aW9uIENoKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP1NsKHQpOlNsLmNlaWwodCl9ZnVuY3Rpb24gU2godCxlKXtyZXR1cm4gdD1DaCh0KSxIbChTbC5jb3VudChCbCh0KSx0KSsoND09PUJsKHQpLmdldERheSgpKSxlLDIpfWZ1bmN0aW9uIEFoKHQpe3JldHVybiB0LmdldERheSgpfWZ1bmN0aW9uIE1oKHQsZSl7cmV0dXJuIEhsKFRsLmNvdW50KEJsKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBOaCh0LGUpe3JldHVybiBIbCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gRGgodCxlKXtyZXR1cm4gSGwoKHQ9Q2godCkpLmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gT2godCxlKXtyZXR1cm4gSGwodC5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIEJoKHQsZSl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gSGwoKHQ9bj49NHx8MD09PW4/U2wodCk6U2wuY2VpbCh0KSkuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBMaCh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK0hsKGUvNjB8MCwiMCIsMikrSGwoZSU2MCwiMCIsMil9ZnVuY3Rpb24gSWgodCxlKXtyZXR1cm4gSGwodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBSaCh0LGUpe3JldHVybiBIbCh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBGaCh0LGUpe3JldHVybiBIbCh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gUGgodCxlKXtyZXR1cm4gSGwoMSt4bC5jb3VudChJbCh0KSx0KSxlLDMpfWZ1bmN0aW9uIGpoKHQsZSl7cmV0dXJuIEhsKHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBZaCh0LGUpe3JldHVybiBqaCh0LGUpKyIwMDAifWZ1bmN0aW9uIHpoKHQsZSl7cmV0dXJuIEhsKHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gVWgodCxlKXtyZXR1cm4gSGwodC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBxaCh0LGUpe3JldHVybiBIbCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uICRoKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBIaCh0LGUpe3JldHVybiBIbChkbC5jb3VudChJbCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gV2godCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/bWwodCk6bWwuY2VpbCh0KX1mdW5jdGlvbiBWaCh0LGUpe3JldHVybiB0PVdoKHQpLEhsKG1sLmNvdW50KElsKHQpLHQpKyg0PT09SWwodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gR2godCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gWGgodCxlKXtyZXR1cm4gSGwocGwuY291bnQoSWwodCktMSx0KSxlLDIpfWZ1bmN0aW9uIFpoKHQsZSl7cmV0dXJuIEhsKHQuZ2V0VVRDRnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBRaCh0LGUpe3JldHVybiBIbCgodD1XaCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBLaCh0LGUpe3JldHVybiBIbCh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gSmgodCxlKXt2YXIgbj10LmdldFVUQ0RheSgpO3JldHVybiBIbCgodD1uPj00fHwwPT09bj9tbCh0KTptbC5jZWlsKHQpKS5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIHRmKCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBlZigpe3JldHVybiIlIn1mdW5jdGlvbiBuZih0KXtyZXR1cm4rdH1mdW5jdGlvbiByZih0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfWpsPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0ZVRpbWUsbj10LmRhdGUscj10LnRpbWUsaT10LnBlcmlvZHMsYT10LmRheXMsbz10LnNob3J0RGF5cyxzPXQubW9udGhzLGM9dC5zaG9ydE1vbnRocyx1PVZsKGkpLGw9R2woaSksaD1WbChhKSxmPUdsKGEpLGQ9VmwobykscD1HbChvKSx5PVZsKHMpLGc9R2wocyksbT1WbChjKSx2PUdsKGMpLGI9e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDp5aCxlOnloLGY6X2gsZzpEaCxHOkJoLEg6Z2gsSTptaCxqOnZoLEw6YmgsbTp4aCxNOndoLHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRNb250aCgpLzMpfSxROm5mLHM6cmYsUzpraCx1OlRoLFU6RWgsVjpTaCx3OkFoLFc6TWgseDpudWxsLFg6bnVsbCx5Ok5oLFk6T2gsWjpMaCwiJSI6ZWZ9LF89e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRVVENNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpJaCxlOkloLGY6WWgsZzpRaCxHOkpoLEg6UmgsSTpGaCxqOlBoLEw6amgsbTp6aCxNOlVoLHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROm5mLHM6cmYsUzpxaCx1OiRoLFU6SGgsVjpWaCx3OkdoLFc6WGgseDpudWxsLFg6bnVsbCx5OlpoLFk6S2gsWjp0ZiwiJSI6ZWZ9LHg9e2E6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC53PXAuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksbityWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC53PWYuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksbityWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5tPXYuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksbityWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXkuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5tPWcuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksbityWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBUKHQsZSxuLHIpfSxkOmFoLGU6YWgsZjpoaCxnOmVoLEc6dGgsSDpzaCxJOnNoLGo6b2gsTDpsaCxtOmloLE06Y2gscDpmdW5jdGlvbih0LGUsbil7dmFyIHI9dS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LnA9bC5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0scTpyaCxROmRoLHM6cGgsUzp1aCx1OlpsLFU6UWwsVjpLbCx3OlhsLFc6SmwseDpmdW5jdGlvbih0LGUscil7cmV0dXJuIFQodCxuLGUscil9LFg6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBUKHQscixlLG4pfSx5OmVoLFk6dGgsWjpuaCwiJSI6Zmh9O2Z1bmN0aW9uIHcodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsaSxhLG89W10scz0tMSxjPTAsdT10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPHU7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoby5wdXNoKHQuc2xpY2UoYyxzKSksbnVsbCE9KGk9emxbcj10LmNoYXJBdCgrK3MpXSk/cj10LmNoYXJBdCgrK3MpOmk9ImUiPT09cj8iICI6IjAiLChhPWVbcl0pJiYocj1hKG4saSkpLG8ucHVzaChyKSxjPXMrMSk7cmV0dXJuIG8ucHVzaCh0LnNsaWNlKGMscykpLG8uam9pbigiIil9fWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsaSxhPVBsKDE5MDAsdm9pZCAwLDEpO2lmKFQoYSx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBhKXJldHVybiBuZXcgRGF0ZShhLlEpO2lmKCJzImluIGEpcmV0dXJuIG5ldyBEYXRlKDFlMyphLnMrKCJMImluIGE/YS5MOjApKTtpZihlJiYhKCJaImluIGEpJiYoYS5aPTApLCJwImluIGEmJihhLkg9YS5IJTEyKzEyKmEucCksdm9pZCAwPT09YS5tJiYoYS5tPSJxImluIGE/YS5xOjApLCJWImluIGEpe2lmKGEuVjwxfHxhLlY+NTMpcmV0dXJuIG51bGw7InciaW4gYXx8KGEudz0xKSwiWiJpbiBhPyhpPShyPUZsKFBsKGEueSwwLDEpKSkuZ2V0VVRDRGF5KCkscj1pPjR8fDA9PT1pP3BsLmNlaWwocik6cGwocikscj14bC5vZmZzZXQociw3KihhLlYtMSkpLGEueT1yLmdldFVUQ0Z1bGxZZWFyKCksYS5tPXIuZ2V0VVRDTW9udGgoKSxhLmQ9ci5nZXRVVENEYXRlKCkrKGEudys2KSU3KTooaT0ocj1SbChQbChhLnksMCwxKSkpLmdldERheSgpLHI9aT40fHwwPT09aT9UbC5jZWlsKHIpOlRsKHIpLHI9RGwub2Zmc2V0KHIsNyooYS5WLTEpKSxhLnk9ci5nZXRGdWxsWWVhcigpLGEubT1yLmdldE1vbnRoKCksYS5kPXIuZ2V0RGF0ZSgpKyhhLncrNiklNyl9ZWxzZSgiVyJpbiBhfHwiVSJpbiBhKSYmKCJ3ImluIGF8fChhLnc9InUiaW4gYT9hLnUlNzoiVyJpbiBhPzE6MCksaT0iWiJpbiBhP0ZsKFBsKGEueSwwLDEpKS5nZXRVVENEYXkoKTpSbChQbChhLnksMCwxKSkuZ2V0RGF5KCksYS5tPTAsYS5kPSJXImluIGE/KGEudys2KSU3KzcqYS5XLShpKzUpJTc6YS53KzcqYS5VLShpKzYpJTcpO3JldHVybiJaImluIGE/KGEuSCs9YS5aLzEwMHwwLGEuTSs9YS5aJTEwMCxGbChhKSk6UmwoYSl9fWZ1bmN0aW9uIFQodCxlLG4scil7Zm9yKHZhciBpLGEsbz0wLHM9ZS5sZW5ndGgsYz1uLmxlbmd0aDtvPHM7KXtpZihyPj1jKXJldHVybi0xO2lmKDM3PT09KGk9ZS5jaGFyQ29kZUF0KG8rKykpKXtpZihpPWUuY2hhckF0KG8rKyksIShhPXhbaSBpbiB6bD9lLmNoYXJBdChvKyspOmldKXx8KHI9YSh0LG4scikpPDApcmV0dXJuLTF9ZWxzZSBpZihpIT1uLmNoYXJDb2RlQXQocisrKSlyZXR1cm4tMX1yZXR1cm4gcn1yZXR1cm4gYi54PXcobixiKSxiLlg9dyhyLGIpLGIuYz13KGUsYiksXy54PXcobixfKSxfLlg9dyhyLF8pLF8uYz13KGUsXykse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT13KHQrPSIiLGIpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWsodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT13KHQrPSIiLF8pO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWsodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0oe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KSxZbD1qbC5mb3JtYXQsamwucGFyc2UsamwudXRjRm9ybWF0LGpsLnV0Y1BhcnNlO3ZhciBhZj17dmFsdWU6KCk9Pnt9fTtmdW5jdGlvbiBvZigpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLHI9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gcnx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO3JbdF09W119cmV0dXJuIG5ldyBzZihyKX1mdW5jdGlvbiBzZih0KXt0aGlzLl89dH1mdW5jdGlvbiBjZih0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLHI9dC5pbmRleE9mKCIuIik7aWYocj49MCYmKG49dC5zbGljZShyKzEpLHQ9dC5zbGljZSgwLHIpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gdWYodCxlKXtmb3IodmFyIG4scj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZigobj10W3JdKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBsZih0LGUsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7KytyKWlmKHRbcl0ubmFtZT09PWUpe3Rbcl09YWYsdD10LnNsaWNlKDAscikuY29uY2F0KHQuc2xpY2UocisxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fXNmLnByb3RvdHlwZT1vZi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnNmLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj10aGlzLl8saT1jZih0KyIiLHIpLGE9LTEsbz1pLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrYTxvOylpZihuPSh0PWlbYV0pLnR5cGUpcltuXT1sZihyW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gcilyW25dPWxmKHJbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KythPG87KWlmKChuPSh0PWlbYV0pLnR5cGUpJiYobj11ZihyW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBzZih0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4scixpPW5ldyBBcnJheShuKSxhPTA7YTxuOysrYSlpW2FdPWFyZ3VtZW50c1thKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKGE9MCxuPShyPXRoaXMuX1t0XSkubGVuZ3RoO2E8bjsrK2EpclthXS52YWx1ZS5hcHBseShlLGkpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIHI9dGhpcy5fW3RdLGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpcltpXS52YWx1ZS5hcHBseShlLG4pfX07Y29uc3QgaGY9b2Y7dmFyIGZmLGRmLHBmPTAseWY9MCxnZj0wLG1mPTAsdmY9MCxiZj0wLF9mPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHhmPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHdmKCl7cmV0dXJuIHZmfHwoeGYoa2YpLHZmPV9mLm5vdygpK2JmKX1mdW5jdGlvbiBrZigpe3ZmPTB9ZnVuY3Rpb24gVGYoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEVmKHQsZSxuKXt2YXIgcj1uZXcgVGY7cmV0dXJuIHIucmVzdGFydCh0LGUsbikscn1mdW5jdGlvbiBDZigpe3ZmPShtZj1fZi5ub3coKSkrYmYscGY9eWY9MDt0cnl7IWZ1bmN0aW9uKCl7d2YoKSwrK3BmO2Zvcih2YXIgdCxlPWZmO2U7KSh0PXZmLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwodm9pZCAwLHQpLGU9ZS5fbmV4dDstLXBmfSgpfWZpbmFsbHl7cGY9MCxmdW5jdGlvbigpe2Zvcih2YXIgdCxlLG49ZmYscj0xLzA7bjspbi5fY2FsbD8ocj5uLl90aW1lJiYocj1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOmZmPWUpO2RmPXQsQWYocil9KCksdmY9MH19ZnVuY3Rpb24gU2YoKXt2YXIgdD1fZi5ub3coKSxlPXQtbWY7ZT4xZTMmJihiZi09ZSxtZj10KX1mdW5jdGlvbiBBZih0KXtwZnx8KHlmJiYoeWY9Y2xlYXJUaW1lb3V0KHlmKSksdC12Zj4yND8odDwxLzAmJih5Zj1zZXRUaW1lb3V0KENmLHQtX2Yubm93KCktYmYpKSxnZiYmKGdmPWNsZWFySW50ZXJ2YWwoZ2YpKSk6KGdmfHwobWY9X2Yubm93KCksZ2Y9c2V0SW50ZXJ2YWwoU2YsMWUzKSkscGY9MSx4ZihDZikpKX1mdW5jdGlvbiBNZih0LGUsbil7dmFyIHI9bmV3IFRmO3JldHVybiBlPW51bGw9PWU/MDorZSxyLnJlc3RhcnQoKG49PntyLnN0b3AoKSx0KG4rZSl9KSxlLG4pLHJ9VGYucHJvdG90eXBlPUVmLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VGYscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3dmKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fGRmPT09dGhpc3x8KGRmP2RmLl9uZXh0PXRoaXM6ZmY9dGhpcyxkZj10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLEFmKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLEFmKCkpfX07dmFyIE5mPWhmKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLERmPVtdO2Z1bmN0aW9uIE9mKHQsZSxuLHIsaSxhKXt2YXIgbz10Ll9fdHJhbnNpdGlvbjtpZihvKXtpZihuIGluIG8pcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIGEoYyl7dmFyIHUsbCxoLGY7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIHMoKTtmb3IodSBpbiBpKWlmKChmPWlbdV0pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1mLnN0YXRlKXJldHVybiBNZihhKTs0PT09Zi5zdGF0ZT8oZi5zdGF0ZT02LGYudGltZXIuc3RvcCgpLGYub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZi5pbmRleCxmLmdyb3VwKSxkZWxldGUgaVt1XSk6K3U8ZSYmKGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pfWlmKE1mKChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxvKGMpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMscj1uZXcgQXJyYXkoaD1uLnR3ZWVuLmxlbmd0aCksdT0wLGw9LTE7dTxoOysrdSkoZj1uLnR3ZWVuW3VdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYoclsrK2xdPWYpO3IubGVuZ3RoPWwrMX19ZnVuY3Rpb24gbyhlKXtmb3IodmFyIGk9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KHMpLG4uc3RhdGU9NSwxKSxhPS0xLG89ci5sZW5ndGg7KythPG87KXJbYV0uY2FsbCh0LGkpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLHMoKSl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgciBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIGlbZV0saSlyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufWlbZV09bixuLnRpbWVyPUVmKChmdW5jdGlvbih0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX0pLDAsbi50aW1lKX0odCxuLHtuYW1lOmUsaW5kZXg6cixncm91cDppLG9uOk5mLHR3ZWVuOkRmLHRpbWU6YS50aW1lLGRlbGF5OmEuZGVsYXksZHVyYXRpb246YS5kdXJhdGlvbixlYXNlOmEuZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBCZih0LGUpe3ZhciBuPUlmKHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gTGYodCxlKXt2YXIgbj1JZih0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBJZih0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIFJmKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fXZhciBGZixQZj0xODAvTWF0aC5QSSxqZj17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBZZih0LGUsbixyLGksYSl7dmFyIG8scyxjO3JldHVybihvPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1vLGUvPW8pLChjPXQqbitlKnIpJiYobi09dCpjLHItPWUqYyksKHM9TWF0aC5zcXJ0KG4qbityKnIpKSYmKG4vPXMsci89cyxjLz1zKSx0KnI8ZSpuJiYodD0tdCxlPS1lLGM9LWMsbz0tbykse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpQZixza2V3WDpNYXRoLmF0YW4oYykqUGYsc2NhbGVYOm8sc2NhbGVZOnN9fWZ1bmN0aW9uIHpmKHQsZSxuLHIpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLG8pe3ZhciBzPVtdLGM9W107cmV0dXJuIGE9dChhKSxvPXQobyksZnVuY3Rpb24odCxyLGksYSxvLHMpe2lmKHQhPT1pfHxyIT09YSl7dmFyIGM9by5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6Yy00LHg6UmYodCxpKX0se2k6Yy0yLHg6UmYocixhKX0pfWVsc2UoaXx8YSkmJm8ucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxhLnB1c2goe2k6bi5wdXNoKGkobikrInJvdGF0ZSgiLG51bGwsciktMix4OlJmKHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urcil9KGEucm90YXRlLG8ucm90YXRlLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/YS5wdXNoKHtpOm4ucHVzaChpKG4pKyJza2V3WCgiLG51bGwsciktMix4OlJmKHQsZSl9KTplJiZuLnB1c2goaShuKSsic2tld1goIitlK3IpfShhLnNrZXdYLG8uc2tld1gscyxjKSxmdW5jdGlvbih0LGUsbixyLGEsbyl7aWYodCE9PW58fGUhPT1yKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7by5wdXNoKHtpOnMtNCx4OlJmKHQsbil9LHtpOnMtMix4OlJmKGUscil9KX1lbHNlIDE9PT1uJiYxPT09cnx8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrcisiKSIpfShhLnNjYWxlWCxhLnNjYWxlWSxvLnNjYWxlWCxvLnNjYWxlWSxzLGMpLGE9bz1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLHI9Yy5sZW5ndGg7KytuPHI7KXNbKGU9Y1tuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFVmPXpmKChmdW5jdGlvbih0KXtjb25zdCBlPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgRE9NTWF0cml4P0RPTU1hdHJpeDpXZWJLaXRDU1NNYXRyaXgpKHQrIiIpO3JldHVybiBlLmlzSWRlbnRpdHk/amY6WWYoZS5hLGUuYixlLmMsZS5kLGUuZSxlLmYpfSksInB4LCAiLCJweCkiLCJkZWcpIikscWY9emYoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P2pmOihGZnx8KEZmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLEZmLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1GZi50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9ZZigodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpqZil9KSwiLCAiLCIpIiwiKSIpO2Z1bmN0aW9uICRmKHQsZSl7dmFyIG4scjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1MZih0aGlzLHQpLGE9aS50d2VlbjtpZihhIT09bilmb3IodmFyIG89MCxzPShyPW49YSkubGVuZ3RoO288czsrK28paWYocltvXS5uYW1lPT09ZSl7KHI9ci5zbGljZSgpKS5zcGxpY2UobywxKTticmVha31pLnR3ZWVuPXJ9fWZ1bmN0aW9uIEhmKHQsZSxuKXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1MZih0aGlzLHQpLG89YS50d2VlbjtpZihvIT09cil7aT0ocj1vKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGM9MCx1PWkubGVuZ3RoO2M8dTsrK2MpaWYoaVtjXS5uYW1lPT09ZSl7aVtjXT1zO2JyZWFrfWM9PT11JiZpLnB1c2gocyl9YS50d2Vlbj1pfX1mdW5jdGlvbiBXZih0LGUsbil7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1MZih0aGlzLHIpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBJZih0LHIpLnZhbHVlW2VdfX1mdW5jdGlvbiBWZih0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fWNvbnN0IEdmPWZ1bmN0aW9uIHQoZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIDE9PSh0PSt0KT9GcjpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHQrciplLG4pfX0oZSxuLHQpOklyKGlzTmFOKGUpP246ZSl9fShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIHI9bigodD11cih0KSkuciwoZT11cihlKSkuciksaT1uKHQuZyxlLmcpLGE9bih0LmIsZS5iKSxvPUZyKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPXIoZSksdC5nPWkoZSksdC5iPWEoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSgxKTtmdW5jdGlvbiBYZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4scixpPWUubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilyPXVyKGVbbl0pLGFbbl09ci5yfHwwLG9bbl09ci5nfHwwLHNbbl09ci5ifHwwO3JldHVybiBhPXQoYSksbz10KG8pLHM9dChzKSxyLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gci5yPWEodCksci5nPW8odCksci5iPXModCkscisiIn19fVhmKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSksaT10W3JdLGE9dFtyKzFdLG89cj4wP3Rbci0xXToyKmktYSxzPXI8ZS0xP3RbcisyXToyKmEtaTtyZXR1cm4gVmYoKG4tci9lKSplLG8saSxhLHMpfX0pKSxYZigoZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKSxpPXRbKHIrZS0xKSVlXSxhPXRbciVlXSxvPXRbKHIrMSklZV0scz10WyhyKzIpJWVdO3JldHVybiBWZigobi1yL2UpKmUsaSxhLG8scyl9fSkpO3ZhciBaZj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csUWY9bmV3IFJlZ0V4cChaZi5zb3VyY2UsImciKTtmdW5jdGlvbiBLZih0LGUpe3ZhciBuLHIsaSxhPVpmLmxhc3RJbmRleD1RZi5sYXN0SW5kZXg9MCxvPS0xLHM9W10sYz1bXTtmb3IodCs9IiIsZSs9IiI7KG49WmYuZXhlYyh0KSkmJihyPVFmLmV4ZWMoZSkpOykoaT1yLmluZGV4KT5hJiYoaT1lLnNsaWNlKGEsaSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSwobj1uWzBdKT09PShyPXJbMF0pP3Nbb10/c1tvXSs9cjpzWysrb109cjooc1srK29dPW51bGwsYy5wdXNoKHtpOm8seDpSZihuLHIpfSkpLGE9UWYubGFzdEluZGV4O3JldHVybiBhPGUubGVuZ3RoJiYoaT1lLnNsaWNlKGEpLHNbb10/c1tvXSs9aTpzWysrb109aSkscy5sZW5ndGg8Mj9jWzBdP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KGNbMF0ueCk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fShlKTooZT1jLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4scj0wO3I8ZTsrK3Ipc1sobj1jW3JdKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBKZih0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/UmY6ZSBpbnN0YW5jZW9mIGFyP0dmOihuPWFyKGUpKT8oZT1uLEdmKTpLZikodCxlKX1mdW5jdGlvbiB0ZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gZWQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBuZCh0LGUsbil7dmFyIHIsaSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX1mdW5jdGlvbiByZCh0LGUsbil7dmFyIHIsaSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19ZnVuY3Rpb24gaWQodCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbyxzLGM9bih0aGlzKTtpZihudWxsIT1jKXJldHVybihvPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWMrIiIpP251bGw6bz09PXImJnM9PT1pP2E6KGk9cyxhPWUocj1vLGMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gYWQodCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbyxzLGM9bih0aGlzKTtpZihudWxsIT1jKXJldHVybihvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1jKyIiKT9udWxsOm89PT1yJiZzPT09aT9hOihpPXMsYT1lKHI9byxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBvZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gc2QodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBjZCh0LGUpe3ZhciBuLHI7ZnVuY3Rpb24gaSgpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09ciYmKG49KHI9aSkmJnNkKHQsaSkpLG59cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiB1ZCh0LGUpe3ZhciBuLHI7ZnVuY3Rpb24gaSgpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09ciYmKG49KHI9aSkmJm9kKHQsaSkpLG59cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiBsZCh0LGUpe3JldHVybiBmdW5jdGlvbigpe0JmKHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBoZCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7QmYodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiBmZCh0LGUpe3JldHVybiBmdW5jdGlvbigpe0xmKHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBkZCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7TGYodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBwZCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtMZih0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24geWQodCxlLG4pe3ZhciByLGksYT1mdW5jdGlvbih0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KGUpP0JmOkxmO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWEodGhpcyx0KSxzPW8ub247cyE9PXImJihpPShyPXMpLmNvcHkoKSkub24oZSxuKSxvLm9uPWl9fXZhciBnZD1pdS5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gbWQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gdmQodCxlLG4pe3JldHVybiBmdW5jdGlvbihyKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsciksbil9fWZ1bmN0aW9uIGJkKHQsZSxuKXt2YXIgcixpO2Z1bmN0aW9uIGEoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PWkmJihyPShpPWEpJiZ2ZCh0LGEsbikpLHJ9cmV0dXJuIGEuX3ZhbHVlPWUsYX1mdW5jdGlvbiBfZCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24geGQodCl7dmFyIGUsbjtmdW5jdGlvbiByKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1uJiYoZT0obj1yKSYmX2QocikpLGV9cmV0dXJuIHIuX3ZhbHVlPXQscn12YXIgd2Q9MDtmdW5jdGlvbiBrZCh0LGUsbixyKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPXJ9ZnVuY3Rpb24gVGQoKXtyZXR1cm4rK3dkfXZhciBFZD1pdS5wcm90b3R5cGU7a2QucHJvdG90eXBlPWZ1bmN0aW9uKHQpe3JldHVybiBpdSgpLnRyYW5zaXRpb24odCl9LnByb3RvdHlwZT17Y29uc3RydWN0b3I6a2Qsc2VsZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SHModCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbylmb3IodmFyIHMsYyx1PXJbb10sbD11Lmxlbmd0aCxoPWFbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKShzPXVbZl0pJiYoYz10LmNhbGwocyxzLl9fZGF0YV9fLGYsdSkpJiYoIl9fZGF0YV9fImluIHMmJihjLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZl09YyxPZihoW2ZdLGUsbixmLGgsSWYocyxuKSkpO3JldHVybiBuZXcga2QoYSx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUdzKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT1bXSxvPVtdLHM9MDtzPGk7KytzKWZvcih2YXIgYyx1PXJbc10sbD11Lmxlbmd0aCxoPTA7aDxsOysraClpZihjPXVbaF0pe2Zvcih2YXIgZixkPXQuY2FsbChjLGMuX19kYXRhX18saCx1KSxwPUlmKGMsbikseT0wLGc9ZC5sZW5ndGg7eTxnOysreSkoZj1kW3ldKSYmT2YoZixlLG4seSxkLHApO2EucHVzaChkKSxvLnB1c2goYyl9cmV0dXJuIG5ldyBrZChhLG8sZSxuKX0sc2VsZWN0Q2hpbGQ6RWQuc2VsZWN0Q2hpbGQsc2VsZWN0Q2hpbGRyZW46RWQuc2VsZWN0Q2hpbGRyZW4sZmlsdGVyOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1Ycyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvPWVbaV0scz1vLmxlbmd0aCxjPXJbaV09W10sdT0wO3U8czsrK3UpKGE9b1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxvKSYmYy5wdXNoKGEpO3JldHVybiBuZXcga2Qocix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLHI9ZS5sZW5ndGgsaT1uLmxlbmd0aCxhPU1hdGgubWluKHIsaSksbz1uZXcgQXJyYXkocikscz0wO3M8YTsrK3MpZm9yKHZhciBjLHU9ZVtzXSxsPW5bc10saD11Lmxlbmd0aCxmPW9bc109bmV3IEFycmF5KGgpLGQ9MDtkPGg7KytkKShjPXVbZF18fGxbZF0pJiYoZltkXT1jKTtmb3IoO3M8cjsrK3Mpb1tzXT1lW3NdO3JldHVybiBuZXcga2Qobyx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGdkKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sdHJhbnNpdGlvbjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9uYW1lLGU9dGhpcy5faWQsbj1UZCgpLHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KWlmKG89c1t1XSl7dmFyIGw9SWYobyxlKTtPZihvLHQsbix1LHMse3RpbWU6bC50aW1lK2wuZGVsYXkrbC5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOmwuZHVyYXRpb24sZWFzZTpsLmVhc2V9KX1yZXR1cm4gbmV3IGtkKHIsdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkVkLmNhbGwsbm9kZXM6RWQubm9kZXMsbm9kZTpFZC5ub2RlLHNpemU6RWQuc2l6ZSxlbXB0eTpFZC5lbXB0eSxlYWNoOkVkLmVhY2gsb246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0lmKHRoaXMubm9kZSgpLG4pLm9uLm9uKHQpOnRoaXMuZWFjaCh5ZChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uKHQsZSl7dmFyIG49aGModCkscj0idHJhbnNmb3JtIj09PW4/cWY6SmY7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/YWQ6aWQpKG4scixXZih0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD9lZDp0ZCkobik6KG4ubG9jYWw/cmQ6bmQpKG4scixlKSl9LGF0dHJUd2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIHI9aGModCk7cmV0dXJuIHRoaXMudHdlZW4obiwoci5sb2NhbD9jZDp1ZCkocixlKSl9LHN0eWxlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0idHJhbnNmb3JtIj09KHQrPSIiKT9VZjpKZjtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCxmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT13Yyh0aGlzLHQpLG89KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksd2ModGhpcyx0KSk7cmV0dXJuIGE9PT1vP251bGw6YT09PW4mJm89PT1yP2k6aT1lKG49YSxyPW8pfX0odCxyKSkub24oImVuZC5zdHlsZS4iK3QsbWQodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89d2ModGhpcyx0KSxzPW4odGhpcyksYz1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxjPXM9d2ModGhpcyx0KSksbz09PWM/bnVsbDpvPT09ciYmYz09PWk/YTooaT1jLGE9ZShyPW8scykpfX0odCxyLFdmKHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goZnVuY3Rpb24odCxlKXt2YXIgbixyLGksYSxvPSJzdHlsZS4iK2Uscz0iZW5kLiIrbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1MZih0aGlzLHQpLHU9Yy5vbixsPW51bGw9PWMudmFsdWVbb10/YXx8KGE9bWQoZSkpOnZvaWQgMDt1PT09biYmaT09PWx8fChyPShuPXUpLmNvcHkoKSkub24ocyxpPWwpLGMub249cn19KHRoaXMuX2lkLHQpKTp0aGlzLnN0eWxlVHdlZW4odCxmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89d2ModGhpcyx0KTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fSh0LHIsZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihyPXRoaXMudHdlZW4ocikpJiZyLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKHIsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKHIsYmQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0oV2YodGhpcywidGV4dCIsdCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KG51bGw9PXQ/IiI6dCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24odCl7dmFyIGU9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVsbD09dClyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihlLHhkKHQpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT10KXJldHVybjtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfX0odGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcixpPUlmKHRoaXMubm9kZSgpLG4pLnR3ZWVuLGE9MCxvPWkubGVuZ3RoO2E8bzsrK2EpaWYoKHI9aVthXSkubmFtZT09PXQpcmV0dXJuIHIudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT8kZjpIZikobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9sZDpoZCkoZSx0KSk6SWYodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZmQ6ZGQpKGUsdCkpOklmKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChwZChlLHQpKTpJZih0aGlzLm5vZGUoKSxlKS5lYXNlfSxlYXNlVmFyeWluZzpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtMZih0aGlzLHQpLmVhc2U9bn19KHRoaXMuX2lkLHQpKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIHQsZSxuPXRoaXMscj1uLl9pZCxpPW4uc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oYSxvKXt2YXIgcz17dmFsdWU6b30sYz17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLWkmJmEoKX19O24uZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1MZih0aGlzLHIpLGk9bi5vbjtpIT09dCYmKChlPSh0PWkpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGMpKSxuLm9uPWV9KSksMD09PWkmJmEoKX0pKX0sW1N5bWJvbC5pdGVyYXRvcl06RWRbU3ltYm9sLml0ZXJhdG9yXX07dmFyIENkPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn19O2Z1bmN0aW9uIFNkKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpdGhyb3cgbmV3IEVycm9yKGB0cmFuc2l0aW9uICR7ZX0gbm90IGZvdW5kYCk7cmV0dXJuIG59ZnVuY3Rpb24gQWQoKXt9ZnVuY3Rpb24gTWQodCl7cmV0dXJuIG51bGw9PXQ/QWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBOZCh0KXtyZXR1cm4gbnVsbD09dD9bXTpBcnJheS5pc0FycmF5KHQpP3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBEZCgpe3JldHVybltdfWZ1bmN0aW9uIE9kKHQpe3JldHVybiBudWxsPT10P0RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gQmQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gTGQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoZXModCl9fWl1LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgbixyLGksYT10Ll9fdHJhbnNpdGlvbixvPSEwO2lmKGEpe2ZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsYSkobj1hW2ldKS5uYW1lPT09ZT8ocj1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKHI/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIGFbaV0pOm89ITE7byYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX0odGhpcyx0KX0pKX0saXUucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCl7dmFyIGUsbjt0IGluc3RhbmNlb2Yga2Q/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1UZCgpLChuPUNkKS50aW1lPXdmKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgbyxzPXJbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSkobz1zW3VdKSYmT2Yobyx0LGUsdSxzLG58fFNkKG8sZSkpO3JldHVybiBuZXcga2Qocix0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBJZD1BcnJheS5wcm90b3R5cGUuZmluZDtmdW5jdGlvbiBSZCgpe3JldHVybiB0aGlzLmZpcnN0RWxlbWVudENoaWxkfXZhciBGZD1BcnJheS5wcm90b3R5cGUuZmlsdGVyO2Z1bmN0aW9uIFBkKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbil9ZnVuY3Rpb24gamQodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gWWQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gemQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFVkKHQsZSxuLHIsaSxhKXtmb3IodmFyIG8scz0wLGM9ZS5sZW5ndGgsdT1hLmxlbmd0aDtzPHU7KytzKShvPWVbc10pPyhvLl9fZGF0YV9fPWFbc10scltzXT1vKTpuW3NdPW5ldyBZZCh0LGFbc10pO2Zvcig7czxjOysrcykobz1lW3NdKSYmKGlbc109byl9ZnVuY3Rpb24gcWQodCxlLG4scixpLGEsbyl7dmFyIHMsYyx1LGw9bmV3IE1hcCxoPWUubGVuZ3RoLGY9YS5sZW5ndGgsZD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShjPWVbc10pJiYoZFtzXT11PW8uY2FsbChjLGMuX19kYXRhX18scyxlKSsiIixsLmhhcyh1KT9pW3NdPWM6bC5zZXQodSxjKSk7Zm9yKHM9MDtzPGY7KytzKXU9by5jYWxsKHQsYVtzXSxzLGEpKyIiLChjPWwuZ2V0KHUpKT8ocltzXT1jLGMuX19kYXRhX189YVtzXSxsLmRlbGV0ZSh1KSk6bltzXT1uZXcgWWQodCxhW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGM9ZVtzXSkmJmwuZ2V0KGRbc10pPT09YyYmKGlbc109Yyl9ZnVuY3Rpb24gJGQodCl7cmV0dXJuIHQuX19kYXRhX199ZnVuY3Rpb24gSGQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYibGVuZ3RoImluIHQ/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIFdkKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfVlkLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WWQsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX07dmFyIFZkPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtjb25zdCBHZD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6VmQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBYZCh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxHZC5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6R2RbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBaZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gUWQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBLZCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIEpkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIHRwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBlcCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBucCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gcnAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gaXAodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBhcCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxyLG4pfX1mdW5jdGlvbiBvcCh0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fG5wKHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIHNwKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBjcCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gdXAodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gbHAodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIGhwKHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IGZwKHQpfWZ1bmN0aW9uIGZwKHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1scCh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIGRwKHQsZSl7Zm9yKHZhciBuPWhwKHQpLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspbi5hZGQoZVtyXSl9ZnVuY3Rpb24gcHAodCxlKXtmb3IodmFyIG49aHAodCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLnJlbW92ZShlW3JdKX1mdW5jdGlvbiB5cCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkcCh0aGlzLHQpfX1mdW5jdGlvbiBncCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtwcCh0aGlzLHQpfX1mdW5jdGlvbiBtcCh0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9kcDpwcCkodGhpcyx0KX19ZnVuY3Rpb24gdnAoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIGJwKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gX3AodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHhwKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gd3AodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24ga3AodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBUcCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBFcCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIENwKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09VmQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVZkP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBTcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBBcCh0KXt2YXIgZT1YZCh0KTtyZXR1cm4oZS5sb2NhbD9TcDpDcCkoZSl9ZnVuY3Rpb24gTXAoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBOcCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIERwKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBPcCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gQnAodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gTHAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixyPTAsaT0tMSxhPWUubGVuZ3RoO3I8YTsrK3Ipbj1lW3JdLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK2ldPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4ub3B0aW9ucyk7KytpP2UubGVuZ3RoPWk6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIElwKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixpPXRoaXMuX19vbixhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0LmNhbGwodGhpcyxlLHRoaXMuX19kYXRhX18pfX0oZSk7aWYoaSlmb3IodmFyIG89MCxzPWkubGVuZ3RoO288czsrK28paWYoKHI9aVtvXSkudHlwZT09PXQudHlwZSYmci5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoci50eXBlLHIubGlzdGVuZXIsci5vcHRpb25zKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoci50eXBlLHIubGlzdGVuZXI9YSxyLm9wdGlvbnM9biksdm9pZChyLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsYSxuKSxyPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOmEsb3B0aW9uczpufSxpP2kucHVzaChyKTp0aGlzLl9fb249W3JdfX1mdW5jdGlvbiBScCh0LGUsbil7dmFyIHI9bnAodCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkoZSxuKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KGkuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksaS5kZXRhaWw9bi5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gRnAodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUnAodGhpcyx0LGUpfX1mdW5jdGlvbiBQcCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBScCh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mcC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBqcD1bbnVsbF07ZnVuY3Rpb24gWXAodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24genAoKXtyZXR1cm4gbmV3IFlwKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sanApfVlwLnByb3RvdHlwZT16cC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOllwLHNlbGVjdDpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9TWQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbyxzPWVbaV0sYz1zLmxlbmd0aCx1PXJbaV09bmV3IEFycmF5KGMpLGw9MDtsPGM7KytsKShhPXNbbF0pJiYobz10LmNhbGwoYSxhLl9fZGF0YV9fLGwscykpJiYoIl9fZGF0YV9fImluIGEmJihvLl9fZGF0YV9fPWEuX19kYXRhX18pLHVbbF09byk7cmV0dXJuIG5ldyBZcChyLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7dD0iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTmQodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0odCk6T2QodCk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9W10saT1bXSxhPTA7YTxuOysrYSlmb3IodmFyIG8scz1lW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpKG89c1t1XSkmJihyLnB1c2godC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSxpLnB1c2gobykpO3JldHVybiBuZXcgWXAocixpKX0sc2VsZWN0Q2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KG51bGw9PXQ/UmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIElkLmNhbGwodGhpcy5jaGlsZHJlbix0KX19KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TGQodCkpKX0sc2VsZWN0Q2hpbGRyZW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0QWxsKG51bGw9PXQ/UGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEZkLmNhbGwodGhpcy5jaGlsZHJlbix0KX19KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TGQodCkpKX0sZmlsdGVyOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1CZCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvPWVbaV0scz1vLmxlbmd0aCxjPXJbaV09W10sdT0wO3U8czsrK3UpKGE9b1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxvKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgWXAocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbih0LGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBBcnJheS5mcm9tKHRoaXMsJGQpO3ZhciBuPWU/cWQ6VWQscj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD16ZCh0KSk7Zm9yKHZhciBhPWkubGVuZ3RoLG89bmV3IEFycmF5KGEpLHM9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgbD1yW3VdLGg9aVt1XSxmPWgubGVuZ3RoLGQ9SGQodC5jYWxsKGwsbCYmbC5fX2RhdGFfXyx1LHIpKSxwPWQubGVuZ3RoLHk9c1t1XT1uZXcgQXJyYXkocCksZz1vW3VdPW5ldyBBcnJheShwKSxtPWNbdV09bmV3IEFycmF5KGYpO24obCxoLHksZyxtLGQsZSk7Zm9yKHZhciB2LGIsXz0wLHg9MDtfPHA7KytfKWlmKHY9eVtfXSl7Zm9yKF8+PXgmJih4PV8rMSk7IShiPWdbeF0pJiYrK3g8cDspO3YuX25leHQ9Ynx8bnVsbH19cmV0dXJuKG89bmV3IFlwKG8scikpLl9lbnRlcj1zLG8uX2V4aXQ9YyxvfSxlbnRlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgWXAodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoamQpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcCh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKGpkKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5lbnRlcigpLGk9dGhpcyxhPXRoaXMuZXhpdCgpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0PyhyPXQocikpJiYocj1yLnNlbGVjdGlvbigpKTpyPXIuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpJiYoaT1pLnNlbGVjdGlvbigpKSxudWxsPT1uP2EucmVtb3ZlKCk6bihhKSxyJiZpP3IubWVyZ2UoaSkub3JkZXIoKTppfSxtZXJnZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0LG49dGhpcy5fZ3JvdXBzLHI9ZS5fZ3JvdXBzLGk9bi5sZW5ndGgsYT1yLmxlbmd0aCxvPU1hdGgubWluKGksYSkscz1uZXcgQXJyYXkoaSksYz0wO2M8bzsrK2MpZm9yKHZhciB1LGw9bltjXSxoPXJbY10sZj1sLmxlbmd0aCxkPXNbY109bmV3IEFycmF5KGYpLHA9MDtwPGY7KytwKSh1PWxbcF18fGhbcF0pJiYoZFtwXT11KTtmb3IoO2M8aTsrK2Mpc1tjXT1uW2NdO3JldHVybiBuZXcgWXAocyx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG9yZGVyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgcixpPXRbZV0sYT1pLmxlbmd0aC0xLG89aVthXTstLWE+PTA7KShyPWlbYV0pJiYobyYmNF5yLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG8pJiZvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsbyksbz1yKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVdkKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLHI9bi5sZW5ndGgsaT1uZXcgQXJyYXkociksYT0wO2E8cjsrK2Epe2Zvcih2YXIgbyxzPW5bYV0sYz1zLmxlbmd0aCx1PWlbYV09bmV3IEFycmF5KGMpLGw9MDtsPGM7KytsKShvPXNbbF0pJiYodVtsXT1vKTt1LnNvcnQoZSl9cmV0dXJuIG5ldyBZcChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcyl9LG5vZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByPXRbZV0saT0wLGE9ci5sZW5ndGg7aTxhOysraSl7dmFyIG89cltpXTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uKCl7bGV0IHQ9MDtmb3IoY29uc3QgZSBvZiB0aGlzKSsrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAscj1lLmxlbmd0aDtuPHI7KytuKWZvcih2YXIgaSxhPWVbbl0sbz0wLHM9YS5sZW5ndGg7bzxzOysrbykoaT1hW29dKSYmdC5jYWxsKGksaS5fX2RhdGFfXyxvLGEpO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uKHQsZSl7dmFyIG49WGQodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcj10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9yLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ci5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP1FkOlpkOiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/ZXA6dHA6bi5sb2NhbD9KZDpLZCkobixlKSl9LHN0eWxlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9ycDoiZnVuY3Rpb24iPT10eXBlb2YgZT9hcDppcCkodCxlLG51bGw9PW4/IiI6bikpOm9wKHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3NwOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3VwOmNwKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbih0LGUpe3ZhciBuPWxwKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByPWhwKHRoaXMubm9kZSgpKSxpPS0xLGE9bi5sZW5ndGg7KytpPGE7KWlmKCFyLmNvbnRhaW5zKG5baV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP21wOmU/eXA6Z3ApKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3ZwOigiZnVuY3Rpb24iPT10eXBlb2YgdD9fcDpicCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3hwOigiZnVuY3Rpb24iPT10eXBlb2YgdD9rcDp3cCkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKFRwKX0sbG93ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEVwKX0sYXBwZW5kOmZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXAodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcCh0KSxyPW51bGw9PWU/TXA6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpNZChlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChOcCl9LGNsb25lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P09wOkRwKX0sZGF0dW06ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhPUJwKHQrIiIpLG89YS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP0lwOkxwLHI9MDtyPG87KytyKXRoaXMuZWFjaChzKGFbcl0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgYyx1PTAsbD1zLmxlbmd0aDt1PGw7Kyt1KWZvcihyPTAsYz1zW3VdO3I8bzsrK3IpaWYoKGk9YVtyXSkudHlwZT09PWMudHlwZSYmaS5uYW1lPT09Yy5uYW1lKXJldHVybiBjLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1BwOkZwKSh0LGUpKX0sW1N5bWJvbC5pdGVyYXRvcl06ZnVuY3Rpb24qKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgcixpPXRbZV0sYT0wLG89aS5sZW5ndGg7YTxvOysrYSkocj1pW2FdKSYmKHlpZWxkIHIpfX07Y29uc3QgVXA9enA7dmFyIHFwPXt2YWx1ZTooKT0+e319O2Z1bmN0aW9uICRwKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgscj17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiByfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7clt0XT1bXX1yZXR1cm4gbmV3IEhwKHIpfWZ1bmN0aW9uIEhwKHQpe3RoaXMuXz10fWZ1bmN0aW9uIFdwKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIscj10LmluZGV4T2YoIi4iKTtpZihyPj0wJiYobj10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBWcCh0LGUpe2Zvcih2YXIgbixyPTAsaT10Lmxlbmd0aDtyPGk7KytyKWlmKChuPXRbcl0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIEdwKHQsZSxuKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYodFtyXS5uYW1lPT09ZSl7dFtyXT1xcCx0PXQuc2xpY2UoMCxyKS5jb25jYXQodC5zbGljZShyKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9SHAucHJvdG90eXBlPSRwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SHAsb246ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMuXyxpPVdwKHQrIiIsciksYT0tMSxvPWkubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KythPG87KWlmKG49KHQ9aVthXSkudHlwZSlyW25dPUdwKHJbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiByKXJbbl09R3AocltuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK2E8bzspaWYoKG49KHQ9aVthXSkudHlwZSkmJihuPVZwKHJbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IEhwKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixyLGk9bmV3IEFycmF5KG4pLGE9MDthPG47KythKWlbYV09YXJndW1lbnRzW2ErMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IoYT0wLG49KHI9dGhpcy5fW3RdKS5sZW5ndGg7YTxuOysrYSlyW2FdLnZhbHVlLmFwcGx5KGUsaSl9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgcj10aGlzLl9bdF0saT0wLGE9ci5sZW5ndGg7aTxhOysraSlyW2ldLnZhbHVlLmFwcGx5KGUsbil9fTtjb25zdCBYcD0kcDt2YXIgWnAsUXAsS3A9MCxKcD0wLHR5PTAsZXk9MCxueT0wLHJ5PTAsaXk9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsYXk9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gb3koKXtyZXR1cm4gbnl8fChheShzeSksbnk9aXkubm93KCkrcnkpfWZ1bmN0aW9uIHN5KCl7bnk9MH1mdW5jdGlvbiBjeSgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gdXkodCxlLG4pe3ZhciByPW5ldyBjeTtyZXR1cm4gci5yZXN0YXJ0KHQsZSxuKSxyfWZ1bmN0aW9uIGx5KCl7bnk9KGV5PWl5Lm5vdygpKStyeSxLcD1KcD0wO3RyeXshZnVuY3Rpb24oKXtveSgpLCsrS3A7Zm9yKHZhciB0LGU9WnA7ZTspKHQ9bnktZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbCh2b2lkIDAsdCksZT1lLl9uZXh0Oy0tS3B9KCl9ZmluYWxseXtLcD0wLGZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbj1acCxyPTEvMDtuOyluLl9jYWxsPyhyPm4uX3RpbWUmJihyPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6WnA9ZSk7UXA9dCxmeShyKX0oKSxueT0wfX1mdW5jdGlvbiBoeSgpe3ZhciB0PWl5Lm5vdygpLGU9dC1leTtlPjFlMyYmKHJ5LT1lLGV5PXQpfWZ1bmN0aW9uIGZ5KHQpe0twfHwoSnAmJihKcD1jbGVhclRpbWVvdXQoSnApKSx0LW55PjI0Pyh0PDEvMCYmKEpwPXNldFRpbWVvdXQobHksdC1peS5ub3coKS1yeSkpLHR5JiYodHk9Y2xlYXJJbnRlcnZhbCh0eSkpKToodHl8fChleT1peS5ub3coKSx0eT1zZXRJbnRlcnZhbChoeSwxZTMpKSxLcD0xLGF5KGx5KSkpfWZ1bmN0aW9uIGR5KHQsZSxuKXt2YXIgcj1uZXcgY3k7cmV0dXJuIGU9bnVsbD09ZT8wOitlLHIucmVzdGFydCgobj0+e3Iuc3RvcCgpLHQobitlKX0pLGUsbikscn1jeS5wcm90b3R5cGU9dXkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjeSxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/b3koKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8UXA9PT10aGlzfHwoUXA/UXAuX25leHQ9dGhpczpacD10aGlzLFFwPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sZnkoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsZnkoKSl9fTt2YXIgcHk9WHAoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IikseXk9W107ZnVuY3Rpb24gZ3kodCxlLG4scixpLGEpe3ZhciBvPXQuX190cmFuc2l0aW9uO2lmKG8pe2lmKG4gaW4gbylyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshZnVuY3Rpb24odCxlLG4pe3ZhciByLGk9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gYShjKXt2YXIgdSxsLGgsZjtpZigxIT09bi5zdGF0ZSlyZXR1cm4gcygpO2Zvcih1IGluIGkpaWYoKGY9aVt1XSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWYuc3RhdGUpcmV0dXJuIGR5KGEpOzQ9PT1mLnN0YXRlPyhmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKTordTxlJiYoZi5zdGF0ZT02LGYudGltZXIuc3RvcCgpLGYub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZi5pbmRleCxmLmdyb3VwKSxkZWxldGUgaVt1XSl9aWYoZHkoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KG8sbi5kZWxheSxuLnRpbWUpLG8oYykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxyPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSx1PTAsbD0tMTt1PGg7Kyt1KShmPW4udHdlZW5bdV0udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihyWysrbF09Zik7ci5sZW5ndGg9bCsxfX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgaT1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQocyksbi5zdGF0ZT01LDEpLGE9LTEsbz1yLmxlbmd0aDsrK2E8bzspclthXS5jYWxsKHQsaSk7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkscygpKX1mdW5jdGlvbiBzKCl7Zm9yKHZhciByIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtlXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtlXT1uLG4udGltZXI9dXkoKGZ1bmN0aW9uKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfSksMCxuLnRpbWUpfSh0LG4se25hbWU6ZSxpbmRleDpyLGdyb3VwOmksb246cHksdHdlZW46eXksdGltZTphLnRpbWUsZGVsYXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIG15KHQsZSl7dmFyIG49YnkodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiB2eSh0LGUpe3ZhciBuPWJ5KHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIGJ5KHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gX3kodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIHh5LHd5PTE4MC9NYXRoLlBJLGt5PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIFR5KHQsZSxuLHIsaSxhKXt2YXIgbyxzLGM7cmV0dXJuKG89TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPW8sZS89byksKGM9dCpuK2UqcikmJihuLT10KmMsci09ZSpjKSwocz1NYXRoLnNxcnQobipuK3IqcikpJiYobi89cyxyLz1zLGMvPXMpLHQqcjxlKm4mJih0PS10LGU9LWUsYz0tYyxvPS1vKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6YSxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKnd5LHNrZXdYOk1hdGguYXRhbihjKSp3eSxzY2FsZVg6byxzY2FsZVk6c319ZnVuY3Rpb24gRXkodCxlLG4scil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKGEsbyl7dmFyIHM9W10sYz1bXTtyZXR1cm4gYT10KGEpLG89dChvKSxmdW5jdGlvbih0LHIsaSxhLG8scyl7aWYodCE9PWl8fHIhPT1hKXt2YXIgYz1vLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpjLTQseDpfeSh0LGkpfSx7aTpjLTIseDpfeShyLGEpfSl9ZWxzZShpfHxhKSYmby5wdXNoKCJ0cmFuc2xhdGUoIitpK2UrYStuKX0oYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLGEucHVzaCh7aTpuLnB1c2goaShuKSsicm90YXRlKCIsbnVsbCxyKS0yLHg6X3kodCxlKX0pKTplJiZuLnB1c2goaShuKSsicm90YXRlKCIrZStyKX0oYS5yb3RhdGUsby5yb3RhdGUscyxjKSxmdW5jdGlvbih0LGUsbixhKXt0IT09ZT9hLnB1c2goe2k6bi5wdXNoKGkobikrInNrZXdYKCIsbnVsbCxyKS0yLHg6X3kodCxlKX0pOmUmJm4ucHVzaChpKG4pKyJza2V3WCgiK2Urcil9KGEuc2tld1gsby5za2V3WCxzLGMpLGZ1bmN0aW9uKHQsZSxuLHIsYSxvKXtpZih0IT09bnx8ZSE9PXIpe3ZhciBzPWEucHVzaChpKGEpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtvLnB1c2goe2k6cy00LHg6X3kodCxuKX0se2k6cy0yLHg6X3koZSxyKX0pfWVsc2UgMT09PW4mJjE9PT1yfHxhLnB1c2goaShhKSsic2NhbGUoIituKyIsIityKyIpIil9KGEuc2NhbGVYLGEuc2NhbGVZLG8uc2NhbGVYLG8uc2NhbGVZLHMsYyksYT1vPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEscj1jLmxlbmd0aDsrK248cjspc1soZT1jW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgQ3k9RXkoKGZ1bmN0aW9uKHQpe2NvbnN0IGU9bmV3KCJmdW5jdGlvbiI9PXR5cGVvZiBET01NYXRyaXg/RE9NTWF0cml4OldlYktpdENTU01hdHJpeCkodCsiIik7cmV0dXJuIGUuaXNJZGVudGl0eT9reTpUeShlLmEsZS5iLGUuYyxlLmQsZS5lLGUuZil9KSwicHgsICIsInB4KSIsImRlZykiKSxTeT1FeSgoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/a3k6KHh5fHwoeHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSkseHkuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PXh5LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP1R5KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOmt5KX0pLCIsICIsIikiLCIpIik7ZnVuY3Rpb24gQXkodCxlKXt2YXIgbixyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPXZ5KHRoaXMsdCksYT1pLnR3ZWVuO2lmKGEhPT1uKWZvcih2YXIgbz0wLHM9KHI9bj1hKS5sZW5ndGg7bzxzOysrbylpZihyW29dLm5hbWU9PT1lKXsocj1yLnNsaWNlKCkpLnNwbGljZShvLDEpO2JyZWFrfWkudHdlZW49cn19ZnVuY3Rpb24gTXkodCxlLG4pe3ZhciByLGk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXZ5KHRoaXMsdCksbz1hLnR3ZWVuO2lmKG8hPT1yKXtpPShyPW8pLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sYz0wLHU9aS5sZW5ndGg7Yzx1OysrYylpZihpW2NdLm5hbWU9PT1lKXtpW2NdPXM7YnJlYWt9Yz09PXUmJmkucHVzaChzKX1hLnR3ZWVuPWl9fWZ1bmN0aW9uIE55KHQsZSxuKXt2YXIgcj10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXZ5KHRoaXMscik7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIGJ5KHQscikudmFsdWVbZV19fWZ1bmN0aW9uIER5KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBPeSh0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgciBpbiBlKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBCeSgpe312YXIgTHk9LjcsSXk9MS40Mjg1NzE0Mjg1NzE0Mjg2LFJ5PSJcXHMqKFsrLV0/XFxkKylcXHMqIixGeT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixQeT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsank9L14jKFswLTlhLWZdezMsOH0pJC8sWXk9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1J5LFJ5LFJ5XSsiXFwpJCIpLHp5PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tQeSxQeSxQeV0rIlxcKSQiKSxVeT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1J5LFJ5LFJ5LEZ5XSsiXFwpJCIpLHF5PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbUHksUHksUHksRnldKyJcXCkkIiksJHk9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW0Z5LFB5LFB5XSsiXFwpJCIpLEh5PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbRnksUHksUHksRnldKyJcXCkkIiksV3k9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gVnkoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBHeSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFh5KHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPWp5LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/WnkoZSk6Mz09PW4/bmV3IHRnKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9ReShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9ReShlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPVl5LmV4ZWModCkpP25ldyB0ZyhlWzFdLGVbMl0sZVszXSwxKTooZT16eS5leGVjKHQpKT9uZXcgdGcoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9VXkuZXhlYyh0KSk/UXkoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9cXkuZXhlYyh0KSk/UXkoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9JHkuZXhlYyh0KSk/aWcoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1IeS5leGVjKHQpKT9pZyhlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOld5Lmhhc093blByb3BlcnR5KHQpP1p5KFd5W3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgdGcoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBaeSh0KXtyZXR1cm4gbmV3IHRnKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBReSh0LGUsbixyKXtyZXR1cm4gcjw9MCYmKHQ9ZT1uPU5hTiksbmV3IHRnKHQsZSxuLHIpfWZ1bmN0aW9uIEt5KHQpe3JldHVybiB0IGluc3RhbmNlb2YgQnl8fCh0PVh5KHQpKSx0P25ldyB0ZygodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgdGd9ZnVuY3Rpb24gSnkodCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0t5KHQpOm5ldyB0Zyh0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gdGcodCxlLG4scil7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIGVnKCl7cmV0dXJuIiMiK3JnKHRoaXMucikrcmcodGhpcy5nKStyZyh0aGlzLmIpfWZ1bmN0aW9uIG5nKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gcmcodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBpZyh0LGUsbixyKXtyZXR1cm4gcjw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IG9nKHQsZSxuLHIpfWZ1bmN0aW9uIGFnKHQpe2lmKHQgaW5zdGFuY2VvZiBvZylyZXR1cm4gbmV3IG9nKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIEJ5fHwodD1YeSh0KSksIXQpcmV0dXJuIG5ldyBvZztpZih0IGluc3RhbmNlb2Ygb2cpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LHI9dC5iLzI1NSxpPU1hdGgubWluKGUsbixyKSxhPU1hdGgubWF4KGUsbixyKSxvPU5hTixzPWEtaSxjPShhK2kpLzI7cmV0dXJuIHM/KG89ZT09PWE/KG4tcikvcys2KihuPHIpOm49PT1hPyhyLWUpL3MrMjooZS1uKS9zKzQscy89YzwuNT9hK2k6Mi1hLWksbyo9NjApOnM9Yz4wJiZjPDE/MDpvLG5ldyBvZyhvLHMsYyx0Lm9wYWNpdHkpfWZ1bmN0aW9uIG9nKHQsZSxuLHIpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBzZyh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gY2codCxlLG4scixpKXt2YXIgYT10KnQsbz1hKnQ7cmV0dXJuKCgxLTMqdCszKmEtbykqZSsoNC02KmErMypvKSpuKygxKzMqdCszKmEtMypvKSpyK28qaSkvNn1EeShCeSxYeSx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpWeSxmb3JtYXRIZXg6VnksZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIGFnKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6R3ksdG9TdHJpbmc6R3l9KSxEeSh0ZyxKeSxPeShCeSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9JeTpNYXRoLnBvdyhJeSx0KSxuZXcgdGcodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/THk6TWF0aC5wb3coTHksdCksbmV3IHRnKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6ZWcsZm9ybWF0SGV4OmVnLGZvcm1hdFJnYjpuZyx0b1N0cmluZzpuZ30pKSxEeShvZywoZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2FnKHQpOm5ldyBvZyh0LGUsbixudWxsPT1yPzE6cil9KSxPeShCeSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9JeTpNYXRoLnBvdyhJeSx0KSxuZXcgb2codGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9MeTpNYXRoLnBvdyhMeSx0KSxuZXcgb2codGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwscj1uKyhuPC41P246MS1uKSplLGk9MipuLXI7cmV0dXJuIG5ldyB0ZyhzZyh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxyKSxzZyh0LGksciksc2codDwxMjA/dCsyNDA6dC0xMjAsaSxyKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTtjb25zdCB1Zz10PT4oKT0+dDtmdW5jdGlvbiBsZyh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSh0LG4pOnVnKGlzTmFOKHQpP2U6dCl9Y29uc3QgaGc9ZnVuY3Rpb24gdChlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gMT09KHQ9K3QpP2xnOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKmUsbil9fShlLG4sdCk6dWcoaXNOYU4oZSk/bjplKX19KGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgcj1uKCh0PUp5KHQpKS5yLChlPUp5KGUpKS5yKSxpPW4odC5nLGUuZyksYT1uKHQuYixlLmIpLG89bGcodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9cihlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIGZnKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixyLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKXI9SnkoZVtuXSksYVtuXT1yLnJ8fDAsb1tuXT1yLmd8fDAsc1tuXT1yLmJ8fDA7cmV0dXJuIGE9dChhKSxvPXQobykscz10KHMpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9YSh0KSxyLmc9byh0KSxyLmI9cyh0KSxyKyIifX19ZmcoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBjZygobi1yL2UpKmUsbyxpLGEscyl9fSkpLGZnKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpLGk9dFsocitlLTEpJWVdLGE9dFtyJWVdLG89dFsocisxKSVlXSxzPXRbKHIrMiklZV07cmV0dXJuIGNnKChuLXIvZSkqZSxpLGEsbyxzKX19KSk7dmFyIGRnPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxwZz1uZXcgUmVnRXhwKGRnLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIHlnKHQsZSl7dmFyIG4scixpLGE9ZGcubGFzdEluZGV4PXBnLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1kZy5leGVjKHQpKSYmKHI9cGcuZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4Ol95KG4scil9KSksYT1wZy5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGdnKHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9feTplIGluc3RhbmNlb2YgWHk/aGc6KG49WHkoZSkpPyhlPW4saGcpOnlnKSh0LGUpfWZ1bmN0aW9uIG1nKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB2Zyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGJnKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIF9nKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX1mdW5jdGlvbiB4Zyh0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB3Zyh0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWMrIiIpP251bGw6bz09PXImJnM9PT1pP2E6KGk9cyxhPWUocj1vLGMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGtnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBUZyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIEVnKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYmVGcodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIENnKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYma2codCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIFNnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7bXkodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEFnKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtteSh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIE1nKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dnkodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIE5nKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXt2eSh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIERnKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3Z5KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBPZyh0LGUsbil7dmFyIHIsaSxhPWZ1bmN0aW9uKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0oZSk/bXk6dnk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YSh0aGlzLHQpLHM9by5vbjtzIT09ciYmKGk9KHI9cykuY29weSgpKS5vbihlLG4pLG8ub249aX19dmFyIEJnPVVwLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBMZyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBJZyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxyKSxuKX19ZnVuY3Rpb24gUmcodCxlLG4pe3ZhciByLGk7ZnVuY3Rpb24gYSgpe3ZhciBhPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhIT09aSYmKHI9KGk9YSkmJklnKHQsYSxuKSkscn1yZXR1cm4gYS5fdmFsdWU9ZSxhfWZ1bmN0aW9uIEZnKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBQZyh0KXt2YXIgZSxuO2Z1bmN0aW9uIHIoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PW4mJihlPShuPXIpJiZGZyhyKSksZX1yZXR1cm4gci5fdmFsdWU9dCxyfXZhciBqZz0wO2Z1bmN0aW9uIFlnKHQsZSxuLHIpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9cn1mdW5jdGlvbiB6Zygpe3JldHVybisramd9dmFyIFVnPVVwLnByb3RvdHlwZTtZZy5wcm90b3R5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIFVwKCkudHJhbnNpdGlvbih0KX0ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZZyxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1NZCh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgcyxjLHU9cltvXSxsPXUubGVuZ3RoLGg9YVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpKHM9dVtmXSkmJihjPXQuY2FsbChzLHMuX19kYXRhX18sZix1KSkmJigiX19kYXRhX18iaW4gcyYmKGMuX19kYXRhX189cy5fX2RhdGFfXyksaFtmXT1jLGd5KGhbZl0sZSxuLGYsaCxieShzLG4pKSk7cmV0dXJuIG5ldyBZZyhhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9T2QodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPVtdLG89W10scz0wO3M8aTsrK3MpZm9yKHZhciBjLHU9cltzXSxsPXUubGVuZ3RoLGg9MDtoPGw7KytoKWlmKGM9dVtoXSl7Zm9yKHZhciBmLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxoLHUpLHA9YnkoYyxuKSx5PTAsZz1kLmxlbmd0aDt5PGc7Kyt5KShmPWRbeV0pJiZneShmLGUsbix5LGQscCk7YS5wdXNoKGQpLG8ucHVzaChjKX1yZXR1cm4gbmV3IFlnKGEsbyxlLG4pfSxzZWxlY3RDaGlsZDpVZy5zZWxlY3RDaGlsZCxzZWxlY3RDaGlsZHJlbjpVZy5zZWxlY3RDaGlsZHJlbixmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUJkKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBZZyhyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyBZZyhvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgQmcodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPXpnKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpaWYobz1zW3VdKXt2YXIgbD1ieShvLGUpO2d5KG8sdCxuLHUscyx7dGltZTpsLnRpbWUrbC5kZWxheStsLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246bC5kdXJhdGlvbixlYXNlOmwuZWFzZX0pfXJldHVybiBuZXcgWWcocix0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6VWcuY2FsbCxub2RlczpVZy5ub2Rlcyxub2RlOlVnLm5vZGUsc2l6ZTpVZy5zaXplLGVtcHR5OlVnLmVtcHR5LGVhY2g6VWcuZWFjaCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/YnkodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKE9nKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1YZCh0KSxyPSJ0cmFuc2Zvcm0iPT09bj9TeTpnZztyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD93Zzp4ZykobixyLE55KHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3ZnOm1nKShuKToobi5sb2NhbD9fZzpiZykobixyLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgcj1YZCh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChyLmxvY2FsP0VnOkNnKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP0N5OmdnO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW9wKHRoaXMsdCksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxvcCh0aGlzLHQpKTtyZXR1cm4gYT09PW8/bnVsbDphPT09biYmbz09PXI/aTppPWUobj1hLHI9byl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxMZyh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1vcCh0aGlzLHQpLHM9bih0aGlzKSxjPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9cz1vcCh0aGlzLHQpKSxvPT09Yz9udWxsOm89PT1yJiZjPT09aT9hOihpPWMsYT1lKHI9byxzKSl9fSh0LHIsTnkodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhLG89InN0eWxlLiIrZSxzPSJlbmQuIitvO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXZ5KHRoaXMsdCksdT1jLm9uLGw9bnVsbD09Yy52YWx1ZVtvXT9hfHwoYT1MZyhlKSk6dm9pZCAwO3U9PT1uJiZpPT09bHx8KHI9KG49dSkuY29weSgpKS5vbihzLGk9bCksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1vcCh0aGlzLHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19KHQscixlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixSZyh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fShOeSh0aGlzLCJ0ZXh0Iix0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0obnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsUGcodCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PXQpcmV0dXJuO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByLGk9YnkodGhpcy5ub2RlKCksbikudHdlZW4sYT0wLG89aS5sZW5ndGg7YTxvOysrYSlpZigocj1pW2FdKS5uYW1lPT09dClyZXR1cm4gci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP0F5Ok15KShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1NnOkFnKShlLHQpKTpieSh0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9NZzpOZykoZSx0KSk6YnkodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKERnKGUsdCkpOmJ5KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVhc2VWYXJ5aW5nOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3Z5KHRoaXMsdCkuZWFzZT1ufX0odGhpcy5faWQsdCkpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcyxyPW4uX2lkLGk9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBzPXt2YWx1ZTpvfSxjPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0taSYmYSgpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPXZ5KHRoaXMsciksaT1uLm9uO2khPT10JiYoKGU9KHQ9aSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2goYykpLG4ub249ZX0pKSwwPT09aSYmYSgpfSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpVZ1tTeW1ib2wuaXRlcmF0b3JdfTt2YXIgcWc9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOmZ1bmN0aW9uKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfX07ZnVuY3Rpb24gJGcodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSl0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gbn1mdW5jdGlvbiBIZyh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59VXAucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhPXQuX190cmFuc2l0aW9uLG89ITA7aWYoYSl7Zm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixhKShuPWFbaV0pLm5hbWU9PT1lPyhyPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgYVtpXSk6bz0hMTtvJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fSh0aGlzLHQpfSkpfSxVcC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBZZz8oZT10Ll9pZCx0PXQuX25hbWUpOihlPXpnKCksKG49cWcpLnRpbWU9b3koKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiZneShvLHQsZSx1LHMsbnx8JGcobyxlKSk7cmV0dXJuIG5ldyBZZyhyLHRoaXMuX3BhcmVudHMsdCxlKX0sSGcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIZyxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gMT09PXQ/dGhpczpuZXcgSGcodGhpcy5rKnQsdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09dCYwPT09ZT90aGlzOm5ldyBIZyh0aGlzLmssdGhpcy54K3RoaXMuayp0LHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKnRoaXMuayt0aGlzLngsdFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuWyh0WzBdLXRoaXMueCkvdGhpcy5rLCh0WzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSxyZXNjYWxlWTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19LG5ldyBIZygxLDAsMCksSGcucHJvdG90eXBlO3ZhciBXZz0iY29tbSIsVmc9InJ1bGUiLEdnPSJkZWNsIixYZz1NYXRoLmFicyxaZz1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIFFnKHQpe3JldHVybiB0LnRyaW0oKX1mdW5jdGlvbiBLZyh0LGUsbil7cmV0dXJuIHQucmVwbGFjZShlLG4pfWZ1bmN0aW9uIEpnKHQsZSl7cmV0dXJuIDB8dC5jaGFyQ29kZUF0KGUpfWZ1bmN0aW9uIHRtKHQsZSxuKXtyZXR1cm4gdC5zbGljZShlLG4pfWZ1bmN0aW9uIGVtKHQpe3JldHVybiB0Lmxlbmd0aH1mdW5jdGlvbiBubSh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gcm0odCxlKXtyZXR1cm4gZS5wdXNoKHQpLHR9ZnVuY3Rpb24gaW0odCxlKXtmb3IodmFyIG49IiIscj1ubSh0KSxpPTA7aTxyO2krKyluKz1lKHRbaV0saSx0LGUpfHwiIjtyZXR1cm4gbn1mdW5jdGlvbiBhbSh0LGUsbixyKXtzd2l0Y2godC50eXBlKXtjYXNlIkBpbXBvcnQiOmNhc2UgR2c6cmV0dXJuIHQucmV0dXJuPXQucmV0dXJufHx0LnZhbHVlO2Nhc2UgV2c6cmV0dXJuIiI7Y2FzZSBWZzp0LnZhbHVlPXQucHJvcHMuam9pbigiLCIpfXJldHVybiBlbShuPWltKHQuY2hpbGRyZW4scikpP3QucmV0dXJuPXQudmFsdWUrInsiK24rIn0iOiIifXZhciBvbT0xLHNtPTEsY209MCx1bT0wLGxtPTAsaG09IiI7ZnVuY3Rpb24gZm0odCxlLG4scixpLGEsbyl7cmV0dXJue3ZhbHVlOnQscm9vdDplLHBhcmVudDpuLHR5cGU6cixwcm9wczppLGNoaWxkcmVuOmEsbGluZTpvbSxjb2x1bW46c20sbGVuZ3RoOm8scmV0dXJuOiIifX1mdW5jdGlvbiBkbSgpe3JldHVybiBsbT11bT4wP0pnKGhtLC0tdW0pOjAsc20tLSwxMD09PWxtJiYoc209MSxvbS0tKSxsbX1mdW5jdGlvbiBwbSgpe3JldHVybiBsbT11bTxjbT9KZyhobSx1bSsrKTowLHNtKyssMTA9PT1sbSYmKHNtPTEsb20rKyksbG19ZnVuY3Rpb24geW0oKXtyZXR1cm4gSmcoaG0sdW0pfWZ1bmN0aW9uIGdtKCl7cmV0dXJuIHVtfWZ1bmN0aW9uIG1tKHQsZSl7cmV0dXJuIHRtKGhtLHQsZSl9ZnVuY3Rpb24gdm0odCl7c3dpdGNoKHQpe2Nhc2UgMDpjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6cmV0dXJuIDU7Y2FzZSAzMzpjYXNlIDQzOmNhc2UgNDQ6Y2FzZSA0NzpjYXNlIDYyOmNhc2UgNjQ6Y2FzZSAxMjY6Y2FzZSA1OTpjYXNlIDEyMzpjYXNlIDEyNTpyZXR1cm4gNDtjYXNlIDU4OnJldHVybiAzO2Nhc2UgMzQ6Y2FzZSAzOTpjYXNlIDQwOmNhc2UgOTE6cmV0dXJuIDI7Y2FzZSA0MTpjYXNlIDkzOnJldHVybiAxfXJldHVybiAwfWZ1bmN0aW9uIGJtKHQpe3JldHVybiBRZyhtbSh1bS0xLHdtKDkxPT09dD90KzI6NDA9PT10P3QrMTp0KSkpfWZ1bmN0aW9uIF9tKHQpe2Zvcig7KGxtPXltKCkpJiZsbTwzMzspcG0oKTtyZXR1cm4gdm0odCk+Mnx8dm0obG0pPjM/IiI6IiAifWZ1bmN0aW9uIHhtKHQsZSl7Zm9yKDstLWUmJnBtKCkmJiEobG08NDh8fGxtPjEwMnx8bG0+NTcmJmxtPDY1fHxsbT43MCYmbG08OTcpOyk7cmV0dXJuIG1tKHQsZ20oKSsoZTw2JiYzMj09eW0oKSYmMzI9PXBtKCkpKX1mdW5jdGlvbiB3bSh0KXtmb3IoO3BtKCk7KXN3aXRjaChsbSl7Y2FzZSB0OnJldHVybiB1bTtjYXNlIDM0OmNhc2UgMzk6cmV0dXJuIHdtKDM0PT09dHx8Mzk9PT10P3Q6bG0pO2Nhc2UgNDA6NDE9PT10JiZ3bSh0KTticmVhaztjYXNlIDkyOnBtKCl9cmV0dXJuIHVtfWZ1bmN0aW9uIGttKHQsZSl7Zm9yKDtwbSgpJiZ0K2xtIT09NTcmJih0K2xtIT09ODR8fDQ3IT09eW0oKSk7KTtyZXR1cm4iLyoiK21tKGUsdW0tMSkrIioiK1pnKDQ3PT09dD90OnBtKCkpfWZ1bmN0aW9uIFRtKHQpe2Zvcig7IXZtKHltKCkpOylwbSgpO3JldHVybiBtbSh0LHVtKX1mdW5jdGlvbiBFbSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGhtPSIiLHR9KENtKCIiLG51bGwsbnVsbCxudWxsLFsiIl0sdD1mdW5jdGlvbih0KXtyZXR1cm4gb209c209MSxjbT1lbShobT10KSx1bT0wLFtdfSh0KSwwLFswXSx0KSl9ZnVuY3Rpb24gQ20odCxlLG4scixpLGEsbyxzLGMpe2Zvcih2YXIgdT0wLGw9MCxoPW8sZj0wLGQ9MCxwPTAseT0xLGc9MSxtPTEsdj0wLGI9IiIsXz1pLHg9YSx3PXIsaz1iO2c7KXN3aXRjaChwPXYsdj1wbSgpKXtjYXNlIDM0OmNhc2UgMzk6Y2FzZSA5MTpjYXNlIDQwOmsrPWJtKHYpO2JyZWFrO2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjprKz1fbShwKTticmVhaztjYXNlIDkyOmsrPXhtKGdtKCktMSw3KTtjb250aW51ZTtjYXNlIDQ3OnN3aXRjaCh5bSgpKXtjYXNlIDQyOmNhc2UgNDc6cm0oQW0oa20ocG0oKSxnbSgpKSxlLG4pLGMpO2JyZWFrO2RlZmF1bHQ6ays9Ii8ifWJyZWFrO2Nhc2UgMTIzKnk6c1t1KytdPWVtKGspKm07Y2FzZSAxMjUqeTpjYXNlIDU5OmNhc2UgMDpzd2l0Y2godil7Y2FzZSAwOmNhc2UgMTI1Omc9MDtjYXNlIDU5K2w6ZD4wJiZlbShrKS1oJiZybShkPjMyP01tKGsrIjsiLHIsbixoLTEpOk1tKEtnKGssIiAiLCIiKSsiOyIscixuLGgtMiksYyk7YnJlYWs7Y2FzZSA1OTprKz0iOyI7ZGVmYXVsdDppZihybSh3PVNtKGssZSxuLHUsbCxpLHMsYixfPVtdLHg9W10saCksYSksMTIzPT09dilpZigwPT09bClDbShrLGUsdyx3LF8sYSxoLHMseCk7ZWxzZSBzd2l0Y2goZil7Y2FzZSAxMDA6Y2FzZSAxMDk6Y2FzZSAxMTU6Q20odCx3LHcsciYmcm0oU20odCx3LHcsMCwwLGkscyxiLGksXz1bXSxoKSx4KSxpLHgsaCxzLHI/Xzp4KTticmVhaztkZWZhdWx0OkNtKGssdyx3LHcsWyIiXSx4LGgscyx4KX19dT1sPWQ9MCx5PW09MSxiPWs9IiIsaD1vO2JyZWFrO2Nhc2UgNTg6aD0xK2VtKGspLGQ9cDtkZWZhdWx0OmlmKHk8MSlpZigxMjM9PXYpLS15O2Vsc2UgaWYoMTI1PT12JiYwPT15KysmJjEyNT09ZG0oKSljb250aW51ZTtzd2l0Y2goays9Wmcodiksdip5KXtjYXNlIDM4Om09bD4wPzE6KGsrPSJcZiIsLTEpO2JyZWFrO2Nhc2UgNDQ6c1t1KytdPShlbShrKS0xKSptLG09MTticmVhaztjYXNlIDY0OjQ1PT09eW0oKSYmKGsrPWJtKHBtKCkpKSxmPXltKCksbD1lbShiPWsrPVRtKGdtKCkpKSx2Kys7YnJlYWs7Y2FzZSA0NTo0NT09PXAmJjI9PWVtKGspJiYoeT0wKX19cmV0dXJuIGF9ZnVuY3Rpb24gU20odCxlLG4scixpLGEsbyxzLGMsdSxsKXtmb3IodmFyIGg9aS0xLGY9MD09PWk/YTpbIiJdLGQ9bm0oZikscD0wLHk9MCxnPTA7cDxyOysrcClmb3IodmFyIG09MCx2PXRtKHQsaCsxLGg9WGcoeT1vW3BdKSksYj10O208ZDsrK20pKGI9UWcoeT4wP2ZbbV0rIiAiK3Y6S2codiwvJlxmL2csZlttXSkpKSYmKGNbZysrXT1iKTtyZXR1cm4gZm0odCxlLG4sMD09PWk/Vmc6cyxjLHUsbCl9ZnVuY3Rpb24gQW0odCxlLG4pe3JldHVybiBmbSh0LGUsbixXZyxaZyhsbSksdG0odCwyLC0yKSwwKX1mdW5jdGlvbiBNbSh0LGUsbixyKXtyZXR1cm4gZm0odCxlLG4sR2csdG0odCwwLHIpLHRtKHQscisxLC0xKSxyKX1jb25zdCBObT0iOC4xMy41Ijt2YXIgRG09big5NjA5KSxPbT1uKDc4NTYpLEJtPW4ubihPbSksTG09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49MDtuPj0wOyl7aWYoISgobj10LmluZGV4T2YoIjxzY3JpcHQiKSk+PTApKXtlKz10LG49LTE7YnJlYWt9ZSs9dC5zdWJzdHIoMCxuKSwobj0odD10LnN1YnN0cihuKzEpKS5pbmRleE9mKCI8XC9zY3JpcHQ+IikpPj0wJiYobis9OSx0PXQuc3Vic3RyKG4pKX1yZXR1cm4oZT0oZT0oZT0oZT1lLnJlcGxhY2UoL3NjcmlwdD4vZ2ksIiMiKSkucmVwbGFjZSgvc2NyaXB0Pi9naSwiIyIpKS5yZXBsYWNlKC9qYXZhc2NyaXB0Oi9naSwiIyIpKS5yZXBsYWNlKC9vbmVycm9yPS9naSwib25lcnJvcjoiKSkucmVwbGFjZSgvPGlmcmFtZS9naSwiIil9LEltPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHQ7dmFyIG49Qm0oKS5zYW5pdGl6ZShmdW5jdGlvbih0LGUpe3ZhciBuPXQscj0hMDtpZighZS5mbG93Y2hhcnR8fCExIT09ZS5mbG93Y2hhcnQuaHRtbExhYmVscyYmImZhbHNlIiE9PWUuZmxvd2NoYXJ0Lmh0bWxMYWJlbHN8fChyPSExKSxyKXt2YXIgaT1lLnNlY3VyaXR5TGV2ZWw7ImFudGlzY3JpcHQiPT09aT9uPUxtKG4pOiJsb29zZSIhPT1pJiYobj0obj0obj1QbShuKSkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikpLnJlcGxhY2UoLz0vZywiJmVxdWFsczsiKSxuPUZtKG4pKX1yZXR1cm4gbn0odCxlKSk7cmV0dXJuIG59LFJtPS88YnJccypcLz8+L2dpLEZtPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLyNiciMvZywiPGJyLz4iKX0sUG09ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShSbSwiI2JyIyIpfSxqbT1mdW5jdGlvbih0KXtyZXR1cm4iZmFsc2UiIT09dCYmITEhPT10fTtjb25zdCBZbT17Z2V0Um93czpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gMTt2YXIgZT1QbSh0KTtyZXR1cm4oZT1lLnJlcGxhY2UoL1xcbi9nLCIjYnIjIikpLnNwbGl0KCIjYnIjIil9LHNhbml0aXplVGV4dDpJbSxzYW5pdGl6ZVRleHRPckFycmF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P0ltKHQsZSk6dC5mbGF0KCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSW0odCxlKX0pKX0saGFzQnJlYWtzOmZ1bmN0aW9uKHQpe3JldHVybiBSbS50ZXN0KHQpfSxzcGxpdEJyZWFrczpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdChSbSl9LGxpbmVCcmVha1JlZ2V4OlJtLHJlbW92ZVNjcmlwdDpMbSxnZXRVcmw6ZnVuY3Rpb24odCl7dmFyIGU9IiI7cmV0dXJuIHQmJihlPShlPShlPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5yZXBsYWNlKC9cKC9nLCJcXCgiKSkucmVwbGFjZSgvXCkvZywiXFwpIikpLGV9LGV2YWx1YXRlOmptfTt2YXIgem09big4NjEzKSxVbT1mdW5jdGlvbih0LGUpe3JldHVybiBlPygwLHptLmFkanVzdCkodCx7czotNDAsbDoxMH0pOigwLHptLmFkanVzdCkodCx7czotNDAsbDotMTB9KX07ZnVuY3Rpb24gcW0odCl7cmV0dXJuIHFtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxxbSh0KX1mdW5jdGlvbiAkbSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fXZhciBIbT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLmJhY2tncm91bmQ9IiNmNGY0ZjQiLHRoaXMuZGFya01vZGU9ITEsdGhpcy5wcmltYXJ5Q29sb3I9IiNmZmY0ZGQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9IiMzMzMiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4In12YXIgZSxuO3JldHVybiBlPXQsbj1be2tleToidXBkYXRlQ29sb3JzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJpbWFyeVRleHRDb2xvcj10aGlzLnByaW1hcnlUZXh0Q29sb3J8fCh0aGlzLmRhcmtNb2RlPyIjZGRkIjoiIzMzMyIpLHRoaXMuc2Vjb25kYXJ5Q29sb3I9dGhpcy5zZWNvbmRhcnlDb2xvcnx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotMTIwfSksdGhpcy50ZXJ0aWFyeUNvbG9yPXRoaXMudGVydGlhcnlDb2xvcnx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxODAsbDo1fSksdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I9dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3J8fFVtKHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMuc2Vjb25kYXJ5Qm9yZGVyQ29sb3I9dGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcnx8VW0odGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3I9dGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yfHxVbSh0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5ub3RlQm9yZGVyQ29sb3I9dGhpcy5ub3RlQm9yZGVyQ29sb3J8fFVtKHRoaXMubm90ZUJrZ0NvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMubm90ZUJrZ0NvbG9yPXRoaXMubm90ZUJrZ0NvbG9yfHwiI2ZmZjVhZCIsdGhpcy5ub3RlVGV4dENvbG9yPXRoaXMubm90ZVRleHRDb2xvcnx8IiMzMzMiLHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yPXRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yfHwoMCx6bS5pbnZlcnQpKHRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMudGVydGlhcnlUZXh0Q29sb3I9dGhpcy50ZXJ0aWFyeVRleHRDb2xvcnx8KDAsem0uaW52ZXJ0KSh0aGlzLnRlcnRpYXJ5Q29sb3IpLHRoaXMubGluZUNvbG9yPXRoaXMubGluZUNvbG9yfHwoMCx6bS5pbnZlcnQpKHRoaXMuYmFja2dyb3VuZCksdGhpcy50ZXh0Q29sb3I9dGhpcy50ZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLm5vZGVCa2c9dGhpcy5ub2RlQmtnfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLm1haW5Ca2c9dGhpcy5tYWluQmtnfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLm5vZGVCb3JkZXI9dGhpcy5ub2RlQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLmNsdXN0ZXJCa2c9dGhpcy5jbHVzdGVyQmtnfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuY2x1c3RlckJvcmRlcnx8dGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yLHRoaXMuZGVmYXVsdExpbmtDb2xvcj10aGlzLmRlZmF1bHRMaW5rQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudGl0bGVDb2xvcj10aGlzLnRpdGxlQ29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPXRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZHx8KHRoaXMuZGFya01vZGU/KDAsem0uZGFya2VuKSh0aGlzLnNlY29uZGFyeUNvbG9yLDMwKTp0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLm5vZGVUZXh0Q29sb3I9dGhpcy5ub2RlVGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5hY3RvckJvcmRlcj10aGlzLmFjdG9yQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLmFjdG9yQmtnPXRoaXMuYWN0b3JCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmFjdG9yVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmFjdG9yTGluZUNvbG9yPXRoaXMuYWN0b3JMaW5lQ29sb3J8fCJncmV5Iix0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5sYWJlbEJveEJrZ0NvbG9yfHx0aGlzLmFjdG9yQmtnLHRoaXMuc2lnbmFsQ29sb3I9dGhpcy5zaWduYWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zaWduYWxUZXh0Q29sb3I9dGhpcy5zaWduYWxUZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj10aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3J8fHRoaXMuYWN0b3JCb3JkZXIsdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLmxhYmVsVGV4dENvbG9yfHx0aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubG9vcFRleHRDb2xvcj10aGlzLmxvb3BUZXh0Q29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9dGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3J8fCgwLHptLmRhcmtlbikodGhpcy5zZWNvbmRhcnlDb2xvciwxMCksdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9dGhpcy5hY3RpdmF0aW9uQmtnQ29sb3J8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPXRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcnx8KDAsem0uaW52ZXJ0KSh0aGlzLmxpbmVDb2xvciksdGhpcy5zZWN0aW9uQmtnQ29sb3I9dGhpcy5zZWN0aW9uQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj10aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcnx8IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj10aGlzLnNlY3Rpb25Ca2dDb2xvcnx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLnNlY3Rpb25Ca2dDb2xvcjI9dGhpcy5zZWN0aW9uQmtnQ29sb3IyfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLmV4Y2x1ZGVCa2dDb2xvcj10aGlzLmV4Y2x1ZGVCa2dDb2xvcnx8IiNlZWVlZWUiLHRoaXMudGFza0JvcmRlckNvbG9yPXRoaXMudGFza0JvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnRhc2tCa2dDb2xvcj10aGlzLnRhc2tCa2dDb2xvcnx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9dGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPXRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yfHwoMCx6bS5saWdodGVuKSh0aGlzLnByaW1hcnlDb2xvciwyMyksdGhpcy5ncmlkQ29sb3I9dGhpcy5ncmlkQ29sb3J8fCJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj10aGlzLmRvbmVUYXNrQmtnQ29sb3J8fCJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj10aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3J8fCJncmV5Iix0aGlzLmNyaXRCb3JkZXJDb2xvcj10aGlzLmNyaXRCb3JkZXJDb2xvcnx8IiNmZjg4ODgiLHRoaXMuY3JpdEJrZ0NvbG9yPXRoaXMuY3JpdEJrZ0NvbG9yfHwicmVkIix0aGlzLnRvZGF5TGluZUNvbG9yPXRoaXMudG9kYXlMaW5lQ29sb3J8fCJyZWQiLHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9dGhpcy50YXNrVGV4dExpZ2h0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPXRoaXMudGFza1RleHREYXJrQ29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj10aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3J8fCIjMDAzMTYzIix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLmNvbXBvc2l0ZUJvcmRlcj10aGlzLmNvbXBvc2l0ZUJvcmRlcnx8dGhpcy5ub2RlQm9yZGVyLHRoaXMuaW5uZXJFbmRCYWNrZ3JvdW5kPXRoaXMubm9kZUJvcmRlcix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMuY2xhc3NUZXh0fHx0aGlzLnRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLmZpbGxUeXBlMHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTE9dGhpcy5maWxsVHlwZTF8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9dGhpcy5maWxsVHlwZTJ8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz10aGlzLmZpbGxUeXBlM3x8KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9dGhpcy5maWxsVHlwZTR8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9dGhpcy5maWxsVHlwZTV8fCgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj10aGlzLmZpbGxUeXBlNnx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz10aGlzLmZpbGxUeXBlN3x8KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMucGllMT10aGlzLnBpZTF8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucGllMj10aGlzLnBpZTJ8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5waWUzPXRoaXMucGllM3x8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMucGllND10aGlzLnBpZTR8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2w6LTEwfSksdGhpcy5waWU1PXRoaXMucGllNXx8KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNj10aGlzLnBpZTZ8fCgwLHptLmFkanVzdCkodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNz10aGlzLnBpZTd8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjAsbDotMTB9KSx0aGlzLnBpZTg9dGhpcy5waWU4fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi0xMH0pLHRoaXMucGllOT10aGlzLnBpZTl8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6MH0pLHRoaXMucGllMTA9dGhpcy5waWUxMHx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi0yMH0pLHRoaXMucGllMTE9dGhpcy5waWUxMXx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjAsbDotMjB9KSx0aGlzLnBpZTEyPXRoaXMucGllMTJ8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTEwfSksdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHwodGhpcy5kYXJrTW9kZT8oMCx6bS5kYXJrZW4pKHRoaXMuc2Vjb25kYXJ5Q29sb3IsMzApOnRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMucmVsYXRpb25MYWJlbENvbG9yPXRoaXMucmVsYXRpb25MYWJlbENvbG9yfHx0aGlzLmFjdG9yVGV4dENvbG9yfX0se2tleToiY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCJvYmplY3QiPT09cW0odCkpe3ZhciBuPU9iamVjdC5rZXlzKHQpO24uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpLHRoaXMudXBkYXRlQ29sb3JzKCksbi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSl9ZWxzZSB0aGlzLnVwZGF0ZUNvbG9ycygpfX1dLG4mJiRtKGUucHJvdG90eXBlLG4pLHR9KCk7ZnVuY3Rpb24gV20odCl7cmV0dXJuIFdtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxXbSh0KX1mdW5jdGlvbiBWbSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fXZhciBHbT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLmJhY2tncm91bmQ9IiMzMzMiLHRoaXMucHJpbWFyeUNvbG9yPSIjMWYyMDIwIix0aGlzLnNlY29uZGFyeUNvbG9yPSgwLHptLmxpZ2h0ZW4pKHRoaXMucHJpbWFyeUNvbG9yLDE2KSx0aGlzLnRlcnRpYXJ5Q29sb3I9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotMTYwfSksdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I9VW0odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj1VbSh0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj1VbSh0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5wcmltYXJ5VGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5wcmltYXJ5Q29sb3IpLHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy50ZXJ0aWFyeVRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMudGVydGlhcnlDb2xvciksdGhpcy5saW5lQ29sb3I9KDAsem0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLm1haW5Ca2c9IiMxZjIwMjAiLHRoaXMuc2Vjb25kQmtnPSJjYWxjdWxhdGVkIix0aGlzLm1haW5Db250cmFzdENvbG9yPSJsaWdodGdyZXkiLHRoaXMuZGFya1RleHRDb2xvcj0oMCx6bS5saWdodGVuKSgoMCx6bS5pbnZlcnQpKCIjMzIzRDQ3IiksMTApLHRoaXMubGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmJvcmRlcjE9IiM4MUIxREIiLHRoaXMuYm9yZGVyMj0oMCx6bS5yZ2JhKSgyNTUsMjU1LDI1NSwuMjUpLHRoaXMuYXJyb3doZWFkQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLmxhYmVsQmFja2dyb3VuZD0iIzE4MTgxOCIsdGhpcy50ZXh0Q29sb3I9IiNjY2MiLHRoaXMubm9kZUJrZz0iY2FsY3VsYXRlZCIsdGhpcy5ub2RlQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRpdGxlQ29sb3I9IiNGOUZGRkUiLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvclRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckxpbmVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zaWduYWxDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zaWduYWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxvb3BUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCa2dDb2xvcj0iI2ZmZjVhZCIsdGhpcy5ub3RlVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcj0iYmxhY2siLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPSgwLHptLmRhcmtlbikoIiNFQUU4RDkiLDMwKSx0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjRUFFOEQ5Iix0aGlzLnRhc2tCb3JkZXJDb2xvcj0oMCx6bS5yZ2JhKSgyNTUsMjU1LDI1NSw3MCksdGhpcy50YXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj0iIzAwMzE2MyIsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9KDAsem0ucmdiYSkoMjU1LDI1NSwyNTUsNTApLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPSIjODFCMURCIix0aGlzLmdyaWRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPSIjRTgzNzM3Iix0aGlzLmNyaXRCa2dDb2xvcj0iI0U4MzczNyIsdGhpcy50YXNrVGV4dERhcmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50b2RheUxpbmVDb2xvcj0iI0RCNTc1NyIsdGhpcy5sYWJlbENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmVycm9yQmtnQ29sb3I9IiNhNDQxNDEiLHRoaXMuZXJyb3JUZXh0Q29sb3I9IiNkZGQifXZhciBlLG47cmV0dXJuIGU9dCxuPVt7a2V5OiJ1cGRhdGVDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRCa2c9KDAsem0ubGlnaHRlbikodGhpcy5tYWluQmtnLDE2KSx0aGlzLmxpbmVDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMuYXJyb3doZWFkQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLm5vZGVCa2c9dGhpcy5tYWluQmtnLHRoaXMubm9kZUJvcmRlcj10aGlzLmJvcmRlcjEsdGhpcy5jbHVzdGVyQmtnPXRoaXMuc2Vjb25kQmtnLHRoaXMuY2x1c3RlckJvcmRlcj10aGlzLmJvcmRlcjIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD0oMCx6bS5saWdodGVuKSh0aGlzLmxhYmVsQmFja2dyb3VuZCwyNSksdGhpcy5hY3RvckJvcmRlcj10aGlzLmJvcmRlcjEsdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5hY3RvclRleHRDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMuYWN0b3JMaW5lQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnNpZ25hbENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5zaWduYWxUZXh0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5hY3RvckJrZyx0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9dGhpcy5hY3RvckJvcmRlcix0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5ub3RlQm9yZGVyQ29sb3I9dGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcix0aGlzLm5vdGVCa2dDb2xvcj10aGlzLnNlY29uZEJrZyx0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3IsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9dGhpcy5ib3JkZXIxLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPXRoaXMuc2Vjb25kQmtnLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPXRoaXMuYmFja2dyb3VuZCx0aGlzLnRhc2tCa2dDb2xvcj0oMCx6bS5saWdodGVuKSh0aGlzLm1haW5Ca2csMjMpLHRoaXMudGFza1RleHRDb2xvcj10aGlzLmRhcmtUZXh0Q29sb3IsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMuZ3JpZENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5kb25lVGFza0JrZ0NvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy50YXNrVGV4dERhcmtDb2xvcj10aGlzLmRhcmtUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiM1NTUiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5jb21wb3NpdGVCb3JkZXI9dGhpcy5jb21wb3NpdGVCb3JkZXJ8fHRoaXMubm9kZUJvcmRlcix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPSIjZjRmNGY0Iix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMuZmlsbFR5cGUwPXRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZmlsbFR5cGUxPXRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGUzPSgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGU0PSgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU2PSgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5maWxsVHlwZTc9KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMucGllMT10aGlzLnBpZTF8fCIjMGIwMDAwIix0aGlzLnBpZTI9dGhpcy5waWUyfHwiIzRkMTAzNyIsdGhpcy5waWUzPXRoaXMucGllM3x8IiMzZjUyNTgiLHRoaXMucGllND10aGlzLnBpZTR8fCIjNGYyZjFiIix0aGlzLnBpZTU9dGhpcy5waWU1fHwiIzZlMGEwYSIsdGhpcy5waWU2PXRoaXMucGllNnx8IiMzYjAwNDgiLHRoaXMucGllNz10aGlzLnBpZTd8fCIjOTk1YTAxIix0aGlzLnBpZTg9dGhpcy5waWU4fHwiIzE1NDcwNiIsdGhpcy5waWU5PXRoaXMucGllOXx8IiMxNjE3MjIiLHRoaXMucGllMTA9dGhpcy5waWUxMHx8IiMwMDI5NmYiLHRoaXMucGllMTE9dGhpcy5waWUxMXx8IiMwMTYyOWMiLHRoaXMucGllMTI9dGhpcy5waWUxMnx8IiMwMTAwMjkiLHRoaXMucGllVGl0bGVUZXh0U2l6ZT10aGlzLnBpZVRpdGxlVGV4dFNpemV8fCIyNXB4Iix0aGlzLnBpZVRpdGxlVGV4dENvbG9yPXRoaXMucGllVGl0bGVUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTZWN0aW9uVGV4dFNpemU9dGhpcy5waWVTZWN0aW9uVGV4dFNpemV8fCIxN3B4Iix0aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3I9dGhpcy5waWVTZWN0aW9uVGV4dENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnBpZUxlZ2VuZFRleHRTaXplPXRoaXMucGllTGVnZW5kVGV4dFNpemV8fCIxN3B4Iix0aGlzLnBpZUxlZ2VuZFRleHRDb2xvcj10aGlzLnBpZUxlZ2VuZFRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVN0cm9rZUNvbG9yPXRoaXMucGllU3Ryb2tlQ29sb3J8fCJibGFjayIsdGhpcy5waWVTdHJva2VXaWR0aD10aGlzLnBpZVN0cm9rZVdpZHRofHwiMnB4Iix0aGlzLnBpZU9wYWNpdHk9dGhpcy5waWVPcGFjaXR5fHwiMC43Iix0aGlzLmNsYXNzVGV4dD10aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fCh0aGlzLmRhcmtNb2RlPygwLHptLmRhcmtlbikodGhpcy5zZWNvbmRhcnlDb2xvciwzMCk6dGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3I9dGhpcy5yZWxhdGlvbkxhYmVsQ29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3J9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIm9iamVjdCI9PT1XbSh0KSl7dmFyIG49T2JqZWN0LmtleXModCk7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSksdGhpcy51cGRhdGVDb2xvcnMoKSxuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKX1lbHNlIHRoaXMudXBkYXRlQ29sb3JzKCl9fV0sbiYmVm0oZS5wcm90b3R5cGUsbiksdH0oKTtmdW5jdGlvbiBYbSh0KXtyZXR1cm4gWG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFhtKHQpfWZ1bmN0aW9uIFptKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19dmFyIFFtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuYmFja2dyb3VuZD0iI2Y0ZjRmNCIsdGhpcy5wcmltYXJ5Q29sb3I9IiNFQ0VDRkYiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjB9KSx0aGlzLnNlY29uZGFyeUNvbG9yPSIjZmZmZmRlIix0aGlzLnRlcnRpYXJ5Q29sb3I9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotMTYwfSksdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I9VW0odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj1VbSh0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj1VbSh0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5wcmltYXJ5VGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5wcmltYXJ5Q29sb3IpLHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy50ZXJ0aWFyeVRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMudGVydGlhcnlDb2xvciksdGhpcy5saW5lQ29sb3I9KDAsem0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLmJhY2tncm91bmQ9IndoaXRlIix0aGlzLm1haW5Ca2c9IiNFQ0VDRkYiLHRoaXMuc2Vjb25kQmtnPSIjZmZmZmRlIix0aGlzLmxpbmVDb2xvcj0iIzMzMzMzMyIsdGhpcy5ib3JkZXIxPSIjOTM3MERCIix0aGlzLmJvcmRlcjI9IiNhYWFhMzMiLHRoaXMuYXJyb3doZWFkQ29sb3I9IiMzMzMzMzMiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLmxhYmVsQmFja2dyb3VuZD0iI2U4ZThlOCIsdGhpcy50ZXh0Q29sb3I9IiMzMzMiLHRoaXMubm9kZUJrZz0iY2FsY3VsYXRlZCIsdGhpcy5ub2RlQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRpdGxlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvclRleHRDb2xvcj0iYmxhY2siLHRoaXMuYWN0b3JMaW5lQ29sb3I9ImdyZXkiLHRoaXMuc2lnbmFsQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2lnbmFsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94QmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sb29wVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQmtnQ29sb3I9IiNmZmY1YWQiLHRoaXMubm90ZVRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9IiM2NjYiLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPSIjZjRmNGY0Iix0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3I9IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj0iY2FsY3VsYXRlZCIsdGhpcy5leGNsdWRlQmtnQ29sb3I9IiNlZWVlZWUiLHRoaXMudGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZ3JpZENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuY3JpdEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj0oMCx6bS5yZ2JhKSgxMDIsMTAyLDI1NSwuNDkpLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjZmZmNDAwIix0aGlzLnRhc2tCb3JkZXJDb2xvcj0iIzUzNGZiYyIsdGhpcy50YXNrQmtnQ29sb3I9IiM4YTkwZGQiLHRoaXMudGFza1RleHRMaWdodENvbG9yPSJ3aGl0ZSIsdGhpcy50YXNrVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJibGFjayIsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSIjMDAzMTYzIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0iIzUzNGZiYyIsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9IiNiZmM3ZmYiLHRoaXMuZ3JpZENvbG9yPSJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj0ibGlnaHRncmV5Iix0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPSIjZmY4ODg4Iix0aGlzLmNyaXRCa2dDb2xvcj0icmVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSJyZWQiLHRoaXMubGFiZWxDb2xvcj0iYmxhY2siLHRoaXMuZXJyb3JCa2dDb2xvcj0iIzU1MjIyMiIsdGhpcy5lcnJvclRleHRDb2xvcj0iIzU1MjIyMiIsdGhpcy51cGRhdGVDb2xvcnMoKX12YXIgZSxuO3JldHVybiBlPXQsbj1be2tleToidXBkYXRlQ29sb3JzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubm9kZUJrZz10aGlzLm1haW5Ca2csdGhpcy5ub2RlQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmNsdXN0ZXJCa2c9dGhpcy5zZWNvbmRCa2csdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuYm9yZGVyMix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy50aXRsZUNvbG9yPXRoaXMudGV4dENvbG9yLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD10aGlzLmxhYmVsQmFja2dyb3VuZCx0aGlzLmFjdG9yQm9yZGVyPSgwLHptLmxpZ2h0ZW4pKHRoaXMuYm9yZGVyMSwyMyksdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJveEJrZ0NvbG9yPXRoaXMuYWN0b3JCa2csdGhpcy5zaWduYWxDb2xvcj10aGlzLnRleHRDb2xvcix0aGlzLnNpZ25hbFRleHRDb2xvcj10aGlzLnRleHRDb2xvcix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9dGhpcy5hY3RvckJvcmRlcix0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5ub3RlQm9yZGVyQ29sb3I9dGhpcy5ib3JkZXIyLHRoaXMubm90ZVRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiNmMGYwZjAiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5jb21wb3NpdGVCb3JkZXI9dGhpcy5jb21wb3NpdGVCb3JkZXJ8fHRoaXMubm9kZUJvcmRlcix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLm5vZGVCb3JkZXIsdGhpcy5zcGVjaWFsU3RhdGVDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLmNsYXNzVGV4dD10aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5maWxsVHlwZTA9dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTE9dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmZpbGxUeXBlMj0oMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNT0oMCx6bS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz0oMCx6bS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5waWUxPXRoaXMucGllMXx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5waWUyPXRoaXMucGllMnx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLnBpZTM9dGhpcy5waWUzfHwoMCx6bS5hZGp1c3QpKHRoaXMudGVydGlhcnlDb2xvcix7bDotNDB9KSx0aGlzLnBpZTQ9dGhpcy5waWU0fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNT10aGlzLnBpZTV8fCgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7bDotMzB9KSx0aGlzLnBpZTY9dGhpcy5waWU2fHwoMCx6bS5hZGp1c3QpKHRoaXMudGVydGlhcnlDb2xvcix7bDotMjB9KSx0aGlzLnBpZTc9dGhpcy5waWU3fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTIwfSksdGhpcy5waWU4PXRoaXMucGllOHx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjAsbDotNDB9KSx0aGlzLnBpZTk9dGhpcy5waWU5fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyMCxsOi00MH0pLHRoaXMucGllMTA9dGhpcy5waWUxMHx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi00MH0pLHRoaXMucGllMTE9dGhpcy5waWUxMXx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotOTAsbDotNDB9KSx0aGlzLnBpZTEyPXRoaXMucGllMTJ8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTMwfSksdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLmxhYmVsQmFja2dyb3VuZCx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcn19LHtrZXk6ImNhbGN1bGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZigib2JqZWN0Ij09PVhtKHQpKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKSx0aGlzLnVwZGF0ZUNvbG9ycygpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpfWVsc2UgdGhpcy51cGRhdGVDb2xvcnMoKX19XSxuJiZabShlLnByb3RvdHlwZSxuKSx0fSgpO2Z1bmN0aW9uIEttKHQpe3JldHVybiBLbT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sS20odCl9ZnVuY3Rpb24gSm0odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX12YXIgdHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5iYWNrZ3JvdW5kPSIjZjRmNGY0Iix0aGlzLnByaW1hcnlDb2xvcj0iI2NkZTQ5OCIsdGhpcy5zZWNvbmRhcnlDb2xvcj0iI2NkZmZiMiIsdGhpcy5iYWNrZ3JvdW5kPSJ3aGl0ZSIsdGhpcy5tYWluQmtnPSIjY2RlNDk4Iix0aGlzLnNlY29uZEJrZz0iI2NkZmZiMiIsdGhpcy5saW5lQ29sb3I9ImdyZWVuIix0aGlzLmJvcmRlcjE9IiMxMzU0MGMiLHRoaXMuYm9yZGVyMj0iIzZlYWE0OSIsdGhpcy5hcnJvd2hlYWRDb2xvcj0iZ3JlZW4iLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLnRlcnRpYXJ5Q29sb3I9KDAsem0ubGlnaHRlbikoIiNjZGU0OTgiLDEwKSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj1VbSh0aGlzLnByaW1hcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yPVVtKHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yPVVtKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnByaW1hcnlUZXh0Q29sb3I9KDAsem0uaW52ZXJ0KSh0aGlzLnByaW1hcnlDb2xvciksdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9KDAsem0uaW52ZXJ0KSh0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yPSgwLHptLmludmVydCkodGhpcy5wcmltYXJ5Q29sb3IpLHRoaXMubGluZUNvbG9yPSgwLHptLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLnRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMuYmFja2dyb3VuZCksdGhpcy5ub2RlQmtnPSJjYWxjdWxhdGVkIix0aGlzLm5vZGVCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGl0bGVDb2xvcj0iIzMzMyIsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSIjZThlOGU4Iix0aGlzLmFjdG9yQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQmtnPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yVGV4dENvbG9yPSJibGFjayIsdGhpcy5hY3RvckxpbmVDb2xvcj0iZ3JleSIsdGhpcy5zaWduYWxDb2xvcj0iIzMzMyIsdGhpcy5zaWduYWxUZXh0Q29sb3I9IiMzMzMiLHRoaXMubGFiZWxCb3hCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPSIjMzI2OTMyIix0aGlzLmxhYmVsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxvb3BUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCa2dDb2xvcj0iI2ZmZjVhZCIsdGhpcy5ub3RlVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj0iIzY2NiIsdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9IiNmNGY0ZjQiLHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcj0id2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPSIjNmVhYTQ5Iix0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj0id2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj0iIzZlYWE0OSIsdGhpcy5leGNsdWRlQmtnQ29sb3I9IiNlZWVlZWUiLHRoaXMudGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tCa2dDb2xvcj0iIzQ4N2UzYSIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9IndoaXRlIix0aGlzLnRhc2tUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHREYXJrQ29sb3I9ImJsYWNrIix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3I9IiMwMDMxNjMiLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ncmlkQ29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPSJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iZ3JleSIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9IiNmZjg4ODgiLHRoaXMuY3JpdEJrZ0NvbG9yPSJyZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9InJlZCIsdGhpcy5sYWJlbENvbG9yPSJibGFjayIsdGhpcy5lcnJvckJrZ0NvbG9yPSIjNTUyMjIyIix0aGlzLmVycm9yVGV4dENvbG9yPSIjNTUyMjIyIn12YXIgZSxuO3JldHVybiBlPXQsbj1be2tleToidXBkYXRlQ29sb3JzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubm9kZUJrZz10aGlzLm1haW5Ca2csdGhpcy5ub2RlQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmNsdXN0ZXJCa2c9dGhpcy5zZWNvbmRCa2csdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuYm9yZGVyMix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5hY3RvckJvcmRlcj0oMCx6bS5kYXJrZW4pKHRoaXMubWFpbkJrZywyMCksdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJveEJrZ0NvbG9yPXRoaXMuYWN0b3JCa2csdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubG9vcFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubm90ZUJvcmRlckNvbG9yPXRoaXMuYm9yZGVyMix0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLnRhc2tCb3JkZXJDb2xvcj10aGlzLmJvcmRlcjEsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj10aGlzLnRhc2tCb3JkZXJDb2xvcix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj10aGlzLm1haW5Ca2csdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiNmMGYwZjAiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5jb21wb3NpdGVCb3JkZXI9dGhpcy5jb21wb3NpdGVCb3JkZXJ8fHRoaXMubm9kZUJvcmRlcix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZmlsbFR5cGUyPSgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz0oMCx6bS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlND0oMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU1PSgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj0oMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuZmlsbFR5cGU3PSgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDoxMjh9KSx0aGlzLnBpZTE9dGhpcy5waWUxfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnBpZTI9dGhpcy5waWUyfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMucGllMz10aGlzLnBpZTN8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLnBpZTQ9dGhpcy5waWU0fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtsOi0zMH0pLHRoaXMucGllNT10aGlzLnBpZTV8fCgwLHptLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7bDotMzB9KSx0aGlzLnBpZTY9dGhpcy5waWU2fHwoMCx6bS5hZGp1c3QpKHRoaXMudGVydGlhcnlDb2xvcix7aDo0MCxsOi00MH0pLHRoaXMucGllNz10aGlzLnBpZTd8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjAsbDotMTB9KSx0aGlzLnBpZTg9dGhpcy5waWU4fHwoMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi0xMH0pLHRoaXMucGllOT10aGlzLnBpZTl8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6MH0pLHRoaXMucGllMTA9dGhpcy5waWUxMHx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi01MH0pLHRoaXMucGllMTE9dGhpcy5waWUxMXx8KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjAsbDotNTB9KSx0aGlzLnBpZTEyPXRoaXMucGllMTJ8fCgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTUwfSksdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQsdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3I9dGhpcy5yZWxhdGlvbkxhYmVsQ29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3J9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIm9iamVjdCI9PT1LbSh0KSl7dmFyIG49T2JqZWN0LmtleXModCk7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSksdGhpcy51cGRhdGVDb2xvcnMoKSxuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKX1lbHNlIHRoaXMudXBkYXRlQ29sb3JzKCl9fV0sbiYmSm0oZS5wcm90b3R5cGUsbiksdH0oKTtmdW5jdGlvbiBldih0KXtyZXR1cm4gZXY9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGV2KHQpfWZ1bmN0aW9uIG52KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19dmFyIHJ2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMucHJpbWFyeUNvbG9yPSIjZWVlIix0aGlzLmNvbnRyYXN0PSIjNzA3MDcwIix0aGlzLnNlY29uZGFyeUNvbG9yPSgwLHptLmxpZ2h0ZW4pKHRoaXMuY29udHJhc3QsNTUpLHRoaXMuYmFja2dyb3VuZD0iI2ZmZmZmZiIsdGhpcy50ZXJ0aWFyeUNvbG9yPSgwLHptLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTE2MH0pLHRoaXMucHJpbWFyeUJvcmRlckNvbG9yPVVtKHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMuc2Vjb25kYXJ5Qm9yZGVyQ29sb3I9VW0odGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3I9VW0odGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMucHJpbWFyeVRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMucHJpbWFyeUNvbG9yKSx0aGlzLnNlY29uZGFyeVRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMudGVydGlhcnlUZXh0Q29sb3I9KDAsem0uaW52ZXJ0KSh0aGlzLnRlcnRpYXJ5Q29sb3IpLHRoaXMubGluZUNvbG9yPSgwLHptLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLnRleHRDb2xvcj0oMCx6bS5pbnZlcnQpKHRoaXMuYmFja2dyb3VuZCksdGhpcy5tYWluQmtnPSIjZWVlIix0aGlzLnNlY29uZEJrZz0iY2FsY3VsYXRlZCIsdGhpcy5saW5lQ29sb3I9IiM2NjYiLHRoaXMuYm9yZGVyMT0iIzk5OSIsdGhpcy5ib3JkZXIyPSJjYWxjdWxhdGVkIix0aGlzLm5vdGU9IiNmZmEiLHRoaXMudGV4dD0iIzMzMyIsdGhpcy5jcml0aWNhbD0iI2Q0MiIsdGhpcy5kb25lPSIjYmJiIix0aGlzLmFycm93aGVhZENvbG9yPSIjMzMzMzMzIix0aGlzLmZvbnRGYW1pbHk9JyJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZicsdGhpcy5mb250U2l6ZT0iMTZweCIsdGhpcy5ub2RlQmtnPSJjYWxjdWxhdGVkIix0aGlzLm5vZGVCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGl0bGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSJ3aGl0ZSIsdGhpcy5hY3RvckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvclRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckxpbmVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zaWduYWxDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zaWduYWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxvb3BUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj0iIzY2NiIsdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9IiNmNGY0ZjQiLHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcj0id2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj0id2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj0iY2FsY3VsYXRlZCIsdGhpcy5leGNsdWRlQmtnQ29sb3I9IiNlZWVlZWUiLHRoaXMudGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9IndoaXRlIix0aGlzLnRhc2tUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHREYXJrQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj0iIzAwMzE2MyIsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmdyaWRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuY3JpdEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmNyaXRCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50b2RheUxpbmVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbENvbG9yPSJibGFjayIsdGhpcy5lcnJvckJrZ0NvbG9yPSIjNTUyMjIyIix0aGlzLmVycm9yVGV4dENvbG9yPSIjNTUyMjIyIn12YXIgZSxuO3JldHVybiBlPXQsbj1be2tleToidXBkYXRlQ29sb3JzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2Vjb25kQmtnPSgwLHptLmxpZ2h0ZW4pKHRoaXMuY29udHJhc3QsNTUpLHRoaXMuYm9yZGVyMj10aGlzLmNvbnRyYXN0LHRoaXMubm9kZUJrZz10aGlzLm1haW5Ca2csdGhpcy5ub2RlQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmNsdXN0ZXJCa2c9dGhpcy5zZWNvbmRCa2csdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuYm9yZGVyMix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy50aXRsZUNvbG9yPXRoaXMudGV4dCx0aGlzLmFjdG9yQm9yZGVyPSgwLHptLmxpZ2h0ZW4pKHRoaXMuYm9yZGVyMSwyMyksdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5hY3RvclRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5hY3RvckxpbmVDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLnNpZ25hbENvbG9yPXRoaXMudGV4dCx0aGlzLnNpZ25hbFRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPXRoaXMuYWN0b3JCa2csdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPXRoaXMuYWN0b3JCb3JkZXIsdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMudGV4dCx0aGlzLm5vdGVCb3JkZXJDb2xvcj0iIzk5OSIsdGhpcy5ub3RlQmtnQ29sb3I9IiM2NjYiLHRoaXMubm90ZVRleHRDb2xvcj0iI2ZmZiIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9KDAsem0ubGlnaHRlbikodGhpcy5jb250cmFzdCwzMCksdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSgwLHptLmxpZ2h0ZW4pKHRoaXMuY29udHJhc3QsMzApLHRoaXMudGFza0JvcmRlckNvbG9yPSgwLHptLmRhcmtlbikodGhpcy5jb250cmFzdCwxMCksdGhpcy50YXNrQmtnQ29sb3I9dGhpcy5jb250cmFzdCx0aGlzLnRhc2tUZXh0Q29sb3I9dGhpcy50YXNrVGV4dExpZ2h0Q29sb3IsdGhpcy50YXNrVGV4dERhcmtDb2xvcj10aGlzLnRleHQsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj10aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPXRoaXMudGFza0JvcmRlckNvbG9yLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPXRoaXMubWFpbkJrZyx0aGlzLmdyaWRDb2xvcj0oMCx6bS5saWdodGVuKSh0aGlzLmJvcmRlcjEsMzApLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj10aGlzLmRvbmUsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuY3JpdEJrZ0NvbG9yPXRoaXMuY3JpdGljYWwsdGhpcy5jcml0Qm9yZGVyQ29sb3I9KDAsem0uZGFya2VuKSh0aGlzLmNyaXRCa2dDb2xvciwxMCksdGhpcy50b2RheUxpbmVDb2xvcj10aGlzLmNyaXRCa2dDb2xvcix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8IiMwMDAiLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiNmNGY0ZjQiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5zdGF0ZUJvcmRlcj10aGlzLnN0YXRlQm9yZGVyfHwiIzAwMCIsdGhpcy5pbm5lckVuZEJhY2tncm91bmQ9dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5zcGVjaWFsU3RhdGVDb2xvcj0iIzIyMiIsdGhpcy5lcnJvckJrZ0NvbG9yPXRoaXMuZXJyb3JCa2dDb2xvcnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZXJyb3JUZXh0Q29sb3I9dGhpcy5lcnJvclRleHRDb2xvcnx8dGhpcy50ZXJ0aWFyeVRleHRDb2xvcix0aGlzLmNsYXNzVGV4dD10aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5maWxsVHlwZTA9dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTE9dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmZpbGxUeXBlMj0oMCx6bS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9KDAsem0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNT0oMCx6bS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9KDAsem0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz0oMCx6bS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5waWUxPXRoaXMucGllMXx8IiNGNEY0RjQiLHRoaXMucGllMj10aGlzLnBpZTJ8fCIjNTU1Iix0aGlzLnBpZTM9dGhpcy5waWUzfHwiI0JCQiIsdGhpcy5waWU0PXRoaXMucGllNHx8IiM3NzciLHRoaXMucGllNT10aGlzLnBpZTV8fCIjOTk5Iix0aGlzLnBpZTY9dGhpcy5waWU2fHwiI0RERCIsdGhpcy5waWU3PXRoaXMucGllN3x8IiNGRkYiLHRoaXMucGllOD10aGlzLnBpZTh8fCIjREREIix0aGlzLnBpZTk9dGhpcy5waWU5fHwiI0JCQiIsdGhpcy5waWUxMD10aGlzLnBpZTEwfHwiIzk5OSIsdGhpcy5waWUxMT10aGlzLnBpZTExfHwiIzc3NyIsdGhpcy5waWUxMj10aGlzLnBpZTEyfHwiIzU1NSIsdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQsdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3I9dGhpcy5yZWxhdGlvbkxhYmVsQ29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3J9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIm9iamVjdCI9PT1ldih0KSl7dmFyIG49T2JqZWN0LmtleXModCk7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSksdGhpcy51cGRhdGVDb2xvcnMoKSxuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKX1lbHNlIHRoaXMudXBkYXRlQ29sb3JzKCl9fV0sbiYmbnYoZS5wcm90b3R5cGUsbiksdH0oKTtjb25zdCBpdj17YmFzZTp7Z2V0VGhlbWVWYXJpYWJsZXM6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEhtO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfX0sZGFyazp7Z2V0VGhlbWVWYXJpYWJsZXM6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEdtO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfX0sZGVmYXVsdDp7Z2V0VGhlbWVWYXJpYWJsZXM6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFFtO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfX0sZm9yZXN0OntnZXRUaGVtZVZhcmlhYmxlczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgdHY7cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9fSxuZXV0cmFsOntnZXRUaGVtZVZhcmlhYmxlczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgcnY7cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9fX07ZnVuY3Rpb24gYXYodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG92KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG92KHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/b3YodCxlKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBvdih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHN2KHQpe3JldHVybiBzdj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sc3YodCl9dmFyIGN2PXt0aGVtZToiZGVmYXVsdCIsdGhlbWVWYXJpYWJsZXM6aXYuZGVmYXVsdC5nZXRUaGVtZVZhcmlhYmxlcygpLHRoZW1lQ1NTOnZvaWQgMCxtYXhUZXh0U2l6ZTo1ZTQsZm9udEZhbWlseTonInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOycsbG9nTGV2ZWw6NSxzZWN1cml0eUxldmVsOiJzdHJpY3QiLHN0YXJ0T25Mb2FkOiEwLGFycm93TWFya2VyQWJzb2x1dGU6ITEsc2VjdXJlOlsic2VjdXJlIiwic2VjdXJpdHlMZXZlbCIsInN0YXJ0T25Mb2FkIiwibWF4VGV4dFNpemUiXSxkZXRlcm1pbmlzdGljSWRzOiExLGRldGVybWluaXN0aWNJRFNlZWQ6dm9pZCAwLGZsb3djaGFydDp7ZGlhZ3JhbVBhZGRpbmc6OCxodG1sTGFiZWxzOiEwLG5vZGVTcGFjaW5nOjUwLHJhbmtTcGFjaW5nOjUwLGN1cnZlOiJiYXNpcyIscGFkZGluZzoxNSx1c2VNYXhXaWR0aDohMCxkZWZhdWx0UmVuZGVyZXI6ImRhZ3JlLWQzIn0sc2VxdWVuY2U6e2FjdGl2YXRpb25XaWR0aDoxMCxkaWFncmFtTWFyZ2luWDo1MCxkaWFncmFtTWFyZ2luWToxMCxhY3Rvck1hcmdpbjo1MCx3aWR0aDoxNTAsaGVpZ2h0OjY1LGJveE1hcmdpbjoxMCxib3hUZXh0TWFyZ2luOjUsbm90ZU1hcmdpbjoxMCxtZXNzYWdlTWFyZ2luOjM1LG1lc3NhZ2VBbGlnbjoiY2VudGVyIixtaXJyb3JBY3RvcnM6ITAsZm9yY2VNZW51czohMSxib3R0b21NYXJnaW5BZGo6MSx1c2VNYXhXaWR0aDohMCxyaWdodEFuZ2xlczohMSxzaG93U2VxdWVuY2VOdW1iZXJzOiExLGFjdG9yRm9udFNpemU6MTQsYWN0b3JGb250RmFtaWx5OiciT3Blbi1TYW5zIiwgInNhbnMtc2VyaWYiJyxhY3RvckZvbnRXZWlnaHQ6NDAwLG5vdGVGb250U2l6ZToxNCxub3RlRm9udEZhbWlseTonInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxub3RlRm9udFdlaWdodDo0MDAsbm90ZUFsaWduOiJjZW50ZXIiLG1lc3NhZ2VGb250U2l6ZToxNixtZXNzYWdlRm9udEZhbWlseTonInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxtZXNzYWdlRm9udFdlaWdodDo0MDAsd3JhcDohMSx3cmFwUGFkZGluZzoxMCxsYWJlbEJveFdpZHRoOjUwLGxhYmVsQm94SGVpZ2h0OjIwLG1lc3NhZ2VGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5tZXNzYWdlRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLm1lc3NhZ2VGb250U2l6ZSxmb250V2VpZ2h0OnRoaXMubWVzc2FnZUZvbnRXZWlnaHR9fSxub3RlRm9udDpmdW5jdGlvbigpe3JldHVybntmb250RmFtaWx5OnRoaXMubm90ZUZvbnRGYW1pbHksZm9udFNpemU6dGhpcy5ub3RlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLm5vdGVGb250V2VpZ2h0fX0sYWN0b3JGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5hY3RvckZvbnRGYW1pbHksZm9udFNpemU6dGhpcy5hY3RvckZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5hY3RvckZvbnRXZWlnaHR9fX0sZ2FudHQ6e3RpdGxlVG9wTWFyZ2luOjI1LGJhckhlaWdodDoyMCxiYXJHYXA6NCx0b3BQYWRkaW5nOjUwLHJpZ2h0UGFkZGluZzo3NSxsZWZ0UGFkZGluZzo3NSxncmlkTGluZVN0YXJ0UGFkZGluZzozNSxmb250U2l6ZToxMSxzZWN0aW9uRm9udFNpemU6MTEsbnVtYmVyU2VjdGlvblN0eWxlczo0LGF4aXNGb3JtYXQ6IiVZLSVtLSVkIix1c2VNYXhXaWR0aDohMCx0b3BBeGlzOiExLHVzZVdpZHRoOnZvaWQgMH0sam91cm5leTp7ZGlhZ3JhbU1hcmdpblg6NTAsZGlhZ3JhbU1hcmdpblk6MTAsbGVmdE1hcmdpbjoxNTAsd2lkdGg6MTUwLGhlaWdodDo1MCxib3hNYXJnaW46MTAsYm94VGV4dE1hcmdpbjo1LG5vdGVNYXJnaW46MTAsbWVzc2FnZU1hcmdpbjozNSxtZXNzYWdlQWxpZ246ImNlbnRlciIsYm90dG9tTWFyZ2luQWRqOjEsdXNlTWF4V2lkdGg6ITAscmlnaHRBbmdsZXM6ITEsdGFza0ZvbnRTaXplOjE0LHRhc2tGb250RmFtaWx5OiciT3Blbi1TYW5zIiwgInNhbnMtc2VyaWYiJyx0YXNrTWFyZ2luOjUwLGFjdGl2YXRpb25XaWR0aDoxMCx0ZXh0UGxhY2VtZW50OiJmbyIsYWN0b3JDb2xvdXJzOlsiIzhGQkM4RiIsIiM3Q0ZDMDAiLCIjMDBGRkZGIiwiIzIwQjJBQSIsIiNCMEUwRTYiLCIjRkZGRkUwIl0sc2VjdGlvbkZpbGxzOlsiIzE5MTk3MCIsIiM4QjAwOEIiLCIjNEIwMDgyIiwiIzJGNEY0RiIsIiM4MDAwMDAiLCIjOEI0NTEzIiwiIzAwMDA4QiJdLHNlY3Rpb25Db2xvdXJzOlsiI2ZmZiJdfSxjbGFzczp7YXJyb3dNYXJrZXJBYnNvbHV0ZTohMSx1c2VNYXhXaWR0aDohMCxkZWZhdWx0UmVuZGVyZXI6ImRhZ3JlLXdyYXBwZXIifSxnaXQ6e2Fycm93TWFya2VyQWJzb2x1dGU6ITEsdXNlV2lkdGg6dm9pZCAwLHVzZU1heFdpZHRoOiEwfSxzdGF0ZTp7ZGl2aWRlck1hcmdpbjoxMCxzaXplVW5pdDo1LHBhZGRpbmc6OCx0ZXh0SGVpZ2h0OjEwLHRpdGxlU2hpZnQ6LTE1LG5vdGVNYXJnaW46MTAsZm9ya1dpZHRoOjcwLGZvcmtIZWlnaHQ6NyxtaW5pUGFkZGluZzoyLGZvbnRTaXplRmFjdG9yOjUuMDIsZm9udFNpemU6MjQsbGFiZWxIZWlnaHQ6MTYsZWRnZUxlbmd0aEZhY3RvcjoiMjAiLGNvbXBvc2l0VGl0bGVTaXplOjM1LHJhZGl1czo1LHVzZU1heFdpZHRoOiEwLGRlZmF1bHRSZW5kZXJlcjoiZGFncmUtd3JhcHBlciJ9LGVyOntkaWFncmFtUGFkZGluZzoyMCxsYXlvdXREaXJlY3Rpb246IlRCIixtaW5FbnRpdHlXaWR0aDoxMDAsbWluRW50aXR5SGVpZ2h0Ojc1LGVudGl0eVBhZGRpbmc6MTUsc3Ryb2tlOiJncmF5IixmaWxsOiJob25leWRldyIsZm9udFNpemU6MTIsdXNlTWF4V2lkdGg6ITB9LHBpZTp7dXNlV2lkdGg6dm9pZCAwLHVzZU1heFdpZHRoOiEwfSxyZXF1aXJlbWVudDp7dXNlV2lkdGg6dm9pZCAwLHVzZU1heFdpZHRoOiEwLHJlY3RfZmlsbDoiI2Y5ZjlmOSIsdGV4dF9jb2xvcjoiIzMzMyIscmVjdF9ib3JkZXJfc2l6ZToiMC41cHgiLHJlY3RfYm9yZGVyX2NvbG9yOiIjYmJiIixyZWN0X21pbl93aWR0aDoyMDAscmVjdF9taW5faGVpZ2h0OjIwMCxmb250U2l6ZToxNCxyZWN0X3BhZGRpbmc6MTAsbGluZV9oZWlnaHQ6MjB9fTtjdi5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlPWN2LmFycm93TWFya2VyQWJzb2x1dGUsY3YuZ2l0LmFycm93TWFya2VyQWJzb2x1dGU9Y3YuYXJyb3dNYXJrZXJBYnNvbHV0ZTt2YXIgdXY9ZnVuY3Rpb24gdChlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IiI7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgoZnVuY3Rpb24ocixpKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlW2ldKT9yOiJvYmplY3QiPT09c3YoZVtpXSkmJm51bGwhPT1lW2ldP1tdLmNvbmNhdChhdihyKSxbbitpXSxhdih0KGVbaV0sIiIpKSk6W10uY29uY2F0KGF2KHIpLFtuK2ldKX0pLFtdKX0oY3YsIiIpO2NvbnN0IGx2PWN2O3ZhciBodj12b2lkIDA7ZnVuY3Rpb24gZnYodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBkdih0LGUpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighbil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49Z3YodCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtuJiYodD1uKTt2YXIgcj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiByPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtyKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtuPW4uY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PW4ubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX19fWZ1bmN0aW9uIHB2KHQpe3JldHVybiBwdj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scHYodCl9ZnVuY3Rpb24geXYodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG12KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8Z3YodCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZ3YodCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG12KHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/bXYodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIG12KHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9dmFyIHZ2LGJ2PXtjdXJ2ZUJhc2lzOlZ1LGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHdSh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBYdSh0KX0sY3VydmVMaW5lYXI6UHUsY3VydmVMaW5lYXJDbG9zZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBadSh0KX0sY3VydmVNb25vdG9uZVg6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlbCh0KX0sY3VydmVNb25vdG9uZVk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBubCh0KX0sY3VydmVOYXR1cmFsOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaWwodCl9LGN1cnZlU3RlcDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG9sKHQsLjUpfSxjdXJ2ZVN0ZXBBZnRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG9sKHQsMSl9LGN1cnZlU3RlcEJlZm9yZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG9sKHQsMCl9fSxfdj0vWyVdezJ9W3tdXHMqKD86KD86KFx3Kylccyo6fChcdyspKVxzKig/Oig/OihcdyspKXwoKD86KD8hW31dWyVdezJ9KS58XHI/XG4pKikpP1xzKikoPzpbfV1bJV17Mn0pPy9naSx4dj0vXHMqKD86KD86KFx3KykoPz06KTp8KFx3KykpXHMqKD86KD86KFx3KykpfCgoPzooPyFbfV1bJV17Mn0pLnxccj9cbikqKSk/XHMqKSg/Olt9XVslXXsyfSk/L2dpLHd2PS9ccyolJS4qXG4vZ20sa3Y9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7dHJ5e3ZhciBuPW5ldyBSZWdFeHAoIlslXXsyfSg/IVt7XSIuY29uY2F0KHh2LnNvdXJjZSwiKSg/PVt9XVslXXsyfSkuKlxuIiksImlnIik7dD10LnRyaW0oKS5yZXBsYWNlKG4sIiIpLnJlcGxhY2UoLycvZ20sJyInKSxvLmRlYnVnKCJEZXRlY3RpbmcgZGlhZ3JhbSBkaXJlY3RpdmUiLmNvbmNhdChudWxsIT09ZT8iIHR5cGU6IitlOiIiLCIgYmFzZWQgb24gdGhlIHRleHQ6IikuY29uY2F0KHQpKTtmb3IodmFyIHIsaT1bXTtudWxsIT09KHI9X3YuZXhlYyh0KSk7KWlmKHIuaW5kZXg9PT1fdi5sYXN0SW5kZXgmJl92Lmxhc3RJbmRleCsrLHImJiFlfHxlJiZyWzFdJiZyWzFdLm1hdGNoKGUpfHxlJiZyWzJdJiZyWzJdLm1hdGNoKGUpKXt2YXIgYT1yWzFdP3JbMV06clsyXSxzPXJbM10/clszXS50cmltKCk6cls0XT9KU09OLnBhcnNlKHJbNF0udHJpbSgpKTpudWxsO2kucHVzaCh7dHlwZTphLGFyZ3M6c30pfXJldHVybiAwPT09aS5sZW5ndGgmJmkucHVzaCh7dHlwZTp0LGFyZ3M6bnVsbH0pLDE9PT1pLmxlbmd0aD9pWzBdOml9Y2F0Y2gobil7cmV0dXJuIG8uZXJyb3IoIkVSUk9SOiAiLmNvbmNhdChuLm1lc3NhZ2UsIiAtIFVuYWJsZSB0byBwYXJzZSBkaXJlY3RpdmVcbiAgICAgICIpLmNvbmNhdChudWxsIT09ZT8iIHR5cGU6IitlOiIiLCIgYmFzZWQgb24gdGhlIHRleHQ6IikuY29uY2F0KHQpKSx7dHlwZTpudWxsLGFyZ3M6bnVsbH19fSxUdj1mdW5jdGlvbih0LGUpe3JldHVybih0PXQucmVwbGFjZShfdiwiIikucmVwbGFjZSh3diwiXG4iKSkubWF0Y2goL15ccypzZXF1ZW5jZURpYWdyYW0vKT8ic2VxdWVuY2UiOnQubWF0Y2goL15ccypnYW50dC8pPyJnYW50dCI6dC5tYXRjaCgvXlxzKmNsYXNzRGlhZ3JhbS12Mi8pPyJjbGFzc0RpYWdyYW0iOnQubWF0Y2goL15ccypjbGFzc0RpYWdyYW0vKT9lJiZlLmNsYXNzJiYiZGFncmUtd3JhcHBlciI9PT1lLmNsYXNzLmRlZmF1bHRSZW5kZXJlcj8iY2xhc3NEaWFncmFtIjoiY2xhc3MiOnQubWF0Y2goL15ccypzdGF0ZURpYWdyYW0tdjIvKT8ic3RhdGVEaWFncmFtIjp0Lm1hdGNoKC9eXHMqc3RhdGVEaWFncmFtLyk/ZSYmZS5jbGFzcyYmImRhZ3JlLXdyYXBwZXIiPT09ZS5zdGF0ZS5kZWZhdWx0UmVuZGVyZXI/InN0YXRlRGlhZ3JhbSI6InN0YXRlIjp0Lm1hdGNoKC9eXHMqZ2l0R3JhcGgvKT8iZ2l0Ijp0Lm1hdGNoKC9eXHMqZmxvd2NoYXJ0Lyk/ImZsb3djaGFydC12MiI6dC5tYXRjaCgvXlxzKmluZm8vKT8iaW5mbyI6dC5tYXRjaCgvXlxzKnBpZS8pPyJwaWUiOnQubWF0Y2goL15ccyplckRpYWdyYW0vKT8iZXIiOnQubWF0Y2goL15ccypqb3VybmV5Lyk/ImpvdXJuZXkiOnQubWF0Y2goL15ccypyZXF1aXJlbWVudC8pfHx0Lm1hdGNoKC9eXHMqcmVxdWlyZW1lbnREaWFncmFtLyk/InJlcXVpcmVtZW50IjplJiZlLmZsb3djaGFydCYmImRhZ3JlLXdyYXBwZXIiPT09ZS5mbG93Y2hhcnQuZGVmYXVsdFJlbmRlcmVyPyJmbG93Y2hhcnQtdjIiOiJmbG93Y2hhcnQifSxFdj1mdW5jdGlvbih0LGUpe3ZhciBuPXt9O3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKWlbYV09YXJndW1lbnRzW2FdO3ZhciBvPWU/ZS5hcHBseShodixpKTppWzBdO2lmKG8gaW4gbilyZXR1cm4gbltvXTt2YXIgcz10LmFwcGx5KHZvaWQgMCxpKTtyZXR1cm4gbltvXT1zLHN9fSxDdj1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiBlO3ZhciBuPSJjdXJ2ZSIuY29uY2F0KHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKSk7cmV0dXJuIGJ2W25dfHxlfSxTdj1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZlP01hdGguc3FydChNYXRoLnBvdyhlLngtdC54LDIpK01hdGgucG93KGUueS10LnksMikpOjB9LEF2PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixuPSIiLHI9MDtyPHQubGVuZ3RoO3IrKyl2b2lkIDAhPT10W3JdJiYodFtyXS5zdGFydHNXaXRoKCJjb2xvcjoiKXx8dFtyXS5zdGFydHNXaXRoKCJ0ZXh0LWFsaWduOiIpP249bit0W3JdKyI7IjplPWUrdFtyXSsiOyIpO3JldHVybntzdHlsZTplLGxhYmVsU3R5bGU6bn19LE12PTAsTnY9ZnVuY3Rpb24oKXtyZXR1cm4gTXYrKywiaWQtIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwxMikrIi0iK012fSxEdj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49IjAxMjM0NTY3ODlhYmNkZWYiLHI9bi5sZW5ndGgsaT0wO2k8dDtpKyspZSs9bi5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnIpKTtyZXR1cm4gZX0odC5sZW5ndGgpfSxPdj1mdW5jdGlvbiB0KGUsbixyKXt2YXIgaT1PYmplY3QuYXNzaWduKHtkZXB0aDoyLGNsb2JiZXI6ITF9LHIpLGE9aS5kZXB0aCxvPWkuY2xvYmJlcjtyZXR1cm4gQXJyYXkuaXNBcnJheShuKSYmIUFycmF5LmlzQXJyYXkoZSk/KG4uZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuLHIpfSkpLGUpOkFycmF5LmlzQXJyYXkobikmJkFycmF5LmlzQXJyYXkoZSk/KG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7LTE9PT1lLmluZGV4T2YodCkmJmUucHVzaCh0KX0pKSxlKTp2b2lkIDA9PT1lfHxhPD0wP251bGwhPWUmJiJvYmplY3QiPT09cHYoZSkmJiJvYmplY3QiPT09cHYobik/T2JqZWN0LmFzc2lnbihlLG4pOm46KHZvaWQgMCE9PW4mJiJvYmplY3QiPT09cHYoZSkmJiJvYmplY3QiPT09cHYobikmJk9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHIpeyJvYmplY3QiIT09cHYobltyXSl8fHZvaWQgMCE9PWVbcl0mJiJvYmplY3QiIT09cHYoZVtyXSk/KG98fCJvYmplY3QiIT09cHYoZVtyXSkmJiJvYmplY3QiIT09cHYobltyXSkpJiYoZVtyXT1uW3JdKToodm9pZCAwPT09ZVtyXSYmKGVbcl09QXJyYXkuaXNBcnJheShuW3JdKT9bXTp7fSksZVtyXT10KGVbcl0sbltyXSx7ZGVwdGg6YS0xLGNsb2JiZXI6b30pKX0pKSxlKX0sQnY9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnRleHQucmVwbGFjZShZbS5saW5lQnJlYWtSZWdleCwiICIpLHI9dC5hcHBlbmQoInRleHQiKTtyLmF0dHIoIngiLGUueCksci5hdHRyKCJ5IixlLnkpLHIuc3R5bGUoInRleHQtYW5jaG9yIixlLmFuY2hvciksci5zdHlsZSgiZm9udC1mYW1pbHkiLGUuZm9udEZhbWlseSksci5zdHlsZSgiZm9udC1zaXplIixlLmZvbnRTaXplKSxyLnN0eWxlKCJmb250LXdlaWdodCIsZS5mb250V2VpZ2h0KSxyLmF0dHIoImZpbGwiLGUuZmlsbCksdm9pZCAwIT09ZS5jbGFzcyYmci5hdHRyKCJjbGFzcyIsZS5jbGFzcyk7dmFyIGk9ci5hcHBlbmQoInRzcGFuIik7cmV0dXJuIGkuYXR0cigieCIsZS54KzIqZS50ZXh0TWFyZ2luKSxpLmF0dHIoImZpbGwiLGUuZmlsbCksaS50ZXh0KG4pLHJ9LEx2PUV2KChmdW5jdGlvbih0LGUsbil7aWYoIXQpcmV0dXJuIHQ7aWYobj1PYmplY3QuYXNzaWduKHtmb250U2l6ZToxMixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OiJBcmlhbCIsam9pbldpdGg6Ijxici8+In0sbiksWW0ubGluZUJyZWFrUmVnZXgudGVzdCh0KSlyZXR1cm4gdDt2YXIgcj10LnNwbGl0KCIgIiksaT1bXSxhPSIiO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIHM9UnYoIiIuY29uY2F0KHQsIiAiKSxuKSxjPVJ2KGEsbik7aWYocz5lKXt2YXIgdT1Jdih0LGUsIi0iLG4pLGw9dS5oeXBoZW5hdGVkU3RyaW5ncyxoPXUucmVtYWluaW5nV29yZDtpLnB1c2guYXBwbHkoaSxbYV0uY29uY2F0KHl2KGwpKSksYT1ofWVsc2UgYytzPj1lPyhpLnB1c2goYSksYT10KTphPVthLHRdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIik7bysxPT09ci5sZW5ndGgmJmkucHVzaChhKX0pKSxpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIiIhPT10fSkpLmpvaW4obi5qb2luV2l0aCl9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiIiLmNvbmNhdCh0LCItIikuY29uY2F0KGUsIi0iKS5jb25jYXQobi5mb250U2l6ZSwiLSIpLmNvbmNhdChuLmZvbnRXZWlnaHQsIi0iKS5jb25jYXQobi5mb250RmFtaWx5LCItIikuY29uY2F0KG4uam9pbldpdGgpfSkpLEl2PUV2KChmdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiLSIscj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtyPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIixtYXJnaW46MH0scik7dmFyIGk9dC5zcGxpdCgiIiksYT1bXSxvPSIiO3JldHVybiBpLmZvckVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIGM9IiIuY29uY2F0KG8pLmNvbmNhdCh0KTtpZihSdihjLHIpPj1lKXt2YXIgdT1zKzEsbD1pLmxlbmd0aD09PXUsaD0iIi5jb25jYXQoYykuY29uY2F0KG4pO2EucHVzaChsP2M6aCksbz0iIn1lbHNlIG89Y30pKSx7aHlwaGVuYXRlZFN0cmluZ3M6YSxyZW1haW5pbmdXb3JkOm99fSksKGZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiItIixyPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO3JldHVybiIiLmNvbmNhdCh0LCItIikuY29uY2F0KGUsIi0iKS5jb25jYXQobiwiLSIpLmNvbmNhdChyLmZvbnRTaXplLCItIikuY29uY2F0KHIuZm9udFdlaWdodCwiLSIpLmNvbmNhdChyLmZvbnRGYW1pbHkpfSkpLFJ2PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwifSxlKSxGdih0LGUpLndpZHRofSxGdj1FdigoZnVuY3Rpb24odCxlKXt2YXIgbj1lPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIn0sZSkscj1uLmZvbnRTaXplLGk9bi5mb250RmFtaWx5LGE9bi5mb250V2VpZ2h0O2lmKCF0KXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgbz1bInNhbnMtc2VyaWYiLGldLHM9dC5zcGxpdChZbS5saW5lQnJlYWtSZWdleCksYz1bXSx1PWF1KCJib2R5Iik7aWYoIXUucmVtb3ZlKXJldHVybnt3aWR0aDowLGhlaWdodDowLGxpbmVIZWlnaHQ6MH07Zm9yKHZhciBsPXUuYXBwZW5kKCJzdmciKSxoPTAsZj1vO2g8Zi5sZW5ndGg7aCsrKXt2YXIgZCxwPWZbaF0seT0wLGc9e3dpZHRoOjAsaGVpZ2h0OjAsbGluZUhlaWdodDowfSxtPWR2KHMpO3RyeXtmb3IobS5zKCk7IShkPW0ubigpKS5kb25lOyl7dmFyIHY9ZC52YWx1ZSxiPXt4OjAseTowLGZpbGw6dm9pZCAwLGFuY2hvcjoic3RhcnQiLHN0eWxlOiIjNjY2Iix3aWR0aDoxMDAsaGVpZ2h0OjEwMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHZhbGlnbjp2b2lkIDB9O2IudGV4dD12O3ZhciBfPUJ2KGwsYikuc3R5bGUoImZvbnQtc2l6ZSIscikuc3R5bGUoImZvbnQtd2VpZ2h0IixhKS5zdHlsZSgiZm9udC1mYW1pbHkiLHApLHg9KF8uX2dyb3Vwc3x8XylbMF1bMF0uZ2V0QkJveCgpO2cud2lkdGg9TWF0aC5yb3VuZChNYXRoLm1heChnLndpZHRoLHgud2lkdGgpKSx5PU1hdGgucm91bmQoeC5oZWlnaHQpLGcuaGVpZ2h0Kz15LGcubGluZUhlaWdodD1NYXRoLnJvdW5kKE1hdGgubWF4KGcubGluZUhlaWdodCx5KSl9fWNhdGNoKHQpe20uZSh0KX1maW5hbGx5e20uZigpfWMucHVzaChnKX1yZXR1cm4gbC5yZW1vdmUoKSxjW2lzTmFOKGNbMV0uaGVpZ2h0KXx8aXNOYU4oY1sxXS53aWR0aCl8fGlzTmFOKGNbMV0ubGluZUhlaWdodCl8fGNbMF0uaGVpZ2h0PmNbMV0uaGVpZ2h0JiZjWzBdLndpZHRoPmNbMV0ud2lkdGgmJmNbMF0ubGluZUhlaWdodD5jWzFdLmxpbmVIZWlnaHQ/MDoxXX0pLChmdW5jdGlvbih0LGUpe3JldHVybiIiLmNvbmNhdCh0LCItIikuY29uY2F0KGUuZm9udFNpemUsIi0iKS5jb25jYXQoZS5mb250V2VpZ2h0LCItIikuY29uY2F0KGUuZm9udEZhbWlseSl9KSksUHY9ZnVuY3Rpb24odCxlLG4pe3ZhciByPW5ldyBNYXA7cmV0dXJuIHIuc2V0KCJoZWlnaHQiLHQpLG4/KHIuc2V0KCJ3aWR0aCIsIjEwMCUiKSxyLnNldCgic3R5bGUiLCJtYXgtd2lkdGg6ICIuY29uY2F0KGUsInB4OyIpKSk6ci5zZXQoIndpZHRoIixlKSxyfSxqdj1mdW5jdGlvbih0LGUsbixyKXshZnVuY3Rpb24odCxlKXt2YXIgbixyPWR2KGUpO3RyeXtmb3Ioci5zKCk7IShuPXIubigpKS5kb25lOyl7dmFyIGk9bi52YWx1ZTt0LmF0dHIoaVswXSxpWzFdKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9fSh0LFB2KGUsbixyKSl9LFl2PWZ1bmN0aW9uIHQoZSl7by5kZWJ1ZygiZGlyZWN0aXZlU2FuaXRpemVyIGNhbGxlZCB3aXRoIixlKSwib2JqZWN0Ij09PXB2KGUpJiYoZS5sZW5ndGg/ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdChlKX0pKTpPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtvLmRlYnVnKCJDaGVja2luZyBrZXkiLG4pLDA9PT1uLmluZGV4T2YoIl9fIikmJihvLmRlYnVnKCJzYW5pdGl6ZSBkZWxldGluZyBfXyBvcHRpb24iLG4pLGRlbGV0ZSBlW25dKSxuLmluZGV4T2YoInByb3RvIik+PTAmJihvLmRlYnVnKCJzYW5pdGl6ZSBkZWxldGluZyBwcm90byBvcHRpb24iLG4pLGRlbGV0ZSBlW25dKSxuLmluZGV4T2YoImNvbnN0ciIpPj0wJiYoby5kZWJ1Zygic2FuaXRpemUgZGVsZXRpbmcgY29uc3RyIG9wdGlvbiIsbiksZGVsZXRlIGVbbl0pLHV2LmluZGV4T2Yobik8MD8oby5kZWJ1Zygic2FuaXRpemUgZGVsZXRpbmcgb3B0aW9uIixuKSxkZWxldGUgZVtuXSk6Im9iamVjdCI9PT1wdihlW25dKSYmKG8uZGVidWcoInNhbml0aXplIGRlbGV0aW5nIG9iamVjdCIsbiksdChlW25dKSl9KSkpfTtjb25zdCB6dj17YXNzaWduV2l0aERlcHRoOk92LHdyYXBMYWJlbDpMdixjYWxjdWxhdGVUZXh0SGVpZ2h0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwiLG1hcmdpbjoxNX0sZSksRnYodCxlKS5oZWlnaHR9LGNhbGN1bGF0ZVRleHRXaWR0aDpSdixjYWxjdWxhdGVUZXh0RGltZW5zaW9uczpGdixjYWxjdWxhdGVTdmdTaXplQXR0cnM6UHYsY29uZmlndXJlU3ZnU2l6ZTpqdixkZXRlY3RJbml0OmZ1bmN0aW9uKHQsZSl7dmFyIG49a3YodCwvKD86aW5pdFxiKXwoPzppbml0aWFsaXplXGIpLykscj17fTtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgaT1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXJnc30pKTtZdihpKSxyPU92KHIseXYoaSkpfWVsc2Ugcj1uLmFyZ3M7aWYocil7dmFyIGE9VHYodCxlKTtbImNvbmZpZyJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXJbdF0mJigiZmxvd2NoYXJ0LXYyIj09PWEmJihhPSJmbG93Y2hhcnQiKSxyW2FdPXJbdF0sZGVsZXRlIHJbdF0pfSkpfXJldHVybiByfSxkZXRlY3REaXJlY3RpdmU6a3YsZGV0ZWN0VHlwZTpUdixpc1N1YnN0cmluZ0luQXJyYXk6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLm1hdGNoKHQpKXJldHVybiBuO3JldHVybi0xfSxpbnRlcnBvbGF0ZVRvQ3VydmU6Q3YsY2FsY0xhYmVsUG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlLG49MDt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe24rPVN2KHQsZSksZT10fSkpO3ZhciByPW4vMixpPXZvaWQgMDtyZXR1cm4gZT12b2lkIDAsdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihlJiYhaSl7dmFyIG49U3YodCxlKTtpZihuPHIpci09bjtlbHNle3ZhciBhPXIvbjthPD0wJiYoaT1lKSxhPj0xJiYoaT17eDp0LngseTp0Lnl9KSxhPjAmJmE8MSYmKGk9e3g6KDEtYSkqZS54K2EqdC54LHk6KDEtYSkqZS55K2EqdC55fSl9fWU9dH0pKSxpfSh0KX0sY2FsY0NhcmRpbmFsaXR5UG9zaXRpb246ZnVuY3Rpb24odCxlLG4pe3ZhciByO28uaW5mbygib3VyIHBvaW50cyIsZSksZVswXSE9PW4mJihlPWUucmV2ZXJzZSgpKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe1N2KHQscikscj10fSkpO3ZhciBpLGE9MjU7cj12b2lkIDAsZS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihyJiYhaSl7dmFyIGU9U3YodCxyKTtpZihlPGEpYS09ZTtlbHNle3ZhciBuPWEvZTtuPD0wJiYoaT1yKSxuPj0xJiYoaT17eDp0LngseTp0Lnl9KSxuPjAmJm48MSYmKGk9e3g6KDEtbikqci54K24qdC54LHk6KDEtbikqci55K24qdC55fSl9fXI9dH0pKTt2YXIgcz10PzEwOjUsYz1NYXRoLmF0YW4yKGVbMF0ueS1pLnksZVswXS54LWkueCksdT17eDowLHk6MH07cmV0dXJuIHUueD1NYXRoLnNpbihjKSpzKyhlWzBdLngraS54KS8yLHUueT0tTWF0aC5jb3MoYykqcysoZVswXS55K2kueSkvMix1fSxjYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobikpO28uaW5mbygib3VyIHBvaW50cyIsaSksInN0YXJ0X2xlZnQiIT09ZSYmInN0YXJ0X3JpZ2h0IiE9PWUmJihpPWkucmV2ZXJzZSgpKSxpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1N2KHQscikscj10fSkpO3ZhciBhLHM9MjUrdDtyPXZvaWQgMCxpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHImJiFhKXt2YXIgZT1Tdih0LHIpO2lmKGU8cylzLT1lO2Vsc2V7dmFyIG49cy9lO248PTAmJihhPXIpLG4+PTEmJihhPXt4OnQueCx5OnQueX0pLG4+MCYmbjwxJiYoYT17eDooMS1uKSpyLngrbip0LngseTooMS1uKSpyLnkrbip0Lnl9KX19cj10fSkpO3ZhciBjPTEwKy41KnQsdT1NYXRoLmF0YW4yKGlbMF0ueS1hLnksaVswXS54LWEueCksbD17eDowLHk6MH07cmV0dXJuIGwueD1NYXRoLnNpbih1KSpjKyhpWzBdLngrYS54KS8yLGwueT0tTWF0aC5jb3ModSkqYysoaVswXS55K2EueSkvMiwic3RhcnRfbGVmdCI9PT1lJiYobC54PU1hdGguc2luKHUrTWF0aC5QSSkqYysoaVswXS54K2EueCkvMixsLnk9LU1hdGguY29zKHUrTWF0aC5QSSkqYysoaVswXS55K2EueSkvMiksImVuZF9yaWdodCI9PT1lJiYobC54PU1hdGguc2luKHUtTWF0aC5QSSkqYysoaVswXS54K2EueCkvMi01LGwueT0tTWF0aC5jb3ModS1NYXRoLlBJKSpjKyhpWzBdLnkrYS55KS8yLTUpLCJlbmRfbGVmdCI9PT1lJiYobC54PU1hdGguc2luKHUpKmMrKGlbMF0ueCthLngpLzItNSxsLnk9LU1hdGguY29zKHUpKmMrKGlbMF0ueSthLnkpLzItNSksbH0sZm9ybWF0VXJsOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC50cmltKCk7aWYobilyZXR1cm4ibG9vc2UiIT09ZS5zZWN1cml0eUxldmVsPygwLERtLnNhbml0aXplVXJsKShuKTpufSxnZXRTdHlsZXNGcm9tQXJyYXk6QXYsZ2VuZXJhdGVJZDpOdixyYW5kb206RHYsbWVtb2l6ZTpFdixydW5GdW5jOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXQuc3BsaXQoIi4iKSxyPW4ubGVuZ3RoLTEsaT1uW3JdLGE9d2luZG93LG89MDtvPHI7bysrKWlmKCEoYT1hW25bb11dKSlyZXR1cm47Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgsYz1uZXcgQXJyYXkocz4xP3MtMTowKSx1PTE7dTxzO3UrKyljW3UtMV09YXJndW1lbnRzW3VdOyhlPWEpW2ldLmFwcGx5KGUsYyl9LGVudGl0eURlY29kZTpmdW5jdGlvbih0KXtyZXR1cm4gdnY9dnZ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQ9ZXNjYXBlKHQpLnJlcGxhY2UoLyUyNi9nLCImIikucmVwbGFjZSgvJTIzL2csIiMiKS5yZXBsYWNlKC8lM0IvZywiOyIpLHZ2LmlubmVySFRNTD10LHVuZXNjYXBlKHZ2LnRleHRDb250ZW50KX0saW5pdElkR2VuZXJhdGlvcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLmRldGVybWluaXN0aWM9ZSx0aGlzLnNlZWQ9bix0aGlzLmNvdW50PW4/bi5sZW5ndGg6MH12YXIgZSxuO3JldHVybiBlPXQsKG49W3trZXk6Im5leHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGV0ZXJtaW5pc3RpYz90aGlzLmNvdW50Kys6RGF0ZS5ub3coKX19XSkmJmZ2KGUucHJvdG90eXBlLG4pLHR9KCksZGlyZWN0aXZlU2FuaXRpemVyOll2fTtmdW5jdGlvbiBVdih0KXtyZXR1cm4gVXY9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFV2KHQpfXZhciBxdiwkdj1PYmplY3QuZnJlZXplKGx2KSxIdj1Pdih7fSwkdiksV3Y9W10sVnY9T3Yoe30sJHYpLEd2PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPU92KHt9LHQpLHI9e30saT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldO1F2KGEpLHI9T3YocixhKX1pZihuPU92KG4sciksci50aGVtZSl7dmFyIG89T3Yoe30scXYpLHM9T3Yoby50aGVtZVZhcmlhYmxlc3x8e30sci50aGVtZVZhcmlhYmxlcyk7bi50aGVtZVZhcmlhYmxlcz1pdltuLnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyhzKX1yZXR1cm4gVnY9bixufSxYdj1mdW5jdGlvbigpe3JldHVybiBPdih7fSxIdil9LFp2PWZ1bmN0aW9uKCl7cmV0dXJuIE92KHt9LFZ2KX0sUXY9ZnVuY3Rpb24gdChlKXtPYmplY3Qua2V5cyhIdi5zZWN1cmUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWVbSHYuc2VjdXJlW3RdXSYmKG8uZGVidWcoIkRlbmllZCBhdHRlbXB0IHRvIG1vZGlmeSBhIHNlY3VyZSBrZXkgIi5jb25jYXQoSHYuc2VjdXJlW3RdKSxlW0h2LnNlY3VyZVt0XV0pLGRlbGV0ZSBlW0h2LnNlY3VyZVt0XV0pfSkpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpezA9PT10LmluZGV4T2YoIl9fIikmJmRlbGV0ZSBlW3RdfSkpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4peyJzdHJpbmciPT10eXBlb2YgZVtuXSYmKGVbbl0uaW5kZXhPZigiPCIpPi0xfHxlW25dLmluZGV4T2YoIj4iKT4tMXx8ZVtuXS5pbmRleE9mKCJ1cmwoZGF0YToiKT4tMSkmJmRlbGV0ZSBlW25dLCJvYmplY3QiPT09VXYoZVtuXSkmJnQoZVtuXSl9KSl9LEt2PWZ1bmN0aW9uKHQpe3QuZm9udEZhbWlseSYmKHQudGhlbWVWYXJpYWJsZXMmJnQudGhlbWVWYXJpYWJsZXMuZm9udEZhbWlseXx8KHQudGhlbWVWYXJpYWJsZXM9e2ZvbnRGYW1pbHk6dC5mb250RmFtaWx5fSkpLFd2LnB1c2godCksR3YoSHYsV3YpfSxKdj1mdW5jdGlvbigpe0d2KEh2LFd2PVtdKX07ZnVuY3Rpb24gdGIodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgZWI9ImNsYXNzaWQtIixuYj1bXSxyYj17fSxpYj0wLGFiPVtdLG9iPWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dDtpZih0LmluZGV4T2YoIn4iKT4wKXt2YXIgcj10LnNwbGl0KCJ+Iik7bj1yWzBdLGU9WW0uc2FuaXRpemVUZXh0KHJbMV0sWnYoKSl9cmV0dXJue2NsYXNzTmFtZTpuLHR5cGU6ZX19LHNiPWZ1bmN0aW9uKHQpe3ZhciBlPW9iKHQpO3ZvaWQgMD09PXJiW2UuY2xhc3NOYW1lXSYmKHJiW2UuY2xhc3NOYW1lXT17aWQ6ZS5jbGFzc05hbWUsdHlwZTplLnR5cGUsY3NzQ2xhc3NlczpbXSxtZXRob2RzOltdLG1lbWJlcnM6W10sYW5ub3RhdGlvbnM6W10sZG9tSWQ6ZWIrZS5jbGFzc05hbWUrIi0iK2lifSxpYisrKX0sY2I9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdC5rZXlzKHJiKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYocmJbZVtuXV0uaWQ9PT10KXJldHVybiByYltlW25dXS5kb21JZH0sdWI9ZnVuY3Rpb24odCxlKXt2YXIgbj1vYih0KS5jbGFzc05hbWUscj1yYltuXTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBpPWUudHJpbSgpO2kuc3RhcnRzV2l0aCgiPDwiKSYmaS5lbmRzV2l0aCgiPj4iKT9yLmFubm90YXRpb25zLnB1c2goaS5zdWJzdHJpbmcoMixpLmxlbmd0aC0yKSk6aS5pbmRleE9mKCIpIik+MD9yLm1ldGhvZHMucHVzaChpKTppJiZyLm1lbWJlcnMucHVzaChpKX19LGxiPWZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQ7dFswXS5tYXRjaCgvXGQvKSYmKG49ZWIrbiksdm9pZCAwIT09cmJbbl0mJnJiW25dLmNzc0NsYXNzZXMucHVzaChlKX0pKX0saGI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVp2KCksaT10LGE9Y2IoaSk7aWYoImxvb3NlIj09PXIuc2VjdXJpdHlMZXZlbCYmdm9pZCAwIT09ZSYmdm9pZCAwIT09cmJbaV0pe3ZhciBvPVtdO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7bz1uLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2Zvcih2YXIgcz0wO3M8by5sZW5ndGg7cysrKXt2YXIgYz1vW3NdLnRyaW0oKTsnIic9PT1jLmNoYXJBdCgwKSYmJyInPT09Yy5jaGFyQXQoYy5sZW5ndGgtMSkmJihjPWMuc3Vic3RyKDEsYy5sZW5ndGgtMikpLG9bc109Y319MD09PW8ubGVuZ3RoJiZvLnB1c2goYSksYWIucHVzaCgoZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9IicuY29uY2F0KGEsJyJdJykpO251bGwhPT10JiZ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oKXt2YXIgdDt6di5ydW5GdW5jLmFwcGx5KHp2LFtlXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdGIodCl9KHQ9byl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0Yih0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3RiKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpKX0pLCExKX0pKX19LGZiPXtBR0dSRUdBVElPTjowLEVYVEVOU0lPTjoxLENPTVBPU0lUSU9OOjIsREVQRU5ERU5DWTozfSxkYj1mdW5jdGlvbih0KXt2YXIgZT1hdSgiLm1lcm1haWRUb29sdGlwIik7bnVsbD09PShlLl9ncm91cHN8fGUpWzBdWzBdJiYoZT1hdSgiYm9keSIpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJtZXJtYWlkVG9vbHRpcCIpLnN0eWxlKCJvcGFjaXR5IiwwKSksYXUodCkuc2VsZWN0KCJzdmciKS5zZWxlY3RBbGwoImcubm9kZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe3ZhciB0PWF1KHRoaXMpO2lmKG51bGwhPT10LmF0dHIoInRpdGxlIikpe3ZhciBuPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMjAwKS5zdHlsZSgib3BhY2l0eSIsIi45IiksZS5odG1sKHQuYXR0cigidGl0bGUiKSkuc3R5bGUoImxlZnQiLHdpbmRvdy5zY3JvbGxYK24ubGVmdCsobi5yaWdodC1uLmxlZnQpLzIrInB4Iikuc3R5bGUoInRvcCIsd2luZG93LnNjcm9sbFkrbi50b3AtMTQrZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ArInB4IiksdC5jbGFzc2VkKCJob3ZlciIsITApfX0pKS5vbigibW91c2VvdXQiLChmdW5jdGlvbigpe2UudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuc3R5bGUoIm9wYWNpdHkiLDApLGF1KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSl9O2FiLnB1c2goZGIpO3ZhciBwYj0iVEIiO2NvbnN0IHliPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLmNsYXNzfSxhZGRDbGFzczpzYixiaW5kRnVuY3Rpb25zOmZ1bmN0aW9uKHQpe2FiLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UodCl9KSl9LGNsZWFyOmZ1bmN0aW9uKCl7bmI9W10scmI9e30sKGFiPVtdKS5wdXNoKGRiKX0sZ2V0Q2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHJiW3RdfSxnZXRDbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJuIHJifSxhZGRBbm5vdGF0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49b2IodCkuY2xhc3NOYW1lO3JiW25dLmFubm90YXRpb25zLnB1c2goZSl9LGdldFJlbGF0aW9uczpmdW5jdGlvbigpe3JldHVybiBuYn0sYWRkUmVsYXRpb246ZnVuY3Rpb24odCl7by5kZWJ1ZygiQWRkaW5nIHJlbGF0aW9uOiAiK0pTT04uc3RyaW5naWZ5KHQpKSxzYih0LmlkMSksc2IodC5pZDIpLHQuaWQxPW9iKHQuaWQxKS5jbGFzc05hbWUsdC5pZDI9b2IodC5pZDIpLmNsYXNzTmFtZSxuYi5wdXNoKHQpfSxnZXREaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gcGJ9LHNldERpcmVjdGlvbjpmdW5jdGlvbih0KXtwYj10fSxhZGRNZW1iZXI6dWIsYWRkTWVtYmVyczpmdW5jdGlvbih0LGUpe0FycmF5LmlzQXJyYXkoZSkmJihlLnJldmVyc2UoKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB1Yih0LGUpfSkpKX0sY2xlYW51cExhYmVsOmZ1bmN0aW9uKHQpe3JldHVybiI6Ij09PXQuc3Vic3RyaW5nKDAsMSk/WW0uc2FuaXRpemVUZXh0KHQuc3Vic3RyKDEpLnRyaW0oKSxadigpKTp0LnRyaW0oKX0sbGluZVR5cGU6e0xJTkU6MCxET1RURURfTElORToxfSxyZWxhdGlvblR5cGU6ZmIsc2V0Q2xpY2tFdmVudDpmdW5jdGlvbih0LGUsbil7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2hiKHQsZSxuKSxyYlt0XS5oYXZlQ2FsbGJhY2s9ITB9KSksbGIodCwiY2xpY2thYmxlIil9LHNldENzc0NsYXNzOmxiLHNldExpbms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPVp2KCk7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPXQ7dFswXS5tYXRjaCgvXGQvKSYmKGk9ZWIraSksdm9pZCAwIT09cmJbaV0mJihyYltpXS5saW5rPXp2LmZvcm1hdFVybChlLHIpLHJiW2ldLmxpbmtUYXJnZXQ9InN0cmluZyI9PXR5cGVvZiBuP246Il9ibGFuayIpfSkpLGxiKHQsImNsaWNrYWJsZSIpfSxzZXRUb29sdGlwOmZ1bmN0aW9uKHQsZSl7dmFyIG49WnYoKTt0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09ZSYmKHJiW3RdLnRvb2x0aXA9WW0uc2FuaXRpemVUZXh0KGUsbikpfSkpfSxsb29rVXBEb21JZDpjYn07dmFyIGdiPW4oNjgxKSxtYj1uLm4oZ2IpLHZiPW4oODI4MiksYmI9bi5uKHZiKSxfYj1uKDUwNTEpLHhiPW4ubihfYiksd2I9MCxrYj1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKC9eKFwrfC18fnwjKT8oXHcrKSh+XHcrfnxcW1xdKT9ccysoXHcrKSAqKFwqfFwkKT8kLyksbj10Lm1hdGNoKC9eKFsrfFwtfH58I10pPyhcdyspICpcKCAqKC4qKVwpICooXCp8XCQpPyAqKFx3Klt+fFtcXV0qXHMqXHcqfj8pJC8pO3JldHVybiBlJiYhbj9UYihlKTpuP0ViKG4pOkNiKHQpfSxUYj1mdW5jdGlvbih0KXt2YXIgZT0iIixuPSIiO3RyeXt2YXIgcj10WzFdP3RbMV0udHJpbSgpOiIiLGk9dFsyXT90WzJdLnRyaW0oKToiIixhPXRbM10/QWIodFszXS50cmltKCkpOiIiLG89dFs0XT90WzRdLnRyaW0oKToiIixzPXRbNV0/dFs1XS50cmltKCk6IiI7bj1yK2krYSsiICIrbyxlPU1iKHMpfWNhdGNoKGUpe249dH1yZXR1cm57ZGlzcGxheVRleHQ6bixjc3NTdHlsZTplfX0sRWI9ZnVuY3Rpb24odCl7dmFyIGU9IiIsbj0iIjt0cnl7dmFyIHI9dFsxXT90WzFdLnRyaW0oKToiIixpPXRbMl0/dFsyXS50cmltKCk6IiIsYT10WzNdP0FiKHRbM10udHJpbSgpKToiIixvPXRbNF0/dFs0XS50cmltKCk6IiI7bj1yK2krIigiK2ErIikiKyh0WzVdPyIgOiAiK0FiKHRbNV0pLnRyaW0oKToiIiksZT1NYihvKX1jYXRjaChlKXtuPXR9cmV0dXJue2Rpc3BsYXlUZXh0Om4sY3NzU3R5bGU6ZX19LENiPWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49IiIscj0iIixpPXQuaW5kZXhPZigiKCIpLGE9dC5pbmRleE9mKCIpIik7aWYoaT4xJiZhPmkmJmE8PXQubGVuZ3RoKXt2YXIgbz0iIixzPSIiLGM9dC5zdWJzdHJpbmcoMCwxKTtjLm1hdGNoKC9cdy8pP3M9dC5zdWJzdHJpbmcoMCxpKS50cmltKCk6KGMubWF0Y2goL1wrfC18fnwjLykmJihvPWMpLHM9dC5zdWJzdHJpbmcoMSxpKS50cmltKCkpO3ZhciB1PXQuc3Vic3RyaW5nKGkrMSxhKSxsPXQuc3Vic3RyaW5nKGErMSwxKTtuPU1iKGwpLGU9bytzKyIoIitBYih1LnRyaW0oKSkrIikiLGE8IiIubGVuZ3RoJiYiIiE9PShyPXQuc3Vic3RyaW5nKGErMikudHJpbSgpKSYmKHI9IiA6ICIrQWIocikpfWVsc2UgZT1BYih0KTtyZXR1cm57ZGlzcGxheVRleHQ6ZSxjc3NTdHlsZTpufX0sU2I9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9a2IoZSksYT10LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixyLnBhZGRpbmcpLnRleHQoaS5kaXNwbGF5VGV4dCk7IiIhPT1pLmNzc1N0eWxlJiZhLmF0dHIoInN0eWxlIixpLmNzc1N0eWxlKSxufHxhLmF0dHIoImR5IixyLnRleHRIZWlnaHQpfSxBYj1mdW5jdGlvbiB0KGUpe3ZhciBuPWU7cmV0dXJuLTEhPWUuaW5kZXhPZigifiIpP3Qobj0obj1uLnJlcGxhY2UoIn4iLCI8IikpLnJlcGxhY2UoIn4iLCI+IikpOm59LE1iPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIioiOnJldHVybiJmb250LXN0eWxlOml0YWxpYzsiO2Nhc2UiJCI6cmV0dXJuInRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IjtkZWZhdWx0OnJldHVybiIifX07Y29uc3QgTmI9ZnVuY3Rpb24odCxlLG4pe28uaW5mbygiUmVuZGVyaW5nIGNsYXNzICIrZSk7dmFyIHIsaT1lLmlkLGE9e2lkOmksbGFiZWw6ZS5pZCx3aWR0aDowLGhlaWdodDowfSxzPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLGNiKGkpKS5hdHRyKCJjbGFzcyIsImNsYXNzR3JvdXAiKTtyPWUubGluaz9zLmFwcGVuZCgic3ZnOmEiKS5hdHRyKCJ4bGluazpocmVmIixlLmxpbmspLmF0dHIoInRhcmdldCIsZS5saW5rVGFyZ2V0KS5hcHBlbmQoInRleHQiKS5hdHRyKCJ5IixuLnRleHRIZWlnaHQrbi5wYWRkaW5nKS5hdHRyKCJ4IiwwKTpzLmFwcGVuZCgidGV4dCIpLmF0dHIoInkiLG4udGV4dEhlaWdodCtuLnBhZGRpbmcpLmF0dHIoIngiLDApO3ZhciBjPSEwO2UuYW5ub3RhdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9ci5hcHBlbmQoInRzcGFuIikudGV4dCgiwqsiK3QrIsK7Iik7Y3x8ZS5hdHRyKCJkeSIsbi50ZXh0SGVpZ2h0KSxjPSExfSkpO3ZhciB1PWUuaWQ7dm9pZCAwIT09ZS50eXBlJiYiIiE9PWUudHlwZSYmKHUrPSI8IitlLnR5cGUrIj4iKTt2YXIgbD1yLmFwcGVuZCgidHNwYW4iKS50ZXh0KHUpLmF0dHIoImNsYXNzIiwidGl0bGUiKTtjfHxsLmF0dHIoImR5IixuLnRleHRIZWlnaHQpO3ZhciBoPXIubm9kZSgpLmdldEJCb3goKS5oZWlnaHQsZj1zLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbi5wYWRkaW5nK2grbi5kaXZpZGVyTWFyZ2luLzIpLmF0dHIoInkyIixuLnBhZGRpbmcraCtuLmRpdmlkZXJNYXJnaW4vMiksZD1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLG4ucGFkZGluZykuYXR0cigieSIsaCtuLmRpdmlkZXJNYXJnaW4rbi50ZXh0SGVpZ2h0KS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJjbGFzcyIsImNsYXNzVGV4dCIpO2M9ITAsZS5tZW1iZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe1NiKGQsdCxjLG4pLGM9ITF9KSk7dmFyIHA9ZC5ub2RlKCkuZ2V0QkJveCgpLHk9cy5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLG4ucGFkZGluZytoK24uZGl2aWRlck1hcmdpbitwLmhlaWdodCkuYXR0cigieTIiLG4ucGFkZGluZytoK24uZGl2aWRlck1hcmdpbitwLmhlaWdodCksZz1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLG4ucGFkZGluZykuYXR0cigieSIsaCsyKm4uZGl2aWRlck1hcmdpbitwLmhlaWdodCtuLnRleHRIZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImNsYXNzIiwiY2xhc3NUZXh0Iik7Yz0hMCxlLm1ldGhvZHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7U2IoZyx0LGMsbiksYz0hMX0pKTt2YXIgbT1zLm5vZGUoKS5nZXRCQm94KCksdj0iICI7ZS5jc3NDbGFzc2VzLmxlbmd0aD4wJiYodis9ZS5jc3NDbGFzc2VzLmpvaW4oIiAiKSk7dmFyIGI9cy5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsbS53aWR0aCsyKm4ucGFkZGluZykuYXR0cigiaGVpZ2h0IixtLmhlaWdodCtuLnBhZGRpbmcrLjUqbi5kaXZpZGVyTWFyZ2luKS5hdHRyKCJjbGFzcyIsdikubm9kZSgpLmdldEJCb3goKS53aWR0aDtyZXR1cm4gci5ub2RlKCkuY2hpbGROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZSgieCIsKGItdC5nZXRCQm94KCkud2lkdGgpLzIpfSkpLGUudG9vbHRpcCYmci5pbnNlcnQoInRpdGxlIikudGV4dChlLnRvb2x0aXApLGYuYXR0cigieDIiLGIpLHkuYXR0cigieDIiLGIpLGEud2lkdGg9YixhLmhlaWdodD1tLmhlaWdodCtuLnBhZGRpbmcrLjUqbi5kaXZpZGVyTWFyZ2luLGF9O19iLnBhcnNlci55eT15Yjt2YXIgRGI9e30sT2I9e2RpdmlkZXJNYXJnaW46MTAscGFkZGluZzo1LHRleHRIZWlnaHQ6MTB9LEJiPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5lbnRyaWVzKERiKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZVsxXS5sYWJlbD09PXR9KSk7aWYoZSlyZXR1cm4gZVswXX07Y29uc3QgTGI9ZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JbZV09dFtlXX0pKX0sSWI9ZnVuY3Rpb24odCxlKXtEYj17fSxfYi5wYXJzZXIueXkuY2xlYXIoKSxfYi5wYXJzZXIucGFyc2UodCksby5pbmZvKCJSZW5kZXJpbmcgZGlhZ3JhbSAiK3QpO3ZhciBuLHI9YXUoIltpZD0nIi5jb25jYXQoZSwiJ10iKSk7ci5hdHRyKCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKSwobj1yKS5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZXh0ZW5zaW9uU3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSw3IEwxOCwxMyBWIDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImV4dGVuc2lvbkVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDEgViAxMyBMMTgsNyBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY29tcG9zaXRpb25TdGFydCIpLmF0dHIoImNsYXNzIiwiZXh0ZW5zaW9uIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY29tcG9zaXRpb25FbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImFnZ3JlZ2F0aW9uU3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImFnZ3JlZ2F0aW9uRW5kIikuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSxuLmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJkZXBlbmRlbmN5U3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gNSw3IEw5LDEzIEwxLDcgTDksMSBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZGVwZW5kZW5jeUVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpO3ZhciBpPW5ldyhiYigpLkdyYXBoKSh7bXVsdGlncmFwaDohMH0pO2kuc2V0R3JhcGgoe2lzTXVsdGlHcmFwaDohMH0pLGkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKTtmb3IodmFyIGE9eWIuZ2V0Q2xhc3NlcygpLHM9T2JqZWN0LmtleXMoYSksYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgdT1hW3NbY11dLGw9TmIocix1LE9iKTtEYltsLmlkXT1sLGkuc2V0Tm9kZShsLmlkLGwpLG8uaW5mbygiT3JnIGhlaWdodDogIitsLmhlaWdodCl9eWIuZ2V0UmVsYXRpb25zKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5pbmZvKCJ0am9obyIrQmIodC5pZDEpK0JiKHQuaWQyKStKU09OLnN0cmluZ2lmeSh0KSksaS5zZXRFZGdlKEJiKHQuaWQxKSxCYih0LmlkMikse3JlbGF0aW9uOnR9LHQudGl0bGV8fCJERUZBVUxUIil9KSksbWIoKS5sYXlvdXQoaSksaS5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWkubm9kZSh0KSYmKG8uZGVidWcoIk5vZGUgIit0KyI6ICIrSlNPTi5zdHJpbmdpZnkoaS5ub2RlKHQpKSksYXUoIiMiK2NiKHQpKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoaS5ub2RlKHQpLngtaS5ub2RlKHQpLndpZHRoLzIpKyIsIisoaS5ub2RlKHQpLnktaS5ub2RlKHQpLmhlaWdodC8yKSsiICkiKSl9KSksaS5lZGdlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWkuZWRnZSh0KSYmKG8uZGVidWcoIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiK0pTT04uc3RyaW5naWZ5KGkuZWRnZSh0KSkpLGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIGZiLkFHR1JFR0FUSU9OOnJldHVybiJhZ2dyZWdhdGlvbiI7Y2FzZSBmYi5FWFRFTlNJT046cmV0dXJuImV4dGVuc2lvbiI7Y2FzZSBmYi5DT01QT1NJVElPTjpyZXR1cm4iY29tcG9zaXRpb24iO2Nhc2UgZmIuREVQRU5ERU5DWTpyZXR1cm4iZGVwZW5kZW5jeSJ9fTtlLnBvaW50cz1lLnBvaW50cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFOdW1iZXIuaXNOYU4odC55KX0pKTt2YXIgYSxzLGM9ZS5wb2ludHMsdT16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKS5jdXJ2ZShWdSksbD10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLHUoYykpLmF0dHIoImlkIiwiZWRnZSIrd2IpLmF0dHIoImNsYXNzIiwicmVsYXRpb24iKSxoPSIiO3IuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKGg9KGg9KGg9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksMT09bi5yZWxhdGlvbi5saW5lVHlwZSYmbC5hdHRyKCJjbGFzcyIsInJlbGF0aW9uIGRhc2hlZC1saW5lIiksIm5vbmUiIT09bi5yZWxhdGlvbi50eXBlMSYmbC5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitoKyIjIitpKG4ucmVsYXRpb24udHlwZTEpKyJTdGFydCkiKSwibm9uZSIhPT1uLnJlbGF0aW9uLnR5cGUyJiZsLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitoKyIjIitpKG4ucmVsYXRpb24udHlwZTIpKyJFbmQpIik7dmFyIGYsZCxwLHksZz1lLnBvaW50cy5sZW5ndGgsbT16di5jYWxjTGFiZWxQb3NpdGlvbihlLnBvaW50cyk7aWYoYT1tLngscz1tLnksZyUyIT0wJiZnPjEpe3ZhciB2PXp2LmNhbGNDYXJkaW5hbGl0eVBvc2l0aW9uKCJub25lIiE9PW4ucmVsYXRpb24udHlwZTEsZS5wb2ludHMsZS5wb2ludHNbMF0pLGI9enYuY2FsY0NhcmRpbmFsaXR5UG9zaXRpb24oIm5vbmUiIT09bi5yZWxhdGlvbi50eXBlMixlLnBvaW50cyxlLnBvaW50c1tnLTFdKTtvLmRlYnVnKCJjYXJkaW5hbGl0eV8xX3BvaW50ICIrSlNPTi5zdHJpbmdpZnkodikpLG8uZGVidWcoImNhcmRpbmFsaXR5XzJfcG9pbnQgIitKU09OLnN0cmluZ2lmeShiKSksZj12LngsZD12LnkscD1iLngseT1iLnl9aWYodm9pZCAwIT09bi50aXRsZSl7dmFyIF89dC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImNsYXNzTGFiZWwiKSx4PV8uYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLmF0dHIoIngiLGEpLmF0dHIoInkiLHMpLmF0dHIoImZpbGwiLCJyZWQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQobi50aXRsZSk7d2luZG93LmxhYmVsPXg7dmFyIHc9eC5ub2RlKCkuZ2V0QkJveCgpO18uaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigiY2xhc3MiLCJib3giKS5hdHRyKCJ4Iix3Lngtci5wYWRkaW5nLzIpLmF0dHIoInkiLHcueS1yLnBhZGRpbmcvMikuYXR0cigid2lkdGgiLHcud2lkdGgrci5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLHcuaGVpZ2h0K3IucGFkZGluZyl9by5pbmZvKCJSZW5kZXJpbmcgcmVsYXRpb24gIitKU09OLnN0cmluZ2lmeShuKSksdm9pZCAwIT09bi5yZWxhdGlvblRpdGxlMSYmIm5vbmUiIT09bi5yZWxhdGlvblRpdGxlMSYmdC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImNhcmRpbmFsaXR5IikuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJ0eXBlMSIpLmF0dHIoIngiLGYpLmF0dHIoInkiLGQpLmF0dHIoImZpbGwiLCJibGFjayIpLmF0dHIoImZvbnQtc2l6ZSIsIjYiKS50ZXh0KG4ucmVsYXRpb25UaXRsZTEpLHZvaWQgMCE9PW4ucmVsYXRpb25UaXRsZTImJiJub25lIiE9PW4ucmVsYXRpb25UaXRsZTImJnQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjYXJkaW5hbGl0eSIpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwidHlwZTIiKS5hdHRyKCJ4IixwKS5hdHRyKCJ5Iix5KS5hdHRyKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJmb250LXNpemUiLCI2IikudGV4dChuLnJlbGF0aW9uVGl0bGUyKSx3YisrfShyLGkuZWRnZSh0KSxpLmVkZ2UodCkucmVsYXRpb24sT2IpKX0pKTt2YXIgaD1yLm5vZGUoKS5nZXRCQm94KCksZj1oLndpZHRoKzQwLGQ9aC5oZWlnaHQrNDA7anYocixkLGYsT2IudXNlTWF4V2lkdGgpO3ZhciBwPSIiLmNvbmNhdChoLngtMjAsIiAiKS5jb25jYXQoaC55LTIwLCIgIikuY29uY2F0KGYsIiAiKS5jb25jYXQoZCk7by5kZWJ1Zygidmlld0JveCAiLmNvbmNhdChwKSksci5hdHRyKCJ2aWV3Qm94IixwKX07dmFyIFJiPXtleHRlbnNpb246ZnVuY3Rpb24odCxlLG4pe28udHJhY2UoIk1ha2luZyBtYXJrZXJzIGZvciAiLG4pLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWV4dGVuc2lvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgZXh0ZW5zaW9uICIrZSkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDcgTDE4LDEzIFYgMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItZXh0ZW5zaW9uRW5kIikuYXR0cigiY2xhc3MiLCJtYXJrZXIgZXh0ZW5zaW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDEsMSBWIDEzIEwxOCw3IFoiKX0sY29tcG9zaXRpb246ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jb21wb3NpdGlvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgY29tcG9zaXRpb24gIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jb21wb3NpdGlvbkVuZCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGNvbXBvc2l0aW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKX0sYWdncmVnYXRpb246ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1hZ2dyZWdhdGlvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgYWdncmVnYXRpb24gIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1hZ2dyZWdhdGlvbkVuZCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGFnZ3JlZ2F0aW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKX0sZGVwZW5kZW5jeTpmdW5jdGlvbih0LGUpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWRlcGVuZGVuY3lTdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGRlcGVuZGVuY3kgIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDUsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWRlcGVuZGVuY3lFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBkZXBlbmRlbmN5ICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDE0LDcgTDksMSBaIil9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItcG9pbnRFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpLmF0dHIoImNsYXNzIiwiYXJyb3dNYXJrZXJQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKSx0LmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1wb2ludFN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgIitlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMikuYXR0cigibWFya2VySGVpZ2h0IiwxMikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgNSBMIDEwIDEwIEwgMTAgMCB6IikuYXR0cigiY2xhc3MiLCJhcnJvd01hcmtlclBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpfSxjaXJjbGU6ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jaXJjbGVFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiwxMSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMSkuYXR0cigibWFya2VySGVpZ2h0IiwxMSkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLCI1IikuYXR0cigiY3kiLCI1IikuYXR0cigiciIsIjUiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIiksdC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY2lyY2xlU3RhcnQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiwtMSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMSkuYXR0cigibWFya2VySGVpZ2h0IiwxMSkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLCI1IikuYXR0cigiY3kiLCI1IikuYXR0cigiciIsIjUiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIil9LGNyb3NzOmZ1bmN0aW9uKHQsZSl7dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY3Jvc3NFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBjcm9zcyAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTEgMTEiKS5hdHRyKCJyZWZYIiwxMikuYXR0cigicmVmWSIsNS4yKS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDExKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDExKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSwxIGwgOSw5IE0gMTAsMSBsIC05LDkiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIiksdC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY3Jvc3NTdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGNyb3NzICIrZSkuYXR0cigidmlld0JveCIsIjAgMCAxMSAxMSIpLmF0dHIoInJlZlgiLC0xKS5hdHRyKCJyZWZZIiw1LjIpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTEpLmF0dHIoIm1hcmtlckhlaWdodCIsMTEpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDEgbCA5LDkgTSAxMCwxIGwgLTksOSIpLmF0dHIoImNsYXNzIiwiYXJyb3dNYXJrZXJQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKX0sYmFyYjpmdW5jdGlvbih0LGUpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWJhcmJFbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDE0KS5hdHRyKCJtYXJrZXJVbml0cyIsInN0cm9rZVdpZHRoIikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE5LDcgTDksMTMgTDE0LDcgTDksMSBaIil9fTtjb25zdCBGYj1mdW5jdGlvbih0LGUsbixyKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe1JiW2VdKHQsbixyKX0pKX07ZnVuY3Rpb24gUGIodCl7cmV0dXJuIFBiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxQYih0KX1jb25zdCBqYj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLHMsYyx1LGwsaD10fHwiIjtpZigib2JqZWN0Ij09PVBiKGgpJiYoaD1oWzBdKSxqbShadigpLmZsb3djaGFydC5odG1sTGFiZWxzKSlyZXR1cm4gaD1oLnJlcGxhY2UoL1xcbnxcbi9nLCI8YnIgLz4iKSxvLmluZm8oInZlcnRleFRleHQiK2gpLGk9e2lzTm9kZTpyLGxhYmVsOmgucmVwbGFjZSgvZmFbbHJzYl0/OmZhLVtcdy1dKy9nLChmdW5jdGlvbih0KXtyZXR1cm4iPGkgY2xhc3M9JyIuY29uY2F0KHQucmVwbGFjZSgiOiIsIiAiKSwiJz48L2k+Iil9KSksbGFiZWxTdHlsZTplLnJlcGxhY2UoImZpbGw6IiwiY29sb3I6Iil9LHM9YXUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImZvcmVpZ25PYmplY3QiKSksYz1zLmFwcGVuZCgieGh0bWw6ZGl2IiksdT1pLmxhYmVsLGw9aS5pc05vZGU/Im5vZGVMYWJlbCI6ImVkZ2VMYWJlbCIsYy5odG1sKCc8c3BhbiBjbGFzcz0iJytsKyciICcrKGkubGFiZWxTdHlsZT8nc3R5bGU9IicraS5sYWJlbFN0eWxlKyciJzoiIikrIj4iK3UrIjwvc3Bhbj4iKSwoYT1pLmxhYmVsU3R5bGUpJiZjLmF0dHIoInN0eWxlIixhKSxjLnN0eWxlKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksYy5zdHlsZSgid2hpdGUtc3BhY2UiLCJub3dyYXAiKSxjLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLHMubm9kZSgpO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7Zi5zZXRBdHRyaWJ1dGUoInN0eWxlIixlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpO3ZhciBkPVtdO2Q9InN0cmluZyI9PXR5cGVvZiBoP2guc3BsaXQoL1xcbnxcbnw8YnJccypcLz8+L2dpKTpBcnJheS5pc0FycmF5KGgpP2g6W107Zm9yKHZhciBwPTA7cDxkLmxlbmd0aDtwKyspe3ZhciB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0c3BhbiIpO3kuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsInhtbDpzcGFjZSIsInByZXNlcnZlIikseS5zZXRBdHRyaWJ1dGUoImR5IiwiMWVtIikseS5zZXRBdHRyaWJ1dGUoIngiLCIwIiksbj95LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJ0aXRsZS1yb3ciKTp5LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJyb3ciKSx5LnRleHRDb250ZW50PWRbcF0udHJpbSgpLGYuYXBwZW5kQ2hpbGQoeSl9cmV0dXJuIGZ9O3ZhciBZYj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaTtpPW58fCJub2RlIGRlZmF1bHQiO3ZhciBhPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLGkpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxvPWEuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLmF0dHIoInN0eWxlIixlLmxhYmVsU3R5bGUpLHM9InN0cmluZyI9PXR5cGVvZiBlLmxhYmVsVGV4dD9lLmxhYmVsVGV4dDplLmxhYmVsVGV4dFswXSxjPW8ubm9kZSgpLmFwcGVuZENoaWxkKGpiKEltKGVDKHMpLFp2KCkpLGUubGFiZWxTdHlsZSwhMSxyKSksdT1jLmdldEJCb3goKTtpZihqbShadigpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7dmFyIGw9Yy5jaGlsZHJlblswXSxoPWF1KGMpO3U9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoLmF0dHIoIndpZHRoIix1LndpZHRoKSxoLmF0dHIoImhlaWdodCIsdS5oZWlnaHQpfXZhciBmPWUucGFkZGluZy8yO3JldHVybiBvLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy11LndpZHRoLzIrIiwgIistdS5oZWlnaHQvMisiKSIpLHtzaGFwZVN2ZzphLGJib3g6dSxoYWxmUGFkZGluZzpmLGxhYmVsOm99fSx6Yj1mdW5jdGlvbih0LGUpe3ZhciBuPWUubm9kZSgpLmdldEJCb3goKTt0LndpZHRoPW4ud2lkdGgsdC5oZWlnaHQ9bi5oZWlnaHR9O2Z1bmN0aW9uIFViKHQsZSxuLHIpe3JldHVybiB0Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LngrIiwiK3QueX0pKS5qb2luKCIgIikpLmF0dHIoImNsYXNzIiwibGFiZWwtY29udGFpbmVyIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWUvMisiLCIrbi8yKyIpIil9dmFyIHFiPXt9LCRiPXt9LEhiPXt9LFdiPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8udHJhY2UoIkluIGlzRGVjZW5kYW50IixlLCIgIix0LCIgPSAiLCRiW2VdLmluZGV4T2YodCk+PTApLCRiW2VdLmluZGV4T2YodCk+PTB9LFZiPWZ1bmN0aW9uIHQoZSxuLHIsaSl7by53YXJuKCJDb3B5aW5nIGNoaWxkcmVuIG9mICIsZSwicm9vdCIsaSwiZGF0YSIsbi5ub2RlKGUpLGkpO3ZhciBhPW4uY2hpbGRyZW4oZSl8fFtdO2UhPT1pJiZhLnB1c2goZSksby53YXJuKCJDb3B5aW5nIChub2RlcykgY2x1c3RlcklkIixlLCJub2RlcyIsYSksYS5mb3JFYWNoKChmdW5jdGlvbihhKXtpZihuLmNoaWxkcmVuKGEpLmxlbmd0aD4wKXQoYSxuLHIsaSk7ZWxzZXt2YXIgcz1uLm5vZGUoYSk7by5pbmZvKCJjcCAiLGEsIiB0byAiLGksIiB3aXRoIHBhcmVudCAiLGUpLHIuc2V0Tm9kZShhLHMpLGkhPT1uLnBhcmVudChhKSYmKG8ud2FybigiU2V0dGluZyBwYXJlbnQiLGEsbi5wYXJlbnQoYSkpLHIuc2V0UGFyZW50KGEsbi5wYXJlbnQoYSkpKSxlIT09aSYmYSE9PWU/KG8uZGVidWcoIlNldHRpbmcgcGFyZW50IixhLGUpLHIuc2V0UGFyZW50KGEsZSkpOihvLmluZm8oIkluIGNvcHkgIixlLCJyb290IixpLCJkYXRhIixuLm5vZGUoZSksaSksby5kZWJ1ZygiTm90IFNldHRpbmcgcGFyZW50IGZvciBub2RlPSIsYSwiY2x1c3RlciE9PXJvb3RJZCIsZSE9PWksIm5vZGUhPT1jbHVzdGVySWQiLGEhPT1lKSk7dmFyIGM9bi5lZGdlcyhhKTtvLmRlYnVnKCJDb3B5aW5nIEVkZ2VzIixjKSxjLmZvckVhY2goKGZ1bmN0aW9uKHQpe28uaW5mbygiRWRnZSIsdCk7dmFyIGE9bi5lZGdlKHQudix0LncsdC5uYW1lKTtvLmluZm8oIkVkZ2UgZGF0YSIsYSxpKTt0cnl7IWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uaW5mbygiRGVjZW5kYW50cyBvZiAiLGUsIiBpcyAiLCRiW2VdKSxvLmluZm8oIkVkZ2UgaXMgIix0KSx0LnYhPT1lJiZ0LnchPT1lJiYoJGJbZV0/KG8uaW5mbygiSGVyZSAiKSwkYltlXS5pbmRleE9mKHQudik+PTB8fCEhV2IodC52LGUpfHwhIVdiKHQudyxlKXx8JGJbZV0uaW5kZXhPZih0LncpPj0wKTooby5kZWJ1ZygiVGlsdCwgIixlLCIsbm90IGluIGRlY2VuZGFudHMiKSwhMSkpfSh0LGkpP28uaW5mbygiU2tpcHBpbmcgY29weSBvZiBlZGdlICIsdC52LCItLVx4M2UiLHQudywiIHJvb3RJZDogIixpLCIgY2x1c3RlcklkOiIsZSk6KG8uaW5mbygiQ29weWluZyBhcyAiLHQudix0LncsYSx0Lm5hbWUpLHIuc2V0RWRnZSh0LnYsdC53LGEsdC5uYW1lKSxvLmluZm8oIm5ld0dyYXBoIGVkZ2VzICIsci5lZGdlcygpLHIuZWRnZShyLmVkZ2VzKClbMF0pKSl9Y2F0Y2godCl7by5lcnJvcih0KX19KSl9by5kZWJ1ZygiUmVtb3Zpbmcgbm9kZSIsYSksbi5yZW1vdmVOb2RlKGEpfSkpfSxHYj1mdW5jdGlvbiB0KGUsbil7Zm9yKHZhciByPW4uY2hpbGRyZW4oZSksaT1bXS5jb25jYXQociksYT0wO2E8ci5sZW5ndGg7YSsrKUhiW3JbYV1dPWUsaT1pLmNvbmNhdCh0KHJbYV0sbikpO3JldHVybiBpfSxYYj1mdW5jdGlvbiB0KGUsbil7by50cmFjZSgiU2VhcmNoaW5nIixlKTt2YXIgcj1uLmNoaWxkcmVuKGUpO2lmKG8udHJhY2UoIlNlYXJjaGluZyBjaGlsZHJlbiBvZiBpZCAiLGUsciksci5sZW5ndGg8MSlyZXR1cm4gby50cmFjZSgiVGhpcyBpcyBhIHZhbGlkIG5vZGUiLGUpLGU7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXQocltpXSxuKTtpZihhKXJldHVybiBvLnRyYWNlKCJGb3VuZCByZXBsYWNlbWVudCBmb3IiLGUsIiA9PiAiLGEpLGF9fSxaYj1mdW5jdGlvbih0KXtyZXR1cm4gcWJbdF0mJnFiW3RdLmV4dGVybmFsQ29ubmVjdGlvbnMmJnFiW3RdP3FiW3RdLmlkOnR9LFFiPWZ1bmN0aW9uKHQsZSl7IXR8fGU+MTA/by5kZWJ1ZygiT3B0aW5nIG91dCwgbm8gZ3JhcGggIik6KG8uZGVidWcoIk9wdGluZyBpbiwgZ3JhcGggIiksdC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuY2hpbGRyZW4oZSkubGVuZ3RoPjAmJihvLndhcm4oIkNsdXN0ZXIgaWRlbnRpZmllZCIsZSwiIFJlcGxhY2VtZW50IGlkIGluIGVkZ2VzOiAiLFhiKGUsdCkpLCRiW2VdPUdiKGUsdCkscWJbZV09e2lkOlhiKGUsdCksY2x1c3RlckRhdGE6dC5ub2RlKGUpfSl9KSksdC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuY2hpbGRyZW4oZSkscj10LmVkZ2VzKCk7bi5sZW5ndGg+MD8oby5kZWJ1ZygiQ2x1c3RlciBpZGVudGlmaWVkIixlLCRiKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudiE9PWUmJnQudyE9PWUmJldiKHQudixlKV5XYih0LncsZSkmJihvLndhcm4oIkVkZ2U6ICIsdCwiIGxlYXZlcyBjbHVzdGVyICIsZSksby53YXJuKCJEZWNlbmRhbnRzIG9mIFhYWCAiLGUsIjogIiwkYltlXSkscWJbZV0uZXh0ZXJuYWxDb25uZWN0aW9ucz0hMCl9KSkpOm8uZGVidWcoIk5vdCBhIGNsdXN0ZXIgIixlLCRiKX0pKSx0LmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO28ud2FybigiRWRnZSAiK2UudisiIC0+ICIrZS53KyI6ICIrSlNPTi5zdHJpbmdpZnkoZSkpLG8ud2FybigiRWRnZSAiK2UudisiIC0+ICIrZS53KyI6ICIrSlNPTi5zdHJpbmdpZnkodC5lZGdlKGUpKSk7dmFyIHI9ZS52LGk9ZS53O28ud2FybigiRml4IFhYWCIscWIsImlkczoiLGUudixlLncsIlRyYW5zbGF0ZWluZzogIixxYltlLnZdLCIgLS0tICIscWJbZS53XSksKHFiW2Uudl18fHFiW2Uud10pJiYoby53YXJuKCJGaXhpbmcgYW5kIHRyaXhpbmcgLSByZW1vdmluZyBYWFgiLGUudixlLncsZS5uYW1lKSxyPVpiKGUudiksaT1aYihlLncpLHQucmVtb3ZlRWRnZShlLnYsZS53LGUubmFtZSksciE9PWUudiYmKG4uZnJvbUNsdXN0ZXI9ZS52KSxpIT09ZS53JiYobi50b0NsdXN0ZXI9ZS53KSxvLndhcm4oIkZpeCBSZXBsYWNpbmcgd2l0aCBYWFgiLHIsaSxlLm5hbWUpLHQuc2V0RWRnZShyLGksbixlLm5hbWUpKX0pKSxvLndhcm4oIkFkanVzdGVkIEdyYXBoIixiYigpLmpzb24ud3JpdGUodCkpLEtiKHQsMCksby50cmFjZShxYikpfSxLYj1mdW5jdGlvbiB0KGUsbil7aWYoby53YXJuKCJleHRyYWN0b3IgLSAiLG4sYmIoKS5qc29uLndyaXRlKGUpLGUuY2hpbGRyZW4oIkQiKSksbj4xMClvLmVycm9yKCJCYWlsaW5nIG91dCIpO2Vsc2V7Zm9yKHZhciByPWUubm9kZXMoKSxpPSExLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9clthXSxjPWUuY2hpbGRyZW4ocyk7aT1pfHxjLmxlbmd0aD4wfWlmKGkpe28uZGVidWcoIk5vZGVzID0gIixyLG4pO2Zvcih2YXIgdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgbD1yW3VdO2lmKG8uZGVidWcoIkV4dHJhY3Rpbmcgbm9kZSIsbCxxYixxYltsXSYmIXFiW2xdLmV4dGVybmFsQ29ubmVjdGlvbnMsIWUucGFyZW50KGwpLGUubm9kZShsKSxlLmNoaWxkcmVuKCJEIiksIiBEZXB0aCAiLG4pLHFiW2xdKWlmKCFxYltsXS5leHRlcm5hbENvbm5lY3Rpb25zJiZlLmNoaWxkcmVuKGwpJiZlLmNoaWxkcmVuKGwpLmxlbmd0aD4wKXtvLndhcm4oIkNsdXN0ZXIgd2l0aG91dCBleHRlcm5hbCBjb25uZWN0aW9ucywgd2l0aG91dCBhIHBhcmVudCBhbmQgd2l0aCBjaGlsZHJlbiIsbCxuKTt2YXIgaD0iVEIiPT09ZS5ncmFwaCgpLnJhbmtkaXI/IkxSIjoiVEIiO3FiW2xdJiZxYltsXS5jbHVzdGVyRGF0YSYmcWJbbF0uY2x1c3RlckRhdGEuZGlyJiYoaD1xYltsXS5jbHVzdGVyRGF0YS5kaXIsby53YXJuKCJGaXhpbmcgZGlyIixxYltsXS5jbHVzdGVyRGF0YS5kaXIsaCkpO3ZhciBmPW5ldyhiYigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOmgsbm9kZXNlcDo1MCxyYW5rc2VwOjUwLG1hcmdpbng6OCxtYXJnaW55Ojh9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpO28ud2FybigiT2xkIGdyYXBoIGJlZm9yZSBjb3B5IixiYigpLmpzb24ud3JpdGUoZSkpLFZiKGwsZSxmLGwpLGUuc2V0Tm9kZShsLHtjbHVzdGVyTm9kZTohMCxpZDpsLGNsdXN0ZXJEYXRhOnFiW2xdLmNsdXN0ZXJEYXRhLGxhYmVsVGV4dDpxYltsXS5sYWJlbFRleHQsZ3JhcGg6Zn0pLG8ud2FybigiTmV3IGdyYXBoIGFmdGVyIGNvcHkgbm9kZTogKCIsbCwiKSIsYmIoKS5qc29uLndyaXRlKGYpKSxvLmRlYnVnKCJPbGQgZ3JhcGggYWZ0ZXIgY29weSIsYmIoKS5qc29uLndyaXRlKGUpKX1lbHNlIG8ud2FybigiQ2x1c3RlciAqKiAiLGwsIiAqKm5vdCBtZWV0aW5nIHRoZSBjcml0ZXJpYSAhZXh0ZXJuYWxDb25uZWN0aW9uczoiLCFxYltsXS5leHRlcm5hbENvbm5lY3Rpb25zLCIgbm8gcGFyZW50OiAiLCFlLnBhcmVudChsKSwiIGNoaWxkcmVuICIsZS5jaGlsZHJlbihsKSYmZS5jaGlsZHJlbihsKS5sZW5ndGg+MCxlLmNoaWxkcmVuKCJEIiksbiksby5kZWJ1ZyhxYik7ZWxzZSBvLmRlYnVnKCJOb3QgYSBjbHVzdGVyIixsLG4pfXI9ZS5ub2RlcygpLG8ud2FybigiTmV3IGxpc3Qgb2Ygbm9kZXMiLHIpO2Zvcih2YXIgZD0wO2Q8ci5sZW5ndGg7ZCsrKXt2YXIgcD1yW2RdLHk9ZS5ub2RlKHApO28ud2FybigiIE5vdyBuZXh0IGxldmVsIixwLHkpLHkuY2x1c3Rlck5vZGUmJnQoeS5ncmFwaCxuKzEpfX1lbHNlIG8uZGVidWcoIkRvbmUsIG5vIG5vZGUgaGFzIGNoaWxkcmVuIixlLm5vZGVzKCkpfX0sSmI9ZnVuY3Rpb24gdChlLG4pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm5bXTt2YXIgcj1PYmplY3QuYXNzaWduKG4pO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPWUuY2hpbGRyZW4obiksYT10KGUsaSk7cj1yLmNvbmNhdChhKX0pKSxyfSx0Xz1mdW5jdGlvbih0KXtyZXR1cm4gSmIodCx0LmNoaWxkcmVuKCkpfSxlXz1uKDM4NDEpO2NvbnN0IG5fPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQueCxhPXQueSxvPWktci54LHM9YS1yLnksYz1NYXRoLnNxcnQoZSplKnMqcytuKm4qbypvKSx1PU1hdGguYWJzKGUqbipvL2MpO3IueDxpJiYodT0tdSk7dmFyIGw9TWF0aC5hYnMoZSpuKnMvYyk7cmV0dXJuIHIueTxhJiYobD0tbCkse3g6aSt1LHk6YStsfX07ZnVuY3Rpb24gcl8odCxlKXtyZXR1cm4gdCplPjB9Y29uc3QgaV89ZnVuY3Rpb24odCxlLG4scil7dmFyIGksYSxvLHMsYyx1LGwsaCxmLGQscCx5LGc7aWYoaT1lLnktdC55LG89dC54LWUueCxjPWUueCp0LnktdC54KmUueSxmPWkqbi54K28qbi55K2MsZD1pKnIueCtvKnIueStjLCEoMCE9PWYmJjAhPT1kJiZyXyhmLGQpfHwoYT1yLnktbi55LHM9bi54LXIueCx1PXIueCpuLnktbi54KnIueSxsPWEqdC54K3MqdC55K3UsaD1hKmUueCtzKmUueSt1LDAhPT1sJiYwIT09aCYmcl8obCxoKXx8MD09KHA9aSpzLWEqbykpKSlyZXR1cm4geT1NYXRoLmFicyhwLzIpLHt4OihnPW8qdS1zKmMpPDA/KGcteSkvcDooZyt5KS9wLHk6KGc9YSpjLWkqdSk8MD8oZy15KS9wOihnK3kpL3B9fSxhXz1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaT10LngsYT10Lnksbz1lLngtaSxzPWUueS1hLGM9dC53aWR0aC8yLHU9dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5hYnMocykqYz5NYXRoLmFicyhvKSp1PyhzPDAmJih1PS11KSxuPTA9PT1zPzA6dSpvL3Mscj11KToobzwwJiYoYz0tYyksbj1jLHI9MD09PW8/MDpjKnMvbykse3g6aStuLHk6YStyfX0sb189KG4ubihlXykoKSxmdW5jdGlvbih0LGUsbil7cmV0dXJuIG5fKHQsZSxlLG4pfSksc189ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQueCxpPXQueSxhPVtdLG89TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOyJmdW5jdGlvbiI9PXR5cGVvZiBlLmZvckVhY2g/ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtvPU1hdGgubWluKG8sdC54KSxzPU1hdGgubWluKHMsdC55KX0pKToobz1NYXRoLm1pbihvLGUueCkscz1NYXRoLm1pbihzLGUueSkpO2Zvcih2YXIgYz1yLXQud2lkdGgvMi1vLHU9aS10LmhlaWdodC8yLXMsbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgaD1lW2xdLGY9ZVtsPGUubGVuZ3RoLTE/bCsxOjBdLGQ9aV8odCxuLHt4OmMraC54LHk6dStoLnl9LHt4OmMrZi54LHk6dStmLnl9KTtkJiZhLnB1c2goZCl9cmV0dXJuIGEubGVuZ3RoPyhhLmxlbmd0aD4xJiZhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LW4ueCxpPXQueS1uLnksYT1NYXRoLnNxcnQocipyK2kqaSksbz1lLngtbi54LHM9ZS55LW4ueSxjPU1hdGguc3FydChvKm8rcypzKTtyZXR1cm4gYTxjPy0xOmE9PT1jPzA6MX0pKSxhWzBdKTp0fSxjXz1hXztmdW5jdGlvbiB1Xyh0KXtyZXR1cm4gdV89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHVfKHQpfXZhciBsXz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCIpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxpPTcwLGE9MTA7IkxSIj09PW4mJihpPTEwLGE9NzApO3ZhciBvPXIuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTEqaS8yKS5hdHRyKCJ5IiwtMSphLzIpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLGEpLmF0dHIoImNsYXNzIiwiZm9yay1qb2luIik7cmV0dXJuIHpiKGUsbyksZS5oZWlnaHQ9ZS5oZWlnaHQrZS5wYWRkaW5nLzIsZS53aWR0aD1lLndpZHRoK2UucGFkZGluZy8yLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBjXyhlLHQpfSxyfSxoXz17cXVlc3Rpb246ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZysoaS5oZWlnaHQrZS5wYWRkaW5nKSxzPVt7eDphLzIseTowfSx7eDphLHk6LWEvMn0se3g6YS8yLHk6LWF9LHt4OjAseTotYS8yfV07by5pbmZvKCJRdWVzdGlvbiBtYWluIChDaXJjbGUpIik7dmFyIGM9VWIocixhLGEscyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLHpiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG8ud2FybigiSW50ZXJzZWN0IGNhbGxlZCIpLHNfKGUscyx0KX0scn0scmVjdDpmdW5jdGlvbih0LGUpe3ZhciBuPVliKHQsZSwibm9kZSAiK2UuY2xhc3NlcywhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9bi5oYWxmUGFkZGluZztvLnRyYWNlKCJDbGFzc2VzID0gIixlLmNsYXNzZXMpO3ZhciBzPXIuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIiksYz1pLndpZHRoK2UucGFkZGluZyx1PWkuaGVpZ2h0K2UucGFkZGluZztpZihzLmF0dHIoImNsYXNzIiwiYmFzaWMgbGFiZWwtY29udGFpbmVyIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsLWkud2lkdGgvMi1hKS5hdHRyKCJ5IiwtaS5oZWlnaHQvMi1hKS5hdHRyKCJ3aWR0aCIsYykuYXR0cigiaGVpZ2h0Iix1KSxlLnByb3BzKXt2YXIgbD1uZXcgU2V0KE9iamVjdC5rZXlzKGUucHJvcHMpKTtlLnByb3BzLmJvcmRlcnMmJihmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1bXSxhPWZ1bmN0aW9uKHQpe2kucHVzaCh0KSxpLnB1c2goMCl9LHM9ZnVuY3Rpb24odCl7aS5wdXNoKDApLGkucHVzaCh0KX07ZS5pbmNsdWRlcygidCIpPyhvLmRlYnVnKCJhZGQgdG9wIGJvcmRlciIpLGEobikpOnMobiksZS5pbmNsdWRlcygiciIpPyhvLmRlYnVnKCJhZGQgcmlnaHQgYm9yZGVyIiksYShyKSk6cyhyKSxlLmluY2x1ZGVzKCJiIik/KG8uZGVidWcoImFkZCBib3R0b20gYm9yZGVyIiksYShuKSk6cyhuKSxlLmluY2x1ZGVzKCJsIik/KG8uZGVidWcoImFkZCBsZWZ0IGJvcmRlciIpLGEocikpOnMociksdC5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixpLmpvaW4oIiAiKSl9KHMsZS5wcm9wcy5ib3JkZXJzLGMsdSksbC5kZWxldGUoImJvcmRlcnMiKSksbC5mb3JFYWNoKChmdW5jdGlvbih0KXtvLndhcm4oIlVua25vd24gbm9kZSBwcm9wZXJ0eSAiLmNvbmNhdCh0KSl9KSl9cmV0dXJuIHpiKGUscyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGNfKGUsdCl9LHJ9LHJlY3RXaXRoVGl0bGU6ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWUuY2xhc3Nlcz8ibm9kZSAiK2UuY2xhc3Nlczoibm9kZSBkZWZhdWx0Ijt2YXIgcixpPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLG4pLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxhPWkuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikscz1pLmluc2VydCgibGluZSIpLGM9aS5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImxhYmVsIiksdT1lLmxhYmVsVGV4dC5mbGF0P2UubGFiZWxUZXh0LmZsYXQoKTplLmxhYmVsVGV4dDtyPSJvYmplY3QiPT09dV8odSk/dVswXTp1LG8uaW5mbygiTGFiZWwgdGV4dCBhYmM3OSIscix1LCJvYmplY3QiPT09dV8odSkpO3ZhciBsPWMubm9kZSgpLmFwcGVuZENoaWxkKGpiKHIsZS5sYWJlbFN0eWxlLCEwLCEwKSksaD17d2lkdGg6MCxoZWlnaHQ6MH07aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBmPWwuY2hpbGRyZW5bMF0sZD1hdShsKTtoPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZC5hdHRyKCJ3aWR0aCIsaC53aWR0aCksZC5hdHRyKCJoZWlnaHQiLGguaGVpZ2h0KX1vLmluZm8oIlRleHQgMiIsdSk7dmFyIHA9dS5zbGljZSgxLHUubGVuZ3RoKSx5PWwuZ2V0QkJveCgpLGc9Yy5ub2RlKCkuYXBwZW5kQ2hpbGQoamIocC5qb2luP3Auam9pbigiPGJyLz4iKTpwLGUubGFiZWxTdHlsZSwhMCwhMCkpO2lmKGptKFp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgbT1nLmNoaWxkcmVuWzBdLHY9YXUoZyk7aD1tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHYuYXR0cigid2lkdGgiLGgud2lkdGgpLHYuYXR0cigiaGVpZ2h0IixoLmhlaWdodCl9dmFyIGI9ZS5wYWRkaW5nLzI7cmV0dXJuIGF1KGcpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoaC53aWR0aD55LndpZHRoPzA6KHkud2lkdGgtaC53aWR0aCkvMikrIiwgIisoeS5oZWlnaHQrYis1KSsiKSIpLGF1KGwpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoaC53aWR0aDx5LndpZHRoPzA6LSh5LndpZHRoLWgud2lkdGgpLzIpKyIsIDApIiksaD1jLm5vZGUoKS5nZXRCQm94KCksYy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistaC53aWR0aC8yKyIsICIrKC1oLmhlaWdodC8yLWIrMykrIikiKSxhLmF0dHIoImNsYXNzIiwib3V0ZXIgdGl0bGUtc3RhdGUiKS5hdHRyKCJ4IiwtaC53aWR0aC8yLWIpLmF0dHIoInkiLC1oLmhlaWdodC8yLWIpLmF0dHIoIndpZHRoIixoLndpZHRoK2UucGFkZGluZykuYXR0cigiaGVpZ2h0IixoLmhlaWdodCtlLnBhZGRpbmcpLHMuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDEiLC1oLndpZHRoLzItYikuYXR0cigieDIiLGgud2lkdGgvMitiKS5hdHRyKCJ5MSIsLWguaGVpZ2h0LzItYit5LmhlaWdodCtiKS5hdHRyKCJ5MiIsLWguaGVpZ2h0LzItYit5LmhlaWdodCtiKSx6YihlLGEpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBjXyhlLHQpfSxpfSxjaG9pY2U6ZnVuY3Rpb24odCxlKXt2YXIgbj10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibm9kZSBkZWZhdWx0IikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpO3JldHVybiBuLmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsW3t4OjAseToxNH0se3g6MTQseTowfSx7eDowLHk6LTE0fSx7eDotMTQseTowfV0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54KyIsIit0Lnl9KSkuam9pbigiICIpKS5hdHRyKCJjbGFzcyIsInN0YXRlLXN0YXJ0IikuYXR0cigiciIsNykuYXR0cigid2lkdGgiLDI4KS5hdHRyKCJoZWlnaHQiLDI4KSxlLndpZHRoPTI4LGUuaGVpZ2h0PTI4LGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBvXyhlLDE0LHQpfSxufSxjaXJjbGU6ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1uLmhhbGZQYWRkaW5nLHM9ci5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBzLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoInIiLGkud2lkdGgvMithKS5hdHRyKCJ3aWR0aCIsaS53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsaS5oZWlnaHQrZS5wYWRkaW5nKSxvLmluZm8oIkNpcmNsZSBtYWluIiksemIoZSxzKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gby5pbmZvKCJDaXJjbGUgaW50ZXJzZWN0IixlLGkud2lkdGgvMithLHQpLG9fKGUsaS53aWR0aC8yK2EsdCl9LHJ9LHN0YWRpdW06ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLmhlaWdodCtlLnBhZGRpbmcsbz1pLndpZHRoK2EvNCtlLnBhZGRpbmcscz1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsYS8yKS5hdHRyKCJyeSIsYS8yKS5hdHRyKCJ4Iiwtby8yKS5hdHRyKCJ5IiwtYS8yKS5hdHRyKCJ3aWR0aCIsbykuYXR0cigiaGVpZ2h0IixhKTtyZXR1cm4gemIoZSxzKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gY18oZSx0KX0scn0saGV4YWdvbjpmdW5jdGlvbih0LGUpe3ZhciBuPVliKHQsZSx2b2lkIDAsITApLHI9bi5zaGFwZVN2ZyxpPW4uYmJveCxhPWkuaGVpZ2h0K2UucGFkZGluZyxvPWEvNCxzPWkud2lkdGgrMipvK2UucGFkZGluZyxjPVt7eDpvLHk6MH0se3g6cy1vLHk6MH0se3g6cyx5Oi1hLzJ9LHt4OnMtbyx5Oi1hfSx7eDpvLHk6LWF9LHt4OjAseTotYS8yfV0sdT1VYihyLHMsYSxjKTtyZXR1cm4gdS5hdHRyKCJzdHlsZSIsZS5zdHlsZSksemIoZSx1KSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gc18oZSxjLHQpfSxyfSxyZWN0X2xlZnRfaW52X2Fycm93OmZ1bmN0aW9uKHQsZSl7dmFyIG49WWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6LW8vMix5OjB9LHt4OmEseTowfSx7eDphLHk6LW99LHt4Oi1vLzIseTotb30se3g6MCx5Oi1vLzJ9XTtyZXR1cm4gVWIocixhLG8scykuYXR0cigic3R5bGUiLGUuc3R5bGUpLGUud2lkdGg9YStvLGUuaGVpZ2h0PW8sZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHNfKGUscyx0KX0scn0sbGVhbl9yaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuPVliKHQsZSx2b2lkIDAsITApLHI9bi5zaGFwZVN2ZyxpPW4uYmJveCxhPWkud2lkdGgrZS5wYWRkaW5nLG89aS5oZWlnaHQrZS5wYWRkaW5nLHM9W3t4Oi0yKm8vNix5OjB9LHt4OmEtby82LHk6MH0se3g6YSsyKm8vNix5Oi1vfSx7eDpvLzYseTotb31dLGM9VWIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLHpiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHNfKGUscyx0KX0scn0sbGVhbl9sZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49WWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MipvLzYseTowfSx7eDphK28vNix5OjB9LHt4OmEtMipvLzYseTotb30se3g6LW8vNix5Oi1vfV0sYz1VYihyLGEsbyxzKTtyZXR1cm4gYy5hdHRyKCJzdHlsZSIsZS5zdHlsZSksemIoZSxjKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gc18oZSxzLHQpfSxyfSx0cmFwZXpvaWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWkuaGVpZ2h0K2UucGFkZGluZyxzPVt7eDotMipvLzYseTowfSx7eDphKzIqby82LHk6MH0se3g6YS1vLzYseTotb30se3g6by82LHk6LW99XSxjPVViKHIsYSxvLHMpO3JldHVybiBjLmF0dHIoInN0eWxlIixlLnN0eWxlKSx6YihlLGMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBzXyhlLHMsdCl9LHJ9LGludl90cmFwZXpvaWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWkuaGVpZ2h0K2UucGFkZGluZyxzPVt7eDpvLzYseTowfSx7eDphLW8vNix5OjB9LHt4OmErMipvLzYseTotb30se3g6LTIqby82LHk6LW99XSxjPVViKHIsYSxvLHMpO3JldHVybiBjLmF0dHIoInN0eWxlIixlLnN0eWxlKSx6YihlLGMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBzXyhlLHMsdCl9LHJ9LHJlY3RfcmlnaHRfaW52X2Fycm93OmZ1bmN0aW9uKHQsZSl7dmFyIG49WWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MCx5OjB9LHt4OmErby8yLHk6MH0se3g6YSx5Oi1vLzJ9LHt4OmErby8yLHk6LW99LHt4OjAseTotb31dLGM9VWIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLHpiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHNfKGUscyx0KX0scn0sY3lsaW5kZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1ZYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWEvMixzPW8vKDIuNSthLzUwKSxjPWkuaGVpZ2h0K3MrZS5wYWRkaW5nLHU9Ik0gMCwiK3MrIiBhICIrbysiLCIrcysiIDAsMCwwICIrYSsiIDAgYSAiK28rIiwiK3MrIiAwLDAsMCAiKy1hKyIgMCBsIDAsIitjKyIgYSAiK28rIiwiK3MrIiAwLDAsMCAiK2ErIiAwIGwgMCwiKy1jLGw9ci5hdHRyKCJsYWJlbC1vZmZzZXQteSIscykuaW5zZXJ0KCJwYXRoIiwiOmZpcnN0LWNoaWxkIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoImQiLHUpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1hLzIrIiwiKy0oYy8yK3MpKyIpIik7cmV0dXJuIHpiKGUsbCksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7dmFyIG49Y18oZSx0KSxyPW4ueC1lLng7aWYoMCE9byYmKE1hdGguYWJzKHIpPGUud2lkdGgvMnx8TWF0aC5hYnMocik9PWUud2lkdGgvMiYmTWF0aC5hYnMobi55LWUueSk+ZS5oZWlnaHQvMi1zKSl7dmFyIGk9cypzKigxLXIqci8obypvKSk7MCE9aSYmKGk9TWF0aC5zcXJ0KGkpKSxpPXMtaSx0LnktZS55PjAmJihpPS1pKSxuLnkrPWl9cmV0dXJuIG59LHJ9LHN0YXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCIpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxyPW4uaW5zZXJ0KCJjaXJjbGUiLCI6Zmlyc3QtY2hpbGQiKTtyZXR1cm4gci5hdHRyKCJjbGFzcyIsInN0YXRlLXN0YXJ0IikuYXR0cigiciIsNykuYXR0cigid2lkdGgiLDE0KS5hdHRyKCJoZWlnaHQiLDE0KSx6YihlLHIpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBvXyhlLDcsdCl9LG59LGVuZDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlIGRlZmF1bHQiKS5hdHRyKCJpZCIsZS5kb21JZHx8ZS5pZCkscj1uLmluc2VydCgiY2lyY2xlIiwiOmZpcnN0LWNoaWxkIiksaT1uLmluc2VydCgiY2lyY2xlIiwiOmZpcnN0LWNoaWxkIik7cmV0dXJuIGkuYXR0cigiY2xhc3MiLCJzdGF0ZS1zdGFydCIpLmF0dHIoInIiLDcpLmF0dHIoIndpZHRoIiwxNCkuYXR0cigiaGVpZ2h0IiwxNCksci5hdHRyKCJjbGFzcyIsInN0YXRlLWVuZCIpLmF0dHIoInIiLDUpLmF0dHIoIndpZHRoIiwxMCkuYXR0cigiaGVpZ2h0IiwxMCksemIoZSxpKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gb18oZSw3LHQpfSxufSxub3RlOmZ1bmN0aW9uKHQsZSl7dmFyIG49WWIodCxlLCJub2RlICIrZS5jbGFzc2VzLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1uLmhhbGZQYWRkaW5nO28uaW5mbygiQ2xhc3NlcyA9ICIsZS5jbGFzc2VzKTt2YXIgcz1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBzLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsLWkud2lkdGgvMi1hKS5hdHRyKCJ5IiwtaS5oZWlnaHQvMi1hKS5hdHRyKCJ3aWR0aCIsaS53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsaS5oZWlnaHQrZS5wYWRkaW5nKSx6YihlLHMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBjXyhlLHQpfSxyfSxzdWJyb3V0aW5lOmZ1bmN0aW9uKHQsZSl7dmFyIG49WWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MCx5OjB9LHt4OmEseTowfSx7eDphLHk6LW99LHt4OjAseTotb30se3g6MCx5OjB9LHt4Oi04LHk6MH0se3g6YSs4LHk6MH0se3g6YSs4LHk6LW99LHt4Oi04LHk6LW99LHt4Oi04LHk6MH1dLGM9VWIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLHpiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHNfKGUscyx0KX0scn0sZm9yazpsXyxqb2luOmxfLGNsYXNzX2JveDpmdW5jdGlvbih0LGUpe3ZhciBuLHI9ZS5wYWRkaW5nLzI7bj1lLmNsYXNzZXM/Im5vZGUgIitlLmNsYXNzZXM6Im5vZGUgZGVmYXVsdCI7dmFyIGk9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsbikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpLGE9aS5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxvPWkuaW5zZXJ0KCJsaW5lIikscz1pLmluc2VydCgibGluZSIpLGM9MCx1PTQsbD1pLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxoPTAsZj1lLmNsYXNzRGF0YS5hbm5vdGF0aW9ucyYmZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnNbMF0sZD1lLmNsYXNzRGF0YS5hbm5vdGF0aW9uc1swXT8iwqsiK2UuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdKyLCuyI6IiIscD1sLm5vZGUoKS5hcHBlbmRDaGlsZChqYihkLGUubGFiZWxTdHlsZSwhMCwhMCkpLHk9cC5nZXRCQm94KCk7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBnPXAuY2hpbGRyZW5bMF0sbT1hdShwKTt5PWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbS5hdHRyKCJ3aWR0aCIseS53aWR0aCksbS5hdHRyKCJoZWlnaHQiLHkuaGVpZ2h0KX1lLmNsYXNzRGF0YS5hbm5vdGF0aW9uc1swXSYmKHUrPXkuaGVpZ2h0KzQsYys9eS53aWR0aCk7dmFyIHY9ZS5jbGFzc0RhdGEuaWQ7dm9pZCAwIT09ZS5jbGFzc0RhdGEudHlwZSYmIiIhPT1lLmNsYXNzRGF0YS50eXBlJiYoWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscz92Kz0iJmx0OyIrZS5jbGFzc0RhdGEudHlwZSsiJmd0OyI6dis9IjwiK2UuY2xhc3NEYXRhLnR5cGUrIj4iKTt2YXIgYj1sLm5vZGUoKS5hcHBlbmRDaGlsZChqYih2LGUubGFiZWxTdHlsZSwhMCwhMCkpO2F1KGIpLmF0dHIoImNsYXNzIiwiY2xhc3NUaXRsZSIpO3ZhciBfPWIuZ2V0QkJveCgpO2lmKGptKFp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgeD1iLmNoaWxkcmVuWzBdLHc9YXUoYik7Xz14LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHcuYXR0cigid2lkdGgiLF8ud2lkdGgpLHcuYXR0cigiaGVpZ2h0IixfLmhlaWdodCl9dSs9Xy5oZWlnaHQrNCxfLndpZHRoPmMmJihjPV8ud2lkdGgpO3ZhciBrPVtdO2UuY2xhc3NEYXRhLm1lbWJlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49a2IodCkscj1uLmRpc3BsYXlUZXh0O1p2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMmJihyPXIucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikpO3ZhciBpPWwubm9kZSgpLmFwcGVuZENoaWxkKGpiKHIsbi5jc3NTdHlsZT9uLmNzc1N0eWxlOmUubGFiZWxTdHlsZSwhMCwhMCkpLGE9aS5nZXRCQm94KCk7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBvPWkuY2hpbGRyZW5bMF0scz1hdShpKTthPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscy5hdHRyKCJ3aWR0aCIsYS53aWR0aCkscy5hdHRyKCJoZWlnaHQiLGEuaGVpZ2h0KX1hLndpZHRoPmMmJihjPWEud2lkdGgpLHUrPWEuaGVpZ2h0KzQsay5wdXNoKGkpfSkpLHUrPTg7dmFyIFQ9W107aWYoZS5jbGFzc0RhdGEubWV0aG9kcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1rYih0KSxyPW4uZGlzcGxheVRleHQ7WnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscyYmKHI9ci5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSk7dmFyIGk9bC5ub2RlKCkuYXBwZW5kQ2hpbGQoamIocixuLmNzc1N0eWxlP24uY3NzU3R5bGU6ZS5sYWJlbFN0eWxlLCEwLCEwKSksYT1pLmdldEJCb3goKTtpZihqbShadigpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7dmFyIG89aS5jaGlsZHJlblswXSxzPWF1KGkpO2E9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzLmF0dHIoIndpZHRoIixhLndpZHRoKSxzLmF0dHIoImhlaWdodCIsYS5oZWlnaHQpfWEud2lkdGg+YyYmKGM9YS53aWR0aCksdSs9YS5oZWlnaHQrNCxULnB1c2goaSl9KSksdSs9OCxmKXt2YXIgRT0oYy15LndpZHRoKS8yO2F1KHApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqYy8yK0UpKyIsICIrLTEqdS8yKyIpIiksaD15LmhlaWdodCs0fXZhciBDPShjLV8ud2lkdGgpLzI7cmV0dXJuIGF1KGIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqYy8yK0MpKyIsICIrKC0xKnUvMitoKSsiKSIpLGgrPV8uaGVpZ2h0KzQsby5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4MSIsLWMvMi1yKS5hdHRyKCJ4MiIsYy8yK3IpLmF0dHIoInkxIiwtdS8yLXIrOCtoKS5hdHRyKCJ5MiIsLXUvMi1yKzgraCksaCs9OCxrLmZvckVhY2goKGZ1bmN0aW9uKHQpe2F1KHQpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIistYy8yKyIsICIrKC0xKnUvMitoKzQpKyIpIiksaCs9Xy5oZWlnaHQrNH0pKSxoKz04LHMuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDEiLC1jLzItcikuYXR0cigieDIiLGMvMityKS5hdHRyKCJ5MSIsLXUvMi1yKzgraCkuYXR0cigieTIiLC11LzItcis4K2gpLGgrPTgsVC5mb3JFYWNoKChmdW5jdGlvbih0KXthdSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoICIrLWMvMisiLCAiKygtMSp1LzIraCkrIikiKSxoKz1fLmhlaWdodCs0fSkpLGEuYXR0cigiY2xhc3MiLCJvdXRlciB0aXRsZS1zdGF0ZSIpLmF0dHIoIngiLC1jLzItcikuYXR0cigieSIsLXUvMi1yKS5hdHRyKCJ3aWR0aCIsYytlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsdStlLnBhZGRpbmcpLHpiKGUsYSksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGNfKGUsdCl9LGl9fSxmXz17fSxkXz1mdW5jdGlvbih0KXt2YXIgZT1mX1t0LmlkXTtvLnRyYWNlKCJUcmFuc2Zvcm1pbmcgbm9kZSIsdC5kaWZmLHQsInRyYW5zbGF0ZSgiKyh0LngtdC53aWR0aC8yLTUpKyIsICIrdC53aWR0aC8yKyIpIik7dmFyIG49dC5kaWZmfHwwO3JldHVybiB0LmNsdXN0ZXJOb2RlP2UuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHQueCtuLXQud2lkdGgvMikrIiwgIisodC55LXQuaGVpZ2h0LzItOCkrIikiKTplLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QueCsiLCAiK3QueSsiKSIpLG59LHBfPXtyZWN0OmZ1bmN0aW9uKHQsZSl7by50cmFjZSgiQ3JlYXRpbmcgc3ViZ3JhcGggcmVjdCBmb3IgIixlLmlkLGUpO3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyIisoZS5jbGFzcz8iICIrZS5jbGFzczoiIikpLmF0dHIoImlkIixlLmlkKSxyPW4uaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIiksaT1uLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiY2x1c3Rlci1sYWJlbCIpLGE9aS5ub2RlKCkuYXBwZW5kQ2hpbGQoamIoZS5sYWJlbFRleHQsZS5sYWJlbFN0eWxlLHZvaWQgMCwhMCkpLHM9YS5nZXRCQm94KCk7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBjPWEuY2hpbGRyZW5bMF0sdT1hdShhKTtzPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdS5hdHRyKCJ3aWR0aCIscy53aWR0aCksdS5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KX12YXIgbD0wKmUucGFkZGluZyxoPWwvMixmPWUud2lkdGg8PXMud2lkdGgrbD9zLndpZHRoK2w6ZS53aWR0aDtlLndpZHRoPD1zLndpZHRoK2w/ZS5kaWZmPShzLndpZHRoLWUud2lkdGgpLzI6ZS5kaWZmPS1lLnBhZGRpbmcvMixvLnRyYWNlKCJEYXRhICIsZSxKU09OLnN0cmluZ2lmeShlKSksci5hdHRyKCJzdHlsZSIsZS5zdHlsZSkuYXR0cigicngiLGUucngpLmF0dHIoInJ5IixlLnJ5KS5hdHRyKCJ4IixlLngtZi8yKS5hdHRyKCJ5IixlLnktZS5oZWlnaHQvMi1oKS5hdHRyKCJ3aWR0aCIsZikuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsKSxpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhlLngtcy53aWR0aC8yKSsiLCAiKyhlLnktZS5oZWlnaHQvMitlLnBhZGRpbmcvMykrIikiKTt2YXIgZD1yLm5vZGUoKS5nZXRCQm94KCk7cmV0dXJuIGUud2lkdGg9ZC53aWR0aCxlLmhlaWdodD1kLmhlaWdodCxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYV8oZSx0KX0sbn0scm91bmRlZFdpdGhUaXRsZTpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLGUuY2xhc3NlcykuYXR0cigiaWQiLGUuaWQpLHI9bi5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxpPW4uaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyLWxhYmVsIiksYT1uLmFwcGVuZCgicmVjdCIpLG89aS5ub2RlKCkuYXBwZW5kQ2hpbGQoamIoZS5sYWJlbFRleHQsZS5sYWJlbFN0eWxlLHZvaWQgMCwhMCkpLHM9by5nZXRCQm94KCk7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBjPW8uY2hpbGRyZW5bMF0sdT1hdShvKTtzPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdS5hdHRyKCJ3aWR0aCIscy53aWR0aCksdS5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KX1zPW8uZ2V0QkJveCgpO3ZhciBsPTAqZS5wYWRkaW5nLGg9bC8yLGY9ZS53aWR0aDw9cy53aWR0aCtlLnBhZGRpbmc/cy53aWR0aCtlLnBhZGRpbmc6ZS53aWR0aDtlLndpZHRoPD1zLndpZHRoK2UucGFkZGluZz9lLmRpZmY9KHMud2lkdGgrMCplLnBhZGRpbmctZS53aWR0aCkvMjplLmRpZmY9LWUucGFkZGluZy8yLHIuYXR0cigiY2xhc3MiLCJvdXRlciIpLmF0dHIoIngiLGUueC1mLzItaCkuYXR0cigieSIsZS55LWUuaGVpZ2h0LzItaCkuYXR0cigid2lkdGgiLGYrbCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsKSxhLmF0dHIoImNsYXNzIiwiaW5uZXIiKS5hdHRyKCJ4IixlLngtZi8yLWgpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yLWgrcy5oZWlnaHQtMSkuYXR0cigid2lkdGgiLGYrbCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsLXMuaGVpZ2h0LTMpLGkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGUueC1zLndpZHRoLzIpKyIsICIrKGUueS1lLmhlaWdodC8yLWUucGFkZGluZy8zKyhqbShadigpLmZsb3djaGFydC5odG1sTGFiZWxzKT81OjMpKSsiKSIpO3ZhciBkPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS5oZWlnaHQ9ZC5oZWlnaHQsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGFfKGUsdCl9LG59LG5vdGVHcm91cDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub3RlLWNsdXN0ZXIiKS5hdHRyKCJpZCIsZS5pZCkscj1uLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCplLnBhZGRpbmcsYT1pLzI7ci5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoIngiLGUueC1lLndpZHRoLzItYSkuYXR0cigieSIsZS55LWUuaGVpZ2h0LzItYSkuYXR0cigid2lkdGgiLGUud2lkdGgraSkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtpKS5hdHRyKCJmaWxsIiwibm9uZSIpO3ZhciBvPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBhXyhlLHQpfSxufSxkaXZpZGVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsZS5jbGFzc2VzKS5hdHRyKCJpZCIsZS5pZCkscj1uLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCplLnBhZGRpbmcsYT1pLzI7ci5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4IixlLngtZS53aWR0aC8yLWEpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCtpKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0K2kpO3ZhciBvPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuZGlmZj0tZS5wYWRkaW5nLzIsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGFfKGUsdCl9LG59fSx5Xz17fSxnXz17fSxtXz17fSx2Xz1mdW5jdGlvbih0LGUpe3ZhciBuPWpiKGUubGFiZWwsZS5sYWJlbFN0eWxlKSxyPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlTGFiZWwiKSxpPXIuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO2kubm9kZSgpLmFwcGVuZENoaWxkKG4pO3ZhciBhLG89bi5nZXRCQm94KCk7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBzPW4uY2hpbGRyZW5bMF0sYz1hdShuKTtvPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYy5hdHRyKCJ3aWR0aCIsby53aWR0aCksYy5hdHRyKCJoZWlnaHQiLG8uaGVpZ2h0KX1pZihpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1vLndpZHRoLzIrIiwgIistby5oZWlnaHQvMisiKSIpLGdfW2UuaWRdPXIsZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuc3RhcnRMYWJlbExlZnQpe3ZhciB1PWpiKGUuc3RhcnRMYWJlbExlZnQsZS5sYWJlbFN0eWxlKSxsPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksaD1sLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPWgubm9kZSgpLmFwcGVuZENoaWxkKHUpO3ZhciBmPXUuZ2V0QkJveCgpO2guYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWYud2lkdGgvMisiLCAiKy1mLmhlaWdodC8yKyIpIiksbV9bZS5pZF18fChtX1tlLmlkXT17fSksbV9bZS5pZF0uc3RhcnRMZWZ0PWwsYl8oYSxlLnN0YXJ0TGFiZWxMZWZ0KX1pZihlLnN0YXJ0TGFiZWxSaWdodCl7dmFyIGQ9amIoZS5zdGFydExhYmVsUmlnaHQsZS5sYWJlbFN0eWxlKSxwPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIikseT1wLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPXAubm9kZSgpLmFwcGVuZENoaWxkKGQpLHkubm9kZSgpLmFwcGVuZENoaWxkKGQpO3ZhciBnPWQuZ2V0QkJveCgpO3kuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWcud2lkdGgvMisiLCAiKy1nLmhlaWdodC8yKyIpIiksbV9bZS5pZF18fChtX1tlLmlkXT17fSksbV9bZS5pZF0uc3RhcnRSaWdodD1wLGJfKGEsZS5zdGFydExhYmVsUmlnaHQpfWlmKGUuZW5kTGFiZWxMZWZ0KXt2YXIgbT1qYihlLmVuZExhYmVsTGVmdCxlLmxhYmVsU3R5bGUpLHY9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VUZXJtaW5hbHMiKSxiPXYuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJpbm5lciIpO2E9Yi5ub2RlKCkuYXBwZW5kQ2hpbGQobSk7dmFyIF89bS5nZXRCQm94KCk7Yi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistXy53aWR0aC8yKyIsICIrLV8uaGVpZ2h0LzIrIikiKSx2Lm5vZGUoKS5hcHBlbmRDaGlsZChtKSxtX1tlLmlkXXx8KG1fW2UuaWRdPXt9KSxtX1tlLmlkXS5lbmRMZWZ0PXYsYl8oYSxlLmVuZExhYmVsTGVmdCl9aWYoZS5lbmRMYWJlbFJpZ2h0KXt2YXIgeD1qYihlLmVuZExhYmVsUmlnaHQsZS5sYWJlbFN0eWxlKSx3PXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksaz13Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPWsubm9kZSgpLmFwcGVuZENoaWxkKHgpO3ZhciBUPXguZ2V0QkJveCgpO2suYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLVQud2lkdGgvMisiLCAiKy1ULmhlaWdodC8yKyIpIiksdy5ub2RlKCkuYXBwZW5kQ2hpbGQoeCksbV9bZS5pZF18fChtX1tlLmlkXT17fSksbV9bZS5pZF0uZW5kUmlnaHQ9dyxiXyhhLGUuZW5kTGFiZWxSaWdodCl9fTtmdW5jdGlvbiBiXyh0LGUpe1p2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMmJnQmJih0LnN0eWxlLndpZHRoPTkqZS5sZW5ndGgrInB4Iix0LnN0eWxlLmhlaWdodD0iMTJweCIpfXZhciBfXz1mdW5jdGlvbih0LGUpe28uaW5mbygiTW92aW5nIGxhYmVsIGFiYzc4ICIsdC5pZCx0LmxhYmVsLGdfW3QuaWRdKTt2YXIgbj1lLnVwZGF0ZWRQYXRoP2UudXBkYXRlZFBhdGg6ZS5vcmlnaW5hbFBhdGg7aWYodC5sYWJlbCl7dmFyIHI9Z19bdC5pZF0saT10LngsYT10Lnk7aWYobil7dmFyIHM9enYuY2FsY0xhYmVsUG9zaXRpb24obik7by5pbmZvKCJNb3ZpbmcgbGFiZWwgZnJvbSAoIixpLCIsIixhLCIpIHRvICgiLHMueCwiLCIscy55LCIpIGFiYzc4Iil9ci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsICIrYSsiKSIpfWlmKHQuc3RhcnRMYWJlbExlZnQpe3ZhciBjPW1fW3QuaWRdLnN0YXJ0TGVmdCx1PXQueCxsPXQueTtpZihuKXt2YXIgaD16di5jYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uKHQuYXJyb3dUeXBlU3RhcnQ/MTA6MCwic3RhcnRfbGVmdCIsbik7dT1oLngsbD1oLnl9Yy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1KyIsICIrbCsiKSIpfWlmKHQuc3RhcnRMYWJlbFJpZ2h0KXt2YXIgZj1tX1t0LmlkXS5zdGFydFJpZ2h0LGQ9dC54LHA9dC55O2lmKG4pe3ZhciB5PXp2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVTdGFydD8xMDowLCJzdGFydF9yaWdodCIsbik7ZD15LngscD15Lnl9Zi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitkKyIsICIrcCsiKSIpfWlmKHQuZW5kTGFiZWxMZWZ0KXt2YXIgZz1tX1t0LmlkXS5lbmRMZWZ0LG09dC54LHY9dC55O2lmKG4pe3ZhciBiPXp2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVFbmQ/MTA6MCwiZW5kX2xlZnQiLG4pO209Yi54LHY9Yi55fWcuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbSsiLCAiK3YrIikiKX1pZih0LmVuZExhYmVsUmlnaHQpe3ZhciBfPW1fW3QuaWRdLmVuZFJpZ2h0LHg9dC54LHc9dC55O2lmKG4pe3ZhciBrPXp2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVFbmQ/MTA6MCwiZW5kX3JpZ2h0IixuKTt4PWsueCx3PWsueX1fLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3grIiwgIit3KyIpIil9fSx4Xz1mdW5jdGlvbih0LGUpe28ud2FybigiYWJjODggY3V0UGF0aEF0SW50ZXJzZWN0Iix0LGUpO3ZhciBuPVtdLHI9dFswXSxpPSExO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKG8uaW5mbygiYWJjODggY2hlY2tpbmcgcG9pbnQiLHQsZSksZnVuY3Rpb24odCxlKXt2YXIgbj10Lngscj10LnksaT1NYXRoLmFicyhlLngtbiksYT1NYXRoLmFicyhlLnktciksbz10LndpZHRoLzIscz10LmhlaWdodC8yO3JldHVybiBpPj1vfHxhPj1zfShlLHQpfHxpKW8ud2FybigiYWJjODggb3V0c2lkZSIsdCxyKSxyPXQsaXx8bi5wdXNoKHQpO2Vsc2V7dmFyIGE9ZnVuY3Rpb24odCxlLG4pe28ud2FybigiaW50ZXJzZWN0aW9uIGNhbGMgYWJjODk6XG4gIG91dHNpZGVQb2ludDogIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoZSksIlxuICBpbnNpZGVQb2ludCA6ICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShuKSwiXG4gIG5vZGUgICAgICAgIDogeDoiKS5jb25jYXQodC54LCIgeToiKS5jb25jYXQodC55LCIgdzoiKS5jb25jYXQodC53aWR0aCwiIGg6IikuY29uY2F0KHQuaGVpZ2h0KSk7dmFyIHI9dC54LGk9dC55LGE9TWF0aC5hYnMoci1uLngpLHM9dC53aWR0aC8yLGM9bi54PGUueD9zLWE6cythLHU9dC5oZWlnaHQvMixsPU1hdGguYWJzKGUueS1uLnkpLGg9TWF0aC5hYnMoZS54LW4ueCk7aWYoTWF0aC5hYnMoaS1lLnkpKnM+TWF0aC5hYnMoci1lLngpKnUpe3ZhciBmPW4ueTxlLnk/ZS55LXUtaTppLXUtZS55O2M9aCpmL2w7dmFyIGQ9e3g6bi54PGUueD9uLngrYzpuLngtaCtjLHk6bi55PGUueT9uLnkrbC1mOm4ueS1sK2Z9O3JldHVybiAwPT09YyYmKGQueD1lLngsZC55PWUueSksMD09PWgmJihkLng9ZS54KSwwPT09bCYmKGQueT1lLnkpLG8ud2FybigiYWJjODkgdG9wcC9ib3R0IGNhbGMsIFEgIi5jb25jYXQobCwiLCBxICIpLmNvbmNhdChmLCIsIFIgIikuY29uY2F0KGgsIiwgciAiKS5jb25jYXQoYyksZCksZH12YXIgcD1sKihjPW4ueDxlLng/ZS54LXMtcjpyLXMtZS54KS9oLHk9bi54PGUueD9uLngraC1jOm4ueC1oK2MsZz1uLnk8ZS55P24ueStwOm4ueS1wO3JldHVybiBvLndhcm4oInNpZGVzIGNhbGMgYWJjODksIFEgIi5jb25jYXQobCwiLCBxICIpLmNvbmNhdChwLCIsIFIgIikuY29uY2F0KGgsIiwgciAiKS5jb25jYXQoYykse194OnksX3k6Z30pLDA9PT1jJiYoeT1lLngsZz1lLnkpLDA9PT1oJiYoeT1lLngpLDA9PT1sJiYoZz1lLnkpLHt4OnkseTpnfX0oZSxyLHQpO28ud2FybigiYWJjODggaW5zaWRlIix0LHIsYSksby53YXJuKCJhYmM4OCBpbnRlcnNlY3Rpb24iLGEpO3ZhciBzPSExO24uZm9yRWFjaCgoZnVuY3Rpb24odCl7cz1zfHx0Lng9PT1hLngmJnQueT09PWEueX0pKSxuLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT1hLngmJnQueT09PWEueX0pKT9vLndhcm4oImFiYzg4IG5vIGludGVyc2VjdCIsYSxuKTpuLnB1c2goYSksaT0hMH19KSksby53YXJuKCJhYmM4OCByZXR1cm5pbmcgcG9pbnRzIixuKSxufSx3Xz1mdW5jdGlvbiB0KGUsbixyLGkpe28uaW5mbygiR3JhcGggaW4gcmVjdXJzaXZlIHJlbmRlcjogWFhYIixiYigpLmpzb24ud3JpdGUobiksaSk7dmFyIGE9bi5ncmFwaCgpLnJhbmtkaXI7by50cmFjZSgiRGlyIGluIHJlY3Vyc2l2ZSByZW5kZXIgLSBkaXI6IixhKTt2YXIgcz1lLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwicm9vdCIpO24ubm9kZXMoKT9vLmluZm8oIlJlY3Vyc2l2ZSByZW5kZXIgWFhYIixuLm5vZGVzKCkpOm8uaW5mbygiTm8gbm9kZXMgZm91bmQgZm9yIixuKSxuLmVkZ2VzKCkubGVuZ3RoPjAmJm8udHJhY2UoIlJlY3Vyc2l2ZSBlZGdlcyIsbi5lZGdlKG4uZWRnZXMoKVswXSkpO3ZhciBjPXMuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVycyIpLHU9cy5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VQYXRocyIpLGw9cy5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VMYWJlbHMiKSxoPXMuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlcyIpO24ubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcz1uLm5vZGUoZSk7aWYodm9pZCAwIT09aSl7dmFyIGM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpLmNsdXN0ZXJEYXRhKSk7by5pbmZvKCJTZXR0aW5nIGRhdGEgZm9yIGNsdXN0ZXIgWFhYICgiLGUsIikgIixjLGkpLG4uc2V0Tm9kZShpLmlkLGMpLG4ucGFyZW50KGUpfHwoby50cmFjZSgiU2V0dGluZyBwYXJlbnQiLGUsaS5pZCksbi5zZXRQYXJlbnQoZSxpLmlkLGMpKX1pZihvLmluZm8oIihJbnNlcnQpIE5vZGUgWFhYIitlKyI6ICIrSlNPTi5zdHJpbmdpZnkobi5ub2RlKGUpKSkscyYmcy5jbHVzdGVyTm9kZSl7by5pbmZvKCJDbHVzdGVyIGlkZW50aWZpZWQiLGUscy53aWR0aCxuLm5vZGUoZSkpO3ZhciB1PXQoaCxzLmdyYXBoLHIsbi5ub2RlKGUpKSxsPXUuZWxlbTt6YihzLGwpLHMuZGlmZj11LmRpZmZ8fDAsby5pbmZvKCJOb2RlIGJvdW5kcyAoYWJjMTIzKSIsZSxzLHMud2lkdGgscy54LHMueSksZnVuY3Rpb24odCxlKXtmX1tlLmlkXT10fShsLHMpLG8ud2FybigiUmVjdXJzaXZlIHJlbmRlciBjb21wbGV0ZSAiLGwscyl9ZWxzZSBuLmNoaWxkcmVuKGUpLmxlbmd0aD4wPyhvLmluZm8oIkNsdXN0ZXIgLSB0aGUgbm9uIHJlY3Vyc2l2ZSBwYXRoIFhYWCIsZSxzLmlkLHMsbiksby5pbmZvKFhiKHMuaWQsbikpLHFiW3MuaWRdPXtpZDpYYihzLmlkLG4pLG5vZGU6c30pOihvLmluZm8oIk5vZGUgLSB0aGUgbm9uIHJlY3Vyc2l2ZSBwYXRoIixlLHMuaWQscyksZnVuY3Rpb24odCxlLG4pe3ZhciByLGk7ZS5saW5rPyhyPXQuaW5zZXJ0KCJzdmc6YSIpLmF0dHIoInhsaW5rOmhyZWYiLGUubGluaykuYXR0cigidGFyZ2V0IixlLmxpbmtUYXJnZXR8fCJfYmxhbmsiKSxpPWhfW2Uuc2hhcGVdKHIsZSxuKSk6cj1pPWhfW2Uuc2hhcGVdKHQsZSxuKSxlLnRvb2x0aXAmJmkuYXR0cigidGl0bGUiLGUudG9vbHRpcCksZS5jbGFzcyYmaS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCAiK2UuY2xhc3MpLGZfW2UuaWRdPXIsZS5oYXZlQ2FsbGJhY2smJmZfW2UuaWRdLmF0dHIoImNsYXNzIixmX1tlLmlkXS5hdHRyKCJjbGFzcyIpKyIgY2xpY2thYmxlIil9KGgsbi5ub2RlKGUpLGEpKX0pKSxuLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5lZGdlKHQudix0LncsdC5uYW1lKTtvLmluZm8oIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiK0pTT04uc3RyaW5naWZ5KHQpKSxvLmluZm8oIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiLHQsIiAiLEpTT04uc3RyaW5naWZ5KG4uZWRnZSh0KSkpLG8uaW5mbygiRml4IixxYiwiaWRzOiIsdC52LHQudywiVHJhbnNsYXRlaW5nOiAiLHFiW3Qudl0scWJbdC53XSksdl8obCxlKX0pKSxuLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5pbmZvKCJFZGdlICIrdC52KyIgLT4gIit0LncrIjogIitKU09OLnN0cmluZ2lmeSh0KSl9KSksby5pbmZvKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKSxvLmluZm8oIiMjIyAgICAgICAgICAgICAgICBMYXlvdXQgICAgICAgICAgICAgICAgICMjIyIpLG8uaW5mbygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIiksby5pbmZvKG4pLG1iKCkubGF5b3V0KG4pLG8uaW5mbygiR3JhcGggYWZ0ZXIgbGF5b3V0OiIsYmIoKS5qc29uLndyaXRlKG4pKTt2YXIgZj0wO3JldHVybiB0XyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLm5vZGUodCk7by5pbmZvKCJQb3NpdGlvbiAiK3QrIjogIitKU09OLnN0cmluZ2lmeShuLm5vZGUodCkpKSxvLmluZm8oIlBvc2l0aW9uICIrdCsiOiAoIitlLngsIiwiK2UueSwiKSB3aWR0aDogIixlLndpZHRoLCIgaGVpZ2h0OiAiLGUuaGVpZ2h0KSxlJiZlLmNsdXN0ZXJOb2RlP2RfKGUpOm4uY2hpbGRyZW4odCkubGVuZ3RoPjA/KGZ1bmN0aW9uKHQsZSl7by50cmFjZSgiSW5zZXJ0aW5nIGNsdXN0ZXIiKTt2YXIgbj1lLnNoYXBlfHwicmVjdCI7eV9bZS5pZF09cF9bbl0odCxlKX0oYyxlKSxxYltlLmlkXS5ub2RlPWUpOmRfKGUpfSkpLG4uZWRnZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLmVkZ2UodCk7by5pbmZvKCJFZGdlICIrdC52KyIgLT4gIit0LncrIjogIitKU09OLnN0cmluZ2lmeShlKSxlKTt2YXIgaT1mdW5jdGlvbih0LGUsbixyLGksYSl7dmFyIHM9bi5wb2ludHMsYz0hMSx1PWEubm9kZShlLnYpLGw9YS5ub2RlKGUudyk7by5pbmZvKCJhYmM4OCBJbnNlcnRFZGdlOiAiLG4pLGwuaW50ZXJzZWN0JiZ1LmludGVyc2VjdCYmKChzPXMuc2xpY2UoMSxuLnBvaW50cy5sZW5ndGgtMSkpLnVuc2hpZnQodS5pbnRlcnNlY3Qoc1swXSkpLG8uaW5mbygiTGFzdCBwb2ludCIsc1tzLmxlbmd0aC0xXSxsLGwuaW50ZXJzZWN0KHNbcy5sZW5ndGgtMV0pKSxzLnB1c2gobC5pbnRlcnNlY3Qoc1tzLmxlbmd0aC0xXSkpKSxuLnRvQ2x1c3RlciYmKG8uaW5mbygidG8gY2x1c3RlciBhYmM4OCIscltuLnRvQ2x1c3Rlcl0pLHM9eF8obi5wb2ludHMscltuLnRvQ2x1c3Rlcl0ubm9kZSksYz0hMCksbi5mcm9tQ2x1c3RlciYmKG8uaW5mbygiZnJvbSBjbHVzdGVyIGFiYzg4IixyW24uZnJvbUNsdXN0ZXJdKSxzPXhfKHMucmV2ZXJzZSgpLHJbbi5mcm9tQ2x1c3Rlcl0ubm9kZSkucmV2ZXJzZSgpLGM9ITApO3ZhciBoLGY9cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFOdW1iZXIuaXNOYU4odC55KX0pKTtoPSgiZ3JhcGgiPT09aXx8ImZsb3djaGFydCI9PT1pKSYmbi5jdXJ2ZXx8VnU7dmFyIGQscD16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKS5jdXJ2ZShoKTtzd2l0Y2gobi50aGlja25lc3Mpe2Nhc2Uibm9ybWFsIjpkPSJlZGdlLXRoaWNrbmVzcy1ub3JtYWwiO2JyZWFrO2Nhc2UidGhpY2siOmQ9ImVkZ2UtdGhpY2tuZXNzLXRoaWNrIjticmVhaztkZWZhdWx0OmQ9IiJ9c3dpdGNoKG4ucGF0dGVybil7Y2FzZSJzb2xpZCI6ZCs9IiBlZGdlLXBhdHRlcm4tc29saWQiO2JyZWFrO2Nhc2UiZG90dGVkIjpkKz0iIGVkZ2UtcGF0dGVybi1kb3R0ZWQiO2JyZWFrO2Nhc2UiZGFzaGVkIjpkKz0iIGVkZ2UtcGF0dGVybi1kYXNoZWQifXZhciB5PXQuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIscChmKSkuYXR0cigiaWQiLG4uaWQpLmF0dHIoImNsYXNzIiwiICIrZCsobi5jbGFzc2VzPyIgIituLmNsYXNzZXM6IiIpKS5hdHRyKCJzdHlsZSIsbi5zdHlsZSksZz0iIjtzd2l0Y2goWnYoKS5zdGF0ZS5hcnJvd01hcmtlckFic29sdXRlJiYoZz0oZz0oZz13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrIi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUrd2luZG93LmxvY2F0aW9uLnNlYXJjaCkucmVwbGFjZSgvXCgvZywiXFwoIikpLnJlcGxhY2UoL1wpL2csIlxcKSIpKSxvLmluZm8oImFycm93VHlwZVN0YXJ0IixuLmFycm93VHlwZVN0YXJ0KSxvLmluZm8oImFycm93VHlwZUVuZCIsbi5hcnJvd1R5cGVFbmQpLG4uYXJyb3dUeXBlU3RhcnQpe2Nhc2UiYXJyb3dfY3Jvc3MiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWNyb3NzU3RhcnQpIik7YnJlYWs7Y2FzZSJhcnJvd19wb2ludCI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItcG9pbnRTdGFydCkiKTticmVhaztjYXNlImFycm93X2JhcmIiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWJhcmJTdGFydCkiKTticmVhaztjYXNlImFycm93X2NpcmNsZSI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItY2lyY2xlU3RhcnQpIik7YnJlYWs7Y2FzZSJhZ2dyZWdhdGlvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItYWdncmVnYXRpb25TdGFydCkiKTticmVhaztjYXNlImV4dGVuc2lvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItZXh0ZW5zaW9uU3RhcnQpIik7YnJlYWs7Y2FzZSJjb21wb3NpdGlvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItY29tcG9zaXRpb25TdGFydCkiKTticmVhaztjYXNlImRlcGVuZGVuY3kiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWRlcGVuZGVuY3lTdGFydCkiKX1zd2l0Y2gobi5hcnJvd1R5cGVFbmQpe2Nhc2UiYXJyb3dfY3Jvc3MiOnkuYXR0cigibWFya2VyLWVuZCIsInVybCgiK2crIiMiK2krIi1jcm9zc0VuZCkiKTticmVhaztjYXNlImFycm93X3BvaW50Ijp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItcG9pbnRFbmQpIik7YnJlYWs7Y2FzZSJhcnJvd19iYXJiIjp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItYmFyYkVuZCkiKTticmVhaztjYXNlImFycm93X2NpcmNsZSI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWNpcmNsZUVuZCkiKTticmVhaztjYXNlImFnZ3JlZ2F0aW9uIjp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItYWdncmVnYXRpb25FbmQpIik7YnJlYWs7Y2FzZSJleHRlbnNpb24iOnkuYXR0cigibWFya2VyLWVuZCIsInVybCgiK2crIiMiK2krIi1leHRlbnNpb25FbmQpIik7YnJlYWs7Y2FzZSJjb21wb3NpdGlvbiI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWNvbXBvc2l0aW9uRW5kKSIpO2JyZWFrO2Nhc2UiZGVwZW5kZW5jeSI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWRlcGVuZGVuY3lFbmQpIil9dmFyIG09e307cmV0dXJuIGMmJihtLnVwZGF0ZWRQYXRoPXMpLG0ub3JpZ2luYWxQYXRoPW4ucG9pbnRzLG19KHUsdCxlLHFiLHIsbik7X18oZSxpKX0pKSxuLm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5ub2RlKHQpO28uaW5mbyh0LGUudHlwZSxlLmRpZmYpLCJncm91cCI9PT1lLnR5cGUmJihmPWUuZGlmZil9KSkse2VsZW06cyxkaWZmOmZ9fSxrXz1mdW5jdGlvbih0LGUsbixyLGkpe0ZiKHQsbixyLGkpLGZfPXt9LGdfPXt9LG1fPXt9LHlfPXt9LCRiPXt9LEhiPXt9LHFiPXt9LG8ud2FybigiR3JhcGggYXQgZmlyc3Q6IixiYigpLmpzb24ud3JpdGUoZSkpLFFiKGUpLG8ud2FybigiR3JhcGggYWZ0ZXI6IixiYigpLmpzb24ud3JpdGUoZSkpLHdfKHQsZSxyKX07X2IucGFyc2VyLnl5PXliO3ZhciBUXz17ZGl2aWRlck1hcmdpbjoxMCxwYWRkaW5nOjUsdGV4dEhlaWdodDoxMH07ZnVuY3Rpb24gRV8odCl7dmFyIGU7c3dpdGNoKHQpe2Nhc2UgMDplPSJhZ2dyZWdhdGlvbiI7YnJlYWs7Y2FzZSAxOmU9ImV4dGVuc2lvbiI7YnJlYWs7Y2FzZSAyOmU9ImNvbXBvc2l0aW9uIjticmVhaztjYXNlIDM6ZT0iZGVwZW5kZW5jeSI7YnJlYWs7ZGVmYXVsdDplPSJub25lIn1yZXR1cm4gZX12YXIgQ189e30sU189W10sQV89IiIsTV89ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PUNfW3RdJiYoQ19bdF09e2F0dHJpYnV0ZXM6W119LG8uaW5mbygiQWRkZWQgbmV3IGVudGl0eSA6Iix0KSksQ19bdF19O2NvbnN0IE5fPXtDYXJkaW5hbGl0eTp7WkVST19PUl9PTkU6IlpFUk9fT1JfT05FIixaRVJPX09SX01PUkU6IlpFUk9fT1JfTU9SRSIsT05FX09SX01PUkU6Ik9ORV9PUl9NT1JFIixPTkxZX09ORToiT05MWV9PTkUifSxJZGVudGlmaWNhdGlvbjp7Tk9OX0lERU5USUZZSU5HOiJOT05fSURFTlRJRllJTkciLElERU5USUZZSU5HOiJJREVOVElGWUlORyJ9LHBhcnNlRGlyZWN0aXZlOmZ1bmN0aW9uKHQsZSxuKXthQy5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxuKX0sZ2V0Q29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIFp2KCkuZXJ9LGFkZEVudGl0eTpNXyxhZGRBdHRyaWJ1dGVzOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj1NXyh0KTtmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXIuYXR0cmlidXRlcy5wdXNoKGVbbl0pLG8uZGVidWcoIkFkZGVkIGF0dHJpYnV0ZSAiLGVbbl0uYXR0cmlidXRlTmFtZSl9LGdldEVudGl0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuIENffSxhZGRSZWxhdGlvbnNoaXA6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9e2VudGl0eUE6dCxyb2xlQTplLGVudGl0eUI6bixyZWxTcGVjOnJ9O1NfLnB1c2goaSksby5kZWJ1ZygiQWRkZWQgbmV3IHJlbGF0aW9uc2hpcCA6IixpKX0sZ2V0UmVsYXRpb25zaGlwczpmdW5jdGlvbigpe3JldHVybiBTX30sY2xlYXI6ZnVuY3Rpb24oKXtDXz17fSxTXz1bXSxBXz0iIn0sc2V0VGl0bGU6ZnVuY3Rpb24odCl7QV89dH0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gQV99fTt2YXIgRF89big0NzAxKSxPXz1uLm4oRF8pLEJfPXtPTkxZX09ORV9TVEFSVDoiT05MWV9PTkVfU1RBUlQiLE9OTFlfT05FX0VORDoiT05MWV9PTkVfRU5EIixaRVJPX09SX09ORV9TVEFSVDoiWkVST19PUl9PTkVfU1RBUlQiLFpFUk9fT1JfT05FX0VORDoiWkVST19PUl9PTkVfRU5EIixPTkVfT1JfTU9SRV9TVEFSVDoiT05FX09SX01PUkVfU1RBUlQiLE9ORV9PUl9NT1JFX0VORDoiT05FX09SX01PUkVfRU5EIixaRVJPX09SX01PUkVfU1RBUlQ6IlpFUk9fT1JfTU9SRV9TVEFSVCIsWkVST19PUl9NT1JFX0VORDoiWkVST19PUl9NT1JFX0VORCJ9O2NvbnN0IExfPUJfO3ZhciBJXz17fSxSXz1mdW5jdGlvbih0KXtyZXR1cm4odC5lbnRpdHlBK3Qucm9sZUErdC5lbnRpdHlCKS5yZXBsYWNlKC9ccy9nLCIiKX0sRl89MDtjb25zdCBQXz1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKUlfW2Vbbl1dPXRbZVtuXV19LGpfPWZ1bmN0aW9uKHQsZSl7by5pbmZvKCJEcmF3aW5nIEVSIGRpYWdyYW0iKSxOXy5jbGVhcigpO3ZhciBuPU9fKCkucGFyc2VyO24ueXk9Tl87dHJ5e24ucGFyc2UodCl9Y2F0Y2godCl7by5kZWJ1ZygiUGFyc2luZyBmYWlsZWQiKX12YXIgcixpPWF1KCJbaWQ9JyIuY29uY2F0KGUsIiddIikpOyhmdW5jdGlvbih0LGUpe3ZhciBuO3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsQl8uT05MWV9PTkVfU1RBUlQpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDkpLmF0dHIoIm1hcmtlcldpZHRoIiwxOCkuYXR0cigibWFya2VySGVpZ2h0IiwxOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk05LDAgTDksMTggTTE1LDAgTDE1LDE4IiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixCXy5PTkxZX09ORV9FTkQpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiw5KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTgpLmF0dHIoIm1hcmtlckhlaWdodCIsMTgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMywwIEwzLDE4IE05LDAgTDksMTgiKSwobj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLEJfLlpFUk9fT1JfT05FX1NUQVJUKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw5KS5hdHRyKCJtYXJrZXJXaWR0aCIsMzApLmF0dHIoIm1hcmtlckhlaWdodCIsMTgpLmF0dHIoIm9yaWVudCIsImF1dG8iKSkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJjeCIsMjEpLmF0dHIoImN5Iiw5KS5hdHRyKCJyIiw2KSxuLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk05LDAgTDksMTgiKSwobj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLEJfLlpFUk9fT1JfT05FX0VORCkuYXR0cigicmVmWCIsMzApLmF0dHIoInJlZlkiLDkpLmF0dHIoIm1hcmtlcldpZHRoIiwzMCkuYXR0cigibWFya2VySGVpZ2h0IiwxOCkuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw5KS5hdHRyKCJjeSIsOSkuYXR0cigiciIsNiksbi5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMjEsMCBMMjEsMTgiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLEJfLk9ORV9PUl9NT1JFX1NUQVJUKS5hdHRyKCJyZWZYIiwxOCkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw0NSkuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0wLDE4IFEgMTgsMCAzNiwxOCBRIDE4LDM2IDAsMTggTTQyLDkgTDQyLDI3IiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixCXy5PTkVfT1JfTU9SRV9FTkQpLmF0dHIoInJlZlgiLDI3KS5hdHRyKCJyZWZZIiwxOCkuYXR0cigibWFya2VyV2lkdGgiLDQ1KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDM2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTMsOSBMMywyNyBNOSwxOCBRMjcsMCA0NSwxOCBRMjcsMzYgOSwxOCIpLChuPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsQl8uWkVST19PUl9NT1JFX1NUQVJUKS5hdHRyKCJyZWZYIiwxOCkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw1NykuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw0OCkuYXR0cigiY3kiLDE4KS5hdHRyKCJyIiw2KSxuLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0wLDE4IFExOCwwIDM2LDE4IFExOCwzNiAwLDE4IiksKG49dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixCXy5aRVJPX09SX01PUkVfRU5EKS5hdHRyKCJyZWZYIiwzOSkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw1NykuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw5KS5hdHRyKCJjeSIsMTgpLmF0dHIoInIiLDYpLG4uYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTIxLDE4IFEzOSwwIDU3LDE4IFEzOSwzNiAyMSwxOCIpfSkoaSxJXykscj1uZXcoYmIoKS5HcmFwaCkoe211bHRpZ3JhcGg6ITAsZGlyZWN0ZWQ6ITAsY29tcG91bmQ6ITF9KS5zZXRHcmFwaCh7cmFua2RpcjpJXy5sYXlvdXREaXJlY3Rpb24sbWFyZ2lueDoyMCxtYXJnaW55OjIwLG5vZGVzZXA6MTAwLGVkZ2VzZXA6MTAwLHJhbmtzZXA6MTAwfSkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKTt2YXIgYT1mdW5jdGlvbih0LGUsbil7dmFyIHI7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciBhPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLGkpO3I9dm9pZCAwPT09cj9pOnI7dmFyIG89ImVudGl0eS0iK2kscz1hLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsbykuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrWnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIitJXy5mb250U2l6ZSsicHgiKS50ZXh0KGkpLGM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPUlfLmVudGl0eVBhZGRpbmcvMyxpPUlfLmVudGl0eVBhZGRpbmcvMyxhPS44NSpJXy5mb250U2l6ZSxvPWUubm9kZSgpLmdldEJCb3goKSxzPVtdLGM9ITEsdT0hMSxsPTAsaD0wLGY9MCxkPTAscD0wLHk9by5oZWlnaHQrMipyLGc9MTtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPSIiLmNvbmNhdChlLm5vZGUoKS5pZCwiLWF0dHItIikuY29uY2F0KGcpLG89MCxtPTAsdj10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsIiIuY29uY2F0KGksIi10eXBlIikpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitadigpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChuLmF0dHJpYnV0ZVR5cGUpLGI9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLCIiLmNvbmNhdChpLCItbmFtZSIpKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoInRleHQtYW5jaG9yIiwibGVmdCIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrWnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIithKyJweCIpLnRleHQobi5hdHRyaWJ1dGVOYW1lKSxfPXt9O18udG49dixfLm5uPWI7dmFyIHg9di5ub2RlKCkuZ2V0QkJveCgpLHc9Yi5ub2RlKCkuZ2V0QkJveCgpO2lmKGg9TWF0aC5tYXgoaCx4LndpZHRoKSxmPU1hdGgubWF4KGYsdy53aWR0aCksbys9eC53aWR0aCxvKz13LndpZHRoLG09TWF0aC5tYXgoeC5oZWlnaHQsdy5oZWlnaHQpLGN8fHZvaWQgMCE9PW4uYXR0cmlidXRlS2V5VHlwZSl7dmFyIGs9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLCIiLmNvbmNhdChpLCItbmFtZSIpKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoInRleHQtYW5jaG9yIiwibGVmdCIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrWnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIithKyJweCIpLnRleHQobi5hdHRyaWJ1dGVLZXlUeXBlfHwiIik7Xy5rbj1rO3ZhciBUPWsubm9kZSgpLmdldEJCb3goKTtvKz1ULndpZHRoLGQ9TWF0aC5tYXgoZCxvKSxtPU1hdGgubWF4KG0sVC5oZWlnaHQpLGM9ITB9aWYodXx8dm9pZCAwIT09bi5hdHRyaWJ1dGVDb21tZW50KXt2YXIgRT10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsIiIuY29uY2F0KGksIi1uYW1lIikpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitadigpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChuLmF0dHJpYnV0ZUNvbW1lbnR8fCIiKTtfLmNuPUU7dmFyIEM9RS5ub2RlKCkuZ2V0QkJveCgpO28rPUMud2lkdGgscD1NYXRoLm1heChvLHcud2lkdGgpLG09TWF0aC5tYXgobSxDLmhlaWdodCksdT0hMH1fLmhlaWdodD1tLHMucHVzaChfKSxsPU1hdGgubWF4KGwsbykseSs9bSsyKnIsZys9MX0pKTt2YXIgbT17d2lkdGg6TWF0aC5tYXgoSV8ubWluRW50aXR5V2lkdGgsTWF0aC5tYXgoby53aWR0aCsyKklfLmVudGl0eVBhZGRpbmcsbCs0KmkpKSxoZWlnaHQ6bi5sZW5ndGg+MD95Ok1hdGgubWF4KElfLm1pbkVudGl0eUhlaWdodCxvLmhlaWdodCsyKklfLmVudGl0eVBhZGRpbmcpfSx2PU1hdGgubWF4KDAsbS53aWR0aC1sLTQqaSk7aWYobi5sZW5ndGg+MCl7ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIittLndpZHRoLzIrIiwiKyhyK28uaGVpZ2h0LzIpKyIpIik7dmFyIGI9by5oZWlnaHQrMipyLF89ImF0dHJpYnV0ZUJveE9kZCI7cy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1iK3IrZS5oZWlnaHQvMjtlLnRuLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2krIiwiK24rIikiKTt2YXIgYT10Lmluc2VydCgicmVjdCIsIiMiK2UudG4ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsImVyICIuY29uY2F0KF8pKS5hdHRyKCJmaWxsIixJXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixJXy5zdHJva2UpLmF0dHIoIngiLDApLmF0dHIoInkiLGIpLmF0dHIoIndpZHRoIiwyKmgrdi8yKS5hdHRyKCJoZWlnaHQiLGUudG4ubm9kZSgpLmdldEJCb3goKS5oZWlnaHQrMipyKTtlLm5uLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhwYXJzZUZsb2F0KGEuYXR0cigid2lkdGgiKSkraSkrIiwiK24rIikiKSx0Lmluc2VydCgicmVjdCIsIiMiK2Uubm4ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsImVyICIuY29uY2F0KF8pKS5hdHRyKCJmaWxsIixJXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixJXy5zdHJva2UpLmF0dHIoIngiLCIiLmNvbmNhdChhLmF0dHIoIngiKSthLmF0dHIoIndpZHRoIikpKS5hdHRyKCJ5IixiKS5hdHRyKCJ3aWR0aCIsZisyKmkrdi8yKS5hdHRyKCJoZWlnaHQiLGUubm4ubm9kZSgpLmdldEJCb3goKS5oZWlnaHQrMipyKSxjJiYoZS5rbi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisocGFyc2VGbG9hdChhLmF0dHIoIndpZHRoIikpK2kpKyIsIituKyIpIiksdC5pbnNlcnQoInJlY3QiLCIjIitlLmtuLm5vZGUoKS5pZCkuYXR0cigiY2xhc3MiLCJlciAiLmNvbmNhdChfKSkuYXR0cigiZmlsbCIsSV8uZmlsbCkuYXR0cigiZmlsbC1vcGFjaXR5IiwiMTAwJSIpLmF0dHIoInN0cm9rZSIsSV8uc3Ryb2tlKS5hdHRyKCJ4IiwiIi5jb25jYXQoYS5hdHRyKCJ4IikrYS5hdHRyKCJ3aWR0aCIpKSkuYXR0cigieSIsYikuYXR0cigid2lkdGgiLGQrMippK3YvMikuYXR0cigiaGVpZ2h0IixlLmtuLm5vZGUoKS5nZXRCQm94KCkuaGVpZ2h0KzIqcikpLHUmJihlLmNuLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhwYXJzZUZsb2F0KGEuYXR0cigid2lkdGgiKSkraSkrIiwiK24rIikiKSx0Lmluc2VydCgicmVjdCIsIiMiK2UuY24ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsImVyICIuY29uY2F0KF8pKS5hdHRyKCJmaWxsIixJXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixJXy5zdHJva2UpLmF0dHIoIngiLCIiLmNvbmNhdChhLmF0dHIoIngiKSthLmF0dHIoIndpZHRoIikpKS5hdHRyKCJ5IixiKS5hdHRyKCJ3aWR0aCIscCsyKmkrdi8yKS5hdHRyKCJoZWlnaHQiLGUuY24ubm9kZSgpLmdldEJCb3goKS5oZWlnaHQrMipyKSksYis9ZS5oZWlnaHQrMipyLF89ImF0dHJpYnV0ZUJveE9kZCI9PV8/ImF0dHJpYnV0ZUJveEV2ZW4iOiJhdHRyaWJ1dGVCb3hPZGQifSkpfWVsc2UgbS5oZWlnaHQ9TWF0aC5tYXgoSV8ubWluRW50aXR5SGVpZ2h0LHkpLGUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbS53aWR0aC8yKyIsIittLmhlaWdodC8yKyIpIik7cmV0dXJuIG19KGEscyxlW2ldLmF0dHJpYnV0ZXMpLHU9Yy53aWR0aCxsPWMuaGVpZ2h0LGg9YS5pbnNlcnQoInJlY3QiLCIjIitvKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUJveCIpLmF0dHIoImZpbGwiLElfLmZpbGwpLmF0dHIoImZpbGwtb3BhY2l0eSIsIjEwMCUiKS5hdHRyKCJzdHJva2UiLElfLnN0cm9rZSkuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLHUpLmF0dHIoImhlaWdodCIsbCkubm9kZSgpLmdldEJCb3goKTtuLnNldE5vZGUoaSx7d2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHQsc2hhcGU6InJlY3QiLGlkOml9KX0pKSxyfShpLE5fLmdldEVudGl0aWVzKCkscikscz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Uuc2V0RWRnZSh0LmVudGl0eUEsdC5lbnRpdHlCLHtyZWxhdGlvbnNoaXA6dH0sUl8odCkpfSkpLHR9KE5fLmdldFJlbGF0aW9uc2hpcHMoKSxyKTttYigpLmxheW91dChyKSxmdW5jdGlvbih0LGUpe2Uubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2b2lkIDAhPT1uJiZ2b2lkIDAhPT1lLm5vZGUobikmJnQuc2VsZWN0KCIjIituKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoZS5ub2RlKG4pLngtZS5ub2RlKG4pLndpZHRoLzIpKyIsIisoZS5ub2RlKG4pLnktZS5ub2RlKG4pLmhlaWdodC8yKSsiICkiKX0pKX0oaSxyKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUsbixyKXtGXysrO3ZhciBpPW4uZWRnZShlLmVudGl0eUEsZS5lbnRpdHlCLFJfKGUpKSxhPXp1KCkueCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKS55KChmdW5jdGlvbih0KXtyZXR1cm4gdC55fSkpLmN1cnZlKFZ1KSxvPXQuaW5zZXJ0KCJwYXRoIiwiIyIrcikuYXR0cigiY2xhc3MiLCJlciByZWxhdGlvbnNoaXBMaW5lIikuYXR0cigiZCIsYShpLnBvaW50cykpLmF0dHIoInN0cm9rZSIsSV8uc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpO2UucmVsU3BlYy5yZWxUeXBlPT09Tl8uSWRlbnRpZmljYXRpb24uTk9OX0lERU5USUZZSU5HJiZvLmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLCI4LDgiKTt2YXIgcz0iIjtzd2l0Y2goSV8uYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKHM9KHM9KHM9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksZS5yZWxTcGVjLmNhcmRBKXtjYXNlIE5fLkNhcmRpbmFsaXR5LlpFUk9fT1JfT05FOm8uYXR0cigibWFya2VyLWVuZCIsInVybCgiK3MrIiMiK0xfLlpFUk9fT1JfT05FX0VORCsiKSIpO2JyZWFrO2Nhc2UgTl8uQ2FyZGluYWxpdHkuWkVST19PUl9NT1JFOm8uYXR0cigibWFya2VyLWVuZCIsInVybCgiK3MrIiMiK0xfLlpFUk9fT1JfTU9SRV9FTkQrIikiKTticmVhaztjYXNlIE5fLkNhcmRpbmFsaXR5Lk9ORV9PUl9NT1JFOm8uYXR0cigibWFya2VyLWVuZCIsInVybCgiK3MrIiMiK0xfLk9ORV9PUl9NT1JFX0VORCsiKSIpO2JyZWFrO2Nhc2UgTl8uQ2FyZGluYWxpdHkuT05MWV9PTkU6by5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrcysiIyIrTF8uT05MWV9PTkVfRU5EKyIpIil9c3dpdGNoKGUucmVsU3BlYy5jYXJkQil7Y2FzZSBOXy5DYXJkaW5hbGl0eS5aRVJPX09SX09ORTpvLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK3MrIiMiK0xfLlpFUk9fT1JfT05FX1NUQVJUKyIpIik7YnJlYWs7Y2FzZSBOXy5DYXJkaW5hbGl0eS5aRVJPX09SX01PUkU6by5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitzKyIjIitMXy5aRVJPX09SX01PUkVfU1RBUlQrIikiKTticmVhaztjYXNlIE5fLkNhcmRpbmFsaXR5Lk9ORV9PUl9NT1JFOm8uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrcysiIyIrTF8uT05FX09SX01PUkVfU1RBUlQrIikiKTticmVhaztjYXNlIE5fLkNhcmRpbmFsaXR5Lk9OTFlfT05FOm8uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrcysiIyIrTF8uT05MWV9PTkVfU1RBUlQrIikiKX12YXIgYz1vLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpLHU9by5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aCguNSpjKSxsPSJyZWwiK0ZfLGg9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIHJlbGF0aW9uc2hpcExhYmVsIikuYXR0cigiaWQiLGwpLmF0dHIoIngiLHUueCkuYXR0cigieSIsdS55KS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitadigpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK0lfLmZvbnRTaXplKyJweCIpLnRleHQoZS5yb2xlQSkubm9kZSgpLmdldEJCb3goKTt0Lmluc2VydCgicmVjdCIsIiMiK2wpLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGFiZWxCb3giKS5hdHRyKCJ4Iix1LngtaC53aWR0aC8yKS5hdHRyKCJ5Iix1LnktaC5oZWlnaHQvMikuYXR0cigid2lkdGgiLGgud2lkdGgpLmF0dHIoImhlaWdodCIsaC5oZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImZpbGwtb3BhY2l0eSIsIjg1JSIpfShpLHQscixhKX0pKTt2YXIgYz1JXy5kaWFncmFtUGFkZGluZyx1PWkubm9kZSgpLmdldEJCb3goKSxsPXUud2lkdGgrMipjLGg9dS5oZWlnaHQrMipjO2p2KGksaCxsLElfLnVzZU1heFdpZHRoKSxpLmF0dHIoInZpZXdCb3giLCIiLmNvbmNhdCh1LngtYywiICIpLmNvbmNhdCh1LnktYywiICIpLmNvbmNhdChsLCIgIikuY29uY2F0KGgpKX07ZnVuY3Rpb24gWV8odCl7cmV0dXJuIFlfPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxZXyh0KX1mdW5jdGlvbiB6Xyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBVXyxxXywkXz0iZmxvd2NoYXJ0LSIsSF89MCxXXz1adigpLFZfPXt9LEdfPVtdLFhfPVtdLFpfPVtdLFFfPXt9LEtfPXt9LEpfPTAsdHg9ITAsZXg9W10sbng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdC5rZXlzKFZfKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoVl9bZVtuXV0uaWQ9PT10KXJldHVybiBWX1tlW25dXS5kb21JZDtyZXR1cm4gdH0scng9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9e3N0YXJ0OnQsZW5kOmUsdHlwZTp2b2lkIDAsdGV4dDoiIn07dm9pZCAwIT09KHI9bi50ZXh0KSYmKGkudGV4dD1ZbS5zYW5pdGl6ZVRleHQoci50cmltKCksV18pLCciJz09PWkudGV4dFswXSYmJyInPT09aS50ZXh0W2kudGV4dC5sZW5ndGgtMV0mJihpLnRleHQ9aS50ZXh0LnN1YnN0cmluZygxLGkudGV4dC5sZW5ndGgtMSkpKSx2b2lkIDAhPT1uJiYoaS50eXBlPW4udHlwZSxpLnN0cm9rZT1uLnN0cm9rZSxpLmxlbmd0aD1uLmxlbmd0aCksR18ucHVzaChpKX0saXg9ZnVuY3Rpb24odCxlKXt0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dDt2b2lkIDAhPT1WX1tuXSYmVl9bbl0uY2xhc3Nlcy5wdXNoKGUpLHZvaWQgMCE9PVFfW25dJiZRX1tuXS5jbGFzc2VzLnB1c2goZSl9KSl9LGF4PWZ1bmN0aW9uKHQpe3ZhciBlPWF1KCIubWVybWFpZFRvb2x0aXAiKTtudWxsPT09KGUuX2dyb3Vwc3x8ZSlbMF1bMF0mJihlPWF1KCJib2R5IikuYXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsIm1lcm1haWRUb29sdGlwIikuc3R5bGUoIm9wYWNpdHkiLDApKSxhdSh0KS5zZWxlY3QoInN2ZyIpLnNlbGVjdEFsbCgiZy5ub2RlIikub24oIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKCl7dmFyIHQ9YXUodGhpcyk7aWYobnVsbCE9PXQuYXR0cigidGl0bGUiKSl7dmFyIG49dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLnRyYW5zaXRpb24oKS5kdXJhdGlvbigyMDApLnN0eWxlKCJvcGFjaXR5IiwiLjkiKSxlLmh0bWwodC5hdHRyKCJ0aXRsZSIpKS5zdHlsZSgibGVmdCIsd2luZG93LnNjcm9sbFgrbi5sZWZ0KyhuLnJpZ2h0LW4ubGVmdCkvMisicHgiKS5zdHlsZSgidG9wIix3aW5kb3cuc2Nyb2xsWStuLnRvcC0xNCtkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCsicHgiKSx0LmNsYXNzZWQoImhvdmVyIiwhMCl9fSkpLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5zdHlsZSgib3BhY2l0eSIsMCksYXUodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKX0pKX07ZXgucHVzaChheCk7dmFyIG94PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8Wl8ubGVuZ3RoO2UrKylpZihaX1tlXS5pZD09PXQpcmV0dXJuIGU7cmV0dXJuLTF9LHN4PS0xLGN4PVtdLHV4PWZ1bmN0aW9uIHQoZSxuKXt2YXIgcj1aX1tuXS5ub2RlcztpZighKChzeCs9MSk+MmUzKSl7aWYoY3hbc3hdPW4sWl9bbl0uaWQ9PT1lKXJldHVybntyZXN1bHQ6ITAsY291bnQ6MH07Zm9yKHZhciBpPTAsYT0xO2k8ci5sZW5ndGg7KXt2YXIgbz1veChyW2ldKTtpZihvPj0wKXt2YXIgcz10KGUsbyk7aWYocy5yZXN1bHQpcmV0dXJue3Jlc3VsdDohMCxjb3VudDphK3MuY291bnR9O2ErPXMuY291bnR9aSs9MX1yZXR1cm57cmVzdWx0OiExLGNvdW50OmF9fX0sbHg9ZnVuY3Rpb24odCxlKXt2YXIgbj0hMTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lm5vZGVzLmluZGV4T2YoZSk+PTAmJihuPSEwKX0pKSxufSxoeD1mdW5jdGlvbih0LGUpe3ZhciBuPVtdO3JldHVybiB0Lm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHIsaSl7bHgoZSxyKXx8bi5wdXNoKHQubm9kZXNbaV0pfSkpLHtub2RlczpufX07Y29uc3QgZng9e3BhcnNlRGlyZWN0aXZlOmZ1bmN0aW9uKHQsZSxuKXthQy5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxuKX0sZGVmYXVsdENvbmZpZzpmdW5jdGlvbigpe3JldHVybiAkdi5mbG93Y2hhcnR9LGFkZFZlcnRleDpmdW5jdGlvbih0LGUsbixyLGksYSl7dmFyIG8scz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06e30sYz10O3ZvaWQgMCE9PWMmJjAhPT1jLnRyaW0oKS5sZW5ndGgmJih2b2lkIDA9PT1WX1tjXSYmKFZfW2NdPXtpZDpjLGRvbUlkOiRfK2MrIi0iK0hfLHN0eWxlczpbXSxjbGFzc2VzOltdfSksSF8rKyx2b2lkIDAhPT1lPyhXXz1adigpLCciJz09PShvPVltLnNhbml0aXplVGV4dChlLnRyaW0oKSxXXykpWzBdJiYnIic9PT1vW28ubGVuZ3RoLTFdJiYobz1vLnN1YnN0cmluZygxLG8ubGVuZ3RoLTEpKSxWX1tjXS50ZXh0PW8pOnZvaWQgMD09PVZfW2NdLnRleHQmJihWX1tjXS50ZXh0PXQpLHZvaWQgMCE9PW4mJihWX1tjXS50eXBlPW4pLG51bGwhPXImJnIuZm9yRWFjaCgoZnVuY3Rpb24odCl7Vl9bY10uc3R5bGVzLnB1c2godCl9KSksbnVsbCE9aSYmaS5mb3JFYWNoKChmdW5jdGlvbih0KXtWX1tjXS5jbGFzc2VzLnB1c2godCl9KSksdm9pZCAwIT09YSYmKFZfW2NdLmRpcj1hKSxWX1tjXS5wcm9wcz1zKX0sbG9va1VwRG9tSWQ6bngsYWRkTGluazpmdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGE9MDthPGUubGVuZ3RoO2ErKylyeCh0W2ldLGVbYV0sbixyKX0sdXBkYXRlTGlua0ludGVycG9sYXRlOmZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZGVmYXVsdCI9PT10P0dfLmRlZmF1bHRJbnRlcnBvbGF0ZT1lOkdfW3RdLmludGVycG9sYXRlPWV9KSl9LHVwZGF0ZUxpbms6ZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpeyJkZWZhdWx0Ij09PXQ/R18uZGVmYXVsdFN0eWxlPWU6KC0xPT09enYuaXNTdWJzdHJpbmdJbkFycmF5KCJmaWxsIixlKSYmZS5wdXNoKCJmaWxsOm5vbmUiKSxHX1t0XS5zdHlsZT1lKX0pKX0sYWRkQ2xhc3M6ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1YX1t0XSYmKFhfW3RdPXtpZDp0LHN0eWxlczpbXSx0ZXh0U3R5bGVzOltdfSksbnVsbCE9ZSYmZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlLm1hdGNoKCJjb2xvciIpKXt2YXIgbj1lLnJlcGxhY2UoImZpbGwiLCJiZ0ZpbGwiKS5yZXBsYWNlKCJjb2xvciIsImZpbGwiKTtYX1t0XS50ZXh0U3R5bGVzLnB1c2gobil9WF9bdF0uc3R5bGVzLnB1c2goZSl9KSl9LHNldERpcmVjdGlvbjpmdW5jdGlvbih0KXsoVV89dCkubWF0Y2goLy4qPC8pJiYoVV89IlJMIiksVV8ubWF0Y2goLy4qXF4vKSYmKFVfPSJCVCIpLFVfLm1hdGNoKC8uKj4vKSYmKFVfPSJMUiIpLFVfLm1hdGNoKC8uKnYvKSYmKFVfPSJUQiIpfSxzZXRDbGFzczppeCxzZXRUb29sdGlwOmZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWUmJihLX1siZ2VuLTEiPT09cV8/bngodCk6dF09WW0uc2FuaXRpemVUZXh0KGUsV18pKX0pKX0sZ2V0VG9vbHRpcDpmdW5jdGlvbih0KXtyZXR1cm4gS19bdF19LHNldENsaWNrRXZlbnQ6ZnVuY3Rpb24odCxlLG4pe3Quc3BsaXQoIiwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4pe3ZhciByPW54KHQpO2lmKCJsb29zZSI9PT1adigpLnNlY3VyaXR5TGV2ZWwmJnZvaWQgMCE9PWUpe3ZhciBpPVtdO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7aT1uLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdLnRyaW0oKTsnIic9PT1vLmNoYXJBdCgwKSYmJyInPT09by5jaGFyQXQoby5sZW5ndGgtMSkmJihvPW8uc3Vic3RyKDEsby5sZW5ndGgtMikpLGlbYV09b319MD09PWkubGVuZ3RoJiZpLnB1c2godCksdm9pZCAwIT09Vl9bdF0mJihWX1t0XS5oYXZlQ2FsbGJhY2s9ITAsZXgucHVzaCgoZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9IicuY29uY2F0KHIsJyJdJykpO251bGwhPT10JiZ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oKXt2YXIgdDt6di5ydW5GdW5jLmFwcGx5KHp2LFtlXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gel8odCl9KHQ9aSl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB6Xyh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3pfKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpKX0pLCExKX0pKSl9fSh0LGUsbil9KSksaXgodCwiY2xpY2thYmxlIil9LHNldExpbms6ZnVuY3Rpb24odCxlLG4pe3Quc3BsaXQoIiwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2b2lkIDAhPT1WX1t0XSYmKFZfW3RdLmxpbms9enYuZm9ybWF0VXJsKGUsV18pLFZfW3RdLmxpbmtUYXJnZXQ9bil9KSksaXgodCwiY2xpY2thYmxlIil9LGJpbmRGdW5jdGlvbnM6ZnVuY3Rpb24odCl7ZXguZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKX0sZ2V0RGlyZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIFVfLnRyaW0oKX0sZ2V0VmVydGljZXM6ZnVuY3Rpb24oKXtyZXR1cm4gVl99LGdldEVkZ2VzOmZ1bmN0aW9uKCl7cmV0dXJuIEdffSxnZXRDbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJuIFhffSxjbGVhcjpmdW5jdGlvbih0KXtWXz17fSxYXz17fSxHXz1bXSwoZXg9W10pLnB1c2goYXgpLFpfPVtdLFFfPXt9LEpfPTAsS189W10sdHg9ITAscV89dHx8Imdlbi0xIn0sc2V0R2VuOmZ1bmN0aW9uKHQpe3FfPXR8fCJnZW4tMSJ9LGRlZmF1bHRTdHlsZTpmdW5jdGlvbigpe3JldHVybiJmaWxsOiNmZmE7c3Ryb2tlOiAjZjY2OyBzdHJva2Utd2lkdGg6IDNweDsgc3Ryb2tlLWRhc2hhcnJheTogNSwgNTtmaWxsOiNmZmE7c3Ryb2tlOiAjNjY2OyJ9LGFkZFN1YkdyYXBoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LnRyaW0oKSxpPW47dD09PW4mJm4ubWF0Y2goL1xzLykmJihyPXZvaWQgMCk7dmFyIGE9W10scz1mdW5jdGlvbih0KXt2YXIgZSxuPXtib29sZWFuOnt9LG51bWJlcjp7fSxzdHJpbmc6e319LHI9W10saT10LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9WV8odCk7cmV0dXJuIHQuc3RtdCYmImRpciI9PT10LnN0bXQ/KGU9dC52YWx1ZSwhMSk6IiIhPT10LnRyaW0oKSYmKGkgaW4gbj8hbltpXS5oYXNPd25Qcm9wZXJ0eSh0KSYmKG5baV1bdF09ITApOiEoci5pbmRleE9mKHQpPj0wKSYmci5wdXNoKHQpKX0pKTtyZXR1cm57bm9kZUxpc3Q6aSxkaXI6ZX19KGEuY29uY2F0LmFwcGx5KGEsZSkpLGM9cy5ub2RlTGlzdCx1PXMuZGlyO2lmKGE9YywiZ2VuLTEiPT09cV8pe28ud2FybigiTE9PS0lORyBVUCIpO2Zvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKWFbbF09bngoYVtsXSl9cj1yfHwic3ViR3JhcGgiK0pfLGk9aXx8IiIsaT1ZbS5zYW5pdGl6ZVRleHQoaSxXXyksSl8rPTE7dmFyIGg9e2lkOnIsbm9kZXM6YSx0aXRsZTppLnRyaW0oKSxjbGFzc2VzOltdLGRpcjp1fTtyZXR1cm4gby5pbmZvKCJBZGRpbmciLGguaWQsaC5ub2RlcyxoLmRpciksaC5ub2Rlcz1oeChoLFpfKS5ub2RlcyxaXy5wdXNoKGgpLFFfW3JdPWgscn0sZ2V0RGVwdGhGaXJzdFBvczpmdW5jdGlvbih0KXtyZXR1cm4gY3hbdF19LGluZGV4Tm9kZXM6ZnVuY3Rpb24oKXtzeD0tMSxaXy5sZW5ndGg+MCYmdXgoIm5vbmUiLFpfLmxlbmd0aC0xKX0sZ2V0U3ViR3JhcGhzOmZ1bmN0aW9uKCl7cmV0dXJuIFpffSxkZXN0cnVjdExpbms6ZnVuY3Rpb24odCxlKXt2YXIgbixyPWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJpbSgpLG49ZS5zbGljZSgwLC0xKSxyPSJhcnJvd19vcGVuIjtzd2l0Y2goZS5zbGljZSgtMSkpe2Nhc2UieCI6cj0iYXJyb3dfY3Jvc3MiLCJ4Ij09PWVbMF0mJihyPSJkb3VibGVfIityLG49bi5zbGljZSgxKSk7YnJlYWs7Y2FzZSI+IjpyPSJhcnJvd19wb2ludCIsIjwiPT09ZVswXSYmKHI9ImRvdWJsZV8iK3Isbj1uLnNsaWNlKDEpKTticmVhaztjYXNlIm8iOnI9ImFycm93X2NpcmNsZSIsIm8iPT09ZVswXSYmKHI9ImRvdWJsZV8iK3Isbj1uLnNsaWNlKDEpKX12YXIgaT0ibm9ybWFsIixhPW4ubGVuZ3RoLTE7Ij0iPT09blswXSYmKGk9InRoaWNrIik7dmFyIG89ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ZS5sZW5ndGgscj0wLGk9MDtpPG47KytpKSIuIj09PWVbaV0mJisrcjtyZXR1cm4gcn0oMCxuKTtyZXR1cm4gbyYmKGk9ImRvdHRlZCIsYT1vKSx7dHlwZTpyLHN0cm9rZTppLGxlbmd0aDphfX0odCk7aWYoZSl7aWYobj1mdW5jdGlvbih0KXt2YXIgZT10LnRyaW0oKSxuPSJhcnJvd19vcGVuIjtzd2l0Y2goZVswXSl7Y2FzZSI8IjpuPSJhcnJvd19wb2ludCIsZT1lLnNsaWNlKDEpO2JyZWFrO2Nhc2UieCI6bj0iYXJyb3dfY3Jvc3MiLGU9ZS5zbGljZSgxKTticmVhaztjYXNlIm8iOm49ImFycm93X2NpcmNsZSIsZT1lLnNsaWNlKDEpfXZhciByPSJub3JtYWwiO3JldHVybi0xIT09ZS5pbmRleE9mKCI9IikmJihyPSJ0aGljayIpLC0xIT09ZS5pbmRleE9mKCIuIikmJihyPSJkb3R0ZWQiKSx7dHlwZTpuLHN0cm9rZTpyfX0oZSksbi5zdHJva2UhPT1yLnN0cm9rZSlyZXR1cm57dHlwZToiSU5WQUxJRCIsc3Ryb2tlOiJJTlZBTElEIn07aWYoImFycm93X29wZW4iPT09bi50eXBlKW4udHlwZT1yLnR5cGU7ZWxzZXtpZihuLnR5cGUhPT1yLnR5cGUpcmV0dXJue3R5cGU6IklOVkFMSUQiLHN0cm9rZToiSU5WQUxJRCJ9O24udHlwZT0iZG91YmxlXyIrbi50eXBlfXJldHVybiJkb3VibGVfYXJyb3ciPT09bi50eXBlJiYobi50eXBlPSJkb3VibGVfYXJyb3dfcG9pbnQiKSxuLmxlbmd0aD1yLmxlbmd0aCxufXJldHVybiByfSxsZXg6e2ZpcnN0R3JhcGg6ZnVuY3Rpb24oKXtyZXR1cm4hIXR4JiYodHg9ITEsITApfX0sZXhpc3RzOmx4LG1ha2VVbmlxOmh4fTt2YXIgZHg9big3ODA1KSxweD1uLm4oZHgpLHl4PW4oNDk0OSksZ3g9bi5uKHl4KSxteD1uKDgyODQpLHZ4PW4ubihteCk7ZnVuY3Rpb24gYngodCxlLG4pe3ZhciByPS45KihlLndpZHRoK2UuaGVpZ2h0KSxpPVt7eDpyLzIseTowfSx7eDpyLHk6LXIvMn0se3g6ci8yLHk6LXJ9LHt4OjAseTotci8yfV0sYT1OeCh0LHIscixpKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGd4KCkuaW50ZXJzZWN0LnBvbHlnb24obixpLHQpfSxhfWZ1bmN0aW9uIF94KHQsZSxuKXt2YXIgcj1lLmhlaWdodCxpPXIvNCxhPWUud2lkdGgrMippLG89W3t4OmkseTowfSx7eDphLWkseTowfSx7eDphLHk6LXIvMn0se3g6YS1pLHk6LXJ9LHt4OmkseTotcn0se3g6MCx5Oi1yLzJ9XSxzPU54KHQsYSxyLG8pO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gZ3goKS5pbnRlcnNlY3QucG9seWdvbihuLG8sdCl9LHN9ZnVuY3Rpb24geHgodCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDotaS8yLHk6MH0se3g6cix5OjB9LHt4OnIseTotaX0se3g6LWkvMix5Oi1pfSx7eDowLHk6LWkvMn1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiB3eCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4Oi0yKmkvNix5OjB9LHt4OnItaS82LHk6MH0se3g6cisyKmkvNix5Oi1pfSx7eDppLzYseTotaX1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiBreCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4OjIqaS82LHk6MH0se3g6citpLzYseTowfSx7eDpyLTIqaS82LHk6LWl9LHt4Oi1pLzYseTotaX1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiBUeCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4Oi0yKmkvNix5OjB9LHt4OnIrMippLzYseTowfSx7eDpyLWkvNix5Oi1pfSx7eDppLzYseTotaX1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiBFeCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4OmkvNix5OjB9LHt4OnItaS82LHk6MH0se3g6cisyKmkvNix5Oi1pfSx7eDotMippLzYseTotaX1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiBDeCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4OjAseTowfSx7eDpyK2kvMix5OjB9LHt4OnIseTotaS8yfSx7eDpyK2kvMix5Oi1pfSx7eDowLHk6LWl9XSxvPU54KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gZ3goKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gU3godCxlLG4pe3ZhciByPWUuaGVpZ2h0LGk9ZS53aWR0aCtyLzQsYT10Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInJ4IixyLzIpLmF0dHIoInJ5IixyLzIpLmF0dHIoIngiLC1pLzIpLmF0dHIoInkiLC1yLzIpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLHIpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gZ3goKS5pbnRlcnNlY3QucmVjdChuLHQpfSxhfWZ1bmN0aW9uIEF4KHQsZSxuKXt2YXIgcj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6MCx5OjB9LHt4OnIseTowfSx7eDpyLHk6LWl9LHt4OjAseTotaX0se3g6MCx5OjB9LHt4Oi04LHk6MH0se3g6cis4LHk6MH0se3g6cis4LHk6LWl9LHt4Oi04LHk6LWl9LHt4Oi04LHk6MH1dLG89TngodCxyLGksYSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBneCgpLmludGVyc2VjdC5wb2x5Z29uKG4sYSx0KX0sb31mdW5jdGlvbiBNeCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPXIvMixhPWkvKDIuNStyLzUwKSxvPWUuaGVpZ2h0K2Escz0iTSAwLCIrYSsiIGEgIitpKyIsIithKyIgMCwwLDAgIityKyIgMCBhICIraSsiLCIrYSsiIDAsMCwwICIrLXIrIiAwIGwgMCwiK28rIiBhICIraSsiLCIrYSsiIDAsMCwwICIrcisiIDAgbCAwLCIrLW8sYz10LmF0dHIoImxhYmVsLW9mZnNldC15IixhKS5pbnNlcnQoInBhdGgiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJkIixzKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistci8yKyIsIistKG8vMithKSsiKSIpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXt2YXIgZT1neCgpLmludGVyc2VjdC5yZWN0KG4sdCkscj1lLngtbi54O2lmKDAhPWkmJihNYXRoLmFicyhyKTxuLndpZHRoLzJ8fE1hdGguYWJzKHIpPT1uLndpZHRoLzImJk1hdGguYWJzKGUueS1uLnkpPm4uaGVpZ2h0LzItYSkpe3ZhciBvPWEqYSooMS1yKnIvKGkqaSkpOzAhPW8mJihvPU1hdGguc3FydChvKSksbz1hLW8sdC55LW4ueT4wJiYobz0tbyksZS55Kz1vfXJldHVybiBlfSxjfWZ1bmN0aW9uIE54KHQsZSxuLHIpe3JldHVybiB0Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LngrIiwiK3QueX0pKS5qb2luKCIgIikpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1lLzIrIiwiK24vMisiKSIpfWNvbnN0IER4PWZ1bmN0aW9uKHQpe3Quc2hhcGVzKCkucXVlc3Rpb249YngsdC5zaGFwZXMoKS5oZXhhZ29uPV94LHQuc2hhcGVzKCkuc3RhZGl1bT1TeCx0LnNoYXBlcygpLnN1YnJvdXRpbmU9QXgsdC5zaGFwZXMoKS5jeWxpbmRlcj1NeCx0LnNoYXBlcygpLnJlY3RfbGVmdF9pbnZfYXJyb3c9eHgsdC5zaGFwZXMoKS5sZWFuX3JpZ2h0PXd4LHQuc2hhcGVzKCkubGVhbl9sZWZ0PWt4LHQuc2hhcGVzKCkudHJhcGV6b2lkPVR4LHQuc2hhcGVzKCkuaW52X3RyYXBlem9pZD1FeCx0LnNoYXBlcygpLnJlY3RfcmlnaHRfaW52X2Fycm93PUN4fTt2YXIgT3g9e307Y29uc3QgQng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdC5rZXlzKHQpLG49MDtuPGUubGVuZ3RoO24rKylPeFtlW25dXT10W2Vbbl1dfSxMeD1mdW5jdGlvbih0LGUpe28uaW5mbygiRHJhd2luZyBmbG93Y2hhcnQiKSxmeC5jbGVhcigpLGZ4LnNldEdlbigiZ2VuLTEiKTt2YXIgbj1weCgpLnBhcnNlcjtuLnl5PWZ4LG4ucGFyc2UodCk7dmFyIHI9ZnguZ2V0RGlyZWN0aW9uKCk7dm9pZCAwPT09ciYmKHI9IlREIik7Zm9yKHZhciBpLGE9WnYoKS5mbG93Y2hhcnQscz1hLm5vZGVTcGFjaW5nfHw1MCxjPWEucmFua1NwYWNpbmd8fDUwLHU9bmV3KGJiKCkuR3JhcGgpKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6cixub2Rlc2VwOnMscmFua3NlcDpjLG1hcmdpbng6OCxtYXJnaW55Ojh9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLGw9ZnguZ2V0U3ViR3JhcGhzKCksaD1sLmxlbmd0aC0xO2g+PTA7aC0tKWk9bFtoXSxmeC5hZGRWZXJ0ZXgoaS5pZCxpLnRpdGxlLCJncm91cCIsdm9pZCAwLGkuY2xhc3Nlcyk7dmFyIGY9ZnguZ2V0VmVydGljZXMoKTtvLndhcm4oIkdldCB2ZXJ0aWNlcyIsZik7dmFyIGQ9ZnguZ2V0RWRnZXMoKSxwPTA7Zm9yKHA9bC5sZW5ndGgtMTtwPj0wO3AtLSl7aT1sW3BdLG91KCJjbHVzdGVyIikuYXBwZW5kKCJ0ZXh0Iik7Zm9yKHZhciB5PTA7eTxpLm5vZGVzLmxlbmd0aDt5Kyspby53YXJuKCJTZXR0aW5nIHN1YmdyYXBoIixpLm5vZGVzW3ldLGZ4Lmxvb2tVcERvbUlkKGkubm9kZXNbeV0pLGZ4Lmxvb2tVcERvbUlkKGkuaWQpKSx1LnNldFBhcmVudChmeC5sb29rVXBEb21JZChpLm5vZGVzW3ldKSxmeC5sb29rVXBEb21JZChpLmlkKSl9KGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1hdSgnW2lkPSInLmNvbmNhdChuLCciXScpKTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT10W25dLGE9ImRlZmF1bHQiO2kuY2xhc3Nlcy5sZW5ndGg+MCYmKGE9aS5jbGFzc2VzLmpvaW4oIiAiKSk7dmFyIHMsYz1BdihpLnN0eWxlcyksdT12b2lkIDAhPT1pLnRleHQ/aS50ZXh0OmkuaWQ7aWYoam0oWnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBsPXtsYWJlbDp1LnJlcGxhY2UoL2ZhW2xyc2JdPzpmYS1bXHctXSsvZywoZnVuY3Rpb24odCl7cmV0dXJuIjxpIGNsYXNzPSciLmNvbmNhdCh0LnJlcGxhY2UoIjoiLCIgIiksIic+PC9pPiIpfSkpfTsocz12eCgpKHIsbCkubm9kZSgpKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHMpfWVsc2V7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRleHQiKTtoLnNldEF0dHJpYnV0ZSgic3R5bGUiLGMubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpKTtmb3IodmFyIGY9dS5zcGxpdChZbS5saW5lQnJlYWtSZWdleCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidHNwYW4iKTtwLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpLHAuc2V0QXR0cmlidXRlKCJkeSIsIjFlbSIpLHAuc2V0QXR0cmlidXRlKCJ4IiwiMSIpLHAudGV4dENvbnRlbnQ9ZltkXSxoLmFwcGVuZENoaWxkKHApfXM9aH12YXIgeT0wLGc9IiI7c3dpdGNoKGkudHlwZSl7Y2FzZSJyb3VuZCI6eT01LGc9InJlY3QiO2JyZWFrO2Nhc2Uic3F1YXJlIjpnPSJyZWN0IjticmVhaztjYXNlImRpYW1vbmQiOmc9InF1ZXN0aW9uIjticmVhaztjYXNlImhleGFnb24iOmc9ImhleGFnb24iO2JyZWFrO2Nhc2Uib2RkIjpnPSJyZWN0X2xlZnRfaW52X2Fycm93IjticmVhaztjYXNlImxlYW5fcmlnaHQiOmc9ImxlYW5fcmlnaHQiO2JyZWFrO2Nhc2UibGVhbl9sZWZ0IjpnPSJsZWFuX2xlZnQiO2JyZWFrO2Nhc2UidHJhcGV6b2lkIjpnPSJ0cmFwZXpvaWQiO2JyZWFrO2Nhc2UiaW52X3RyYXBlem9pZCI6Zz0iaW52X3RyYXBlem9pZCI7YnJlYWs7Y2FzZSJvZGRfcmlnaHQiOmc9InJlY3RfbGVmdF9pbnZfYXJyb3ciO2JyZWFrO2Nhc2UiY2lyY2xlIjpnPSJjaXJjbGUiO2JyZWFrO2Nhc2UiZWxsaXBzZSI6Zz0iZWxsaXBzZSI7YnJlYWs7Y2FzZSJzdGFkaXVtIjpnPSJzdGFkaXVtIjticmVhaztjYXNlInN1YnJvdXRpbmUiOmc9InN1YnJvdXRpbmUiO2JyZWFrO2Nhc2UiY3lsaW5kZXIiOmc9ImN5bGluZGVyIjticmVhaztkZWZhdWx0Omc9InJlY3QifW8ud2FybigiQWRkaW5nIG5vZGUiLGkuaWQsaS5kb21JZCksZS5zZXROb2RlKGZ4Lmxvb2tVcERvbUlkKGkuaWQpLHtsYWJlbFR5cGU6InN2ZyIsbGFiZWxTdHlsZTpjLmxhYmVsU3R5bGUsc2hhcGU6ZyxsYWJlbDpzLHJ4Onkscnk6eSxjbGFzczphLHN0eWxlOmMuc3R5bGUsaWQ6ZngubG9va1VwRG9tSWQoaS5pZCl9KX0pKX0pKGYsdSxlKSxmdW5jdGlvbih0LGUpe3ZhciBuLHIsaT0wO2lmKHZvaWQgMCE9PXQuZGVmYXVsdFN0eWxlKXt2YXIgYT1Bdih0LmRlZmF1bHRTdHlsZSk7bj1hLnN0eWxlLHI9YS5sYWJlbFN0eWxlfXQuZm9yRWFjaCgoZnVuY3Rpb24oYSl7aSsrO3ZhciBvPSJMLSIrYS5zdGFydCsiLSIrYS5lbmQscz0iTFMtIithLnN0YXJ0LGM9IkxFLSIrYS5lbmQsdT17fTsiYXJyb3dfb3BlbiI9PT1hLnR5cGU/dS5hcnJvd2hlYWQ9Im5vbmUiOnUuYXJyb3doZWFkPSJub3JtYWwiO3ZhciBsPSIiLGg9IiI7aWYodm9pZCAwIT09YS5zdHlsZSl7dmFyIGY9QXYoYS5zdHlsZSk7bD1mLnN0eWxlLGg9Zi5sYWJlbFN0eWxlfWVsc2Ugc3dpdGNoKGEuc3Ryb2tlKXtjYXNlIm5vcm1hbCI6bD0iZmlsbDpub25lIix2b2lkIDAhPT1uJiYobD1uKSx2b2lkIDAhPT1yJiYoaD1yKTticmVhaztjYXNlImRvdHRlZCI6bD0iZmlsbDpub25lO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWRhc2hhcnJheTozOyI7YnJlYWs7Y2FzZSJ0aGljayI6bD0iIHN0cm9rZS13aWR0aDogMy41cHg7ZmlsbDpub25lIn11LnN0eWxlPWwsdS5sYWJlbFN0eWxlPWgsdm9pZCAwIT09YS5pbnRlcnBvbGF0ZT91LmN1cnZlPUN2KGEuaW50ZXJwb2xhdGUsUHUpOnZvaWQgMCE9PXQuZGVmYXVsdEludGVycG9sYXRlP3UuY3VydmU9Q3YodC5kZWZhdWx0SW50ZXJwb2xhdGUsUHUpOnUuY3VydmU9Q3YoT3guY3VydmUsUHUpLHZvaWQgMD09PWEudGV4dD92b2lkIDAhPT1hLnN0eWxlJiYodS5hcnJvd2hlYWRTdHlsZT0iZmlsbDogIzMzMyIpOih1LmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIix1LmxhYmVscG9zPSJjIixqbShadigpLmZsb3djaGFydC5odG1sTGFiZWxzKT8odS5sYWJlbFR5cGU9Imh0bWwiLHUubGFiZWw9JzxzcGFuIGlkPSJMLScuY29uY2F0KG8sJyIgY2xhc3M9ImVkZ2VMYWJlbCBMLScpLmNvbmNhdChzLCInIEwtIikuY29uY2F0KGMsJyI+JykuY29uY2F0KGEudGV4dC5yZXBsYWNlKC9mYVtscnNiXT86ZmEtW1x3LV0rL2csKGZ1bmN0aW9uKHQpe3JldHVybiI8aSBjbGFzcz0nIi5jb25jYXQodC5yZXBsYWNlKCI6IiwiICIpLCInPjwvaT4iKX0pKSwiPC9zcGFuPiIpKToodS5sYWJlbFR5cGU9InRleHQiLHUubGFiZWw9YS50ZXh0LnJlcGxhY2UoWW0ubGluZUJyZWFrUmVnZXgsIlxuIiksdm9pZCAwPT09YS5zdHlsZSYmKHUuc3R5bGU9dS5zdHlsZXx8InN0cm9rZTogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDtmaWxsOm5vbmUiKSx1LmxhYmVsU3R5bGU9dS5sYWJlbFN0eWxlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpKSx1LmlkPW8sdS5jbGFzcz1zKyIgIitjLHUubWlubGVuPWEubGVuZ3RofHwxLGUuc2V0RWRnZShmeC5sb29rVXBEb21JZChhLnN0YXJ0KSxmeC5sb29rVXBEb21JZChhLmVuZCksdSxpKX0pKX0oZCx1KTt2YXIgZz1uZXcoMCxneCgpLnJlbmRlcik7RHgoZyksZy5hcnJvd3MoKS5ub25lPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMCAwIEwgMCAwIHoiKTtneCgpLnV0aWwuYXBwbHlTdHlsZShpLG5bcisiU3R5bGUiXSl9LGcuYXJyb3dzKCkubm9ybWFsPWZ1bmN0aW9uKHQsZSl7dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDAgTCAxMCA1IEwgMCAxMCB6IikuYXR0cigiY2xhc3MiLCJhcnJvd2hlYWRQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKX07dmFyIG09YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSk7bS5hdHRyKCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKSxvLndhcm4odSk7dmFyIHY9YXUoIiMiK2UrIiBnIik7Zyh2LHUpLHYuc2VsZWN0QWxsKCJnLm5vZGUiKS5hdHRyKCJ0aXRsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ4LmdldFRvb2x0aXAodGhpcy5pZCl9KSk7dmFyIGI9YS5kaWFncmFtUGFkZGluZyxfPW0ubm9kZSgpLmdldEJCb3goKSx4PV8ud2lkdGgrMipiLHc9Xy5oZWlnaHQrMipiO2p2KG0sdyx4LGEudXNlTWF4V2lkdGgpO3ZhciBrPSIiLmNvbmNhdChfLngtYiwiICIpLmNvbmNhdChfLnktYiwiICIpLmNvbmNhdCh4LCIgIikuY29uY2F0KHcpO2ZvcihvLmRlYnVnKCJ2aWV3Qm94ICIuY29uY2F0KGspKSxtLmF0dHIoInZpZXdCb3giLGspLGZ4LmluZGV4Tm9kZXMoInN1YkdyYXBoIitwKSxwPTA7cDxsLmxlbmd0aDtwKyspaWYoInVuZGVmaW5lZCIhPT0oaT1sW3BdKS50aXRsZSl7dmFyIFQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiIyIrZSsnIFtpZD0iJytmeC5sb29rVXBEb21JZChpLmlkKSsnIl0gcmVjdCcpLEU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiIyIrZSsnIFtpZD0iJytmeC5sb29rVXBEb21JZChpLmlkKSsnIl0nKSxDPVRbMF0ueC5iYXNlVmFsLnZhbHVlLFM9VFswXS55LmJhc2VWYWwudmFsdWUsQT1UWzBdLndpZHRoLmJhc2VWYWwudmFsdWUsTT1hdShFWzBdKS5zZWxlY3QoIi5sYWJlbCIpO00uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIuY29uY2F0KEMrQS8yLCIsICIpLmNvbmNhdChTKzE0LCIpIikpLE0uYXR0cigiaWQiLGUrIlRleHQiKTtmb3IodmFyIE49MDtOPGkuY2xhc3Nlcy5sZW5ndGg7TisrKUVbMF0uY2xhc3NMaXN0LmFkZChpLmNsYXNzZXNbTl0pfWptKGEuaHRtbExhYmVscyk7Zm9yKHZhciBEPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJytlKyciXSAuZWRnZUxhYmVsIC5sYWJlbCcpLE89MDtPPEQubGVuZ3RoO08rKyl7dmFyIEI9RFtPXSxMPUIuZ2V0QkJveCgpLEk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlY3QiKTtJLnNldEF0dHJpYnV0ZSgicngiLDApLEkuc2V0QXR0cmlidXRlKCJyeSIsMCksSS5zZXRBdHRyaWJ1dGUoIndpZHRoIixMLndpZHRoKSxJLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixMLmhlaWdodCksQi5pbnNlcnRCZWZvcmUoSSxCLmZpcnN0Q2hpbGQpfU9iamVjdC5rZXlzKGYpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWZbdF07aWYobi5saW5rKXt2YXIgcj1hdSgiIyIrZSsnIFtpZD0iJytmeC5sb29rVXBEb21JZCh0KSsnIl0nKTtpZihyKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYSIpO2kuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiY2xhc3MiLG4uY2xhc3Nlcy5qb2luKCIgIikpLGkuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiaHJlZiIsbi5saW5rKSxpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlbCIsIm5vb3BlbmVyIiksbi5saW5rVGFyZ2V0JiZpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRhcmdldCIsbi5saW5rVGFyZ2V0KTt2YXIgYT1yLmluc2VydCgoZnVuY3Rpb24oKXtyZXR1cm4gaX0pLCI6Zmlyc3QtY2hpbGQiKSxvPXIuc2VsZWN0KCIubGFiZWwtY29udGFpbmVyIik7byYmYS5hcHBlbmQoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ubm9kZSgpfSkpO3ZhciBzPXIuc2VsZWN0KCIubGFiZWwiKTtzJiZhLmFwcGVuZCgoZnVuY3Rpb24oKXtyZXR1cm4gcy5ub2RlKCl9KSl9fX0pKX07dmFyIEl4PXt9O2NvbnN0IFJ4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3Qua2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspSXhbZVtuXV09dFtlW25dXX0sRng9ZnVuY3Rpb24odCxlKXtvLmluZm8oIkRyYXdpbmcgZmxvd2NoYXJ0IiksZnguY2xlYXIoKSxmeC5zZXRHZW4oImdlbi0yIik7dmFyIG49cHgoKS5wYXJzZXI7bi55eT1meCxuLnBhcnNlKHQpO3ZhciByPWZ4LmdldERpcmVjdGlvbigpO3ZvaWQgMD09PXImJihyPSJURCIpO3ZhciBpLGE9WnYoKS5mbG93Y2hhcnQscz1hLm5vZGVTcGFjaW5nfHw1MCxjPWEucmFua1NwYWNpbmd8fDUwLHU9bmV3KGJiKCkuR3JhcGgpKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6cixub2Rlc2VwOnMscmFua3NlcDpjLG1hcmdpbng6OCxtYXJnaW55Ojh9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLGw9ZnguZ2V0U3ViR3JhcGhzKCk7by5pbmZvKCJTdWJncmFwaHMgLSAiLGwpO2Zvcih2YXIgaD1sLmxlbmd0aC0xO2g+PTA7aC0tKWk9bFtoXSxvLmluZm8oIlN1YmdyYXBoIC0gIixpKSxmeC5hZGRWZXJ0ZXgoaS5pZCxpLnRpdGxlLCJncm91cCIsdm9pZCAwLGkuY2xhc3NlcyxpLmRpcik7dmFyIGY9ZnguZ2V0VmVydGljZXMoKSxkPWZ4LmdldEVkZ2VzKCk7by5pbmZvKGQpO3ZhciBwPTA7Zm9yKHA9bC5sZW5ndGgtMTtwPj0wO3AtLSl7aT1sW3BdLG91KCJjbHVzdGVyIikuYXBwZW5kKCJ0ZXh0Iik7Zm9yKHZhciB5PTA7eTxpLm5vZGVzLmxlbmd0aDt5Kyspby5pbmZvKCJTZXR0aW5nIHVwIHN1YmdyYXBocyIsaS5ub2Rlc1t5XSxpLmlkKSx1LnNldFBhcmVudChpLm5vZGVzW3ldLGkuaWQpfShmdW5jdGlvbih0LGUsbil7dmFyIHI9YXUoJ1tpZD0iJy5jb25jYXQobiwnIl0nKSk7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9dFtuXSxhPSJkZWZhdWx0IjtpLmNsYXNzZXMubGVuZ3RoPjAmJihhPWkuY2xhc3Nlcy5qb2luKCIgIikpO3ZhciBzLGM9QXYoaS5zdHlsZXMpLHU9dm9pZCAwIT09aS50ZXh0P2kudGV4dDppLmlkO2lmKGptKFp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgbD17bGFiZWw6dS5yZXBsYWNlKC9mYVtscnNiXT86ZmEtW1x3LV0rL2csKGZ1bmN0aW9uKHQpe3JldHVybiI8aSBjbGFzcz0nIi5jb25jYXQodC5yZXBsYWNlKCI6IiwiICIpLCInPjwvaT4iKX0pKX07KHM9dngoKShyLGwpLm5vZGUoKSkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKX1lbHNle3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7aC5zZXRBdHRyaWJ1dGUoInN0eWxlIixjLmxhYmVsU3R5bGUucmVwbGFjZSgiY29sb3I6IiwiZmlsbDoiKSk7Zm9yKHZhciBmPXUuc3BsaXQoWW0ubGluZUJyZWFrUmVnZXgpLGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7cC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxwLnNldEF0dHJpYnV0ZSgiZHkiLCIxZW0iKSxwLnNldEF0dHJpYnV0ZSgieCIsIjEiKSxwLnRleHRDb250ZW50PWZbZF0saC5hcHBlbmRDaGlsZChwKX1zPWh9dmFyIHk9MCxnPSIiO3N3aXRjaChpLnR5cGUpe2Nhc2Uicm91bmQiOnk9NSxnPSJyZWN0IjticmVhaztjYXNlInNxdWFyZSI6Zz0icmVjdCI7YnJlYWs7Y2FzZSJkaWFtb25kIjpnPSJxdWVzdGlvbiI7YnJlYWs7Y2FzZSJoZXhhZ29uIjpnPSJoZXhhZ29uIjticmVhaztjYXNlIm9kZCI6Zz0icmVjdF9sZWZ0X2ludl9hcnJvdyI7YnJlYWs7Y2FzZSJsZWFuX3JpZ2h0IjpnPSJsZWFuX3JpZ2h0IjticmVhaztjYXNlImxlYW5fbGVmdCI6Zz0ibGVhbl9sZWZ0IjticmVhaztjYXNlInRyYXBlem9pZCI6Zz0idHJhcGV6b2lkIjticmVhaztjYXNlImludl90cmFwZXpvaWQiOmc9Imludl90cmFwZXpvaWQiO2JyZWFrO2Nhc2Uib2RkX3JpZ2h0IjpnPSJyZWN0X2xlZnRfaW52X2Fycm93IjticmVhaztjYXNlImNpcmNsZSI6Zz0iY2lyY2xlIjticmVhaztjYXNlImVsbGlwc2UiOmc9ImVsbGlwc2UiO2JyZWFrO2Nhc2Uic3RhZGl1bSI6Zz0ic3RhZGl1bSI7YnJlYWs7Y2FzZSJzdWJyb3V0aW5lIjpnPSJzdWJyb3V0aW5lIjticmVhaztjYXNlImN5bGluZGVyIjpnPSJjeWxpbmRlciI7YnJlYWs7ZGVmYXVsdDpnPSJyZWN0In1lLnNldE5vZGUoaS5pZCx7bGFiZWxTdHlsZTpjLmxhYmVsU3R5bGUsc2hhcGU6ZyxsYWJlbFRleHQ6dSxyeDp5LHJ5OnksY2xhc3M6YSxzdHlsZTpjLnN0eWxlLGlkOmkuaWQsbGluazppLmxpbmssbGlua1RhcmdldDppLmxpbmtUYXJnZXQsdG9vbHRpcDpmeC5nZXRUb29sdGlwKGkuaWQpfHwiIixkb21JZDpmeC5sb29rVXBEb21JZChpLmlkKSxoYXZlQ2FsbGJhY2s6aS5oYXZlQ2FsbGJhY2ssd2lkdGg6Imdyb3VwIj09PWkudHlwZT81MDA6dm9pZCAwLGRpcjppLmRpcix0eXBlOmkudHlwZSxwcm9wczppLnByb3BzLHBhZGRpbmc6WnYoKS5mbG93Y2hhcnQucGFkZGluZ30pLG8uaW5mbygic2V0Tm9kZSIse2xhYmVsU3R5bGU6Yy5sYWJlbFN0eWxlLHNoYXBlOmcsbGFiZWxUZXh0OnUscng6eSxyeTp5LGNsYXNzOmEsc3R5bGU6Yy5zdHlsZSxpZDppLmlkLGRvbUlkOmZ4Lmxvb2tVcERvbUlkKGkuaWQpLHdpZHRoOiJncm91cCI9PT1pLnR5cGU/NTAwOnZvaWQgMCx0eXBlOmkudHlwZSxkaXI6aS5kaXIscHJvcHM6aS5wcm9wcyxwYWRkaW5nOlp2KCkuZmxvd2NoYXJ0LnBhZGRpbmd9KX0pKX0pKGYsdSxlKSxmdW5jdGlvbih0LGUpe28uaW5mbygiYWJjNzggZWRnZXMgPSAiLHQpO3ZhciBuLHIsaT0wLGE9e307aWYodm9pZCAwIT09dC5kZWZhdWx0U3R5bGUpe3ZhciBzPUF2KHQuZGVmYXVsdFN0eWxlKTtuPXMuc3R5bGUscj1zLmxhYmVsU3R5bGV9dC5mb3JFYWNoKChmdW5jdGlvbihzKXtpKys7dmFyIGM9IkwtIitzLnN0YXJ0KyItIitzLmVuZDt2b2lkIDA9PT1hW2NdPyhhW2NdPTAsby5pbmZvKCJhYmM3OCBuZXcgZW50cnkiLGMsYVtjXSkpOihhW2NdKyssby5pbmZvKCJhYmM3OCBuZXcgZW50cnkiLGMsYVtjXSkpO3ZhciB1PWMrIi0iK2FbY107by5pbmZvKCJhYmM3OCBuZXcgbGluayBpZCB0byBiZSB1c2VkIGlzIixjLHUsYVtjXSk7dmFyIGw9IkxTLSIrcy5zdGFydCxoPSJMRS0iK3MuZW5kLGY9e3N0eWxlOiIiLGxhYmVsU3R5bGU6IiJ9O3N3aXRjaChmLm1pbmxlbj1zLmxlbmd0aHx8MSwiYXJyb3dfb3BlbiI9PT1zLnR5cGU/Zi5hcnJvd2hlYWQ9Im5vbmUiOmYuYXJyb3doZWFkPSJub3JtYWwiLGYuYXJyb3dUeXBlU3RhcnQ9ImFycm93X29wZW4iLGYuYXJyb3dUeXBlRW5kPSJhcnJvd19vcGVuIixzLnR5cGUpe2Nhc2UiZG91YmxlX2Fycm93X2Nyb3NzIjpmLmFycm93VHlwZVN0YXJ0PSJhcnJvd19jcm9zcyI7Y2FzZSJhcnJvd19jcm9zcyI6Zi5hcnJvd1R5cGVFbmQ9ImFycm93X2Nyb3NzIjticmVhaztjYXNlImRvdWJsZV9hcnJvd19wb2ludCI6Zi5hcnJvd1R5cGVTdGFydD0iYXJyb3dfcG9pbnQiO2Nhc2UiYXJyb3dfcG9pbnQiOmYuYXJyb3dUeXBlRW5kPSJhcnJvd19wb2ludCI7YnJlYWs7Y2FzZSJkb3VibGVfYXJyb3dfY2lyY2xlIjpmLmFycm93VHlwZVN0YXJ0PSJhcnJvd19jaXJjbGUiO2Nhc2UiYXJyb3dfY2lyY2xlIjpmLmFycm93VHlwZUVuZD0iYXJyb3dfY2lyY2xlIn12YXIgZD0iIixwPSIiO3N3aXRjaChzLnN0cm9rZSl7Y2FzZSJub3JtYWwiOmQ9ImZpbGw6bm9uZTsiLHZvaWQgMCE9PW4mJihkPW4pLHZvaWQgMCE9PXImJihwPXIpLGYudGhpY2tuZXNzPSJub3JtYWwiLGYucGF0dGVybj0ic29saWQiO2JyZWFrO2Nhc2UiZG90dGVkIjpmLnRoaWNrbmVzcz0ibm9ybWFsIixmLnBhdHRlcm49ImRvdHRlZCIsZi5zdHlsZT0iZmlsbDpub25lO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWRhc2hhcnJheTozOyI7YnJlYWs7Y2FzZSJ0aGljayI6Zi50aGlja25lc3M9InRoaWNrIixmLnBhdHRlcm49InNvbGlkIixmLnN0eWxlPSJzdHJva2Utd2lkdGg6IDMuNXB4O2ZpbGw6bm9uZTsifWlmKHZvaWQgMCE9PXMuc3R5bGUpe3ZhciB5PUF2KHMuc3R5bGUpO2Q9eS5zdHlsZSxwPXkubGFiZWxTdHlsZX1mLnN0eWxlPWYuc3R5bGUrPWQsZi5sYWJlbFN0eWxlPWYubGFiZWxTdHlsZSs9cCx2b2lkIDAhPT1zLmludGVycG9sYXRlP2YuY3VydmU9Q3Yocy5pbnRlcnBvbGF0ZSxQdSk6dm9pZCAwIT09dC5kZWZhdWx0SW50ZXJwb2xhdGU/Zi5jdXJ2ZT1Ddih0LmRlZmF1bHRJbnRlcnBvbGF0ZSxQdSk6Zi5jdXJ2ZT1DdihJeC5jdXJ2ZSxQdSksdm9pZCAwPT09cy50ZXh0P3ZvaWQgMCE9PXMuc3R5bGUmJihmLmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIik6KGYuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiLGYubGFiZWxwb3M9ImMiKSxmLmxhYmVsVHlwZT0idGV4dCIsZi5sYWJlbD1zLnRleHQucmVwbGFjZShZbS5saW5lQnJlYWtSZWdleCwiXG4iKSx2b2lkIDA9PT1zLnN0eWxlJiYoZi5zdHlsZT1mLnN0eWxlfHwic3Ryb2tlOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O2ZpbGw6bm9uZTsiKSxmLmxhYmVsU3R5bGU9Zi5sYWJlbFN0eWxlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IiksZi5pZD11LGYuY2xhc3Nlcz0iZmxvd2NoYXJ0LWxpbmsgIitsKyIgIitoLGUuc2V0RWRnZShzLnN0YXJ0LHMuZW5kLGYsaSl9KSl9KGQsdSk7dmFyIGc9YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSk7Zy5hdHRyKCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKTt2YXIgbT1hdSgiIyIrZSsiIGciKTtrXyhtLHUsWyJwb2ludCIsImNpcmNsZSIsImNyb3NzIl0sImZsb3djaGFydCIsZSk7dmFyIHY9YS5kaWFncmFtUGFkZGluZyxiPWcubm9kZSgpLmdldEJCb3goKSxfPWIud2lkdGgrMip2LHg9Yi5oZWlnaHQrMip2O2lmKG8uZGVidWcoIm5ldyBWaWV3Qm94IDAgMCAiLmNvbmNhdChfLCIgIikuY29uY2F0KHgpLCJ0cmFuc2xhdGUoIi5jb25jYXQodi11Ll9sYWJlbC5tYXJnaW54LCIsICIpLmNvbmNhdCh2LXUuX2xhYmVsLm1hcmdpbnksIikiKSksanYoZyx4LF8sYS51c2VNYXhXaWR0aCksZy5hdHRyKCJ2aWV3Qm94IiwiMCAwICIuY29uY2F0KF8sIiAiKS5jb25jYXQoeCkpLGcuc2VsZWN0KCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIuY29uY2F0KHYtdS5fbGFiZWwubWFyZ2lueCwiLCAiKS5jb25jYXQodi1iLnksIikiKSksZnguaW5kZXhOb2Rlcygic3ViR3JhcGgiK3ApLCFhLmh0bWxMYWJlbHMpZm9yKHZhciB3PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJytlKyciXSAuZWRnZUxhYmVsIC5sYWJlbCcpLGs9MDtrPHcubGVuZ3RoO2srKyl7dmFyIFQ9d1trXSxFPVQuZ2V0QkJveCgpLEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlY3QiKTtDLnNldEF0dHJpYnV0ZSgicngiLDApLEMuc2V0QXR0cmlidXRlKCJyeSIsMCksQy5zZXRBdHRyaWJ1dGUoIndpZHRoIixFLndpZHRoKSxDLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixFLmhlaWdodCksVC5pbnNlcnRCZWZvcmUoQyxULmZpcnN0Q2hpbGQpfU9iamVjdC5rZXlzKGYpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWZbdF07aWYobi5saW5rKXt2YXIgcj1hdSgiIyIrZSsnIFtpZD0iJyt0KyciXScpO2lmKHIpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhIik7aS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjbGFzcyIsbi5jbGFzc2VzLmpvaW4oIiAiKSksaS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJocmVmIixuLmxpbmspLGkuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicmVsIiwibm9vcGVuZXIiKSxuLmxpbmtUYXJnZXQmJmkuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidGFyZ2V0IixuLmxpbmtUYXJnZXQpO3ZhciBhPXIuaW5zZXJ0KChmdW5jdGlvbigpe3JldHVybiBpfSksIjpmaXJzdC1jaGlsZCIpLG89ci5zZWxlY3QoIi5sYWJlbC1jb250YWluZXIiKTtvJiZhLmFwcGVuZCgoZnVuY3Rpb24oKXtyZXR1cm4gby5ub2RlKCl9KSk7dmFyIHM9ci5zZWxlY3QoIi5sYWJlbCIpO3MmJmEuYXBwZW5kKChmdW5jdGlvbigpe3JldHVybiBzLm5vZGUoKX0pKX19fSkpfTtmdW5jdGlvbiBQeCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBqeCxZeCx6eD0iIixVeD0iIixxeD0iIiwkeD1bXSxIeD1bXSxXeD0iIixWeD1bXSxHeD1bXSxYeD0iIixaeD1bImFjdGl2ZSIsImRvbmUiLCJjcml0IiwibWlsZXN0b25lIl0sUXg9W10sS3g9ITEsSng9ITEsdHc9MCxldz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4hKHIuaW5kZXhPZih0LmZvcm1hdChlLnRyaW0oKSkpPj0wKSYmKHQuaXNvV2Vla2RheSgpPj02JiZuLmluZGV4T2YoIndlZWtlbmRzIik+PTB8fG4uaW5kZXhPZih0LmZvcm1hdCgiZGRkZCIpLnRvTG93ZXJDYXNlKCkpPj0wfHxuLmluZGV4T2YodC5mb3JtYXQoZS50cmltKCkpKT49MCl9LG53PWZ1bmN0aW9uKHQsZSxuLHIpe2lmKG4ubGVuZ3RoJiYhdC5tYW51YWxFbmRUaW1lKXt2YXIgYT1pKCkodC5zdGFydFRpbWUsZSwhMCk7YS5hZGQoMSwiZCIpO3ZhciBvPWkoKSh0LmVuZFRpbWUsZSwhMCkscz1ydyhhLG8sZSxuLHIpO3QuZW5kVGltZT1vLnRvRGF0ZSgpLHQucmVuZGVyRW5kVGltZT1zfX0scnc9ZnVuY3Rpb24odCxlLG4scixpKXtmb3IodmFyIGE9ITEsbz1udWxsO3Q8PWU7KWF8fChvPWUudG9EYXRlKCkpLChhPWV3KHQsbixyLGkpKSYmZS5hZGQoMSwiZCIpLHQuYWRkKDEsImQiKTtyZXR1cm4gb30saXc9ZnVuY3Rpb24odCxlLG4pe249bi50cmltKCk7dmFyIHI9L15hZnRlclxzKyhbXGRcdy0gXSspLy5leGVjKG4udHJpbSgpKTtpZihudWxsIT09cil7dmFyIGE9bnVsbDtpZihyWzFdLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9aHcodCk7dm9pZCAwIT09ZSYmKGE/ZS5lbmRUaW1lPmEuZW5kVGltZSYmKGE9ZSk6YT1lKX0pKSxhKXJldHVybiBhLmVuZFRpbWU7dmFyIHM9bmV3IERhdGU7cmV0dXJuIHMuc2V0SG91cnMoMCwwLDAsMCksc312YXIgYz1pKCkobixlLnRyaW0oKSwhMCk7cmV0dXJuIGMuaXNWYWxpZCgpP2MudG9EYXRlKCk6KG8uZGVidWcoIkludmFsaWQgZGF0ZToiK24pLG8uZGVidWcoIldpdGggZGF0ZSBmb3JtYXQ6IitlLnRyaW0oKSksbmV3IERhdGUpfSxhdz1mdW5jdGlvbih0LGUpe2lmKG51bGwhPT10KXN3aXRjaCh0WzJdKXtjYXNlInMiOmUuYWRkKHRbMV0sInNlY29uZHMiKTticmVhaztjYXNlIm0iOmUuYWRkKHRbMV0sIm1pbnV0ZXMiKTticmVhaztjYXNlImgiOmUuYWRkKHRbMV0sImhvdXJzIik7YnJlYWs7Y2FzZSJkIjplLmFkZCh0WzFdLCJkYXlzIik7YnJlYWs7Y2FzZSJ3IjplLmFkZCh0WzFdLCJ3ZWVrcyIpfXJldHVybiBlLnRvRGF0ZSgpfSxvdz1mdW5jdGlvbih0LGUsbixyKXtyPXJ8fCExLG49bi50cmltKCk7dmFyIGE9aSgpKG4sZS50cmltKCksITApO3JldHVybiBhLmlzVmFsaWQoKT8ociYmYS5hZGQoMSwiZCIpLGEudG9EYXRlKCkpOmF3KC9eKFtcZF0rKShbd2RobXNdKS8uZXhlYyhuLnRyaW0oKSksaSgpKHQpKX0sc3c9MCxjdz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD8idGFzayIrKHN3Kz0xKTp0fSx1dz1bXSxsdz17fSxodz1mdW5jdGlvbih0KXt2YXIgZT1sd1t0XTtyZXR1cm4gdXdbZV19LGZ3PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWZ1bmN0aW9uKHQpe3ZhciBlPXV3W3RdLG49IiI7c3dpdGNoKHV3W3RdLnJhdy5zdGFydFRpbWUudHlwZSl7Y2FzZSJwcmV2VGFza0VuZCI6dmFyIHI9aHcoZS5wcmV2VGFza0lkKTtlLnN0YXJ0VGltZT1yLmVuZFRpbWU7YnJlYWs7Y2FzZSJnZXRTdGFydERhdGUiOihuPWl3KDAsengsdXdbdF0ucmF3LnN0YXJ0VGltZS5zdGFydERhdGEpKSYmKHV3W3RdLnN0YXJ0VGltZT1uKX1yZXR1cm4gdXdbdF0uc3RhcnRUaW1lJiYodXdbdF0uZW5kVGltZT1vdyh1d1t0XS5zdGFydFRpbWUsengsdXdbdF0ucmF3LmVuZFRpbWUuZGF0YSxLeCksdXdbdF0uZW5kVGltZSYmKHV3W3RdLnByb2Nlc3NlZD0hMCx1d1t0XS5tYW51YWxFbmRUaW1lPWkoKSh1d1t0XS5yYXcuZW5kVGltZS5kYXRhLCJZWVlZLU1NLUREIiwhMCkuaXNWYWxpZCgpLG53KHV3W3RdLHp4LEh4LCR4KSkpLHV3W3RdLnByb2Nlc3NlZH0sZT0hMCxuPTA7bjx1dy5sZW5ndGg7bisrKXQobiksZT1lJiZ1d1tuXS5wcm9jZXNzZWQ7cmV0dXJuIGV9LGR3PWZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWh3KHQpO3ZvaWQgMCE9PW4mJm4uY2xhc3Nlcy5wdXNoKGUpfSkpfSxwdz1mdW5jdGlvbih0LGUpe1F4LnB1c2goKGZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkPSInLmNvbmNhdCh0LCciXScpKTtudWxsIT09biYmbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKCl7ZSgpfSkpfSkpLFF4LnB1c2goKGZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkPSInLmNvbmNhdCh0LCctdGV4dCJdJykpO251bGwhPT1uJiZuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oKXtlKCl9KSl9KSl9O2NvbnN0IHl3PXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLmdhbnR0fSxjbGVhcjpmdW5jdGlvbigpe1Z4PVtdLEd4PVtdLFh4PSIiLFF4PVtdLFd4PSIiLHN3PTAsang9dm9pZCAwLFl4PXZvaWQgMCx1dz1bXSx6eD0iIixVeD0iIixxeD0iIiwkeD1bXSxIeD1bXSxLeD0hMSxKeD0hMSx0dz0wfSxzZXREYXRlRm9ybWF0OmZ1bmN0aW9uKHQpe3p4PXR9LGdldERhdGVGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4genh9LGVuYWJsZUluY2x1c2l2ZUVuZERhdGVzOmZ1bmN0aW9uKCl7S3g9ITB9LGVuZERhdGVzQXJlSW5jbHVzaXZlOmZ1bmN0aW9uKCl7cmV0dXJuIEt4fSxlbmFibGVUb3BBeGlzOmZ1bmN0aW9uKCl7Sng9ITB9LHRvcEF4aXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEp4fSxzZXRBeGlzRm9ybWF0OmZ1bmN0aW9uKHQpe1V4PXR9LGdldEF4aXNGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVXh9LHNldFRvZGF5TWFya2VyOmZ1bmN0aW9uKHQpe3F4PXR9LGdldFRvZGF5TWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHF4fSxzZXRUaXRsZTpmdW5jdGlvbih0KXtXeD10fSxnZXRUaXRsZTpmdW5jdGlvbigpe3JldHVybiBXeH0sYWRkU2VjdGlvbjpmdW5jdGlvbih0KXtYeD10LFZ4LnB1c2godCl9LGdldFNlY3Rpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIFZ4fSxnZXRUYXNrczpmdW5jdGlvbigpe2Zvcih2YXIgdD1mdygpLGU9MDshdCYmZTwxMDspdD1mdygpLGUrKztyZXR1cm4gR3g9dXd9LGFkZFRhc2s6ZnVuY3Rpb24odCxlKXt2YXIgbj17c2VjdGlvbjpYeCx0eXBlOlh4LHByb2Nlc3NlZDohMSxtYW51YWxFbmRUaW1lOiExLHJlbmRlckVuZFRpbWU6bnVsbCxyYXc6e2RhdGE6ZX0sdGFzazp0LGNsYXNzZXM6W119LHI9ZnVuY3Rpb24odCxlKXt2YXIgbj0oIjoiPT09ZS5zdWJzdHIoMCwxKT9lLnN1YnN0cigxLGUubGVuZ3RoKTplKS5zcGxpdCgiLCIpLHI9e307Z3cobixyLFp4KTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldPW5baV0udHJpbSgpO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAxOnIuaWQ9Y3coKSxyLnN0YXJ0VGltZT17dHlwZToicHJldlRhc2tFbmQiLGlkOnR9LHIuZW5kVGltZT17ZGF0YTpuWzBdfTticmVhaztjYXNlIDI6ci5pZD1jdygpLHIuc3RhcnRUaW1lPXt0eXBlOiJnZXRTdGFydERhdGUiLHN0YXJ0RGF0YTpuWzBdfSxyLmVuZFRpbWU9e2RhdGE6blsxXX07YnJlYWs7Y2FzZSAzOnIuaWQ9Y3coblswXSksci5zdGFydFRpbWU9e3R5cGU6ImdldFN0YXJ0RGF0ZSIsc3RhcnREYXRhOm5bMV19LHIuZW5kVGltZT17ZGF0YTpuWzJdfX1yZXR1cm4gcn0oWXgsZSk7bi5yYXcuc3RhcnRUaW1lPXIuc3RhcnRUaW1lLG4ucmF3LmVuZFRpbWU9ci5lbmRUaW1lLG4uaWQ9ci5pZCxuLnByZXZUYXNrSWQ9WXgsbi5hY3RpdmU9ci5hY3RpdmUsbi5kb25lPXIuZG9uZSxuLmNyaXQ9ci5jcml0LG4ubWlsZXN0b25lPXIubWlsZXN0b25lLG4ub3JkZXI9dHcsdHcrKzt2YXIgaT11dy5wdXNoKG4pO1l4PW4uaWQsbHdbbi5pZF09aS0xfSxmaW5kVGFza0J5SWQ6aHcsYWRkVGFza09yZzpmdW5jdGlvbih0LGUpe3ZhciBuPXtzZWN0aW9uOlh4LHR5cGU6WHgsZGVzY3JpcHRpb246dCx0YXNrOnQsY2xhc3NlczpbXX0scj1mdW5jdGlvbih0LGUpe3ZhciBuPSgiOiI9PT1lLnN1YnN0cigwLDEpP2Uuc3Vic3RyKDEsZS5sZW5ndGgpOmUpLnNwbGl0KCIsIikscj17fTtndyhuLHIsWngpO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKW5bYV09blthXS50cmltKCk7dmFyIG89IiI7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDE6ci5pZD1jdygpLHIuc3RhcnRUaW1lPXQuZW5kVGltZSxvPW5bMF07YnJlYWs7Y2FzZSAyOnIuaWQ9Y3coKSxyLnN0YXJ0VGltZT1pdygwLHp4LG5bMF0pLG89blsxXTticmVhaztjYXNlIDM6ci5pZD1jdyhuWzBdKSxyLnN0YXJ0VGltZT1pdygwLHp4LG5bMV0pLG89blsyXX1yZXR1cm4gbyYmKHIuZW5kVGltZT1vdyhyLnN0YXJ0VGltZSx6eCxvLEt4KSxyLm1hbnVhbEVuZFRpbWU9aSgpKG8sIllZWVktTU0tREQiLCEwKS5pc1ZhbGlkKCksbncocix6eCxIeCwkeCkpLHJ9KGp4LGUpO24uc3RhcnRUaW1lPXIuc3RhcnRUaW1lLG4uZW5kVGltZT1yLmVuZFRpbWUsbi5pZD1yLmlkLG4uYWN0aXZlPXIuYWN0aXZlLG4uZG9uZT1yLmRvbmUsbi5jcml0PXIuY3JpdCxuLm1pbGVzdG9uZT1yLm1pbGVzdG9uZSxqeD1uLEd4LnB1c2gobil9LHNldEluY2x1ZGVzOmZ1bmN0aW9uKHQpeyR4PXQudG9Mb3dlckNhc2UoKS5zcGxpdCgvW1xzLF0rLyl9LGdldEluY2x1ZGVzOmZ1bmN0aW9uKCl7cmV0dXJuICR4fSxzZXRFeGNsdWRlczpmdW5jdGlvbih0KXtIeD10LnRvTG93ZXJDYXNlKCkuc3BsaXQoL1tccyxdKy8pfSxnZXRFeGNsdWRlczpmdW5jdGlvbigpe3JldHVybiBIeH0sc2V0Q2xpY2tFdmVudDpmdW5jdGlvbih0LGUsbil7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUsbil7aWYoImxvb3NlIj09PVp2KCkuc2VjdXJpdHlMZXZlbCYmdm9pZCAwIT09ZSl7dmFyIHI9W107aWYoInN0cmluZyI9PXR5cGVvZiBuKXtyPW4uc3BsaXQoLywoPz0oPzooPzpbXiJdKiIpezJ9KSpbXiJdKiQpLyk7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXJbaV0udHJpbSgpOyciJz09PWEuY2hhckF0KDApJiYnIic9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmKGE9YS5zdWJzdHIoMSxhLmxlbmd0aC0yKSkscltpXT1hfX0wPT09ci5sZW5ndGgmJnIucHVzaCh0KSx2b2lkIDAhPT1odyh0KSYmcHcodCwoZnVuY3Rpb24oKXt2YXIgdDt6di5ydW5GdW5jLmFwcGx5KHp2LFtlXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gUHgodCl9KHQ9cil8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBQeCh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1B4KHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpKX0pKX19KHQsZSxuKX0pKSxkdyh0LCJjbGlja2FibGUiKX0sc2V0TGluazpmdW5jdGlvbih0LGUpe3ZhciBuPWU7Imxvb3NlIiE9PVp2KCkuc2VjdXJpdHlMZXZlbCYmKG49KDAsRG0uc2FuaXRpemVVcmwpKGUpKSx0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09aHcodCkmJnB3KHQsKGZ1bmN0aW9uKCl7d2luZG93Lm9wZW4obiwiX3NlbGYiKX0pKX0pKSxkdyh0LCJjbGlja2FibGUiKX0sYmluZEZ1bmN0aW9uczpmdW5jdGlvbih0KXtReC5mb3JFYWNoKChmdW5jdGlvbihlKXtlKHQpfSkpfSxkdXJhdGlvblRvRGF0ZTphdyxpc0ludmFsaWREYXRlOmV3fTtmdW5jdGlvbiBndyh0LGUsbil7Zm9yKHZhciByPSEwO3I7KXI9ITEsbi5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uZXcgUmVnRXhwKCJeXFxzKiIrbisiXFxzKiQiKTt0WzBdLm1hdGNoKGkpJiYoZVtuXT0hMCx0LnNoaWZ0KDEpLHI9ITApfSkpfXZhciBtdyx2dz1uKDIwNTUpLGJ3PW4ubih2dyk7dncucGFyc2VyLnl5PXl3O2NvbnN0IF93PWZ1bmN0aW9uKHQsZSl7dmFyIG49WnYoKS5nYW50dDt2dy5wYXJzZXIueXkuY2xlYXIoKSx2dy5wYXJzZXIucGFyc2UodCk7dmFyIHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7dm9pZCAwPT09KG13PXIucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCkmJihtdz0xMjAwKSx2b2lkIDAhPT1uLnVzZVdpZHRoJiYobXc9bi51c2VXaWR0aCk7dmFyIGE9dncucGFyc2VyLnl5LmdldFRhc2tzKCksbz1hLmxlbmd0aCoobi5iYXJIZWlnaHQrbi5iYXJHYXApKzIqbi50b3BQYWRkaW5nO3Iuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwiMCAwICIrbXcrIiAiK28pO2Zvcih2YXIgcz1hdSgnW2lkPSInLmNvbmNhdChlLCciXScpKSxjPWZ1bmN0aW9uKCl7cmV0dXJuIFppLmFwcGx5KHFzKG1vLHZvLEdhLFdhLFBhLFJhLExhLE9hLE5hLGtvKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX0oKS5kb21haW4oW2woYSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3RhcnRUaW1lfSkpLHUoYSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZW5kVGltZX0pKV0pLnJhbmdlUm91bmQoWzAsbXctbi5sZWZ0UGFkZGluZy1uLnJpZ2h0UGFkZGluZ10pLGg9W10sZj0wO2Y8YS5sZW5ndGg7ZisrKWgucHVzaChhW2ZdLnR5cGUpO3ZhciBkPWg7aD1mdW5jdGlvbih0KXtmb3IodmFyIGU9e30sbj1bXSxyPTAsaT10Lmxlbmd0aDtyPGk7KytyKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHRbcl0pfHwoZVt0W3JdXT0hMCxuLnB1c2godFtyXSkpO3JldHVybiBufShoKSxhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zdGFydFRpbWUscj1lLnN0YXJ0VGltZSxpPTA7cmV0dXJuIG4+cj9pPTE6bjxyJiYoaT0tMSksaX0pKSxmdW5jdGlvbih0LGUscil7dmFyIGE9bi5iYXJIZWlnaHQsbz1hK24uYmFyR2FwLHU9bi50b3BQYWRkaW5nLGw9bi5sZWZ0UGFkZGluZztmYSgpLmRvbWFpbihbMCxoLmxlbmd0aF0pLnJhbmdlKFsiIzAwQjlGQSIsIiNGOTUwMDIiXSkuaW50ZXJwb2xhdGUoanIpLGZ1bmN0aW9uKHQsZSxyLGEsbyx1LGwsaCl7dmFyIGY9dS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5zdGFydFRpbWU7cmV0dXJuIHQ/TWF0aC5taW4odCxuKTpufSksMCksZD11LnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lLmVuZFRpbWU7cmV0dXJuIHQ/TWF0aC5tYXgodCxuKTpufSksMCkscD12dy5wYXJzZXIueXkuZ2V0RGF0ZUZvcm1hdCgpO2lmKGYmJmQpe2Zvcih2YXIgeT1bXSxnPW51bGwsbT1pKCkoZik7bS52YWx1ZU9mKCk8PWQ7KXZ3LnBhcnNlci55eS5pc0ludmFsaWREYXRlKG0scCxsLGgpP2c/Zy5lbmQ9bS5jbG9uZSgpOmc9e3N0YXJ0Om0uY2xvbmUoKSxlbmQ6bS5jbG9uZSgpfTpnJiYoeS5wdXNoKGcpLGc9bnVsbCksbS5hZGQoMSwiZCIpO3MuYXBwZW5kKCJnIikuc2VsZWN0QWxsKCJyZWN0IikuZGF0YSh5KS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImlkIiwoZnVuY3Rpb24odCl7cmV0dXJuImV4Y2x1ZGUtIit0LnN0YXJ0LmZvcm1hdCgiWVlZWS1NTS1ERCIpfSkpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4gYyh0LnN0YXJ0KStyfSkpLmF0dHIoInkiLG4uZ3JpZExpbmVTdGFydFBhZGRpbmcpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5lbmQuY2xvbmUoKS5hZGQoMSwiZGF5Iik7cmV0dXJuIGMoZSktYyh0LnN0YXJ0KX0pKS5hdHRyKCJoZWlnaHQiLG8tZS1uLmdyaWRMaW5lU3RhcnRQYWRkaW5nKS5hdHRyKCJ0cmFuc2Zvcm0tb3JpZ2luIiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4oYyhlLnN0YXJ0KStyKy41KihjKGUuZW5kKS1jKGUuc3RhcnQpKSkudG9TdHJpbmcoKSsicHggIisobip0Ky41Km8pLnRvU3RyaW5nKCkrInB4In0pKS5hdHRyKCJjbGFzcyIsImV4Y2x1ZGUtcmFuZ2UiKX19KG8sdSxsLDAscix0LHZ3LnBhcnNlci55eS5nZXRFeGNsdWRlcygpLHZ3LnBhcnNlci55eS5nZXRJbmNsdWRlcygpKSxmdW5jdGlvbih0LGUscixpKXt2YXIgYSxvPShhPWMsdigzLGEpKS50aWNrU2l6ZSgtaStlK24uZ3JpZExpbmVTdGFydFBhZGRpbmcpLnRpY2tGb3JtYXQoWWwodncucGFyc2VyLnl5LmdldEF4aXNGb3JtYXQoKXx8bi5heGlzRm9ybWF0fHwiJVktJW0tJWQiKSk7aWYocy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImdyaWQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsICIrKGktNTApKyIpIikuY2FsbChvKS5zZWxlY3RBbGwoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJkeSIsIjFlbSIpLHl3LnRvcEF4aXNFbmFibGVkKCl8fG4udG9wQXhpcyl7dmFyIHU9ZnVuY3Rpb24odCl7cmV0dXJuIHYoMSx0KX0oYykudGlja1NpemUoLWkrZStuLmdyaWRMaW5lU3RhcnRQYWRkaW5nKS50aWNrRm9ybWF0KFlsKHZ3LnBhcnNlci55eS5nZXRBeGlzRm9ybWF0KCl8fG4uYXhpc0Zvcm1hdHx8IiVZLSVtLSVkIikpO3MuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJncmlkIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdCsiLCAiK2UrIikiKS5jYWxsKHUpLnNlbGVjdEFsbCgidGV4dCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImZpbGwiLCIjMDAwIikuYXR0cigic3Ryb2tlIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApfX0obCx1LDAsciksZnVuY3Rpb24odCxlLHIsaSxhLG8sdSl7cy5hcHBlbmQoImciKS5zZWxlY3RBbGwoInJlY3QiKS5kYXRhKHQpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQub3JkZXIqZStyLTJ9KSkuYXR0cigid2lkdGgiLChmdW5jdGlvbigpe3JldHVybiB1LW4ucmlnaHRQYWRkaW5nLzJ9KSkuYXR0cigiaGVpZ2h0IixlKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8aC5sZW5ndGg7ZSsrKWlmKHQudHlwZT09PWhbZV0pcmV0dXJuInNlY3Rpb24gc2VjdGlvbiIrZSVuLm51bWJlclNlY3Rpb25TdHlsZXM7cmV0dXJuInNlY3Rpb24gc2VjdGlvbjAifSkpO3ZhciBsPXMuYXBwZW5kKCJnIikuc2VsZWN0QWxsKCJyZWN0IikuZGF0YSh0KS5lbnRlcigpO2wuYXBwZW5kKCJyZWN0IikuYXR0cigiaWQiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKS5hdHRyKCJyeCIsMykuYXR0cigicnkiLDMpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taWxlc3RvbmU/Yyh0LnN0YXJ0VGltZSkraSsuNSooYyh0LmVuZFRpbWUpLWModC5zdGFydFRpbWUpKS0uNSphOmModC5zdGFydFRpbWUpK2l9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQub3JkZXIqZStyfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWlsZXN0b25lP2E6Yyh0LnJlbmRlckVuZFRpbWV8fHQuZW5kVGltZSktYyh0LnN0YXJ0VGltZSl9KSkuYXR0cigiaGVpZ2h0IixhKS5hdHRyKCJ0cmFuc2Zvcm0tb3JpZ2luIiwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbj10Lm9yZGVyLChjKHQuc3RhcnRUaW1lKStpKy41KihjKHQuZW5kVGltZSktYyh0LnN0YXJ0VGltZSkpKS50b1N0cmluZygpKyJweCAiKyhuKmUrcisuNSphKS50b1N0cmluZygpKyJweCJ9KSkuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXt2YXIgZT0iIjt0LmNsYXNzZXMubGVuZ3RoPjAmJihlPXQuY2xhc3Nlcy5qb2luKCIgIikpO2Zvcih2YXIgcj0wLGk9MDtpPGgubGVuZ3RoO2krKyl0LnR5cGU9PT1oW2ldJiYocj1pJW4ubnVtYmVyU2VjdGlvblN0eWxlcyk7dmFyIGE9IiI7cmV0dXJuIHQuYWN0aXZlP3QuY3JpdD9hKz0iIGFjdGl2ZUNyaXQiOmE9IiBhY3RpdmUiOnQuZG9uZT9hPXQuY3JpdD8iIGRvbmVDcml0IjoiIGRvbmUiOnQuY3JpdCYmKGErPSIgY3JpdCIpLDA9PT1hLmxlbmd0aCYmKGE9IiB0YXNrIiksdC5taWxlc3RvbmUmJihhPSIgbWlsZXN0b25lICIrYSksInRhc2siKyhhKz1yKSsiICIrZX0pKSxsLmFwcGVuZCgidGV4dCIpLmF0dHIoImlkIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQrIi10ZXh0In0pKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gdC50YXNrfSkpLmF0dHIoImZvbnQtc2l6ZSIsbi5mb250U2l6ZSkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3ZhciBlPWModC5zdGFydFRpbWUpLHI9Yyh0LnJlbmRlckVuZFRpbWV8fHQuZW5kVGltZSk7dC5taWxlc3RvbmUmJihlKz0uNSooYyh0LmVuZFRpbWUpLWModC5zdGFydFRpbWUpKS0uNSphKSx0Lm1pbGVzdG9uZSYmKHI9ZSthKTt2YXIgbz10aGlzLmdldEJCb3goKS53aWR0aDtyZXR1cm4gbz5yLWU/citvKzEuNSpuLmxlZnRQYWRkaW5nPnU/ZStpLTU6citpKzU6KHItZSkvMitlK2l9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQub3JkZXIqZStuLmJhckhlaWdodC8yKyhuLmZvbnRTaXplLzItMikrcn0pKS5hdHRyKCJ0ZXh0LWhlaWdodCIsYSkuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXt2YXIgZT1jKHQuc3RhcnRUaW1lKSxyPWModC5lbmRUaW1lKTt0Lm1pbGVzdG9uZSYmKHI9ZSthKTt2YXIgaT10aGlzLmdldEJCb3goKS53aWR0aCxvPSIiO3QuY2xhc3Nlcy5sZW5ndGg+MCYmKG89dC5jbGFzc2VzLmpvaW4oIiAiKSk7Zm9yKHZhciBzPTAsbD0wO2w8aC5sZW5ndGg7bCsrKXQudHlwZT09PWhbbF0mJihzPWwlbi5udW1iZXJTZWN0aW9uU3R5bGVzKTt2YXIgZj0iIjtyZXR1cm4gdC5hY3RpdmUmJihmPXQuY3JpdD8iYWN0aXZlQ3JpdFRleHQiK3M6ImFjdGl2ZVRleHQiK3MpLHQuZG9uZT9mPXQuY3JpdD9mKyIgZG9uZUNyaXRUZXh0IitzOmYrIiBkb25lVGV4dCIrczp0LmNyaXQmJihmPWYrIiBjcml0VGV4dCIrcyksdC5taWxlc3RvbmUmJihmKz0iIG1pbGVzdG9uZVRleHQiKSxpPnItZT9yK2krMS41Km4ubGVmdFBhZGRpbmc+dT9vKyIgdGFza1RleHRPdXRzaWRlTGVmdCB0YXNrVGV4dE91dHNpZGUiK3MrIiAiK2Y6bysiIHRhc2tUZXh0T3V0c2lkZVJpZ2h0IHRhc2tUZXh0T3V0c2lkZSIrcysiICIrZisiIHdpZHRoLSIraTpvKyIgdGFza1RleHQgdGFza1RleHQiK3MrIiAiK2YrIiB3aWR0aC0iK2l9KSl9KHQsbyx1LGwsYSwwLGUpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLGk9MCxhPTA7YTxoLmxlbmd0aDthKyspclthXT1baFthXSwobz1oW2FdLGM9ZCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj17fTtlOyluW3RbLS1lXV09KG5bdFtlXV18fDApKzE7cmV0dXJuIG59KGMpW29dfHwwKV07dmFyIG8sYztzLmFwcGVuZCgiZyIpLnNlbGVjdEFsbCgidGV4dCIpLmRhdGEocikuZW50ZXIoKS5hcHBlbmQoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uc3BsaXQoWW0ubGluZUJyZWFrUmVnZXgpLG49LShlLmxlbmd0aC0xKS8yLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRleHQiKTtyLnNldEF0dHJpYnV0ZSgiZHkiLG4rImVtIik7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0c3BhbiIpO2Euc2V0QXR0cmlidXRlKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJjZW50cmFsIiksYS5zZXRBdHRyaWJ1dGUoIngiLCIxMCIpLGk+MCYmYS5zZXRBdHRyaWJ1dGUoImR5IiwiMWVtIiksYS50ZXh0Q29udGVudD1lW2ldLHIuYXBwZW5kQ2hpbGQoYSl9cmV0dXJuIHJ9KSkuYXR0cigieCIsMTApLmF0dHIoInkiLChmdW5jdGlvbihuLGEpe2lmKCEoYT4wKSlyZXR1cm4gblsxXSp0LzIrZTtmb3IodmFyIG89MDtvPGE7bysrKXJldHVybiBpKz1yW2EtMV1bMV0sblsxXSp0LzIraSp0K2V9KSkuYXR0cigiZm9udC1zaXplIixuLnNlY3Rpb25Gb250U2l6ZSkuYXR0cigiZm9udC1zaXplIixuLnNlY3Rpb25Gb250U2l6ZSkuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPGgubGVuZ3RoO2UrKylpZih0WzBdPT09aFtlXSlyZXR1cm4ic2VjdGlvblRpdGxlIHNlY3Rpb25UaXRsZSIrZSVuLm51bWJlclNlY3Rpb25TdHlsZXM7cmV0dXJuInNlY3Rpb25UaXRsZSJ9KSl9KG8sdSksZnVuY3Rpb24odCxlLHIsaSl7dmFyIGE9eXcuZ2V0VG9kYXlNYXJrZXIoKTtpZigib2ZmIiE9PWEpe3ZhciBvPXMuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0b2RheSIpLHU9bmV3IERhdGUsbD1vLmFwcGVuZCgibGluZSIpO2wuYXR0cigieDEiLGModSkrdCkuYXR0cigieDIiLGModSkrdCkuYXR0cigieTEiLG4udGl0bGVUb3BNYXJnaW4pLmF0dHIoInkyIixpLW4udGl0bGVUb3BNYXJnaW4pLmF0dHIoImNsYXNzIiwidG9kYXkiKSwiIiE9PWEmJmwuYXR0cigic3R5bGUiLGEucmVwbGFjZSgvLC9nLCI7IikpfX0obCwwLDAscil9KGEsbXcsbyksanYocyxvLG13LG4udXNlTWF4V2lkdGgpLHMuYXBwZW5kKCJ0ZXh0IikudGV4dCh2dy5wYXJzZXIueXkuZ2V0VGl0bGUoKSkuYXR0cigieCIsbXcvMikuYXR0cigieSIsbi50aXRsZVRvcE1hcmdpbikuYXR0cigiY2xhc3MiLCJ0aXRsZVRleHQiKX07dmFyIHh3PXt9LHd3PW51bGwsa3c9e21hc3Rlcjp3d30sVHc9Im1hc3RlciIsRXc9IkxSIixDdz0wO2Z1bmN0aW9uIFN3KCl7cmV0dXJuIER2KHtsZW5ndGg6N30pfWZ1bmN0aW9uIEF3KHQsZSl7Zm9yKG8uZGVidWcoIkVudGVyaW5nIGlzZmFzdGZvcndhcmRhYmxlOiIsdC5pZCxlLmlkKTt0LnNlcTw9ZS5zZXEmJnQhPT1lJiZudWxsIT1lLnBhcmVudDspe2lmKEFycmF5LmlzQXJyYXkoZS5wYXJlbnQpKXJldHVybiBvLmRlYnVnKCJJbiBtZXJnZSBjb21taXQ6IixlLnBhcmVudCksQXcodCx4d1tlLnBhcmVudFswXV0pfHxBdyh0LHh3W2UucGFyZW50WzFdXSk7ZT14d1tlLnBhcmVudF19cmV0dXJuIG8uZGVidWcodC5pZCxlLmlkKSx0LmlkPT09ZS5pZH12YXIgTXc9e307ZnVuY3Rpb24gTncodCxlLG4pe3ZhciByPXQuaW5kZXhPZihlKTstMT09PXI/dC5wdXNoKG4pOnQuc3BsaWNlKHIsMSxuKX1mdW5jdGlvbiBEdyh0KXt2YXIgZT10LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zZXE+ZS5zZXE/dDplfSksdFswXSksbj0iIjt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe24rPXQ9PT1lPyJcdCoiOiJcdHwifSkpO3ZhciByLGksYSxzPVtuLGUuaWQsZS5zZXFdO2Zvcih2YXIgYyBpbiBrdylrd1tjXT09PWUuaWQmJnMucHVzaChjKTtpZihvLmRlYnVnKHMuam9pbigiICIpKSxBcnJheS5pc0FycmF5KGUucGFyZW50KSl7dmFyIHU9eHdbZS5wYXJlbnRbMF1dO053KHQsZSx1KSx0LnB1c2goeHdbZS5wYXJlbnRbMV1dKX1lbHNle2lmKG51bGw9PWUucGFyZW50KXJldHVybjt2YXIgbD14d1tlLnBhcmVudF07TncodCxlLGwpfXI9dCxpPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSxhPU9iamVjdC5jcmVhdGUobnVsbCksRHcodD1yLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1pKGUpO3JldHVybiBhW25dfHwoYVtuXT0hMCx0LnB1c2goZSkpLHR9KSxbXSkpfXZhciBPdz1mdW5jdGlvbigpe3ZhciB0PU9iamVjdC5rZXlzKHh3KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB4d1t0XX0pKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtvLmRlYnVnKHQuaWQpfSkpLHQuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zZXEtdC5zZXF9KSksdH07Y29uc3QgQnc9e3NldERpcmVjdGlvbjpmdW5jdGlvbih0KXtFdz10fSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQpe28uZGVidWcoIm9wdGlvbnMgc3RyIix0KSx0PSh0PXQmJnQudHJpbSgpKXx8Int9Ijt0cnl7TXc9SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtvLmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGdpdEdyYXBoIG9wdGlvbnMiLHQubWVzc2FnZSl9fSxnZXRPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIE13fSxjb21taXQ6ZnVuY3Rpb24odCl7dmFyIGU9e2lkOlN3KCksbWVzc2FnZTp0LHNlcTpDdysrLHBhcmVudDpudWxsPT13dz9udWxsOnd3LmlkfTt3dz1lLHh3W2UuaWRdPWUsa3dbVHddPWUuaWQsby5kZWJ1ZygiaW4gcHVzaENvbW1pdCAiK2UuaWQpfSxicmFuY2g6ZnVuY3Rpb24odCl7a3dbdF09bnVsbCE9d3c/d3cuaWQ6bnVsbCxvLmRlYnVnKCJpbiBjcmVhdGVCcmFuY2giKX0sbWVyZ2U6ZnVuY3Rpb24odCl7dmFyIGU9eHdba3dbVHddXSxuPXh3W2t3W3RdXTtpZihmdW5jdGlvbih0LGUpe3JldHVybiB0LnNlcT5lLnNlcSYmQXcoZSx0KX0oZSxuKSlvLmRlYnVnKCJBbHJlYWR5IG1lcmdlZCIpO2Vsc2V7aWYoQXcoZSxuKSlrd1tUd109a3dbdF0sd3c9eHdba3dbVHddXTtlbHNle3ZhciByPXtpZDpTdygpLG1lc3NhZ2U6Im1lcmdlZCBicmFuY2ggIit0KyIgaW50byAiK1R3LHNlcTpDdysrLHBhcmVudDpbbnVsbD09d3c/bnVsbDp3dy5pZCxrd1t0XV19O3d3PXIseHdbci5pZF09cixrd1tUd109ci5pZH1vLmRlYnVnKGt3KSxvLmRlYnVnKCJpbiBtZXJnZUJyYW5jaCIpfX0sY2hlY2tvdXQ6ZnVuY3Rpb24odCl7by5kZWJ1ZygiaW4gY2hlY2tvdXQiKTt2YXIgZT1rd1tUdz10XTt3dz14d1tlXX0scmVzZXQ6ZnVuY3Rpb24odCl7by5kZWJ1ZygiaW4gcmVzZXQiLHQpO3ZhciBlPXQuc3BsaXQoIjoiKVswXSxuPXBhcnNlSW50KHQuc3BsaXQoIjoiKVsxXSkscj0iSEVBRCI9PT1lP3d3Onh3W2t3W2VdXTtmb3Ioby5kZWJ1ZyhyLG4pO24+MDspaWYobi0tLCEocj14d1tyLnBhcmVudF0pKXt2YXIgaT0iQ3JpdGljYWwgZXJyb3IgLSB1bmlxdWUgcGFyZW50IGNvbW1pdCBub3QgZm91bmQgZHVyaW5nIHJlc2V0Ijt0aHJvdyBvLmVycm9yKGkpLGl9d3c9cixrd1tUd109ci5pZH0scHJldHR5UHJpbnQ6ZnVuY3Rpb24oKXtvLmRlYnVnKHh3KSxEdyhbT3coKVswXV0pfSxjbGVhcjpmdW5jdGlvbigpe3h3PXt9LGt3PXttYXN0ZXI6d3c9bnVsbH0sVHc9Im1hc3RlciIsQ3c9MH0sZ2V0QnJhbmNoZXNBc09iakFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIGt3KXQucHVzaCh7bmFtZTplLGNvbW1pdDp4d1trd1tlXV19KTtyZXR1cm4gdH0sZ2V0QnJhbmNoZXM6ZnVuY3Rpb24oKXtyZXR1cm4ga3d9LGdldENvbW1pdHM6ZnVuY3Rpb24oKXtyZXR1cm4geHd9LGdldENvbW1pdHNBcnJheTpPdyxnZXRDdXJyZW50QnJhbmNoOmZ1bmN0aW9uKCl7cmV0dXJuIFR3fSxnZXREaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gRXd9LGdldEhlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gd3d9fTt2YXIgTHcsSXc9big4NDU0KSxSdz1uLm4oSXcpLEZ3PXt9LFB3PXtub2RlU3BhY2luZzoxNTAsbm9kZUZpbGxDb2xvcjoieWVsbG93Iixub2RlU3Ryb2tlV2lkdGg6Mixub2RlU3Ryb2tlQ29sb3I6ImdyZXkiLGxpbmVTdHJva2VXaWR0aDo0LGJyYW5jaE9mZnNldDo1MCxsaW5lQ29sb3I6ImdyZXkiLGxlZnRNYXJnaW46NTAsYnJhbmNoQ29sb3JzOlsiIzQ0MmY3NCIsIiM5ODMzNTEiLCIjNjA5NzMyIiwiI0FBOUEzOSJdLG5vZGVSYWRpdXM6MTAsbm9kZUxhYmVsOnt3aWR0aDo3NSxoZWlnaHQ6MTAwLHg6LTI1LHk6MH19LGp3PXt9O2Z1bmN0aW9uIFl3KHQsZSxuLHIpe3ZhciBpPUN2KHIsVnUpLGE9UHcuYnJhbmNoQ29sb3JzW24lUHcuYnJhbmNoQ29sb3JzLmxlbmd0aF0sbz16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQueCl9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodC55KX0pKS5jdXJ2ZShpKTt0LmFwcGVuZCgic3ZnOnBhdGgiKS5hdHRyKCJkIixvKGUpKS5zdHlsZSgic3Ryb2tlIixhKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixQdy5saW5lU3Ryb2tlV2lkdGgpLnN0eWxlKCJmaWxsIiwibm9uZSIpfWZ1bmN0aW9uIHp3KHQsZSl7ZT1lfHx0Lm5vZGUoKS5nZXRCQm94KCk7dmFyIG49dC5ub2RlKCkuZ2V0Q1RNKCk7cmV0dXJue2xlZnQ6bi5lK2UueCpuLmEsdG9wOm4uZitlLnkqbi5kLHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fX1mdW5jdGlvbiBVdyh0LGUsbixyLGkpe28uZGVidWcoInN2Z0RyYXdMaW5lRm9yQ29tbWl0czogIixlLG4pO3ZhciBhPXp3KHQuc2VsZWN0KCIjbm9kZS0iK2UrIiBjaXJjbGUiKSkscz16dyh0LnNlbGVjdCgiI25vZGUtIituKyIgY2lyY2xlIikpO3N3aXRjaChyKXtjYXNlIkxSIjppZihhLmxlZnQtcy5sZWZ0PlB3Lm5vZGVTcGFjaW5nKXt2YXIgYz17eDphLmxlZnQtUHcubm9kZVNwYWNpbmcseTpzLnRvcCtzLmhlaWdodC8yfTtZdyh0LFtjLHt4OnMubGVmdCtzLndpZHRoLHk6cy50b3Arcy5oZWlnaHQvMn1dLGksImxpbmVhciIpLFl3KHQsW3t4OmEubGVmdCx5OmEudG9wK2EuaGVpZ2h0LzJ9LHt4OmEubGVmdC1Qdy5ub2RlU3BhY2luZy8yLHk6YS50b3ArYS5oZWlnaHQvMn0se3g6YS5sZWZ0LVB3Lm5vZGVTcGFjaW5nLzIseTpjLnl9LGNdLGkpfWVsc2UgWXcodCxbe3g6YS5sZWZ0LHk6YS50b3ArYS5oZWlnaHQvMn0se3g6YS5sZWZ0LVB3Lm5vZGVTcGFjaW5nLzIseTphLnRvcCthLmhlaWdodC8yfSx7eDphLmxlZnQtUHcubm9kZVNwYWNpbmcvMix5OnMudG9wK3MuaGVpZ2h0LzJ9LHt4OnMubGVmdCtzLndpZHRoLHk6cy50b3Arcy5oZWlnaHQvMn1dLGkpO2JyZWFrO2Nhc2UiQlQiOmlmKHMudG9wLWEudG9wPlB3Lm5vZGVTcGFjaW5nKXt2YXIgdT17eDpzLmxlZnQrcy53aWR0aC8yLHk6YS50b3ArYS5oZWlnaHQrUHcubm9kZVNwYWNpbmd9O1l3KHQsW3Use3g6cy5sZWZ0K3Mud2lkdGgvMix5OnMudG9wfV0saSwibGluZWFyIiksWXcodCxbe3g6YS5sZWZ0K2Eud2lkdGgvMix5OmEudG9wK2EuaGVpZ2h0fSx7eDphLmxlZnQrYS53aWR0aC8yLHk6YS50b3ArYS5oZWlnaHQrUHcubm9kZVNwYWNpbmcvMn0se3g6cy5sZWZ0K3Mud2lkdGgvMix5OnUueS1Qdy5ub2RlU3BhY2luZy8yfSx1XSxpKX1lbHNlIFl3KHQsW3t4OmEubGVmdCthLndpZHRoLzIseTphLnRvcCthLmhlaWdodH0se3g6YS5sZWZ0K2Eud2lkdGgvMix5OmEudG9wK1B3Lm5vZGVTcGFjaW5nLzJ9LHt4OnMubGVmdCtzLndpZHRoLzIseTpzLnRvcC1Qdy5ub2RlU3BhY2luZy8yfSx7eDpzLmxlZnQrcy53aWR0aC8yLHk6cy50b3B9XSxpKX19ZnVuY3Rpb24gcXcodCxlKXtyZXR1cm4gdC5zZWxlY3QoZSkubm9kZSgpLmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gJHcodCxlLG4scil7dmFyIGksYT1PYmplY3Qua2V5cyhGdykubGVuZ3RoO2lmKCJzdHJpbmciPT10eXBlb2YgZSlkb3tpZihpPUZ3W2VdLG8uZGVidWcoImluIHJlbmRlckNvbW1pdEhpc3RvcnkiLGkuaWQsaS5zZXEpLHQuc2VsZWN0KCIjbm9kZS0iK2UpLnNpemUoKT4wKXJldHVybjt0LmFwcGVuZCgoZnVuY3Rpb24oKXtyZXR1cm4gcXcodCwiI2RlZi1jb21taXQiKX0pKS5hdHRyKCJjbGFzcyIsImNvbW1pdCIpLmF0dHIoImlkIiwoZnVuY3Rpb24oKXtyZXR1cm4ibm9kZS0iK2kuaWR9KSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24oKXtzd2l0Y2gocil7Y2FzZSJMUiI6cmV0dXJuInRyYW5zbGF0ZSgiKyhpLnNlcSpQdy5ub2RlU3BhY2luZytQdy5sZWZ0TWFyZ2luKSsiLCAiK0x3KlB3LmJyYW5jaE9mZnNldCsiKSI7Y2FzZSJCVCI6cmV0dXJuInRyYW5zbGF0ZSgiKyhMdypQdy5icmFuY2hPZmZzZXQrUHcubGVmdE1hcmdpbikrIiwgIisoYS1pLnNlcSkqUHcubm9kZVNwYWNpbmcrIikifX0pKS5hdHRyKCJmaWxsIixQdy5ub2RlRmlsbENvbG9yKS5hdHRyKCJzdHJva2UiLFB3Lm5vZGVTdHJva2VDb2xvcikuYXR0cigic3Ryb2tlLXdpZHRoIixQdy5ub2RlU3Ryb2tlV2lkdGgpO3ZhciBzPXZvaWQgMDtmb3IodmFyIGMgaW4gbilpZihuW2NdLmNvbW1pdD09PWkpe3M9bltjXTticmVha31zJiYoby5kZWJ1ZygiZm91bmQgYnJhbmNoICIscy5uYW1lKSx0LnNlbGVjdCgiI25vZGUtIitpLmlkKyIgcCIpLmFwcGVuZCgieGh0bWw6c3BhbiIpLmF0dHIoImNsYXNzIiwiYnJhbmNoLWxhYmVsIikudGV4dChzLm5hbWUrIiwgIikpLHQuc2VsZWN0KCIjbm9kZS0iK2kuaWQrIiBwIikuYXBwZW5kKCJ4aHRtbDpzcGFuIikuYXR0cigiY2xhc3MiLCJjb21taXQtaWQiKS50ZXh0KGkuaWQpLCIiIT09aS5tZXNzYWdlJiYiQlQiPT09ciYmdC5zZWxlY3QoIiNub2RlLSIraS5pZCsiIHAiKS5hcHBlbmQoInhodG1sOnNwYW4iKS5hdHRyKCJjbGFzcyIsImNvbW1pdC1tc2ciKS50ZXh0KCIsICIraS5tZXNzYWdlKSxlPWkucGFyZW50fXdoaWxlKGUmJkZ3W2VdKTtBcnJheS5pc0FycmF5KGUpJiYoby5kZWJ1ZygiZm91bmQgbWVyZ2UgY29tbW1pdCIsZSksJHcodCxlWzBdLG4sciksTHcrKywkdyh0LGVbMV0sbixyKSxMdy0tKX1mdW5jdGlvbiBIdyh0LGUsbixyKXtmb3Iocj1yfHwwO2Uuc2VxPjAmJiFlLmxpbmVEcmF3bjspInN0cmluZyI9PXR5cGVvZiBlLnBhcmVudD8oVXcodCxlLmlkLGUucGFyZW50LG4sciksZS5saW5lRHJhd249ITAsZT1Gd1tlLnBhcmVudF0pOkFycmF5LmlzQXJyYXkoZS5wYXJlbnQpJiYoVXcodCxlLmlkLGUucGFyZW50WzBdLG4sciksVXcodCxlLmlkLGUucGFyZW50WzFdLG4scisxKSxIdyh0LEZ3W2UucGFyZW50WzFdXSxuLHIrMSksZS5saW5lRHJhd249ITAsZT1Gd1tlLnBhcmVudFswXV0pfWNvbnN0IFd3PWZ1bmN0aW9uKHQpe2p3PXR9O3ZhciBWdz0iIixHdz0hMTtjb25zdCBYdz17c2V0TWVzc2FnZTpmdW5jdGlvbih0KXtvLmRlYnVnKCJTZXR0aW5nIG1lc3NhZ2UgdG86ICIrdCksVnc9dH0sZ2V0TWVzc2FnZTpmdW5jdGlvbigpe3JldHVybiBWd30sc2V0SW5mbzpmdW5jdGlvbih0KXtHdz10fSxnZXRJbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIEd3fX07dmFyIFp3PW4oNDY0NSksUXc9bi5uKFp3KSxLdz17fTtjb25zdCBKdz1mdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXtLd1tlXT10W2VdfSkpfTt2YXIgdGs9big1OTYzKSxlaz1uLm4odGspLG5rPXt9LHJrPSIiLGlrPSExO2NvbnN0IGFrPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLnBpZX0sYWRkU2VjdGlvbjpmdW5jdGlvbih0LGUpe3ZvaWQgMD09PW5rW3RdJiYobmtbdF09ZSxvLmRlYnVnKCJBZGRlZCBuZXcgc2VjdGlvbiA6Iix0KSl9LGdldFNlY3Rpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIG5rfSxjbGVhbnVwVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIjoiPT09dC5zdWJzdHJpbmcoMCwxKT8odD10LnN1YnN0cmluZygxKS50cmltKCksTnVtYmVyKHQudHJpbSgpKSk6TnVtYmVyKHQudHJpbSgpKX0sY2xlYXI6ZnVuY3Rpb24oKXtuaz17fSxyaz0iIixpaz0hMX0sc2V0VGl0bGU6ZnVuY3Rpb24odCl7cms9dH0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gcmt9LHNldFNob3dEYXRhOmZ1bmN0aW9uKHQpe2lrPXR9LGdldFNob3dEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIGlrfX07dmFyIG9rLHNrPVp2KCk7Y29uc3QgY2s9ZnVuY3Rpb24odCxlKXt0cnl7c2s9WnYoKTt2YXIgbj1laygpLnBhcnNlcjtuLnl5PWFrLG8uZGVidWcoIlJlbmRlcmluZyBpbmZvIGRpYWdyYW1cbiIrdCksbi55eS5jbGVhcigpLG4ucGFyc2UodCksby5kZWJ1ZygiUGFyc2VkIGluZm8gZGlhZ3JhbSIpO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO3ZvaWQgMD09PShvaz1yLnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgpJiYob2s9MTIwMCksdm9pZCAwIT09c2sudXNlV2lkdGgmJihvaz1zay51c2VXaWR0aCksdm9pZCAwIT09c2sucGllLnVzZVdpZHRoJiYob2s9c2sucGllLnVzZVdpZHRoKTt2YXIgaT1hdSgiIyIrZSk7anYoaSw0NTAsb2ssc2sucGllLnVzZU1heFdpZHRoKSxyLnNldEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCAiK29rKyIgNDUwIik7dmFyIGE9TWF0aC5taW4ob2ssNDUwKS8yLTQwLHM9aS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvay8yKyIsMjI1KSIpLGM9YWsuZ2V0U2VjdGlvbnMoKSx1PTA7T2JqZWN0LmtleXMoYykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dSs9Y1t0XX0pKTt2YXIgbD1zay50aGVtZVZhcmlhYmxlcyxoPVtsLnBpZTEsbC5waWUyLGwucGllMyxsLnBpZTQsbC5waWU1LGwucGllNixsLnBpZTcsbC5waWU4LGwucGllOSxsLnBpZTEwLGwucGllMTEsbC5waWUxMl0sZj1tYSgpLnJhbmdlKGgpLGQ9ZnVuY3Rpb24oKXt2YXIgdD1xdSxlPVV1LG49bnVsbCxyPXB1KDApLGk9cHUoRXUpLGE9cHUoMCk7ZnVuY3Rpb24gbyhvKXt2YXIgcyxjLHUsbCxoLGY9KG89UnUobykpLmxlbmd0aCxkPTAscD1uZXcgQXJyYXkoZikseT1uZXcgQXJyYXkoZiksZz0rci5hcHBseSh0aGlzLGFyZ3VtZW50cyksbT1NYXRoLm1pbihFdSxNYXRoLm1heCgtRXUsaS5hcHBseSh0aGlzLGFyZ3VtZW50cyktZykpLHY9TWF0aC5taW4oTWF0aC5hYnMobSkvZixhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYj12KihtPDA/LTE6MSk7Zm9yKHM9MDtzPGY7KytzKShoPXlbcFtzXT1zXT0rdChvW3NdLHMsbykpPjAmJihkKz1oKTtmb3IobnVsbCE9ZT9wLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUoeVt0XSx5W25dKX0pKTpudWxsIT1uJiZwLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4ob1t0XSxvW2VdKX0pKSxzPTAsdT1kPyhtLWYqYikvZDowO3M8ZjsrK3MsZz1sKWM9cFtzXSxsPWcrKChoPXlbY10pPjA/aCp1OjApK2IseVtjXT17ZGF0YTpvW2NdLGluZGV4OnMsdmFsdWU6aCxzdGFydEFuZ2xlOmcsZW5kQW5nbGU6bCxwYWRBbmdsZTp2fTtyZXR1cm4geX1yZXR1cm4gby52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnB1KCtlKSxvKTp0fSxvLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGwsbyk6ZX0sby5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLG8pOm59LG8uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxvKTpyfSxvLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLG8pOml9LG8ucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksbyk6YX0sb30oKS52YWx1ZSgoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkscD1kKE9iamVjdC5lbnRyaWVzKGMpKSx5PUl1KCkuaW5uZXJSYWRpdXMoMCkub3V0ZXJSYWRpdXMoYSk7cy5zZWxlY3RBbGwoIm15U2xpY2VzIikuZGF0YShwKS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLHkpLmF0dHIoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gZih0LmRhdGFbMF0pfSkpLmF0dHIoImNsYXNzIiwicGllQ2lyY2xlIikscy5zZWxlY3RBbGwoIm15U2xpY2VzIikuZGF0YShwKS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybih0LmRhdGFbMV0vdSoxMDApLnRvRml4ZWQoMCkrIiUifSkpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit5LmNlbnRyb2lkKHQpKyIpIn0pKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJjbGFzcyIsInNsaWNlIikscy5hcHBlbmQoInRleHQiKS50ZXh0KG4ueXkuZ2V0VGl0bGUoKSkuYXR0cigieCIsMCkuYXR0cigieSIsLTIwMCkuYXR0cigiY2xhc3MiLCJwaWVUaXRsZVRleHQiKTt2YXIgZz1zLnNlbGVjdEFsbCgiLmxlZ2VuZCIpLmRhdGEoZi5kb21haW4oKSkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxlZ2VuZCIpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuInRyYW5zbGF0ZSgyMTYsIisoMjIqZS0yMipmLmRvbWFpbigpLmxlbmd0aC8yKSsiKSJ9KSk7Zy5hcHBlbmQoInJlY3QiKS5hdHRyKCJ3aWR0aCIsMTgpLmF0dHIoImhlaWdodCIsMTgpLnN0eWxlKCJmaWxsIixmKS5zdHlsZSgic3Ryb2tlIixmKSxnLmRhdGEocCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMjIpLmF0dHIoInkiLDE0KS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gbi55eS5nZXRTaG93RGF0YSgpfHxzay5zaG93RGF0YXx8c2sucGllLnNob3dEYXRhP3QuZGF0YVswXSsiIFsiK3QuZGF0YVsxXSsiXSI6dC5kYXRhWzBdfSkpfWNhdGNoKHQpe28uZXJyb3IoIkVycm9yIHdoaWxlIHJlbmRlcmluZyBpbmZvIGRpYWdyYW0iKSxvLmVycm9yKHQpfX07dmFyIHVrPW4oNjQ2MyksbGs9bi5uKHVrKSxoaz1bXSxmaz17fSxkaz17fSxwaz17fSx5az17fTtjb25zdCBnaz17UmVxdWlyZW1lbnRUeXBlOntSRVFVSVJFTUVOVDoiUmVxdWlyZW1lbnQiLEZVTkNUSU9OQUxfUkVRVUlSRU1FTlQ6IkZ1bmN0aW9uYWwgUmVxdWlyZW1lbnQiLElOVEVSRkFDRV9SRVFVSVJFTUVOVDoiSW50ZXJmYWNlIFJlcXVpcmVtZW50IixQRVJGT1JNQU5DRV9SRVFVSVJFTUVOVDoiUGVyZm9ybWFuY2UgUmVxdWlyZW1lbnQiLFBIWVNJQ0FMX1JFUVVJUkVNRU5UOiJQaHlzaWNhbCBSZXF1aXJlbWVudCIsREVTSUdOX0NPTlNUUkFJTlQ6IkRlc2lnbiBDb25zdHJhaW50In0sUmlza0xldmVsOntMT1dfUklTSzoiTG93IixNRURfUklTSzoiTWVkaXVtIixISUdIX1JJU0s6IkhpZ2gifSxWZXJpZnlUeXBlOntWRVJJRllfQU5BTFlTSVM6IkFuYWx5c2lzIixWRVJJRllfREVNT05TVFJBVElPTjoiRGVtb25zdHJhdGlvbiIsVkVSSUZZX0lOU1BFQ1RJT046Ikluc3BlY3Rpb24iLFZFUklGWV9URVNUOiJUZXN0In0sUmVsYXRpb25zaGlwczp7Q09OVEFJTlM6ImNvbnRhaW5zIixDT1BJRVM6ImNvcGllcyIsREVSSVZFUzoiZGVyaXZlcyIsU0FUSVNGSUVTOiJzYXRpc2ZpZXMiLFZFUklGSUVTOiJ2ZXJpZmllcyIsUkVGSU5FUzoicmVmaW5lcyIsVFJBQ0VTOiJ0cmFjZXMifSxwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLnJlcX0sYWRkUmVxdWlyZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZGtbdF0mJihka1t0XT17bmFtZTp0LHR5cGU6ZSxpZDpmay5pZCx0ZXh0OmZrLnRleHQscmlzazpmay5yaXNrLHZlcmlmeU1ldGhvZDpmay52ZXJpZnlNZXRob2R9KSxmaz17fSxka1t0XX0sZ2V0UmVxdWlyZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGRrfSxzZXROZXdSZXFJZDpmdW5jdGlvbih0KXt2b2lkIDAhPT1mayYmKGZrLmlkPXQpfSxzZXROZXdSZXFUZXh0OmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWZrJiYoZmsudGV4dD10KX0sc2V0TmV3UmVxUmlzazpmdW5jdGlvbih0KXt2b2lkIDAhPT1mayYmKGZrLnJpc2s9dCl9LHNldE5ld1JlcVZlcmlmeU1ldGhvZDpmdW5jdGlvbih0KXt2b2lkIDAhPT1mayYmKGZrLnZlcmlmeU1ldGhvZD10KX0sYWRkRWxlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09eWtbdF0mJih5a1t0XT17bmFtZTp0LHR5cGU6cGsudHlwZSxkb2NSZWY6cGsuZG9jUmVmfSxvLmluZm8oIkFkZGVkIG5ldyByZXF1aXJlbWVudDogIix0KSkscGs9e30seWtbdF19LGdldEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHlrfSxzZXROZXdFbGVtZW50VHlwZTpmdW5jdGlvbih0KXt2b2lkIDAhPT1wayYmKHBrLnR5cGU9dCl9LHNldE5ld0VsZW1lbnREb2NSZWY6ZnVuY3Rpb24odCl7dm9pZCAwIT09cGsmJihway5kb2NSZWY9dCl9LGFkZFJlbGF0aW9uc2hpcDpmdW5jdGlvbih0LGUsbil7aGsucHVzaCh7dHlwZTp0LHNyYzplLGRzdDpufSl9LGdldFJlbGF0aW9uc2hpcHM6ZnVuY3Rpb24oKXtyZXR1cm4gaGt9LGNsZWFyOmZ1bmN0aW9uKCl7aGs9W10sZms9e30sZGs9e30scGs9e30seWs9e319fTt2YXIgbWs9e0NPTlRBSU5TOiJjb250YWlucyIsQVJST1c6ImFycm93In07Y29uc3Qgdms9bWs7dmFyIGJrPXt9LF9rPTAseGs9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbnNlcnQoInJlY3QiLCIjIitlKS5hdHRyKCJjbGFzcyIsInJlcSByZXFCb3giKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsYmsucmVjdF9taW5fd2lkdGgrInB4IikuYXR0cigiaGVpZ2h0Iixiay5yZWN0X21pbl9oZWlnaHQrInB4Iil9LHdrPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1iay5yZWN0X21pbl93aWR0aC8yLGk9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInJlcSByZXFMYWJlbCByZXFUaXRsZSIpLmF0dHIoImlkIixlKS5hdHRyKCJ4IixyKS5hdHRyKCJ5Iixiay5yZWN0X3BhZGRpbmcpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwiaGFuZ2luZyIpLGE9MDtuLmZvckVhY2goKGZ1bmN0aW9uKHQpezA9PWE/aS5hcHBlbmQoInRzcGFuIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4Iixiay5yZWN0X21pbl93aWR0aC8yKS5hdHRyKCJkeSIsMCkudGV4dCh0KTppLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoIngiLGJrLnJlY3RfbWluX3dpZHRoLzIpLmF0dHIoImR5IiwuNzUqYmsubGluZV9oZWlnaHQpLnRleHQodCksYSsrfSkpO3ZhciBvPTEuNSpiay5yZWN0X3BhZGRpbmcrYSpiay5saW5lX2hlaWdodCouNzU7cmV0dXJuIHQuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJyZXEtdGl0bGUtbGluZSIpLmF0dHIoIngxIiwiMCIpLmF0dHIoIngyIixiay5yZWN0X21pbl93aWR0aCkuYXR0cigieTEiLG8pLmF0dHIoInkyIixvKSx7dGl0bGVOb2RlOmkseTpvfX0sa2s9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInJlcSByZXFMYWJlbCIpLmF0dHIoImlkIixlKS5hdHRyKCJ4Iixiay5yZWN0X3BhZGRpbmcpLmF0dHIoInkiLHIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwiaGFuZ2luZyIpLGE9MCxvPVtdO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlPjMwJiZhPDM7KXt2YXIgbj10LnN1YnN0cmluZygwLDMwKTtlPSh0PXQuc3Vic3RyaW5nKDMwLHQubGVuZ3RoKSkubGVuZ3RoLG9bby5sZW5ndGhdPW4sYSsrfWlmKDM9PWEpe3ZhciByPW9bby5sZW5ndGgtMV07b1tvLmxlbmd0aC0xXT1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTQpKyIuLi4ifWVsc2Ugb1tvLmxlbmd0aF09dDthPTB9KSksby5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4Iixiay5yZWN0X3BhZGRpbmcpLmF0dHIoImR5Iixiay5saW5lX2hlaWdodCkudGV4dCh0KX0pKSxpfSxUaz1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9ccy9nLCIiKS5yZXBsYWNlKC9cLi9nLCJfIil9O2NvbnN0IEVrPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpZm9yKHZhciBlPU9iamVjdC5rZXlzKHQpLG49MDtuPGUubGVuZ3RoO24rKylia1tlW25dXT10W2Vbbl1dfSxDaz1mdW5jdGlvbih0LGUpe3VrLnBhcnNlci55eT1nayx1ay5wYXJzZXIueXkuY2xlYXIoKSx1ay5wYXJzZXIucGFyc2UodCk7dmFyIG49YXUoIltpZD0nIi5jb25jYXQoZSwiJ10iKSk7IWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixtay5DT05UQUlOUysiX2xpbmVfZW5kaW5nIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJtYXJrZXJXaWR0aCIsZS5saW5lX2hlaWdodCkuYXR0cigibWFya2VySGVpZ2h0IixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJnIik7bi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoImN5IixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoInIiLGUubGluZV9oZWlnaHQvMikuYXR0cigiZmlsbCIsIm5vbmUiKSxuLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsZS5saW5lX2hlaWdodCkuYXR0cigieTEiLGUubGluZV9oZWlnaHQvMikuYXR0cigieTIiLGUubGluZV9oZWlnaHQvMikuYXR0cigic3Ryb2tlLXdpZHRoIiwxKSxuLmFwcGVuZCgibGluZSIpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsZS5saW5lX2hlaWdodCkuYXR0cigieDEiLGUubGluZV9oZWlnaHQvMikuYXR0cigieDIiLGUubGluZV9oZWlnaHQvMikuYXR0cigic3Ryb2tlLXdpZHRoIiwxKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLG1rLkFSUk9XKyJfbGluZV9lbmRpbmciKS5hdHRyKCJyZWZYIixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJyZWZZIiwuNSplLmxpbmVfaGVpZ2h0KS5hdHRyKCJtYXJrZXJXaWR0aCIsZS5saW5lX2hlaWdodCkuYXR0cigibWFya2VySGVpZ2h0IixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0wLDBcbiAgICAgIEwiLmNvbmNhdChlLmxpbmVfaGVpZ2h0LCIsIikuY29uY2F0KGUubGluZV9oZWlnaHQvMiwiXG4gICAgICBNIikuY29uY2F0KGUubGluZV9oZWlnaHQsIiwiKS5jb25jYXQoZS5saW5lX2hlaWdodC8yLCJcbiAgICAgIEwwLCIpLmNvbmNhdChlLmxpbmVfaGVpZ2h0KSkuYXR0cigic3Ryb2tlLXdpZHRoIiwxKX0obixiayk7dmFyIHI9bmV3KGJiKCkuR3JhcGgpKHttdWx0aWdyYXBoOiExLGNvbXBvdW5kOiExLGRpcmVjdGVkOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6YmsubGF5b3V0RGlyZWN0aW9uLG1hcmdpbng6MjAsbWFyZ2lueToyMCxub2Rlc2VwOjEwMCxlZGdlc2VwOjEwMCxyYW5rc2VwOjEwMH0pLnNldERlZmF1bHRFZGdlTGFiZWwoKGZ1bmN0aW9uKCl7cmV0dXJue319KSksaT1nay5nZXRSZXF1aXJlbWVudHMoKSxhPWdrLmdldEVsZW1lbnRzKCkscz1nay5nZXRSZWxhdGlvbnNoaXBzKCk7IWZ1bmN0aW9uKHQsZSxuKXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgaT10W3JdO3I9VGsociksby5pbmZvKCJBZGRlZCBuZXcgcmVxdWlyZW1lbnQ6ICIscik7dmFyIGE9bi5hcHBlbmQoImciKS5hdHRyKCJpZCIscikscz14ayhhLCJyZXEtIityKSxjPVtdLHU9d2soYSxyKyJfdGl0bGUiLFsiPDwiLmNvbmNhdChpLnR5cGUsIj4+IiksIiIuY29uY2F0KGkubmFtZSldKTtjLnB1c2godS50aXRsZU5vZGUpO3ZhciBsPWtrKGEscisiX2JvZHkiLFsiSWQ6ICIuY29uY2F0KGkuaWQpLCJUZXh0OiAiLmNvbmNhdChpLnRleHQpLCJSaXNrOiAiLmNvbmNhdChpLnJpc2spLCJWZXJpZmljYXRpb246ICIuY29uY2F0KGkudmVyaWZ5TWV0aG9kKV0sdS55KTtjLnB1c2gobCk7dmFyIGg9cy5ub2RlKCkuZ2V0QkJveCgpO2Uuc2V0Tm9kZShyLHt3aWR0aDpoLndpZHRoLGhlaWdodDpoLmhlaWdodCxzaGFwZToicmVjdCIsaWQ6cn0pfSkpfShpLHIsbiksZnVuY3Rpb24odCxlLG4pe09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBpPXRbcl0sYT1UayhyKSxvPW4uYXBwZW5kKCJnIikuYXR0cigiaWQiLGEpLHM9ImVsZW1lbnQtIithLGM9eGsobyxzKSx1PVtdLGw9d2sobyxzKyJfdGl0bGUiLFsiPDxFbGVtZW50Pj4iLCIiLmNvbmNhdChyKV0pO3UucHVzaChsLnRpdGxlTm9kZSk7dmFyIGg9a2sobyxzKyJfYm9keSIsWyJUeXBlOiAiLmNvbmNhdChpLnR5cGV8fCJOb3QgU3BlY2lmaWVkIiksIkRvYyBSZWY6ICIuY29uY2F0KGkuZG9jUmVmfHwiTm9uZSIpXSxsLnkpO3UucHVzaChoKTt2YXIgZj1jLm5vZGUoKS5nZXRCQm94KCk7ZS5zZXROb2RlKGEse3dpZHRoOmYud2lkdGgsaGVpZ2h0OmYuaGVpZ2h0LHNoYXBlOiJyZWN0IixpZDphfSl9KSl9KGEscixuKSxmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49VGsodC5zcmMpLHI9VGsodC5kc3QpO2Uuc2V0RWRnZShuLHIse3JlbGF0aW9uc2hpcDp0fSl9KSl9KHMsciksbWIoKS5sYXlvdXQociksZnVuY3Rpb24odCxlKXtlLm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dm9pZCAwIT09biYmdm9pZCAwIT09ZS5ub2RlKG4pJiYodC5zZWxlY3QoIiMiK24pLHQuc2VsZWN0KCIjIituKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoZS5ub2RlKG4pLngtZS5ub2RlKG4pLndpZHRoLzIpKyIsIisoZS5ub2RlKG4pLnktZS5ub2RlKG4pLmhlaWdodC8yKSsiICkiKSl9KSl9KG4scikscy5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4scil7dmFyIGk9bi5lZGdlKFRrKGUuc3JjKSxUayhlLmRzdCkpLGE9enUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSksbz10Lmluc2VydCgicGF0aCIsIiMiK3IpLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGluZSIpLmF0dHIoImQiLGEoaS5wb2ludHMpKS5hdHRyKCJmaWxsIiwibm9uZSIpO2UudHlwZT09Z2suUmVsYXRpb25zaGlwcy5DT05UQUlOUz9vLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK1ltLmdldFVybChiay5hcnJvd01hcmtlckFic29sdXRlKSsiIyIrZS50eXBlKyJfbGluZV9lbmRpbmcpIik6KG8uYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsIjEwLDciKSxvLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitZbS5nZXRVcmwoYmsuYXJyb3dNYXJrZXJBYnNvbHV0ZSkrIiMiK3ZrLkFSUk9XKyJfbGluZV9lbmRpbmcpIikpLGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWUubm9kZSgpLmdldFRvdGFsTGVuZ3RoKCksYT1lLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKC41KmkpLG89InJlbCIrX2s7X2srKzt2YXIgcz10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwicmVxIHJlbGF0aW9uc2hpcExhYmVsIikuYXR0cigiaWQiLG8pLmF0dHIoIngiLGEueCkuYXR0cigieSIsYS55KS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikudGV4dChyKS5ub2RlKCkuZ2V0QkJveCgpO3QuaW5zZXJ0KCJyZWN0IiwiIyIrbykuYXR0cigiY2xhc3MiLCJyZXEgcmVxTGFiZWxCb3giKS5hdHRyKCJ4IixhLngtcy53aWR0aC8yKS5hdHRyKCJ5IixhLnktcy5oZWlnaHQvMikuYXR0cigid2lkdGgiLHMud2lkdGgpLmF0dHIoImhlaWdodCIscy5oZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImZpbGwtb3BhY2l0eSIsIjg1JSIpfSh0LG8sMCwiPDwiLmNvbmNhdChlLnR5cGUsIj4+IikpfShuLHQscixlKX0pKTt2YXIgYz1iay5yZWN0X3BhZGRpbmcsdT1uLm5vZGUoKS5nZXRCQm94KCksbD11LndpZHRoKzIqYyxoPXUuaGVpZ2h0KzIqYztqdihuLGgsbCxiay51c2VNYXhXaWR0aCksbi5hdHRyKCJ2aWV3Qm94IiwiIi5jb25jYXQodS54LWMsIiAiKS5jb25jYXQodS55LWMsIiAiKS5jb25jYXQobCwiICIpLmNvbmNhdChoKSl9O3ZhciBTaz1uKDk5MjMpLEFrPW4ubihTayksTWs9dm9pZCAwLE5rPXt9LERrPVtdLE9rPVtdLEJrPSIiLExrPSExLElrPSExLFJrPSExLEZrPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPU5rW3RdO2kmJmU9PT1pLm5hbWUmJm51bGw9PW58fChudWxsIT1uJiZudWxsIT1uLnRleHR8fChuPXt0ZXh0OmUsd3JhcDpudWxsLHR5cGU6cn0pLG51bGwhPXImJm51bGwhPW4udGV4dHx8KG49e3RleHQ6ZSx3cmFwOm51bGwsdHlwZTpyfSksTmtbdF09e25hbWU6ZSxkZXNjcmlwdGlvbjpuLnRleHQsd3JhcDp2b2lkIDA9PT1uLndyYXAmJnprKCl8fCEhbi53cmFwLHByZXZBY3RvcjpNayxsaW5rczp7fSxwcm9wZXJ0aWVzOnt9LGFjdG9yQ250Om51bGwscmVjdERhdGE6bnVsbCx0eXBlOnJ8fCJwYXJ0aWNpcGFudCJ9LE1rJiZOa1tNa10mJihOa1tNa10ubmV4dEFjdG9yPXQpLE1rPXQpfSxQaz1mdW5jdGlvbih0KXt2YXIgZSxuPTA7Zm9yKGU9MDtlPERrLmxlbmd0aDtlKyspRGtbZV0udHlwZT09PVVrLkFDVElWRV9TVEFSVCYmRGtbZV0uZnJvbS5hY3Rvcj09PXQmJm4rKyxEa1tlXS50eXBlPT09VWsuQUNUSVZFX0VORCYmRGtbZV0uZnJvbS5hY3Rvcj09PXQmJm4tLTtyZXR1cm4gbn0sams9ZnVuY3Rpb24odCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e3RleHQ6dm9pZCAwLHdyYXA6dm9pZCAwfSxyPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO2lmKHI9PT1Vay5BQ1RJVkVfRU5EKXt2YXIgaT1Qayh0LmFjdG9yKTtpZihpPDEpe3ZhciBhPW5ldyBFcnJvcigiVHJ5aW5nIHRvIGluYWN0aXZhdGUgYW4gaW5hY3RpdmUgcGFydGljaXBhbnQgKCIrdC5hY3RvcisiKSIpO3Rocm93IGEuaGFzaD17dGV4dDoiLT4+LSIsdG9rZW46Ii0+Pi0iLGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsiJ0FDVElWRV9QQVJUSUNJUEFOVCciXX0sYX19cmV0dXJuIERrLnB1c2goe2Zyb206dCx0bzplLG1lc3NhZ2U6bi50ZXh0LHdyYXA6dm9pZCAwPT09bi53cmFwJiZ6aygpfHwhIW4ud3JhcCx0eXBlOnJ9KSwhMH0sWWs9ZnVuY3Rpb24odCl7cmV0dXJuIE5rW3RdfSx6az1mdW5jdGlvbigpe3JldHVybiBSa30sVWs9e1NPTElEOjAsRE9UVEVEOjEsTk9URToyLFNPTElEX0NST1NTOjMsRE9UVEVEX0NST1NTOjQsU09MSURfT1BFTjo1LERPVFRFRF9PUEVOOjYsTE9PUF9TVEFSVDoxMCxMT09QX0VORDoxMSxBTFRfU1RBUlQ6MTIsQUxUX0VMU0U6MTMsQUxUX0VORDoxNCxPUFRfU1RBUlQ6MTUsT1BUX0VORDoxNixBQ1RJVkVfU1RBUlQ6MTcsQUNUSVZFX0VORDoxOCxQQVJfU1RBUlQ6MTksUEFSX0FORDoyMCxQQVJfRU5EOjIxLFJFQ1RfU1RBUlQ6MjIsUkVDVF9FTkQ6MjMsU09MSURfUE9JTlQ6MjQsRE9UVEVEX1BPSU5UOjI1fSxxaz1mdW5jdGlvbih0LGUsbil7dmFyIHI9e2FjdG9yOnQscGxhY2VtZW50OmUsbWVzc2FnZTpuLnRleHQsd3JhcDp2b2lkIDA9PT1uLndyYXAmJnprKCl8fCEhbi53cmFwfSxpPVtdLmNvbmNhdCh0LHQpO09rLnB1c2gociksRGsucHVzaCh7ZnJvbTppWzBdLHRvOmlbMV0sbWVzc2FnZTpuLnRleHQsd3JhcDp2b2lkIDA9PT1uLndyYXAmJnprKCl8fCEhbi53cmFwLHR5cGU6VWsuTk9URSxwbGFjZW1lbnQ6ZX0pfSwkaz1mdW5jdGlvbih0LGUpe3ZhciBuPVlrKHQpO3RyeXt2YXIgcj1JbShlLnRleHQsWnYoKSk7cj0ocj1yLnJlcGxhY2UoLyZhbXA7L2csIiYiKSkucmVwbGFjZSgvJmVxdWFsczsvZywiPSIpLEhrKG4sSlNPTi5wYXJzZShyKSl9Y2F0Y2godCl7by5lcnJvcigiZXJyb3Igd2hpbGUgcGFyc2luZyBhY3RvciBsaW5rIHRleHQiLHQpfX07ZnVuY3Rpb24gSGsodCxlKXtpZihudWxsPT10LmxpbmtzKXQubGlua3M9ZTtlbHNlIGZvcih2YXIgbiBpbiBlKXQubGlua3Nbbl09ZVtuXX12YXIgV2s9ZnVuY3Rpb24odCxlKXt2YXIgbj1Zayh0KTt0cnl7dmFyIHI9SW0oZS50ZXh0LFp2KCkpO1ZrKG4sSlNPTi5wYXJzZShyKSl9Y2F0Y2godCl7by5lcnJvcigiZXJyb3Igd2hpbGUgcGFyc2luZyBhY3RvciBwcm9wZXJ0aWVzIHRleHQiLHQpfX07ZnVuY3Rpb24gVmsodCxlKXtpZihudWxsPT10LnByb3BlcnRpZXMpdC5wcm9wZXJ0aWVzPWU7ZWxzZSBmb3IodmFyIG4gaW4gZSl0LnByb3BlcnRpZXNbbl09ZVtuXX12YXIgR2s9ZnVuY3Rpb24odCxlKXt2YXIgbj1Zayh0KSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUudGV4dCk7dHJ5e3ZhciBpPXIuaW5uZXJIVE1MLGE9SlNPTi5wYXJzZShpKTthLnByb3BlcnRpZXMmJlZrKG4sYS5wcm9wZXJ0aWVzKSxhLmxpbmtzJiZIayhuLGEubGlua3MpfWNhdGNoKHQpe28uZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgZGV0YWlscyB0ZXh0Iix0KX19LFhrPWZ1bmN0aW9uKHQpe0JrPXQudGV4dCxMaz12b2lkIDA9PT10LndyYXAmJnprKCl8fCEhdC53cmFwfTtjb25zdCBaaz17YWRkQWN0b3I6RmssYWRkTWVzc2FnZTpmdW5jdGlvbih0LGUsbixyKXtEay5wdXNoKHtmcm9tOnQsdG86ZSxtZXNzYWdlOm4udGV4dCx3cmFwOnZvaWQgMD09PW4ud3JhcCYmemsoKXx8ISFuLndyYXAsYW5zd2VyOnJ9KX0sYWRkU2lnbmFsOmprLGFkZExpbmtzOiRrLGFkZERldGFpbHM6R2ssYWRkUHJvcGVydGllczpXayxhdXRvV3JhcDp6ayxzZXRXcmFwOmZ1bmN0aW9uKHQpe1JrPXR9LGVuYWJsZVNlcXVlbmNlTnVtYmVyczpmdW5jdGlvbigpe0lrPSEwfSxzaG93U2VxdWVuY2VOdW1iZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIElrfSxnZXRNZXNzYWdlczpmdW5jdGlvbigpe3JldHVybiBEa30sZ2V0QWN0b3JzOmZ1bmN0aW9uKCl7cmV0dXJuIE5rfSxnZXRBY3RvcjpZayxnZXRBY3RvcktleXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoTmspfSxnZXRBY3RvclByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09dCYmdm9pZCAwIT09dC5wcm9wZXJ0aWVzKXJldHVybiB0LnByb3BlcnRpZXNbZV19LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIEJrfSxwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLnNlcXVlbmNlfSxnZXRUaXRsZVdyYXBwZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTGt9LGNsZWFyOmZ1bmN0aW9uKCl7Tms9e30sRGs9W119LHBhcnNlTWVzc2FnZTpmdW5jdGlvbih0KXt2YXIgZT10LnRyaW0oKSxuPXt0ZXh0OmUucmVwbGFjZSgvXls6XT8oPzpubyk/d3JhcDovLCIiKS50cmltKCksd3JhcDpudWxsIT09ZS5tYXRjaCgvXls6XT93cmFwOi8pfHxudWxsPT09ZS5tYXRjaCgvXls6XT9ub3dyYXA6LykmJnZvaWQgMH07cmV0dXJuIG8uZGVidWcoInBhcnNlTWVzc2FnZToiLG4pLG59LExJTkVUWVBFOlVrLEFSUk9XVFlQRTp7RklMTEVEOjAsT1BFTjoxfSxQTEFDRU1FTlQ6e0xFRlRPRjowLFJJR0hUT0Y6MSxPVkVSOjJ9LGFkZE5vdGU6cWssc2V0VGl0bGU6WGssYXBwbHk6ZnVuY3Rpb24gdChlKXtpZihlIGluc3RhbmNlb2YgQXJyYXkpZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0KGUpfSkpO2Vsc2Ugc3dpdGNoKGUudHlwZSl7Y2FzZSJhZGRQYXJ0aWNpcGFudCI6RmsoZS5hY3RvcixlLmFjdG9yLGUuZGVzY3JpcHRpb24sInBhcnRpY2lwYW50Iik7YnJlYWs7Y2FzZSJhZGRBY3RvciI6RmsoZS5hY3RvcixlLmFjdG9yLGUuZGVzY3JpcHRpb24sImFjdG9yIik7YnJlYWs7Y2FzZSJhY3RpdmVTdGFydCI6Y2FzZSJhY3RpdmVFbmQiOmprKGUuYWN0b3Isdm9pZCAwLHZvaWQgMCxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiYWRkTm90ZSI6cWsoZS5hY3RvcixlLnBsYWNlbWVudCxlLnRleHQpO2JyZWFrO2Nhc2UiYWRkTGlua3MiOiRrKGUuYWN0b3IsZS50ZXh0KTticmVhaztjYXNlImFkZEFMaW5rIjohZnVuY3Rpb24odCxlKXt2YXIgbj1Zayh0KTt0cnl7dmFyIHI9e30saT1JbShlLnRleHQsWnYoKSksYT1pLmluZGV4T2YoIkAiKSxzPShpPShpPWkucmVwbGFjZSgvJmFtcDsvZywiJiIpKS5yZXBsYWNlKC8mZXF1YWxzOy9nLCI9IikpLnNsaWNlKDAsYS0xKS50cmltKCksYz1pLnNsaWNlKGErMSkudHJpbSgpO3Jbc109YyxIayhuLHIpfWNhdGNoKHQpe28uZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgbGluayB0ZXh0Iix0KX19KGUuYWN0b3IsZS50ZXh0KTticmVhaztjYXNlImFkZFByb3BlcnRpZXMiOldrKGUuYWN0b3IsZS50ZXh0KTticmVhaztjYXNlImFkZERldGFpbHMiOkdrKGUuYWN0b3IsZS50ZXh0KTticmVhaztjYXNlImFkZE1lc3NhZ2UiOmprKGUuZnJvbSxlLnRvLGUubXNnLGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJsb29wU3RhcnQiOmprKHZvaWQgMCx2b2lkIDAsZS5sb29wVGV4dCxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UibG9vcEVuZCI6amsodm9pZCAwLHZvaWQgMCx2b2lkIDAsZS5zaWduYWxUeXBlKTticmVhaztjYXNlInJlY3RTdGFydCI6amsodm9pZCAwLHZvaWQgMCxlLmNvbG9yLGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJyZWN0RW5kIjpqayh2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2Uib3B0U3RhcnQiOmprKHZvaWQgMCx2b2lkIDAsZS5vcHRUZXh0LGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJvcHRFbmQiOmprKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJhbHRTdGFydCI6Y2FzZSJlbHNlIjpqayh2b2lkIDAsdm9pZCAwLGUuYWx0VGV4dCxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiYWx0RW5kIjpqayh2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2Uic2V0VGl0bGUiOlhrKGUudGV4dCk7YnJlYWs7Y2FzZSJwYXJTdGFydCI6Y2FzZSJhbmQiOmprKHZvaWQgMCx2b2lkIDAsZS5wYXJUZXh0LGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJwYXJFbmQiOmprKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuc2lnbmFsVHlwZSl9fX07dmFyIFFrPVtdLEtrPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5hcHBlbmQoInJlY3QiKTtyZXR1cm4gbi5hdHRyKCJ4IixlLngpLG4uYXR0cigieSIsZS55KSxuLmF0dHIoImZpbGwiLGUuZmlsbCksbi5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKSxuLmF0dHIoIndpZHRoIixlLndpZHRoKSxuLmF0dHIoImhlaWdodCIsZS5oZWlnaHQpLG4uYXR0cigicngiLGUucngpLG4uYXR0cigicnkiLGUucnkpLHZvaWQgMCE9PWUuY2xhc3MmJm4uYXR0cigiY2xhc3MiLGUuY2xhc3MpLG59LEprPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC9qYXZhc2NyaXB0Oi9nLCIiKX0sdFQ9ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KTtuWzBdLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKCl7clQoImFjdG9yIitlKyJfcG9wdXAiKX0pKSxuWzBdLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwoZnVuY3Rpb24oKXtpVCgiYWN0b3IiK2UrIl9wb3B1cCIpfSkpfSxRay5wdXNoKG4pfSxlVD1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT10LmFwcGVuZCgiaW1hZ2UiKTtpLmF0dHIoIngiLGUpLGkuYXR0cigieSIsbik7dmFyIGE9Smsocik7aS5hdHRyKCJ4bGluazpocmVmIixhKX0sblQ9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9dC5hcHBlbmQoInVzZSIpO2kuYXR0cigieCIsZSksaS5hdHRyKCJ5IixuKTt2YXIgYT1KayhyKTtpLmF0dHIoInhsaW5rOmhyZWYiLCIjIithKX0sclQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk7bnVsbCE9ZSYmKGUuc3R5bGUuZGlzcGxheT0iYmxvY2siKX0saVQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk7bnVsbCE9ZSYmKGUuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxhVD1mdW5jdGlvbih0LGUpe3ZhciBuPTAscj0wLGk9ZS50ZXh0LnNwbGl0KFltLmxpbmVCcmVha1JlZ2V4KSxhPVtdLG89MCxzPWZ1bmN0aW9uKCl7cmV0dXJuIGUueX07aWYodm9pZCAwIT09ZS52YWxpZ24mJnZvaWQgMCE9PWUudGV4dE1hcmdpbiYmZS50ZXh0TWFyZ2luPjApc3dpdGNoKGUudmFsaWduKXtjYXNlInRvcCI6Y2FzZSJzdGFydCI6cz1mdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKGUueStlLnRleHRNYXJnaW4pfTticmVhaztjYXNlIm1pZGRsZSI6Y2FzZSJjZW50ZXIiOnM9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yb3VuZChlLnkrKG4rcitlLnRleHRNYXJnaW4pLzIpfTticmVhaztjYXNlImJvdHRvbSI6Y2FzZSJlbmQiOnM9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yb3VuZChlLnkrKG4rcisyKmUudGV4dE1hcmdpbiktZS50ZXh0TWFyZ2luKX19aWYodm9pZCAwIT09ZS5hbmNob3ImJnZvaWQgMCE9PWUudGV4dE1hcmdpbiYmdm9pZCAwIT09ZS53aWR0aClzd2l0Y2goZS5hbmNob3Ipe2Nhc2UibGVmdCI6Y2FzZSJzdGFydCI6ZS54PU1hdGgucm91bmQoZS54K2UudGV4dE1hcmdpbiksZS5hbmNob3I9InN0YXJ0IixlLmRvbWluYW50QmFzZWxpbmU9InRleHQtYWZ0ZXItZWRnZSIsZS5hbGlnbm1lbnRCYXNlbGluZT0ibWlkZGxlIjticmVhaztjYXNlIm1pZGRsZSI6Y2FzZSJjZW50ZXIiOmUueD1NYXRoLnJvdW5kKGUueCtlLndpZHRoLzIpLGUuYW5jaG9yPSJtaWRkbGUiLGUuZG9taW5hbnRCYXNlbGluZT0ibWlkZGxlIixlLmFsaWdubWVudEJhc2VsaW5lPSJtaWRkbGUiO2JyZWFrO2Nhc2UicmlnaHQiOmNhc2UiZW5kIjplLng9TWF0aC5yb3VuZChlLngrZS53aWR0aC1lLnRleHRNYXJnaW4pLGUuYW5jaG9yPSJlbmQiLGUuZG9taW5hbnRCYXNlbGluZT0idGV4dC1iZWZvcmUtZWRnZSIsZS5hbGlnbm1lbnRCYXNlbGluZT0ibWlkZGxlIn1mb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHU9aVtjXTt2b2lkIDAhPT1lLnRleHRNYXJnaW4mJjA9PT1lLnRleHRNYXJnaW4mJnZvaWQgMCE9PWUuZm9udFNpemUmJihvPWMqZS5mb250U2l6ZSk7dmFyIGw9dC5hcHBlbmQoInRleHQiKTtpZihsLmF0dHIoIngiLGUueCksbC5hdHRyKCJ5IixzKCkpLHZvaWQgMCE9PWUuYW5jaG9yJiZsLmF0dHIoInRleHQtYW5jaG9yIixlLmFuY2hvcikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLGUuZG9taW5hbnRCYXNlbGluZSkuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIixlLmFsaWdubWVudEJhc2VsaW5lKSx2b2lkIDAhPT1lLmZvbnRGYW1pbHkmJmwuc3R5bGUoImZvbnQtZmFtaWx5IixlLmZvbnRGYW1pbHkpLHZvaWQgMCE9PWUuZm9udFNpemUmJmwuc3R5bGUoImZvbnQtc2l6ZSIsZS5mb250U2l6ZSksdm9pZCAwIT09ZS5mb250V2VpZ2h0JiZsLnN0eWxlKCJmb250LXdlaWdodCIsZS5mb250V2VpZ2h0KSx2b2lkIDAhPT1lLmZpbGwmJmwuYXR0cigiZmlsbCIsZS5maWxsKSx2b2lkIDAhPT1lLmNsYXNzJiZsLmF0dHIoImNsYXNzIixlLmNsYXNzKSx2b2lkIDAhPT1lLmR5P2wuYXR0cigiZHkiLGUuZHkpOjAhPT1vJiZsLmF0dHIoImR5IixvKSxlLnRzcGFuKXt2YXIgaD1sLmFwcGVuZCgidHNwYW4iKTtoLmF0dHIoIngiLGUueCksdm9pZCAwIT09ZS5maWxsJiZoLmF0dHIoImZpbGwiLGUuZmlsbCksaC50ZXh0KHUpfWVsc2UgbC50ZXh0KHUpO3ZvaWQgMCE9PWUudmFsaWduJiZ2b2lkIDAhPT1lLnRleHRNYXJnaW4mJmUudGV4dE1hcmdpbj4wJiYocis9KGwuX2dyb3Vwc3x8bClbMF1bMF0uZ2V0QkJveCgpLmhlaWdodCxuPXIpLGEucHVzaChsKX1yZXR1cm4gYX0sb1Q9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgicG9seWdvbiIpO3JldHVybiBuLmF0dHIoInBvaW50cyIsZnVuY3Rpb24odCxlLG4scixpKXtyZXR1cm4gdCsiLCIrZSsiICIrKHQrbikrIiwiK2UrIiAiKyh0K24pKyIsIisoZStyLTcpKyIgIisodCtuLTguNCkrIiwiKyhlK3IpKyIgIit0KyIsIisoZStyKX0oZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0KSksbi5hdHRyKCJjbGFzcyIsImxhYmVsQm94IiksZS55PWUueStlLmhlaWdodC8yLGFUKHQsZSksbn0sc1Q9LTEsY1Q9ZnVuY3Rpb24odCxlKXt0LnNlbGVjdEFsbCYmdC5zZWxlY3RBbGwoIi5hY3Rvci1saW5lIikuYXR0cigiY2xhc3MiLCIyMDAiKS5hdHRyKCJ5MiIsZS01NSl9LHVUPWZ1bmN0aW9uKCl7cmV0dXJue3g6MCx5OjAsZmlsbDp2b2lkIDAsYW5jaG9yOnZvaWQgMCxzdHlsZToiIzY2NiIsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsdGV4dE1hcmdpbjowLHJ4OjAscnk6MCx0c3BhbjohMCx2YWxpZ246dm9pZCAwfX0sbFQ9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MCxmaWxsOiIjRURGMkFFIixzdHJva2U6IiM2NjYiLHdpZHRoOjEwMCxhbmNob3I6InN0YXJ0IixoZWlnaHQ6MTAwLHJ4OjAscnk6MH19LGhUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixpLGEsbyxzKXtyKGUuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbithLzIpLmF0dHIoInkiLGkrby8yKzUpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQodCkscyl9ZnVuY3Rpb24gZSh0LGUsbixpLGEsbyxzLGMpe2Zvcih2YXIgdT1jLmFjdG9yRm9udFNpemUsbD1jLmFjdG9yRm9udEZhbWlseSxoPWMuYWN0b3JGb250V2VpZ2h0LGY9dC5zcGxpdChZbS5saW5lQnJlYWtSZWdleCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgcD1kKnUtdSooZi5sZW5ndGgtMSkvMix5PWUuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbithLzIpLmF0dHIoInkiLGkpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnN0eWxlKCJmb250LXNpemUiLHUpLnN0eWxlKCJmb250LXdlaWdodCIsaCkuc3R5bGUoImZvbnQtZmFtaWx5IixsKTt5LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixuK2EvMikuYXR0cigiZHkiLHApLnRleHQoZltkXSkseS5hdHRyKCJ5IixpK28vMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLHIoeSxzKX19ZnVuY3Rpb24gbih0LG4saSxhLG8scyxjLHUpe3ZhciBsPW4uYXBwZW5kKCJzd2l0Y2giKSxoPWwuYXBwZW5kKCJmb3JlaWduT2JqZWN0IikuYXR0cigieCIsaSkuYXR0cigieSIsYSkuYXR0cigid2lkdGgiLG8pLmF0dHIoImhlaWdodCIscykuYXBwZW5kKCJ4aHRtbDpkaXYiKS5zdHlsZSgiZGlzcGxheSIsInRhYmxlIikuc3R5bGUoImhlaWdodCIsIjEwMCUiKS5zdHlsZSgid2lkdGgiLCIxMDAlIik7aC5hcHBlbmQoImRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUtY2VsbCIpLnN0eWxlKCJ0ZXh0LWFsaWduIiwiY2VudGVyIikuc3R5bGUoInZlcnRpY2FsLWFsaWduIiwibWlkZGxlIikudGV4dCh0KSxlKHQsbCxpLGEsbyxzLGMsdSkscihoLGMpfWZ1bmN0aW9uIHIodCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiZ0LmF0dHIobixlW25dKX1yZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuImZvIj09PXIudGV4dFBsYWNlbWVudD9uOiJvbGQiPT09ci50ZXh0UGxhY2VtZW50P3Q6ZX19KCksZlQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLGksYSxvLHMpe3IoZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuKS5hdHRyKCJ5IixpKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLnRleHQodCkscyl9ZnVuY3Rpb24gZSh0LGUsbixpLGEsbyxzLGMpe2Zvcih2YXIgdT1jLmFjdG9yRm9udFNpemUsbD1jLmFjdG9yRm9udEZhbWlseSxoPWMuYWN0b3JGb250V2VpZ2h0LGY9dC5zcGxpdChZbS5saW5lQnJlYWtSZWdleCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgcD1kKnUtdSooZi5sZW5ndGgtMSkvMix5PWUuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbikuYXR0cigieSIsaSkuc3R5bGUoInRleHQtYW5jaG9yIiwic3RhcnQiKS5zdHlsZSgiZm9udC1zaXplIix1KS5zdHlsZSgiZm9udC13ZWlnaHQiLGgpLnN0eWxlKCJmb250LWZhbWlseSIsbCk7eS5hcHBlbmQoInRzcGFuIikuYXR0cigieCIsbikuYXR0cigiZHkiLHApLnRleHQoZltkXSkseS5hdHRyKCJ5IixpK28vMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLHIoeSxzKX19ZnVuY3Rpb24gbih0LG4saSxhLG8scyxjLHUpe3ZhciBsPW4uYXBwZW5kKCJzd2l0Y2giKSxoPWwuYXBwZW5kKCJmb3JlaWduT2JqZWN0IikuYXR0cigieCIsaSkuYXR0cigieSIsYSkuYXR0cigid2lkdGgiLG8pLmF0dHIoImhlaWdodCIscykuYXBwZW5kKCJ4aHRtbDpkaXYiKS5zdHlsZSgiZGlzcGxheSIsInRhYmxlIikuc3R5bGUoImhlaWdodCIsIjEwMCUiKS5zdHlsZSgid2lkdGgiLCIxMDAlIik7aC5hcHBlbmQoImRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUtY2VsbCIpLnN0eWxlKCJ0ZXh0LWFsaWduIiwiY2VudGVyIikuc3R5bGUoInZlcnRpY2FsLWFsaWduIiwibWlkZGxlIikudGV4dCh0KSxlKHQsbCxpLGEsMCxzLGMsdSkscihoLGMpfWZ1bmN0aW9uIHIodCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiZ0LmF0dHIobixlW25dKX1yZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuImZvIj09PXIudGV4dFBsYWNlbWVudD9uOiJvbGQiPT09ci50ZXh0UGxhY2VtZW50P3Q6ZX19KCk7Y29uc3QgZFQ9S2sscFQ9ZnVuY3Rpb24odCxlLG4pe3N3aXRjaChlLnR5cGUpe2Nhc2UiYWN0b3IiOnJldHVybiBmdW5jdGlvbih0LGUsbil7dmFyIHI9ZS54K2Uud2lkdGgvMjswPT09ZS55JiYoc1QrKyx0LmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3IiK3NUKS5hdHRyKCJ4MSIscikuYXR0cigieTEiLDgwKS5hdHRyKCJ4MiIscikuYXR0cigieTIiLDJlMykuYXR0cigiY2xhc3MiLCJhY3Rvci1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMC41cHgiKS5hdHRyKCJzdHJva2UiLCIjOTk5IikpO3ZhciBpPXQuYXBwZW5kKCJnIik7aS5hdHRyKCJjbGFzcyIsImFjdG9yLW1hbiIpO3ZhciBhPXt4OjAseTowLGZpbGw6IiNFREYyQUUiLHN0cm9rZToiIzY2NiIsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfTthLng9ZS54LGEueT1lLnksYS5maWxsPSIjZWFlYWVhIixhLndpZHRoPWUud2lkdGgsYS5oZWlnaHQ9ZS5oZWlnaHQsYS5jbGFzcz0iYWN0b3IiLGEucng9MyxhLnJ5PTMsaS5hcHBlbmQoImxpbmUiKS5hdHRyKCJpZCIsImFjdG9yLW1hbi10b3JzbyIrc1QpLmF0dHIoIngxIixyKS5hdHRyKCJ5MSIsZS55KzI1KS5hdHRyKCJ4MiIscikuYXR0cigieTIiLGUueSs0NSksaS5hcHBlbmQoImxpbmUiKS5hdHRyKCJpZCIsImFjdG9yLW1hbi1hcm1zIitzVCkuYXR0cigieDEiLHItMTgpLmF0dHIoInkxIixlLnkrMzMpLmF0dHIoIngyIixyKzE4KS5hdHRyKCJ5MiIsZS55KzMzKSxpLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIixyLTE4KS5hdHRyKCJ5MSIsZS55KzYwKS5hdHRyKCJ4MiIscikuYXR0cigieTIiLGUueSs0NSksaS5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIscikuYXR0cigieTEiLGUueSs0NSkuYXR0cigieDIiLHIrMTYpLmF0dHIoInkyIixlLnkrNjApO3ZhciBvPWkuYXBwZW5kKCJjaXJjbGUiKTtvLmF0dHIoImN4IixlLngrZS53aWR0aC8yKSxvLmF0dHIoImN5IixlLnkrMTApLG8uYXR0cigiciIsMTUpLG8uYXR0cigid2lkdGgiLGUud2lkdGgpLG8uYXR0cigiaGVpZ2h0IixlLmhlaWdodCk7dmFyIHM9aS5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiBlLmhlaWdodD1zLmhlaWdodCxoVChuKShlLmRlc2NyaXB0aW9uLGksYS54LGEueSszNSxhLndpZHRoLGEuaGVpZ2h0LHtjbGFzczoiYWN0b3IifSxuKSxlLmhlaWdodH0odCxlLG4pO2Nhc2UicGFydGljaXBhbnQiOnJldHVybiBmdW5jdGlvbih0LGUsbil7dmFyIHI9ZS54K2Uud2lkdGgvMixpPXQuYXBwZW5kKCJnIiksYT1pOzA9PT1lLnkmJihzVCsrLGEuYXBwZW5kKCJsaW5lIikuYXR0cigiaWQiLCJhY3RvciIrc1QpLmF0dHIoIngxIixyKS5hdHRyKCJ5MSIsNSkuYXR0cigieDIiLHIpLmF0dHIoInkyIiwyZTMpLmF0dHIoImNsYXNzIiwiYWN0b3ItbGluZSIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjAuNXB4IikuYXR0cigic3Ryb2tlIiwiIzk5OSIpLGE9aS5hcHBlbmQoImciKSxlLmFjdG9yQ250PXNULG51bGwhPWUubGlua3MmJihhLmF0dHIoImlkIiwicm9vdC0iK3NUKSx0VCgiI3Jvb3QtIitzVCxzVCkpKTt2YXIgbz17eDowLHk6MCxmaWxsOiIjRURGMkFFIixzdHJva2U6IiM2NjYiLHdpZHRoOjEwMCxhbmNob3I6InN0YXJ0IixoZWlnaHQ6MTAwLHJ4OjAscnk6MH0scz0iYWN0b3IiO251bGwhPWUucHJvcGVydGllcyYmZS5wcm9wZXJ0aWVzLmNsYXNzP3M9ZS5wcm9wZXJ0aWVzLmNsYXNzOm8uZmlsbD0iI2VhZWFlYSIsby54PWUueCxvLnk9ZS55LG8ud2lkdGg9ZS53aWR0aCxvLmhlaWdodD1lLmhlaWdodCxvLmNsYXNzPXMsby5yeD0zLG8ucnk9Mzt2YXIgYz1LayhhLG8pO2lmKGUucmVjdERhdGE9byxudWxsIT1lLnByb3BlcnRpZXMmJmUucHJvcGVydGllcy5pY29uKXt2YXIgdT1lLnByb3BlcnRpZXMuaWNvbi50cmltKCk7IkAiPT09dS5jaGFyQXQoMCk/blQoYSxvLngrby53aWR0aC0yMCxvLnkrMTAsdS5zdWJzdHIoMSkpOmVUKGEsby54K28ud2lkdGgtMjAsby55KzEwLHUpfWhUKG4pKGUuZGVzY3JpcHRpb24sYSxvLngsby55LG8ud2lkdGgsby5oZWlnaHQse2NsYXNzOiJhY3RvciJ9LG4pO3ZhciBsPWUuaGVpZ2h0O2lmKGMubm9kZSl7dmFyIGg9Yy5ub2RlKCkuZ2V0QkJveCgpO2UuaGVpZ2h0PWguaGVpZ2h0LGw9aC5oZWlnaHR9cmV0dXJuIGx9KHQsZSxuKX19LHlUPWZ1bmN0aW9uKHQsZSxuLHIsaSl7aWYodm9pZCAwPT09ZS5saW5rc3x8bnVsbD09PWUubGlua3N8fDA9PT1PYmplY3Qua2V5cyhlLmxpbmtzKS5sZW5ndGgpcmV0dXJue2hlaWdodDowLHdpZHRoOjB9O3ZhciBhPWUubGlua3Msbz1lLmFjdG9yQ250LHM9ZS5yZWN0RGF0YSxjPSJub25lIjtpJiYoYz0iYmxvY2sgIWltcG9ydGFudCIpO3ZhciB1PXQuYXBwZW5kKCJnIik7dS5hdHRyKCJpZCIsImFjdG9yIitvKyJfcG9wdXAiKSx1LmF0dHIoImNsYXNzIiwiYWN0b3JQb3B1cE1lbnUiKSx1LmF0dHIoImRpc3BsYXkiLGMpLHRUKCIjYWN0b3IiK28rIl9wb3B1cCIsbyk7dmFyIGw9IiI7dm9pZCAwIT09cy5jbGFzcyYmKGw9IiAiK3MuY2xhc3MpO3ZhciBoPXMud2lkdGg+bj9zLndpZHRoOm4sZj11LmFwcGVuZCgicmVjdCIpO2lmKGYuYXR0cigiY2xhc3MiLCJhY3RvclBvcHVwTWVudVBhbmVsIitsKSxmLmF0dHIoIngiLHMueCksZi5hdHRyKCJ5IixzLmhlaWdodCksZi5hdHRyKCJmaWxsIixzLmZpbGwpLGYuYXR0cigic3Ryb2tlIixzLnN0cm9rZSksZi5hdHRyKCJ3aWR0aCIsaCksZi5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KSxmLmF0dHIoInJ4IixzLnJ4KSxmLmF0dHIoInJ5IixzLnJ5KSxudWxsIT1hKXt2YXIgZD0yMDtmb3IodmFyIHAgaW4gYSl7dmFyIHk9dS5hcHBlbmQoImEiKSxnPUprKGFbcF0pO3kuYXR0cigieGxpbms6aHJlZiIsZykseS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSxmVChyKShwLHkscy54KzEwLHMuaGVpZ2h0K2QsaCwyMCx7Y2xhc3M6ImFjdG9yIn0sciksZCs9MzB9fXJldHVybiBmLmF0dHIoImhlaWdodCIsZCkse2hlaWdodDpzLmhlaWdodCtkLHdpZHRoOmh9fSxnVD1mdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBlbmQoImciKX0sbVQ9ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgYT17eDowLHk6MCxmaWxsOiIjRURGMkFFIixzdHJva2U6IiM2NjYiLHdpZHRoOjEwMCxhbmNob3I6InN0YXJ0IixoZWlnaHQ6MTAwLHJ4OjAscnk6MH0sbz1lLmFuY2hvcmVkO2EueD1lLnN0YXJ0eCxhLnk9ZS5zdGFydHksYS5jbGFzcz0iYWN0aXZhdGlvbiIraSUzLGEud2lkdGg9ZS5zdG9weC1lLnN0YXJ0eCxhLmhlaWdodD1uLWUuc3RhcnR5LEtrKG8sYSl9LHZUPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXIuYm94TWFyZ2luLGE9ci5ib3hUZXh0TWFyZ2luLG89ci5sYWJlbEJveEhlaWdodCxzPXIubGFiZWxCb3hXaWR0aCxjPXIubWVzc2FnZUZvbnRGYW1pbHksdT1yLm1lc3NhZ2VGb250U2l6ZSxsPXIubWVzc2FnZUZvbnRXZWlnaHQsaD10LmFwcGVuZCgiZyIpLGY9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIGguYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLHQpLmF0dHIoInkxIixlKS5hdHRyKCJ4MiIsbikuYXR0cigieTIiLHIpLmF0dHIoImNsYXNzIiwibG9vcExpbmUiKX07ZihlLnN0YXJ0eCxlLnN0YXJ0eSxlLnN0b3B4LGUuc3RhcnR5KSxmKGUuc3RvcHgsZS5zdGFydHksZS5zdG9weCxlLnN0b3B5KSxmKGUuc3RhcnR4LGUuc3RvcHksZS5zdG9weCxlLnN0b3B5KSxmKGUuc3RhcnR4LGUuc3RhcnR5LGUuc3RhcnR4LGUuc3RvcHkpLHZvaWQgMCE9PWUuc2VjdGlvbnMmJmUuc2VjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZihlLnN0YXJ0eCx0LnksZS5zdG9weCx0LnkpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMywgMyIpfSkpO3ZhciBkPXt4OjAseTowLGZpbGw6dm9pZCAwLGFuY2hvcjp2b2lkIDAsc3R5bGU6IiM2NjYiLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLHRleHRNYXJnaW46MCxyeDowLHJ5OjAsdHNwYW46ITAsdmFsaWduOnZvaWQgMH07ZC50ZXh0PW4sZC54PWUuc3RhcnR4LGQueT1lLnN0YXJ0eSxkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC5hbmNob3I9Im1pZGRsZSIsZC52YWxpZ249Im1pZGRsZSIsZC50c3Bhbj0hMSxkLndpZHRoPXN8fDUwLGQuaGVpZ2h0PW98fDIwLGQudGV4dE1hcmdpbj1hLGQuY2xhc3M9ImxhYmVsVGV4dCIsb1QoaCxkKSwoZD17eDowLHk6MCxmaWxsOnZvaWQgMCxhbmNob3I6dm9pZCAwLHN0eWxlOiIjNjY2Iix3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHRzcGFuOiEwLHZhbGlnbjp2b2lkIDB9KS50ZXh0PWUudGl0bGUsZC54PWUuc3RhcnR4K3MvMisoZS5zdG9weC1lLnN0YXJ0eCkvMixkLnk9ZS5zdGFydHkraSthLGQuYW5jaG9yPSJtaWRkbGUiLGQudmFsaWduPSJtaWRkbGUiLGQudGV4dE1hcmdpbj1hLGQuY2xhc3M9Imxvb3BUZXh0IixkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC53cmFwPSEwO3ZhciBwPWFUKGgsZCk7cmV0dXJuIHZvaWQgMCE9PWUuc2VjdGlvblRpdGxlcyYmZS5zZWN0aW9uVGl0bGVzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7aWYodC5tZXNzYWdlKXtkLnRleHQ9dC5tZXNzYWdlLGQueD1lLnN0YXJ0eCsoZS5zdG9weC1lLnN0YXJ0eCkvMixkLnk9ZS5zZWN0aW9uc1tuXS55K2krYSxkLmNsYXNzPSJsb29wVGV4dCIsZC5hbmNob3I9Im1pZGRsZSIsZC52YWxpZ249Im1pZGRsZSIsZC50c3Bhbj0hMSxkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC53cmFwPWUud3JhcCxwPWFUKGgsZCk7dmFyIHI9TWF0aC5yb3VuZChwLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKHQuX2dyb3Vwc3x8dClbMF1bMF0uZ2V0QkJveCgpLmhlaWdodH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKSk7ZS5zZWN0aW9uc1tuXS5oZWlnaHQrPXItKGkrYSl9fSkpLGUuaGVpZ2h0PU1hdGgucm91bmQoZS5zdG9weS1lLnN0YXJ0eSksaH0sYlQ9ZnVuY3Rpb24odCxlKXtLayh0LHt4OmUuc3RhcnR4LHk6ZS5zdGFydHksd2lkdGg6ZS5zdG9weC1lLnN0YXJ0eCxoZWlnaHQ6ZS5zdG9weS1lLnN0YXJ0eSxmaWxsOmUuZmlsbCxjbGFzczoicmVjdCJ9KS5sb3dlcigpfSxfVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJhcnJvd2hlYWQiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpfSx4VD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJmaWxsZWQtaGVhZCIpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpfSx3VD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJzZXF1ZW5jZW51bWJlciIpLmF0dHIoInJlZlgiLDE1KS5hdHRyKCJyZWZZIiwxNSkuYXR0cigibWFya2VyV2lkdGgiLDYwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsMTUpLmF0dHIoImN5IiwxNSkuYXR0cigiciIsNil9LGtUPWZ1bmN0aW9uKHQpe3ZhciBlPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImNyb3NzaGVhZCIpLmF0dHIoIm1hcmtlcldpZHRoIiwxNSkuYXR0cigibWFya2VySGVpZ2h0Iiw4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXR0cigicmVmWCIsMTYpLmF0dHIoInJlZlkiLDQpO2UuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsImJsYWNrIikuYXR0cigic3Ryb2tlIiwiIzAwMDAwMCIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMCwgMCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLmF0dHIoImQiLCJNIDksMiBWIDYgTDE2LDQgWiIpLGUuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwMDAwIikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIwLCAwIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigiZCIsIk0gMCwxIEwgNiw3IE0gNiwxIEwgMCw3Iil9LFRUPWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJzeW1ib2wiKS5hdHRyKCJpZCIsImRhdGFiYXNlIikuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLmF0dHIoImNsaXAtcnVsZSIsImV2ZW5vZGQiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSguNSkiKS5hdHRyKCJkIiwiTTEyLjI1OC4wMDFsLjI1Ni4wMDQuMjU1LjAwNS4yNTMuMDA4LjI1MS4wMS4yNDkuMDEyLjI0Ny4wMTUuMjQ2LjAxNi4yNDIuMDE5LjI0MS4wMi4yMzkuMDIzLjIzNi4wMjQuMjMzLjAyNy4yMzEuMDI4LjIyOS4wMzEuMjI1LjAzMi4yMjMuMDM0LjIyLjAzNi4yMTcuMDM4LjIxNC4wNC4yMTEuMDQxLjIwOC4wNDMuMjA1LjA0NS4yMDEuMDQ2LjE5OC4wNDguMTk0LjA1LjE5MS4wNTEuMTg3LjA1My4xODMuMDU0LjE4LjA1Ni4xNzUuMDU3LjE3Mi4wNTkuMTY4LjA2LjE2My4wNjEuMTYuMDYzLjE1NS4wNjQuMTUuMDY2LjA3NC4wMzMuMDczLjAzMy4wNzEuMDM0LjA3LjAzNC4wNjkuMDM1LjA2OC4wMzUuMDY3LjAzNS4wNjYuMDM1LjA2NC4wMzYuMDY0LjAzNi4wNjIuMDM2LjA2LjAzNi4wNi4wMzcuMDU4LjAzNy4wNTguMDM3LjA1NS4wMzguMDU1LjAzOC4wNTMuMDM4LjA1Mi4wMzguMDUxLjAzOS4wNS4wMzkuMDQ4LjAzOS4wNDcuMDM5LjA0NS4wNC4wNDQuMDQuMDQzLjA0LjA0MS4wNC4wNC4wNDEuMDM5LjA0MS4wMzcuMDQxLjAzNi4wNDEuMDM0LjA0MS4wMzMuMDQyLjAzMi4wNDIuMDMuMDQyLjAyOS4wNDIuMDI3LjA0Mi4wMjYuMDQzLjAyNC4wNDMuMDIzLjA0My4wMjEuMDQzLjAyLjA0My4wMTguMDQ0LjAxNy4wNDMuMDE1LjA0NC4wMTMuMDQ0LjAxMi4wNDQuMDExLjA0NS4wMDkuMDQ0LjAwNy4wNDUuMDA2LjA0NS4wMDQuMDQ1LjAwMi4wNDUuMDAxLjA0NXYxN2wtLjAwMS4wNDUtLjAwMi4wNDUtLjAwNC4wNDUtLjAwNi4wNDUtLjAwNy4wNDUtLjAwOS4wNDQtLjAxMS4wNDUtLjAxMi4wNDQtLjAxMy4wNDQtLjAxNS4wNDQtLjAxNy4wNDMtLjAxOC4wNDQtLjAyLjA0My0uMDIxLjA0My0uMDIzLjA0My0uMDI0LjA0My0uMDI2LjA0My0uMDI3LjA0Mi0uMDI5LjA0Mi0uMDMuMDQyLS4wMzIuMDQyLS4wMzMuMDQyLS4wMzQuMDQxLS4wMzYuMDQxLS4wMzcuMDQxLS4wMzkuMDQxLS4wNC4wNDEtLjA0MS4wNC0uMDQzLjA0LS4wNDQuMDQtLjA0NS4wNC0uMDQ3LjAzOS0uMDQ4LjAzOS0uMDUuMDM5LS4wNTEuMDM5LS4wNTIuMDM4LS4wNTMuMDM4LS4wNTUuMDM4LS4wNTUuMDM4LS4wNTguMDM3LS4wNTguMDM3LS4wNi4wMzctLjA2LjAzNi0uMDYyLjAzNi0uMDY0LjAzNi0uMDY0LjAzNi0uMDY2LjAzNS0uMDY3LjAzNS0uMDY4LjAzNS0uMDY5LjAzNS0uMDcuMDM0LS4wNzEuMDM0LS4wNzMuMDMzLS4wNzQuMDMzLS4xNS4wNjYtLjE1NS4wNjQtLjE2LjA2My0uMTYzLjA2MS0uMTY4LjA2LS4xNzIuMDU5LS4xNzUuMDU3LS4xOC4wNTYtLjE4My4wNTQtLjE4Ny4wNTMtLjE5MS4wNTEtLjE5NC4wNS0uMTk4LjA0OC0uMjAxLjA0Ni0uMjA1LjA0NS0uMjA4LjA0My0uMjExLjA0MS0uMjE0LjA0LS4yMTcuMDM4LS4yMi4wMzYtLjIyMy4wMzQtLjIyNS4wMzItLjIyOS4wMzEtLjIzMS4wMjgtLjIzMy4wMjctLjIzNi4wMjQtLjIzOS4wMjMtLjI0MS4wMi0uMjQyLjAxOS0uMjQ2LjAxNi0uMjQ3LjAxNS0uMjQ5LjAxMi0uMjUxLjAxLS4yNTMuMDA4LS4yNTUuMDA1LS4yNTYuMDA0LS4yNTguMDAxLS4yNTgtLjAwMS0uMjU2LS4wMDQtLjI1NS0uMDA1LS4yNTMtLjAwOC0uMjUxLS4wMS0uMjQ5LS4wMTItLjI0Ny0uMDE1LS4yNDUtLjAxNi0uMjQzLS4wMTktLjI0MS0uMDItLjIzOC0uMDIzLS4yMzYtLjAyNC0uMjM0LS4wMjctLjIzMS0uMDI4LS4yMjgtLjAzMS0uMjI2LS4wMzItLjIyMy0uMDM0LS4yMi0uMDM2LS4yMTctLjAzOC0uMjE0LS4wNC0uMjExLS4wNDEtLjIwOC0uMDQzLS4yMDQtLjA0NS0uMjAxLS4wNDYtLjE5OC0uMDQ4LS4xOTUtLjA1LS4xOS0uMDUxLS4xODctLjA1My0uMTg0LS4wNTQtLjE3OS0uMDU2LS4xNzYtLjA1Ny0uMTcyLS4wNTktLjE2Ny0uMDYtLjE2NC0uMDYxLS4xNTktLjA2My0uMTU1LS4wNjQtLjE1MS0uMDY2LS4wNzQtLjAzMy0uMDcyLS4wMzMtLjA3Mi0uMDM0LS4wNy0uMDM0LS4wNjktLjAzNS0uMDY4LS4wMzUtLjA2Ny0uMDM1LS4wNjYtLjAzNS0uMDY0LS4wMzYtLjA2My0uMDM2LS4wNjItLjAzNi0uMDYxLS4wMzYtLjA2LS4wMzctLjA1OC0uMDM3LS4wNTctLjAzNy0uMDU2LS4wMzgtLjA1NS0uMDM4LS4wNTMtLjAzOC0uMDUyLS4wMzgtLjA1MS0uMDM5LS4wNDktLjAzOS0uMDQ5LS4wMzktLjA0Ni0uMDM5LS4wNDYtLjA0LS4wNDQtLjA0LS4wNDMtLjA0LS4wNDEtLjA0LS4wNC0uMDQxLS4wMzktLjA0MS0uMDM3LS4wNDEtLjAzNi0uMDQxLS4wMzQtLjA0MS0uMDMzLS4wNDItLjAzMi0uMDQyLS4wMy0uMDQyLS4wMjktLjA0Mi0uMDI3LS4wNDItLjAyNi0uMDQzLS4wMjQtLjA0My0uMDIzLS4wNDMtLjAyMS0uMDQzLS4wMi0uMDQzLS4wMTgtLjA0NC0uMDE3LS4wNDMtLjAxNS0uMDQ0LS4wMTMtLjA0NC0uMDEyLS4wNDQtLjAxMS0uMDQ1LS4wMDktLjA0NC0uMDA3LS4wNDUtLjAwNi0uMDQ1LS4wMDQtLjA0NS0uMDAyLS4wNDUtLjAwMS0uMDQ1di0xN2wuMDAxLS4wNDUuMDAyLS4wNDUuMDA0LS4wNDUuMDA2LS4wNDUuMDA3LS4wNDUuMDA5LS4wNDQuMDExLS4wNDUuMDEyLS4wNDQuMDEzLS4wNDQuMDE1LS4wNDQuMDE3LS4wNDMuMDE4LS4wNDQuMDItLjA0My4wMjEtLjA0My4wMjMtLjA0My4wMjQtLjA0My4wMjYtLjA0My4wMjctLjA0Mi4wMjktLjA0Mi4wMy0uMDQyLjAzMi0uMDQyLjAzMy0uMDQyLjAzNC0uMDQxLjAzNi0uMDQxLjAzNy0uMDQxLjAzOS0uMDQxLjA0LS4wNDEuMDQxLS4wNC4wNDMtLjA0LjA0NC0uMDQuMDQ2LS4wNC4wNDYtLjAzOS4wNDktLjAzOS4wNDktLjAzOS4wNTEtLjAzOS4wNTItLjAzOC4wNTMtLjAzOC4wNTUtLjAzOC4wNTYtLjAzOC4wNTctLjAzNy4wNTgtLjAzNy4wNi0uMDM3LjA2MS0uMDM2LjA2Mi0uMDM2LjA2My0uMDM2LjA2NC0uMDM2LjA2Ni0uMDM1LjA2Ny0uMDM1LjA2OC0uMDM1LjA2OS0uMDM1LjA3LS4wMzQuMDcyLS4wMzQuMDcyLS4wMzMuMDc0LS4wMzMuMTUxLS4wNjYuMTU1LS4wNjQuMTU5LS4wNjMuMTY0LS4wNjEuMTY3LS4wNi4xNzItLjA1OS4xNzYtLjA1Ny4xNzktLjA1Ni4xODQtLjA1NC4xODctLjA1My4xOS0uMDUxLjE5NS0uMDUuMTk4LS4wNDguMjAxLS4wNDYuMjA0LS4wNDUuMjA4LS4wNDMuMjExLS4wNDEuMjE0LS4wNC4yMTctLjAzOC4yMi0uMDM2LjIyMy0uMDM0LjIyNi0uMDMyLjIyOC0uMDMxLjIzMS0uMDI4LjIzNC0uMDI3LjIzNi0uMDI0LjIzOC0uMDIzLjI0MS0uMDIuMjQzLS4wMTkuMjQ1LS4wMTYuMjQ3LS4wMTUuMjQ5LS4wMTIuMjUxLS4wMS4yNTMtLjAwOC4yNTUtLjAwNS4yNTYtLjAwNC4yNTgtLjAwMS4yNTguMDAxem0tOS4yNTggMjAuNDk5di4wMWwuMDAxLjAyMS4wMDMuMDIxLjAwNC4wMjIuMDA1LjAyMS4wMDYuMDIyLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyMS4wMjQuMDIyLjAyNS4wMjMuMDI0LjAyNC4wMjUuMDUyLjA0OS4wNTYuMDUuMDYxLjA1MS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUxLjA3OS4wNTIuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUxLjEwNS4wNTIuMTEuMDUyLjExNC4wNTEuMTE5LjA1MS4xMjMuMDUxLjEyNy4wNS4xMzEuMDUuMTM1LjA1LjEzOS4wNDguMTQ0LjA0OS4xNDcuMDQ3LjE1Mi4wNDcuMTU1LjA0Ny4xNi4wNDUuMTYzLjA0NS4xNjcuMDQzLjE3MS4wNDMuMTc2LjA0MS4xNzguMDQxLjE4My4wMzkuMTg3LjAzOS4xOS4wMzcuMTk0LjAzNS4xOTcuMDM1LjIwMi4wMzMuMjA0LjAzMS4yMDkuMDMuMjEyLjAyOS4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNi4yNC4wMTUuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA1LjI1Ni4wMDQuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDA0LjI1NC0uMDA1LjI1LS4wMDguMjQ3LS4wMTEuMjQ0LS4wMTIuMjQxLS4wMTQuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMjEuMjI2LS4wMjEuMjI0LS4wMjQuMjItLjAyNi4yMTYtLjAyNy4yMTItLjAyOC4yMS0uMDMxLjIwNS0uMDMxLjIwMi0uMDM0LjE5OC0uMDM0LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDQuMTc5LS4wNC4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ5LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTMuMDgzLS4wNTEuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNC4wMjMtLjAyNS4wMjEtLjAyNC4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDI0LjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMjdsLS4wNzcuMDU1LS4wOC4wNTMtLjA4My4wNTQtLjA4NS4wNTMtLjA4Ny4wNTItLjA5LjA1Mi0uMDkzLjA1MS0uMDk1LjA1LS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ1LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDQtLjEzMi4wMzgtLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzctLjEzOS4wMzUtLjE0Mi4wMzUtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzEtLjE1LjAzLS4xNTEuMDMtLjE1My4wMjktLjE1NC4wMjctLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjUtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjItLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxMS0uMTc4LjAxLS4xNzkuMDA4LS4xNzkuMDA4LS4xODEuMDA2LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDYtLjE3OS0uMDA4LS4xNzktLjAwOC0uMTc4LS4wMS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjctLjE1My0uMDI5LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNS0uMTQtLjAzNS0uMTM3LS4wMzctLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzgtLjEzLS4wNC0uMTI4LS4wNC0uMTI2LS4wNDEtLjEyNC0uMDQyLS4xMjItLjA0Mi0uMTItLjA0NC0uMTE3LS4wNDMtLjExNi0uMDQ1LS4xMTMtLjA0NS0uMTEyLS4wNDYtLjEwOS0uMDQ3LS4xMDYtLjA0Ny0uMTA1LS4wNDgtLjEwMi0uMDQ5LS4xLS4wNDktLjA5Ny0uMDUtLjA5NS0uMDUtLjA5My0uMDUyLS4wOS0uMDUxLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEyN3ptMC01LjY1NHYuMDExbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMS4wMDUuMDIyLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIyLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDI0LjAxNi4wMjMuMDE3LjAyNC4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI0LjAyMy4wMjUuMDI0LjAyNC4wNTIuMDUuMDU2LjA1LjA2MS4wNS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUyLjA3OS4wNTEuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUyLjEwNS4wNTIuMTEuMDUxLjExNC4wNTEuMTE5LjA1Mi4xMjMuMDUuMTI3LjA1MS4xMzEuMDUuMTM1LjA0OS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0NC4xNzEuMDQyLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjIuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEyLjI0MS0uMDE1LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OC4xMzktLjA1LjEzNi0uMDQ5LjEzMS0uMDUuMTI2LS4wNTEuMTIzLS4wNTEuMTE4LS4wNTEuMTE0LS4wNTIuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1Mi4wODMtLjA1Mi4wNzktLjA1Mi4wNzQtLjA1MS4wNy0uMDUyLjA2NS0uMDUxLjA2LS4wNS4wNTYtLjA1MS4wNTEtLjA0OS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNS4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDIzLjAxMy0uMDI0LjAxMi0uMDIyLjAxLS4wMjMuMDEtLjAyMy4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMS4wMDQtLjAyMi4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMzlsLS4wNzcuMDU0LS4wOC4wNTQtLjA4My4wNTQtLjA4NS4wNTItLjA4Ny4wNTMtLjA5LjA1MS0uMDkzLjA1MS0uMDk1LjA1MS0uMDk3LjA1LS4xLjA0OS0uMTAyLjA0OS0uMTA1LjA0OC0uMTA2LjA0Ny0uMTA5LjA0Ny0uMTExLjA0Ni0uMTE0LjA0NS0uMTE1LjA0NC0uMTE4LjA0NC0uMTIuMDQ0LS4xMjIuMDQyLS4xMjQuMDQyLS4xMjYuMDQxLS4xMjguMDQtLjEzLjAzOS0uMTMyLjAzOS0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNi0uMTM5LjAzNi0uMTQyLjAzNS0uMTQzLjAzMy0uMTQ0LjAzMy0uMTQ3LjAzMy0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOC0uMTU0LjAyOC0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDA5LS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA3LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDctLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMDktLjE3Ni0uMDExLS4xNzYtLjAxMi0uMTc1LS4wMTMtLjE3My0uMDE0LS4xNzItLjAxNS0uMTcxLS4wMTYtLjE3LS4wMTctLjE2OS0uMDE4LS4xNjctLjAxOS0uMTY2LS4wMi0uMTY1LS4wMjEtLjE2My0uMDIyLS4xNjItLjAyMy0uMTYxLS4wMjQtLjE1OS0uMDI1LS4xNTctLjAyNi0uMTU2LS4wMjctLjE1NS0uMDI4LS4xNTMtLjAyOC0uMTUxLS4wMy0uMTUtLjAzLS4xNDgtLjAzMS0uMTQ2LS4wMzMtLjE0NS0uMDMzLS4xNDMtLjAzMy0uMTQxLS4wMzUtLjE0LS4wMzYtLjEzNy0uMDM2LS4xMzYtLjAzNy0uMTM0LS4wMzgtLjEzMi0uMDM5LS4xMy0uMDM5LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUxLS4wODctLjA1My0uMDg1LS4wNTItLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEzOXptMC01LjY2NnYuMDExbC4wMDEuMDIuMDAzLjAyMi4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMS4wMDcuMDIyLjAwOS4wMjMuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjMuMDE2LjAyNC4wMTcuMDI0LjAxOC4wMjMuMDE5LjAyNC4wMjEuMDI1LjAyMi4wMjQuMDIzLjAyNC4wMjQuMDI1LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1MS4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OS4xNDQuMDQ4LjE0Ny4wNDguMTUyLjA0Ny4xNTUuMDQ2LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQyLjE3OC4wNC4xODMuMDQuMTg3LjAzOC4xOS4wMzcuMTk0LjAzNi4xOTcuMDM0LjIwMi4wMzMuMjA0LjAzMi4yMDkuMDMuMjEyLjAyOC4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNy4yNC4wMTQuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA2LjI1Ni4wMDMuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDAzLjI1NC0uMDA2LjI1LS4wMDguMjQ3LS4wMS4yNDQtLjAxMy4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyLjIyNi0uMDIyLjIyNC0uMDI0LjIyLS4wMjUuMjE2LS4wMjcuMjEyLS4wMjkuMjEtLjAzLjIwNS0uMDMyLjIwMi0uMDMzLjE5OC0uMDM1LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDM5LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDUuMTU1LS4wNDcuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNDkuMTMxLS4wNTEuMTI2LS4wNS4xMjMtLjA1MS4xMTgtLjA1Mi4xMTQtLjA1MS4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUyLjA3LS4wNTEuMDY1LS4wNTEuMDYtLjA1MS4wNTYtLjA1LjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMi4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjE1M2wtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1My0uMDg1LjA1My0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ4LS4xMDUuMDQ4LS4xMDYuMDQ4LS4xMDkuMDQ2LS4xMTEuMDQ2LS4xMTQuMDQ2LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDMtLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM0LS4xNDMuMDM0LS4xNDQuMDMzLS4xNDcuMDMyLS4xNDguMDMyLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI0LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIzLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMS0uMTc4LjAxLS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA2LS4xODIuMDA2LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAxLS4xODUuMDAxLS4xODUtLjAwMS0uMTg0LS4wMDEtLjE4NC0uMDAzLS4xODItLjAwNC0uMTgyLS4wMDYtLjE4MS0uMDA2LS4xNzktLjAwNy0uMTc5LS4wMDktLjE3OC0uMDEtLjE3Ni0uMDEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjMtLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjQtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMyLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNC0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQxLS4xMjYtLjA0MS0uMTI0LS4wNDEtLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ4LS4xMDUtLjA0OC0uMTAyLS4wNDgtLjEtLjA1LS4wOTctLjA0OS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUyLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDUzLS4wOC0uMDU0LS4wNzctLjA1NHY0LjE1M3ptOC43NC04LjE3OWwtLjI1Ny4wMDQtLjI1NC4wMDUtLjI1LjAwOC0uMjQ3LjAxMS0uMjQ0LjAxMi0uMjQxLjAxNC0uMjM3LjAxNi0uMjMzLjAxOC0uMjMxLjAyMS0uMjI2LjAyMi0uMjI0LjAyMy0uMjIuMDI2LS4yMTYuMDI3LS4yMTIuMDI4LS4yMS4wMzEtLjIwNS4wMzItLjIwMi4wMzMtLjE5OC4wMzQtLjE5NC4wMzYtLjE5MS4wMzgtLjE4Ny4wMzgtLjE4My4wNC0uMTc5LjA0MS0uMTc1LjA0Mi0uMTcyLjA0My0uMTY4LjA0My0uMTYzLjA0NS0uMTYuMDQ2LS4xNTUuMDQ2LS4xNTIuMDQ4LS4xNDguMDQ4LS4xNDMuMDQ4LS4xMzkuMDQ5LS4xMzYuMDUtLjEzMS4wNS0uMTI2LjA1MS0uMTIzLjA1MS0uMTE4LjA1MS0uMTE0LjA1Mi0uMTEuMDUyLS4xMDYuMDUyLS4xMDEuMDUyLS4wOTYuMDUyLS4wOTIuMDUyLS4wODguMDUyLS4wODMuMDUyLS4wNzkuMDUyLS4wNzQuMDUxLS4wNy4wNTItLjA2NS4wNTEtLjA2LjA1LS4wNTYuMDUtLjA1MS4wNS0uMDIzLjAyNS0uMDIzLjAyNC0uMDIxLjAyNC0uMDIuMDI1LS4wMTkuMDI0LS4wMTguMDI0LS4wMTcuMDIzLS4wMTUuMDI0LS4wMTQuMDIzLS4wMTMuMDIzLS4wMTIuMDIzLS4wMS4wMjMtLjAxLjAyMi0uMDA4LjAyMi0uMDA2LjAyMy0uMDA2LjAyMS0uMDA0LjAyMi0uMDA0LjAyMS0uMDAxLjAyMS0uMDAxLjAyMS4wMDEuMDIxLjAwMS4wMjEuMDA0LjAyMS4wMDQuMDIyLjAwNi4wMjEuMDA2LjAyMy4wMDguMDIyLjAxLjAyMi4wMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNC4wMjMuMDE1LjAyNC4wMTcuMDIzLjAxOC4wMjQuMDE5LjAyNC4wMi4wMjUuMDIxLjAyNC4wMjMuMDI0LjAyMy4wMjUuMDUxLjA1LjA1Ni4wNS4wNi4wNS4wNjUuMDUxLjA3LjA1Mi4wNzQuMDUxLjA3OS4wNTIuMDgzLjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk2LjA1Mi4xMDEuMDUyLjEwNi4wNTIuMTEuMDUyLjExNC4wNTIuMTE4LjA1MS4xMjMuMDUxLjEyNi4wNTEuMTMxLjA1LjEzNi4wNS4xMzkuMDQ5LjE0My4wNDguMTQ4LjA0OC4xNTIuMDQ4LjE1NS4wNDYuMTYuMDQ2LjE2My4wNDUuMTY4LjA0My4xNzIuMDQzLjE3NS4wNDIuMTc5LjA0MS4xODMuMDQuMTg3LjAzOC4xOTEuMDM4LjE5NC4wMzYuMTk4LjAzNC4yMDIuMDMzLjIwNS4wMzIuMjEuMDMxLjIxMi4wMjguMjE2LjAyNy4yMi4wMjYuMjI0LjAyMy4yMjYuMDIyLjIzMS4wMjEuMjMzLjAxOC4yMzcuMDE2LjI0MS4wMTQuMjQ0LjAxMi4yNDcuMDExLjI1LjAwOC4yNTQuMDA1LjI1Ny4wMDQuMjYuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMi4yMjQtLjAyMy4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzguMTg3LS4wMzguMTgzLS4wNC4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0My4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ4LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNC4wMi0uMDI1LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDIzLjAxNS0uMDI0LjAxNC0uMDIzLjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMy4wMDYtLjAyMS4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwMS0uMDIxLS4wMDQtLjAyMS0uMDA0LS4wMjItLjAwNi0uMDIxLS4wMDYtLjAyMy0uMDA4LS4wMjItLjAxLS4wMjItLjAxLS4wMjMtLjAxMi0uMDIzLS4wMTMtLjAyMy0uMDE0LS4wMjMtLjAxNS0uMDI0LS4wMTctLjAyMy0uMDE4LS4wMjQtLjAxOS0uMDI0LS4wMi0uMDI1LS4wMjEtLjAyNC0uMDIzLS4wMjQtLjAyMy0uMDI1LS4wNTEtLjA1LS4wNTYtLjA1LS4wNi0uMDUtLjA2NS0uMDUxLS4wNy0uMDUyLS4wNzQtLjA1MS0uMDc5LS4wNTItLjA4My0uMDUyLS4wODgtLjA1Mi0uMDkyLS4wNTItLjA5Ni0uMDUyLS4xMDEtLjA1Mi0uMTA2LS4wNTItLjExLS4wNTItLjExNC0uMDUyLS4xMTgtLjA1MS0uMTIzLS4wNTEtLjEyNi0uMDUxLS4xMzEtLjA1LS4xMzYtLjA1LS4xMzktLjA0OS0uMTQzLS4wNDgtLjE0OC0uMDQ4LS4xNTItLjA0OC0uMTU1LS4wNDYtLjE2LS4wNDYtLjE2My0uMDQ1LS4xNjgtLjA0My0uMTcyLS4wNDMtLjE3NS0uMDQyLS4xNzktLjA0MS0uMTgzLS4wNC0uMTg3LS4wMzgtLjE5MS0uMDM4LS4xOTQtLjAzNi0uMTk4LS4wMzQtLjIwMi0uMDMzLS4yMDUtLjAzMi0uMjEtLjAzMS0uMjEyLS4wMjgtLjIxNi0uMDI3LS4yMi0uMDI2LS4yMjQtLjAyMy0uMjI2LS4wMjItLjIzMS0uMDIxLS4yMzMtLjAxOC0uMjM3LS4wMTYtLjI0MS0uMDE0LS4yNDQtLjAxMi0uMjQ3LS4wMTEtLjI1LS4wMDgtLjI1NC0uMDA1LS4yNTctLjAwNC0uMjYtLjAwMS0uMjYuMDAxeiIpfSxFVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjb21wdXRlciIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMiAydjEzaDIwdi0xM2gtMjB6bTE4IDExaC0xNnYtOWgxNnY5em0tMTAuMjI4IDZsLjQ2Ni0xaDMuNTI0bC40NjcgMWgtNC40NTd6bTE0LjIyOCAzaC0yNGwyLTZoMi4xMDRsLTEuMzMgNGgxOC40NWwtMS4yOTctNGgyLjA3M2wyIDZ6bS01LTEwaC0xNHYtN2gxNHY3eiIpfSxDVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjbG9jayIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem01Ljg0OCAxMi40NTljLjIwMi4wMzguMjAyLjMzMy4wMDEuMzcyLTEuOTA3LjM2MS02LjA0NSAxLjExMS02LjU0NyAxLjExMS0uNzE5IDAtMS4zMDEtLjU4Mi0xLjMwMS0xLjMwMSAwLS41MTIuNzctNS40NDcgMS4xMjUtNy40NDUuMDM0LS4xOTIuMzEyLS4xODEuMzQzLjAxNGwuOTg1IDYuMjM4IDUuMzk0IDEuMDExeiIpfSxTVD11VCxBVD1sVDtTay5wYXJzZXIueXk9Wms7dmFyIE1UPXt9LE5UPXtkYXRhOntzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdmVydGljYWxQb3M6MCxzZXF1ZW5jZUl0ZW1zOltdLGFjdGl2YXRpb25zOltdLG1vZGVsczp7Z2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsMD09PXRoaXMuYWN0b3JzLmxlbmd0aD9bMF06dGhpcy5hY3RvcnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR8fDB9KSkpKygwPT09dGhpcy5sb29wcy5sZW5ndGg/MDp0aGlzLmxvb3BzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fHwwfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSkpKSsoMD09PXRoaXMubWVzc2FnZXMubGVuZ3RoPzA6dGhpcy5tZXNzYWdlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodHx8MH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKSkrKDA9PT10aGlzLm5vdGVzLmxlbmd0aD8wOnRoaXMubm90ZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR8fDB9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSkpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuYWN0b3JzPVtdLHRoaXMubG9vcHM9W10sdGhpcy5tZXNzYWdlcz1bXSx0aGlzLm5vdGVzPVtdfSxhZGRBY3RvcjpmdW5jdGlvbih0KXt0aGlzLmFjdG9ycy5wdXNoKHQpfSxhZGRMb29wOmZ1bmN0aW9uKHQpe3RoaXMubG9vcHMucHVzaCh0KX0sYWRkTWVzc2FnZTpmdW5jdGlvbih0KXt0aGlzLm1lc3NhZ2VzLnB1c2godCl9LGFkZE5vdGU6ZnVuY3Rpb24odCl7dGhpcy5ub3Rlcy5wdXNoKHQpfSxsYXN0QWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RvcnNbdGhpcy5hY3RvcnMubGVuZ3RoLTFdfSxsYXN0TG9vcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvb3BzW3RoaXMubG9vcHMubGVuZ3RoLTFdfSxsYXN0TWVzc2FnZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VzW3RoaXMubWVzc2FnZXMubGVuZ3RoLTFdfSxsYXN0Tm90ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vdGVzW3RoaXMubm90ZXMubGVuZ3RoLTFdfSxhY3RvcnM6W10sbG9vcHM6W10sbWVzc2FnZXM6W10sbm90ZXM6W119LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlSXRlbXM9W10sdGhpcy5hY3RpdmF0aW9ucz1bXSx0aGlzLm1vZGVscy5jbGVhcigpLHRoaXMuZGF0YT17c3RhcnR4OnZvaWQgMCxzdG9weDp2b2lkIDAsc3RhcnR5OnZvaWQgMCxzdG9weTp2b2lkIDB9LHRoaXMudmVydGljYWxQb3M9MCxSVChTay5wYXJzZXIueXkuZ2V0Q29uZmlnKCkpfSx1cGRhdGVWYWw6ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09dFtlXT90W2VdPW46dFtlXT1yKG4sdFtlXSl9LHVwZGF0ZUJvdW5kczpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT10aGlzLGE9MDtmdW5jdGlvbiBvKG8pe3JldHVybiBmdW5jdGlvbihzKXthKys7dmFyIGM9aS5zZXF1ZW5jZUl0ZW1zLmxlbmd0aC1hKzE7aS51cGRhdGVWYWwocywic3RhcnR5IixlLWMqTVQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbChzLCJzdG9weSIscitjKk1ULmJveE1hcmdpbixNYXRoLm1heCksaS51cGRhdGVWYWwoTlQuZGF0YSwic3RhcnR4Iix0LWMqTVQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbChOVC5kYXRhLCJzdG9weCIsbitjKk1ULmJveE1hcmdpbixNYXRoLm1heCksImFjdGl2YXRpb24iIT09byYmKGkudXBkYXRlVmFsKHMsInN0YXJ0eCIsdC1jKk1ULmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwocywic3RvcHgiLG4rYypNVC5ib3hNYXJnaW4sTWF0aC5tYXgpLGkudXBkYXRlVmFsKE5ULmRhdGEsInN0YXJ0eSIsZS1jKk1ULmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwoTlQuZGF0YSwic3RvcHkiLHIrYypNVC5ib3hNYXJnaW4sTWF0aC5tYXgpKX19dGhpcy5zZXF1ZW5jZUl0ZW1zLmZvckVhY2gobygpKSx0aGlzLmFjdGl2YXRpb25zLmZvckVhY2gobygiYWN0aXZhdGlvbiIpKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPU1hdGgubWluKHQsbiksYT1NYXRoLm1heCh0LG4pLG89TWF0aC5taW4oZSxyKSxzPU1hdGgubWF4KGUscik7dGhpcy51cGRhdGVWYWwoTlQuZGF0YSwic3RhcnR4IixpLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbChOVC5kYXRhLCJzdGFydHkiLG8sTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKE5ULmRhdGEsInN0b3B4IixhLE1hdGgubWF4KSx0aGlzLnVwZGF0ZVZhbChOVC5kYXRhLCJzdG9weSIscyxNYXRoLm1heCksdGhpcy51cGRhdGVCb3VuZHMoaSxvLGEscyl9LG5ld0FjdGl2YXRpb246ZnVuY3Rpb24odCxlLG4pe3ZhciByPW5bdC5mcm9tLmFjdG9yXSxpPUZUKHQuZnJvbS5hY3RvcikubGVuZ3RofHwwLGE9ci54K3Iud2lkdGgvMisoaS0xKSpNVC5hY3RpdmF0aW9uV2lkdGgvMjt0aGlzLmFjdGl2YXRpb25zLnB1c2goe3N0YXJ0eDphLHN0YXJ0eTp0aGlzLnZlcnRpY2FsUG9zKzIsc3RvcHg6YStNVC5hY3RpdmF0aW9uV2lkdGgsc3RvcHk6dm9pZCAwLGFjdG9yOnQuZnJvbS5hY3RvcixhbmNob3JlZDpnVChlKX0pfSxlbmRBY3RpdmF0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWN0aXZhdGlvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hY3Rvcn0pKS5sYXN0SW5kZXhPZih0LmZyb20uYWN0b3IpO3JldHVybiB0aGlzLmFjdGl2YXRpb25zLnNwbGljZShlLDEpWzBdfSxjcmVhdGVMb29wOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnttZXNzYWdlOnZvaWQgMCx3cmFwOiExLHdpZHRoOnZvaWQgMH0sZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm57c3RhcnR4OnZvaWQgMCxzdGFydHk6dGhpcy52ZXJ0aWNhbFBvcyxzdG9weDp2b2lkIDAsc3RvcHk6dm9pZCAwLHRpdGxlOnQubWVzc2FnZSx3cmFwOnQud3JhcCx3aWR0aDp0LndpZHRoLGhlaWdodDowLGZpbGw6ZX19LG5ld0xvb3A6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e21lc3NhZ2U6dm9pZCAwLHdyYXA6ITEsd2lkdGg6dm9pZCAwfSxlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3RoaXMuc2VxdWVuY2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTG9vcCh0LGUpKX0sZW5kTG9vcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlcXVlbmNlSXRlbXMucG9wKCl9LGFkZFNlY3Rpb25Ub0xvb3A6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zZXF1ZW5jZUl0ZW1zLnBvcCgpO2Uuc2VjdGlvbnM9ZS5zZWN0aW9uc3x8W10sZS5zZWN0aW9uVGl0bGVzPWUuc2VjdGlvblRpdGxlc3x8W10sZS5zZWN0aW9ucy5wdXNoKHt5Ok5ULmdldFZlcnRpY2FsUG9zKCksaGVpZ2h0OjB9KSxlLnNlY3Rpb25UaXRsZXMucHVzaCh0KSx0aGlzLnNlcXVlbmNlSXRlbXMucHVzaChlKX0sYnVtcFZlcnRpY2FsUG9zOmZ1bmN0aW9uKHQpe3RoaXMudmVydGljYWxQb3M9dGhpcy52ZXJ0aWNhbFBvcyt0LHRoaXMuZGF0YS5zdG9weT10aGlzLnZlcnRpY2FsUG9zfSxnZXRWZXJ0aWNhbFBvczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZlcnRpY2FsUG9zfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm57Ym91bmRzOnRoaXMuZGF0YSxtb2RlbHM6dGhpcy5tb2RlbHN9fX0sRFQ9ZnVuY3Rpb24odCl7cmV0dXJue2ZvbnRGYW1pbHk6dC5tZXNzYWdlRm9udEZhbWlseSxmb250U2l6ZTp0Lm1lc3NhZ2VGb250U2l6ZSxmb250V2VpZ2h0OnQubWVzc2FnZUZvbnRXZWlnaHR9fSxPVD1mdW5jdGlvbih0KXtyZXR1cm57Zm9udEZhbWlseTp0Lm5vdGVGb250RmFtaWx5LGZvbnRTaXplOnQubm90ZUZvbnRTaXplLGZvbnRXZWlnaHQ6dC5ub3RlRm9udFdlaWdodH19LEJUPWZ1bmN0aW9uKHQpe3JldHVybntmb250RmFtaWx5OnQuYWN0b3JGb250RmFtaWx5LGZvbnRTaXplOnQuYWN0b3JGb250U2l6ZSxmb250V2VpZ2h0OnQuYWN0b3JGb250V2VpZ2h0fX0sTFQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKHZhciBpPTAsYT0wLG89MCxzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBjPWVbbltzXV07Yy53aWR0aD1jLndpZHRofHxNVC53aWR0aCxjLmhlaWdodD1NYXRoLm1heChjLmhlaWdodHx8TVQuaGVpZ2h0LE1ULmhlaWdodCksYy5tYXJnaW49Yy5tYXJnaW58fE1ULmFjdG9yTWFyZ2luLGMueD1pK2EsYy55PXI7dmFyIHU9cFQodCxjLE1UKTtvPU1hdGgubWF4KG8sdSksTlQuaW5zZXJ0KGMueCxyLGMueCtjLndpZHRoLGMuaGVpZ2h0KSxpKz1jLndpZHRoLGErPWMubWFyZ2luLE5ULm1vZGVscy5hZGRBY3RvcihjKX1OVC5idW1wVmVydGljYWxQb3Mobyl9LElUPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9MCxpPTAsYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgbz1lW25bYV1dLHM9WVQobyksYz15VCh0LG8scyxNVCxNVC5mb3JjZU1lbnVzKTtjLmhlaWdodD5yJiYocj1jLmhlaWdodCksYy53aWR0aCtvLng+aSYmKGk9Yy53aWR0aCtvLngpfXJldHVybnttYXhIZWlnaHQ6cixtYXhXaWR0aDppfX0sUlQ9ZnVuY3Rpb24odCl7T3YoTVQsdCksdC5mb250RmFtaWx5JiYoTVQuYWN0b3JGb250RmFtaWx5PU1ULm5vdGVGb250RmFtaWx5PU1ULm1lc3NhZ2VGb250RmFtaWx5PXQuZm9udEZhbWlseSksdC5mb250U2l6ZSYmKE1ULmFjdG9yRm9udFNpemU9TVQubm90ZUZvbnRTaXplPU1ULm1lc3NhZ2VGb250U2l6ZT10LmZvbnRTaXplKSx0LmZvbnRXZWlnaHQmJihNVC5hY3RvckZvbnRXZWlnaHQ9TVQubm90ZUZvbnRXZWlnaHQ9TVQubWVzc2FnZUZvbnRXZWlnaHQ9dC5mb250V2VpZ2h0KX0sRlQ9ZnVuY3Rpb24odCl7cmV0dXJuIE5ULmFjdGl2YXRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYWN0b3I9PT10fSkpfSxQVD1mdW5jdGlvbih0LGUpe3ZhciBuPWVbdF0scj1GVCh0KTtyZXR1cm5bci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZS5zdGFydHgpfSksbi54K24ud2lkdGgvMiksci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5zdG9weCl9KSxuLngrbi53aWR0aC8yKV19O2Z1bmN0aW9uIGpUKHQsZSxuLHIsaSl7TlQuYnVtcFZlcnRpY2FsUG9zKG4pO3ZhciBhPXI7aWYoZS5pZCYmZS5tZXNzYWdlJiZ0W2UuaWRdKXt2YXIgcz10W2UuaWRdLndpZHRoLGM9RFQoTVQpO2UubWVzc2FnZT16di53cmFwTGFiZWwoIlsiLmNvbmNhdChlLm1lc3NhZ2UsIl0iKSxzLTIqTVQud3JhcFBhZGRpbmcsYyksZS53aWR0aD1zLGUud3JhcD0hMDt2YXIgdT16di5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhlLm1lc3NhZ2UsYyksbD1NYXRoLm1heCh1LmhlaWdodCxNVC5sYWJlbEJveEhlaWdodCk7YT1yK2wsby5kZWJ1ZygiIi5jb25jYXQobCwiIC0gIikuY29uY2F0KGUubWVzc2FnZSkpfWkoZSksTlQuYnVtcFZlcnRpY2FsUG9zKGEpfXZhciBZVD1mdW5jdGlvbih0KXt2YXIgZT0wLG49QlQoTVQpO2Zvcih2YXIgciBpbiB0LmxpbmtzKXt2YXIgaT16di5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhyLG4pLndpZHRoKzIqTVQud3JhcFBhZGRpbmcrMipNVC5ib3hNYXJnaW47ZTxpJiYoZT1pKX1yZXR1cm4gZX07Y29uc3QgelQ9e2JvdW5kczpOVCxkcmF3QWN0b3JzOkxULGRyYXdBY3RvcnNQb3B1cDpJVCxzZXRDb25mOlJULGRyYXc6ZnVuY3Rpb24odCxlKXtNVD1adigpLnNlcXVlbmNlLFNrLnBhcnNlci55eS5jbGVhcigpLFNrLnBhcnNlci55eS5zZXRXcmFwKE1ULndyYXApLFNrLnBhcnNlci5wYXJzZSh0KyJcbiIpLE5ULmluaXQoKSxvLmRlYnVnKCJDOiIuY29uY2F0KEpTT04uc3RyaW5naWZ5KE1ULG51bGwsMikpKTt2YXIgbj1hdSgnW2lkPSInLmNvbmNhdChlLCciXScpKSxyPVNrLnBhcnNlci55eS5nZXRBY3RvcnMoKSxpPVNrLnBhcnNlci55eS5nZXRBY3RvcktleXMoKSxhPVNrLnBhcnNlci55eS5nZXRNZXNzYWdlcygpLHM9U2sucGFyc2VyLnl5LmdldFRpdGxlKCksYz1mdW5jdGlvbih0LGUpe3ZhciBuPXt9O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHRbZS50b10mJnRbZS5mcm9tXSl7dmFyIHI9dFtlLnRvXTtpZihlLnBsYWNlbWVudD09PVNrLnBhcnNlci55eS5QTEFDRU1FTlQuTEVGVE9GJiYhci5wcmV2QWN0b3IpcmV0dXJuO2lmKGUucGxhY2VtZW50PT09U2sucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GJiYhci5uZXh0QWN0b3IpcmV0dXJuO3ZhciBpPXZvaWQgMCE9PWUucGxhY2VtZW50LGE9IWksbz1pP09UKE1UKTpEVChNVCkscz1lLndyYXA/enYud3JhcExhYmVsKGUubWVzc2FnZSxNVC53aWR0aC0yKk1ULndyYXBQYWRkaW5nLG8pOmUubWVzc2FnZSxjPXp2LmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHMsbykud2lkdGgrMipNVC53cmFwUGFkZGluZzthJiZlLmZyb209PT1yLm5leHRBY3Rvcj9uW2UudG9dPU1hdGgubWF4KG5bZS50b118fDAsYyk6YSYmZS5mcm9tPT09ci5wcmV2QWN0b3I/bltlLmZyb21dPU1hdGgubWF4KG5bZS5mcm9tXXx8MCxjKTphJiZlLmZyb209PT1lLnRvPyhuW2UuZnJvbV09TWF0aC5tYXgobltlLmZyb21dfHwwLGMvMiksbltlLnRvXT1NYXRoLm1heChuW2UudG9dfHwwLGMvMikpOmUucGxhY2VtZW50PT09U2sucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GP25bZS5mcm9tXT1NYXRoLm1heChuW2UuZnJvbV18fDAsYyk6ZS5wbGFjZW1lbnQ9PT1Tay5wYXJzZXIueXkuUExBQ0VNRU5ULkxFRlRPRj9uW3IucHJldkFjdG9yXT1NYXRoLm1heChuW3IucHJldkFjdG9yXXx8MCxjKTplLnBsYWNlbWVudD09PVNrLnBhcnNlci55eS5QTEFDRU1FTlQuT1ZFUiYmKHIucHJldkFjdG9yJiYobltyLnByZXZBY3Rvcl09TWF0aC5tYXgobltyLnByZXZBY3Rvcl18fDAsYy8yKSksci5uZXh0QWN0b3ImJihuW2UuZnJvbV09TWF0aC5tYXgobltlLmZyb21dfHwwLGMvMikpKX19KSksby5kZWJ1ZygibWF4TWVzc2FnZVdpZHRoUGVyQWN0b3I6IixuKSxufShyLGEpO01ULmhlaWdodD1mdW5jdGlvbih0LGUpe3ZhciBuPTA7Zm9yKHZhciByIGluIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXRbZV07ci53cmFwJiYoci5kZXNjcmlwdGlvbj16di53cmFwTGFiZWwoci5kZXNjcmlwdGlvbixNVC53aWR0aC0yKk1ULndyYXBQYWRkaW5nLEJUKE1UKSkpO3ZhciBpPXp2LmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHIuZGVzY3JpcHRpb24sQlQoTVQpKTtyLndpZHRoPXIud3JhcD9NVC53aWR0aDpNYXRoLm1heChNVC53aWR0aCxpLndpZHRoKzIqTVQud3JhcFBhZGRpbmcpLHIuaGVpZ2h0PXIud3JhcD9NYXRoLm1heChpLmhlaWdodCxNVC5oZWlnaHQpOk1ULmhlaWdodCxuPU1hdGgubWF4KG4sci5oZWlnaHQpfSkpLGUpe3ZhciBpPXRbcl07aWYoaSl7dmFyIGE9dFtpLm5leHRBY3Rvcl07aWYoYSl7dmFyIG89ZVtyXStNVC5hY3Rvck1hcmdpbi1pLndpZHRoLzItYS53aWR0aC8yO2kubWFyZ2luPU1hdGgubWF4KG8sTVQuYWN0b3JNYXJnaW4pfX19cmV0dXJuIE1hdGgubWF4KG4sTVQuaGVpZ2h0KX0ocixjKSxFVChuKSxUVChuKSxDVChuKSxMVChuLHIsaSwwKTt2YXIgdT1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhPXt9LHM9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7c3dpdGNoKHQuaWQ9enYucmFuZG9tKHtsZW5ndGg6MTB9KSx0LnR5cGUpe2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfU1RBUlQ6Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUxUX1NUQVJUOmNhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLk9QVF9TVEFSVDpjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfU1RBUlQ6cy5wdXNoKHtpZDp0LmlkLG1zZzp0Lm1lc3NhZ2UsZnJvbTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUix0bzpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUix3aWR0aDowfSk7YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VMU0U6Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuUEFSX0FORDp0Lm1lc3NhZ2UmJihuPXMucG9wKCksYVtuLmlkXT1uLGFbdC5pZF09bixzLnB1c2gobikpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfRU5EOmNhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLkFMVF9FTkQ6Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuT1BUX0VORDpjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfRU5EOm49cy5wb3AoKSxhW24uaWRdPW47YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUNUSVZFX1NUQVJUOnZhciBjPWVbdC5mcm9tP3QuZnJvbS5hY3Rvcjp0LnRvLmFjdG9yXSx1PUZUKHQuZnJvbT90LmZyb20uYWN0b3I6dC50by5hY3RvcikubGVuZ3RoLGw9Yy54K2Mud2lkdGgvMisodS0xKSpNVC5hY3RpdmF0aW9uV2lkdGgvMixoPXtzdGFydHg6bCxzdG9weDpsK01ULmFjdGl2YXRpb25XaWR0aCxhY3Rvcjp0LmZyb20uYWN0b3IsZW5hYmxlZDohMH07TlQuYWN0aXZhdGlvbnMucHVzaChoKTticmVhaztjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5BQ1RJVkVfRU5EOnZhciBmPU5ULmFjdGl2YXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWN0b3J9KSkubGFzdEluZGV4T2YodC5mcm9tLmFjdG9yKTtkZWxldGUgTlQuYWN0aXZhdGlvbnMuc3BsaWNlKGYsMSlbMF19dm9pZCAwIT09dC5wbGFjZW1lbnQ/KHI9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW3QuZnJvbV0ueCxyPWVbdC50b10ueCxpPXQud3JhcCYmdC5tZXNzYWdlLGE9enYuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoaT96di53cmFwTGFiZWwodC5tZXNzYWdlLE1ULndpZHRoLE9UKE1UKSk6dC5tZXNzYWdlLE9UKE1UKSkscz17d2lkdGg6aT9NVC53aWR0aDpNYXRoLm1heChNVC53aWR0aCxhLndpZHRoKzIqTVQubm90ZU1hcmdpbiksaGVpZ2h0OjAsc3RhcnR4OmVbdC5mcm9tXS54LHN0b3B4OjAsc3RhcnR5OjAsc3RvcHk6MCxtZXNzYWdlOnQubWVzc2FnZX07cmV0dXJuIHQucGxhY2VtZW50PT09U2sucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GPyhzLndpZHRoPWk/TWF0aC5tYXgoTVQud2lkdGgsYS53aWR0aCk6TWF0aC5tYXgoZVt0LmZyb21dLndpZHRoLzIrZVt0LnRvXS53aWR0aC8yLGEud2lkdGgrMipNVC5ub3RlTWFyZ2luKSxzLnN0YXJ0eD1uKyhlW3QuZnJvbV0ud2lkdGgrTVQuYWN0b3JNYXJnaW4pLzIpOnQucGxhY2VtZW50PT09U2sucGFyc2VyLnl5LlBMQUNFTUVOVC5MRUZUT0Y/KHMud2lkdGg9aT9NYXRoLm1heChNVC53aWR0aCxhLndpZHRoKzIqTVQubm90ZU1hcmdpbik6TWF0aC5tYXgoZVt0LmZyb21dLndpZHRoLzIrZVt0LnRvXS53aWR0aC8yLGEud2lkdGgrMipNVC5ub3RlTWFyZ2luKSxzLnN0YXJ0eD1uLXMud2lkdGgrKGVbdC5mcm9tXS53aWR0aC1NVC5hY3Rvck1hcmdpbikvMik6dC50bz09PXQuZnJvbT8oYT16di5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhpP3p2LndyYXBMYWJlbCh0Lm1lc3NhZ2UsTWF0aC5tYXgoTVQud2lkdGgsZVt0LmZyb21dLndpZHRoKSxPVChNVCkpOnQubWVzc2FnZSxPVChNVCkpLHMud2lkdGg9aT9NYXRoLm1heChNVC53aWR0aCxlW3QuZnJvbV0ud2lkdGgpOk1hdGgubWF4KGVbdC5mcm9tXS53aWR0aCxNVC53aWR0aCxhLndpZHRoKzIqTVQubm90ZU1hcmdpbikscy5zdGFydHg9bisoZVt0LmZyb21dLndpZHRoLXMud2lkdGgpLzIpOihzLndpZHRoPU1hdGguYWJzKG4rZVt0LmZyb21dLndpZHRoLzItKHIrZVt0LnRvXS53aWR0aC8yKSkrTVQuYWN0b3JNYXJnaW4scy5zdGFydHg9bjxyP24rZVt0LmZyb21dLndpZHRoLzItTVQuYWN0b3JNYXJnaW4vMjpyK2VbdC50b10ud2lkdGgvMi1NVC5hY3Rvck1hcmdpbi8yKSxpJiYocy5tZXNzYWdlPXp2LndyYXBMYWJlbCh0Lm1lc3NhZ2Uscy53aWR0aC0yKk1ULndyYXBQYWRkaW5nLE9UKE1UKSkpLG8uZGVidWcoIk5NOlsiLmNvbmNhdChzLnN0YXJ0eCwiLCIpLmNvbmNhdChzLnN0b3B4LCIsIikuY29uY2F0KHMuc3RhcnR5LCIsIikuY29uY2F0KHMuc3RvcHksIjoiKS5jb25jYXQocy53aWR0aCwiLCIpLmNvbmNhdChzLmhlaWdodCwiPSIpLmNvbmNhdCh0Lm1lc3NhZ2UsIl0iKSksc30odCxlKSx0Lm5vdGVNb2RlbD1yLHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7KG49dCkuZnJvbT1NYXRoLm1pbihuLmZyb20sci5zdGFydHgpLG4udG89TWF0aC5tYXgobi50byxyLnN0YXJ0eCtyLndpZHRoKSxuLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsTWF0aC5hYnMobi5mcm9tLW4udG8pKS1NVC5sYWJlbEJveFdpZHRofSkpKTooaT1mdW5jdGlvbih0LGUpe3ZhciBuPSExO2lmKFtTay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfT1BFTixTay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEX09QRU4sU2sucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElELFNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURUQsU2sucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX0NST1NTLFNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfQ1JPU1MsU2sucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX1BPSU5ULFNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlRdLmluY2x1ZGVzKHQudHlwZSkmJihuPSEwKSwhbilyZXR1cm57fTt2YXIgcj1QVCh0LmZyb20sZSksaT1QVCh0LnRvLGUpLGE9clswXTw9aVswXT8xOjAsbz1yWzBdPGlbMF0/MDoxLHM9ci5jb25jYXQoaSksYz1NYXRoLmFicyhpW29dLXJbYV0pO3Qud3JhcCYmdC5tZXNzYWdlJiYodC5tZXNzYWdlPXp2LndyYXBMYWJlbCh0Lm1lc3NhZ2UsTWF0aC5tYXgoYysyKk1ULndyYXBQYWRkaW5nLE1ULndpZHRoKSxEVChNVCkpKTt2YXIgdT16di5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyh0Lm1lc3NhZ2UsRFQoTVQpKTtyZXR1cm57d2lkdGg6TWF0aC5tYXgodC53cmFwPzA6dS53aWR0aCsyKk1ULndyYXBQYWRkaW5nLGMrMipNVC53cmFwUGFkZGluZyxNVC53aWR0aCksaGVpZ2h0OjAsc3RhcnR4OnJbYV0sc3RvcHg6aVtvXSxzdGFydHk6MCxzdG9weTowLG1lc3NhZ2U6dC5tZXNzYWdlLHR5cGU6dC50eXBlLHdyYXA6dC53cmFwLGZyb21Cb3VuZHM6TWF0aC5taW4uYXBwbHkobnVsbCxzKSx0b0JvdW5kczpNYXRoLm1heC5hcHBseShudWxsLHMpfX0odCxlKSx0Lm1zZ01vZGVsPWksaS5zdGFydHgmJmkuc3RvcHgmJnMubGVuZ3RoPjAmJnMuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYobj1yLGkuc3RhcnR4PT09aS5zdG9weCl7dmFyIGE9ZVt0LmZyb21dLG89ZVt0LnRvXTtuLmZyb209TWF0aC5taW4oYS54LWkud2lkdGgvMixhLngtYS53aWR0aC8yLG4uZnJvbSksbi50bz1NYXRoLm1heChvLngraS53aWR0aC8yLG8ueCthLndpZHRoLzIsbi50byksbi53aWR0aD1NYXRoLm1heChuLndpZHRoLE1hdGguYWJzKG4udG8tbi5mcm9tKSktTVQubGFiZWxCb3hXaWR0aH1lbHNlIG4uZnJvbT1NYXRoLm1pbihpLnN0YXJ0eCxuLmZyb20pLG4udG89TWF0aC5tYXgoaS5zdG9weCxuLnRvKSxuLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsaS53aWR0aCktTVQubGFiZWxCb3hXaWR0aH0pKSl9KSksTlQuYWN0aXZhdGlvbnM9W10sby5kZWJ1ZygiTG9vcCB0eXBlIHdpZHRoczoiLGEpLGF9KGEscik7X1Qobiksa1QobikseFQobiksd1Qobik7dmFyIGw9MTthLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlLGksYTtzd2l0Y2godC50eXBlKXtjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5OT1RFOmk9dC5ub3RlTW9kZWwsZnVuY3Rpb24odCxlKXtOVC5idW1wVmVydGljYWxQb3MoTVQuYm94TWFyZ2luKSxlLmhlaWdodD1NVC5ib3hNYXJnaW4sZS5zdGFydHk9TlQuZ2V0VmVydGljYWxQb3MoKTt2YXIgbj1BVCgpO24ueD1lLnN0YXJ0eCxuLnk9ZS5zdGFydHksbi53aWR0aD1lLndpZHRofHxNVC53aWR0aCxuLmNsYXNzPSJub3RlIjt2YXIgcj10LmFwcGVuZCgiZyIpLGk9ZFQocixuKSxhPVNUKCk7YS54PWUuc3RhcnR4LGEueT1lLnN0YXJ0eSxhLndpZHRoPW4ud2lkdGgsYS5keT0iMWVtIixhLnRleHQ9ZS5tZXNzYWdlLGEuY2xhc3M9Im5vdGVUZXh0IixhLmZvbnRGYW1pbHk9TVQubm90ZUZvbnRGYW1pbHksYS5mb250U2l6ZT1NVC5ub3RlRm9udFNpemUsYS5mb250V2VpZ2h0PU1ULm5vdGVGb250V2VpZ2h0LGEuYW5jaG9yPU1ULm5vdGVBbGlnbixhLnRleHRNYXJnaW49TVQubm90ZU1hcmdpbixhLnZhbGlnbj1NVC5ub3RlQWxpZ247dmFyIG89YVQocixhKSxzPU1hdGgucm91bmQoby5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybih0Ll9ncm91cHN8fHQpWzBdWzBdLmdldEJCb3goKS5oZWlnaHR9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSkpO2kuYXR0cigiaGVpZ2h0IixzKzIqTVQubm90ZU1hcmdpbiksZS5oZWlnaHQrPXMrMipNVC5ub3RlTWFyZ2luLE5ULmJ1bXBWZXJ0aWNhbFBvcyhzKzIqTVQubm90ZU1hcmdpbiksZS5zdG9weT1lLnN0YXJ0eStzKzIqTVQubm90ZU1hcmdpbixlLnN0b3B4PWUuc3RhcnR4K24ud2lkdGgsTlQuaW5zZXJ0KGUuc3RhcnR4LGUuc3RhcnR5LGUuc3RvcHgsZS5zdG9weSksTlQubW9kZWxzLmFkZE5vdGUoZSl9KG4saSk7YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUNUSVZFX1NUQVJUOk5ULm5ld0FjdGl2YXRpb24odCxuLHIpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLkFDVElWRV9FTkQ6IWZ1bmN0aW9uKHQsZSl7dmFyIHI9TlQuZW5kQWN0aXZhdGlvbih0KTtyLnN0YXJ0eSsxOD5lJiYoci5zdGFydHk9ZS02LGUrPTEyKSxtVChuLHIsZSxNVCxGVCh0LmZyb20uYWN0b3IpLmxlbmd0aCksTlQuaW5zZXJ0KHIuc3RhcnR4LGUtMTAsci5zdG9weCxlKX0odCxOVC5nZXRWZXJ0aWNhbFBvcygpKTticmVhaztjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5MT09QX1NUQVJUOmpUKHUsdCxNVC5ib3hNYXJnaW4sTVQuYm94TWFyZ2luK01ULmJveFRleHRNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBOVC5uZXdMb29wKHQpfSkpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfRU5EOmU9TlQuZW5kTG9vcCgpLHZUKG4sZSwibG9vcCIsTVQpLE5ULmJ1bXBWZXJ0aWNhbFBvcyhlLnN0b3B5LU5ULmdldFZlcnRpY2FsUG9zKCkpLE5ULm1vZGVscy5hZGRMb29wKGUpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLlJFQ1RfU1RBUlQ6alQodSx0LE1ULmJveE1hcmdpbixNVC5ib3hNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBOVC5uZXdMb29wKHZvaWQgMCx0Lm1lc3NhZ2UpfSkpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLlJFQ1RfRU5EOmU9TlQuZW5kTG9vcCgpLGJUKG4sZSksTlQubW9kZWxzLmFkZExvb3AoZSksTlQuYnVtcFZlcnRpY2FsUG9zKGUuc3RvcHktTlQuZ2V0VmVydGljYWxQb3MoKSk7YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuT1BUX1NUQVJUOmpUKHUsdCxNVC5ib3hNYXJnaW4sTVQuYm94TWFyZ2luK01ULmJveFRleHRNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBOVC5uZXdMb29wKHQpfSkpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLk9QVF9FTkQ6ZT1OVC5lbmRMb29wKCksdlQobixlLCJvcHQiLE1UKSxOVC5idW1wVmVydGljYWxQb3MoZS5zdG9weS1OVC5nZXRWZXJ0aWNhbFBvcygpKSxOVC5tb2RlbHMuYWRkTG9vcChlKTticmVhaztjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5BTFRfU1RBUlQ6alQodSx0LE1ULmJveE1hcmdpbixNVC5ib3hNYXJnaW4rTVQuYm94VGV4dE1hcmdpbiwoZnVuY3Rpb24odCl7cmV0dXJuIE5ULm5ld0xvb3AodCl9KSk7YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VMU0U6alQodSx0LE1ULmJveE1hcmdpbitNVC5ib3hUZXh0TWFyZ2luLE1ULmJveE1hcmdpbiwoZnVuY3Rpb24odCl7cmV0dXJuIE5ULmFkZFNlY3Rpb25Ub0xvb3AodCl9KSk7YnJlYWs7Y2FzZSBTay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VORDplPU5ULmVuZExvb3AoKSx2VChuLGUsImFsdCIsTVQpLE5ULmJ1bXBWZXJ0aWNhbFBvcyhlLnN0b3B5LU5ULmdldFZlcnRpY2FsUG9zKCkpLE5ULm1vZGVscy5hZGRMb29wKGUpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLlBBUl9TVEFSVDpqVCh1LHQsTVQuYm94TWFyZ2luLE1ULmJveE1hcmdpbitNVC5ib3hUZXh0TWFyZ2luLChmdW5jdGlvbih0KXtyZXR1cm4gTlQubmV3TG9vcCh0KX0pKTticmVhaztjYXNlIFNrLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfQU5EOmpUKHUsdCxNVC5ib3hNYXJnaW4rTVQuYm94VGV4dE1hcmdpbixNVC5ib3hNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBOVC5hZGRTZWN0aW9uVG9Mb29wKHQpfSkpO2JyZWFrO2Nhc2UgU2sucGFyc2VyLnl5LkxJTkVUWVBFLlBBUl9FTkQ6ZT1OVC5lbmRMb29wKCksdlQobixlLCJwYXIiLE1UKSxOVC5idW1wVmVydGljYWxQb3MoZS5zdG9weS1OVC5nZXRWZXJ0aWNhbFBvcygpKSxOVC5tb2RlbHMuYWRkTG9vcChlKTticmVhaztkZWZhdWx0OnRyeXsoYT10Lm1zZ01vZGVsKS5zdGFydHk9TlQuZ2V0VmVydGljYWxQb3MoKSxhLnNlcXVlbmNlSW5kZXg9bCxmdW5jdGlvbih0LGUpe05ULmJ1bXBWZXJ0aWNhbFBvcygxMCk7dmFyIG49ZS5zdGFydHgscj1lLnN0b3B4LGk9ZS5zdGFydHksYT1lLm1lc3NhZ2Usbz1lLnR5cGUscz1lLnNlcXVlbmNlSW5kZXgsYz1ZbS5zcGxpdEJyZWFrcyhhKS5sZW5ndGgsdT16di5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhhLERUKE1UKSksbD11LmhlaWdodC9jO2UuaGVpZ2h0Kz1sLE5ULmJ1bXBWZXJ0aWNhbFBvcyhsKTt2YXIgaD1TVCgpO2gueD1uLGgueT1pKzEwLGgud2lkdGg9ci1uLGguY2xhc3M9Im1lc3NhZ2VUZXh0IixoLmR5PSIxZW0iLGgudGV4dD1hLGguZm9udEZhbWlseT1NVC5tZXNzYWdlRm9udEZhbWlseSxoLmZvbnRTaXplPU1ULm1lc3NhZ2VGb250U2l6ZSxoLmZvbnRXZWlnaHQ9TVQubWVzc2FnZUZvbnRXZWlnaHQsaC5hbmNob3I9TVQubWVzc2FnZUFsaWduLGgudmFsaWduPU1ULm1lc3NhZ2VBbGlnbixoLnRleHRNYXJnaW49TVQud3JhcFBhZGRpbmcsaC50c3Bhbj0hMSxhVCh0LGgpO3ZhciBmLGQscD11LmhlaWdodC0xMCx5PXUud2lkdGg7aWYobj09PXIpe2Q9TlQuZ2V0VmVydGljYWxQb3MoKStwLE1ULnJpZ2h0QW5nbGVzP2Y9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAgIi5jb25jYXQobiwiLCIpLmNvbmNhdChkLCIgSCAiKS5jb25jYXQobitNYXRoLm1heChNVC53aWR0aC8yLHkvMiksIiBWICIpLmNvbmNhdChkKzI1LCIgSCAiKS5jb25jYXQobikpOihwKz1NVC5ib3hNYXJnaW4sZD1OVC5nZXRWZXJ0aWNhbFBvcygpK3AsZj10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNICIrbisiLCIrZCsiIEMgIisobis2MCkrIiwiKyhkLTEwKSsiICIrKG4rNjApKyIsIisoZCszMCkrIiAiK24rIiwiKyhkKzIwKSkpLHArPTMwO3ZhciBnPU1hdGgubWF4KHkvMixNVC53aWR0aC8yKTtOVC5pbnNlcnQobi1nLE5ULmdldFZlcnRpY2FsUG9zKCktMTArcCxyK2csTlQuZ2V0VmVydGljYWxQb3MoKSszMCtwKX1lbHNlIHArPU1ULmJveE1hcmdpbixkPU5ULmdldFZlcnRpY2FsUG9zKCkrcCwoZj10LmFwcGVuZCgibGluZSIpKS5hdHRyKCJ4MSIsbiksZi5hdHRyKCJ5MSIsZCksZi5hdHRyKCJ4MiIsciksZi5hdHRyKCJ5MiIsZCksTlQuaW5zZXJ0KG4sZC0xMCxyLGQpO289PT1Tay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEfHxvPT09U2sucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TU3x8bz09PVNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlR8fG89PT1Tay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEX09QRU4/KGYuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzLCAzIiksZi5hdHRyKCJjbGFzcyIsIm1lc3NhZ2VMaW5lMSIpKTpmLmF0dHIoImNsYXNzIiwibWVzc2FnZUxpbmUwIik7dmFyIG09IiI7TVQuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKG09KG09KG09d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksZi5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLGYuYXR0cigic3Ryb2tlIiwibm9uZSIpLGYuc3R5bGUoImZpbGwiLCJub25lIiksbyE9PVNrLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRCYmbyE9PVNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURUR8fGYuYXR0cigibWFya2VyLWVuZCIsInVybCgiK20rIiNhcnJvd2hlYWQpIiksbyE9PVNrLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRF9QT0lOVCYmbyE9PVNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlR8fGYuYXR0cigibWFya2VyLWVuZCIsInVybCgiK20rIiNmaWxsZWQtaGVhZCkiKSxvIT09U2sucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX0NST1NTJiZvIT09U2sucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TU3x8Zi5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrbSsiI2Nyb3NzaGVhZCkiKSwoWmsuc2hvd1NlcXVlbmNlTnVtYmVycygpfHxNVC5zaG93U2VxdWVuY2VOdW1iZXJzKSYmKGYuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrbSsiI3NlcXVlbmNlbnVtYmVyKSIpLHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbikuYXR0cigieSIsZCs0KS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJmb250LXNpemUiLCIxMnB4IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0TGVuZ3RoIiwiMTZweCIpLmF0dHIoImNsYXNzIiwic2VxdWVuY2VOdW1iZXIiKS50ZXh0KHMpKSxOVC5idW1wVmVydGljYWxQb3MocCksZS5oZWlnaHQrPXAsZS5zdG9weT1lLnN0YXJ0eStlLmhlaWdodCxOVC5pbnNlcnQoZS5mcm9tQm91bmRzLGUuc3RhcnR5LGUudG9Cb3VuZHMsZS5zdG9weSl9KG4sYSksTlQubW9kZWxzLmFkZE1lc3NhZ2UoYSl9Y2F0Y2godCl7by5lcnJvcigiZXJyb3Igd2hpbGUgZHJhd2luZyBtZXNzYWdlIix0KX19W1NrLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRF9PUEVOLFNrLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfT1BFTixTay5wYXJzZXIueXkuTElORVRZUEUuU09MSUQsU2sucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRCxTay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfQ1JPU1MsU2sucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TUyxTay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfUE9JTlQsU2sucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9QT0lOVF0uaW5jbHVkZXModC50eXBlKSYmbCsrfSkpLE1ULm1pcnJvckFjdG9ycyYmKE5ULmJ1bXBWZXJ0aWNhbFBvcygyKk1ULmJveE1hcmdpbiksTFQobixyLGksTlQuZ2V0VmVydGljYWxQb3MoKSksTlQuYnVtcFZlcnRpY2FsUG9zKE1ULmJveE1hcmdpbiksY1QobixOVC5nZXRWZXJ0aWNhbFBvcygpKSk7dmFyIGg9SVQobixyLGkpLGY9TlQuZ2V0Qm91bmRzKCkuYm91bmRzO28uZGVidWcoIkZvciBsaW5lIGhlaWdodCBmaXggUXVlcnlpbmc6ICMiK2UrIiAuYWN0b3ItbGluZSIpLG91KCIjIitlKyIgLmFjdG9yLWxpbmUiKS5hdHRyKCJ5MiIsZi5zdG9weSk7dmFyIGQ9Zi5zdG9weS1mLnN0YXJ0eTtkPGgubWF4SGVpZ2h0JiYoZD1oLm1heEhlaWdodCk7dmFyIHA9ZCsyKk1ULmRpYWdyYW1NYXJnaW5ZO01ULm1pcnJvckFjdG9ycyYmKHA9cC1NVC5ib3hNYXJnaW4rTVQuYm90dG9tTWFyZ2luQWRqKTt2YXIgeT1mLnN0b3B4LWYuc3RhcnR4O3k8aC5tYXhXaWR0aCYmKHk9aC5tYXhXaWR0aCk7dmFyIGc9eSsyKk1ULmRpYWdyYW1NYXJnaW5YO3MmJm4uYXBwZW5kKCJ0ZXh0IikudGV4dChzKS5hdHRyKCJ4IiwoZi5zdG9weC1mLnN0YXJ0eCkvMi0yKk1ULmRpYWdyYW1NYXJnaW5YKS5hdHRyKCJ5IiwtMjUpLGp2KG4scCxnLE1ULnVzZU1heFdpZHRoKTt2YXIgbT1zPzQwOjA7bi5hdHRyKCJ2aWV3Qm94IixmLnN0YXJ0eC1NVC5kaWFncmFtTWFyZ2luWCsiIC0iKyhNVC5kaWFncmFtTWFyZ2luWSttKSsiICIrZysiICIrKHArbSkpLG8uZGVidWcoIm1vZGVsczoiLE5ULm1vZGVscyl9fTt2YXIgVVQ9big1NTM3KSxxVD1uLm4oVVQpO2Z1bmN0aW9uICRUKHQpe3JldHVybiAkVD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sJFQodCl9dmFyIEhUPWZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX0sV1Q9W10sVlQ9ZnVuY3Rpb24gdChlLG4scil7aWYoInJlbGF0aW9uIj09PW4uc3RtdCl0KGUsbi5zdGF0ZTEsITApLHQoZSxuLnN0YXRlMiwhMSk7ZWxzZSBpZigic3RhdGUiPT09bi5zdG10JiYiWypdIj09PW4uaWQmJihuLmlkPXI/ZS5pZCsiX3N0YXJ0IjplLmlkKyJfZW5kIixuLnN0YXJ0PXIpLG4uZG9jKXt2YXIgaT1bXSxhPTAsbz1bXTtmb3IoYT0wO2E8bi5kb2MubGVuZ3RoO2ErKylpZigiZGl2aWRlciI9PT1uLmRvY1thXS50eXBlKXt2YXIgcz1IVChuLmRvY1thXSk7cy5kb2M9SFQobyksaS5wdXNoKHMpLG89W119ZWxzZSBvLnB1c2gobi5kb2NbYV0pO2lmKGkubGVuZ3RoPjAmJm8ubGVuZ3RoPjApe3ZhciBjPXtzdG10OiJzdGF0ZSIsaWQ6TnYoKSx0eXBlOiJkaXZpZGVyIixkb2M6SFQobyl9O2kucHVzaChIVChjKSksbi5kb2M9aX1uLmRvYy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdChuLGUsITApfSkpfX0sR1Q9e3Jvb3Q6e3JlbGF0aW9uczpbXSxzdGF0ZXM6e30sZG9jdW1lbnRzOnt9fX0sWFQ9R1Qucm9vdCxaVD0wLFFUPWZ1bmN0aW9uKHQsZSxuLHIsaSl7dm9pZCAwPT09WFQuc3RhdGVzW3RdP1hULnN0YXRlc1t0XT17aWQ6dCxkZXNjcmlwdGlvbnM6W10sdHlwZTplLGRvYzpuLG5vdGU6aX06KFhULnN0YXRlc1t0XS5kb2N8fChYVC5zdGF0ZXNbdF0uZG9jPW4pLFhULnN0YXRlc1t0XS50eXBlfHwoWFQuc3RhdGVzW3RdLnR5cGU9ZSkpLHImJihvLmluZm8oIkFkZGluZyBzdGF0ZSAiLHQsciksInN0cmluZyI9PXR5cGVvZiByJiZ0RSh0LHIudHJpbSgpKSwib2JqZWN0Ij09PSRUKHIpJiZyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0RSh0LGUudHJpbSgpKX0pKSksaSYmKFhULnN0YXRlc1t0XS5ub3RlPWksWFQuc3RhdGVzW3RdLm5vdGUudGV4dD1ZbS5zYW5pdGl6ZVRleHQoWFQuc3RhdGVzW3RdLm5vdGUudGV4dCxadigpKSl9LEtUPWZ1bmN0aW9uKCl7WFQ9KEdUPXtyb290OntyZWxhdGlvbnM6W10sc3RhdGVzOnt9LGRvY3VtZW50czp7fX19KS5yb290LFhUPUdULnJvb3QsWlQ9MCxuRT1bXX0sSlQ9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQsaT1lLGE9ImRlZmF1bHQiLG89ImRlZmF1bHQiOyJbKl0iPT09dCYmKHI9InN0YXJ0IisgKytaVCxhPSJzdGFydCIpLCJbKl0iPT09ZSYmKGk9ImVuZCIrWlQsbz0iZW5kIiksUVQocixhKSxRVChpLG8pLFhULnJlbGF0aW9ucy5wdXNoKHtpZDE6cixpZDI6aSx0aXRsZTpZbS5zYW5pdGl6ZVRleHQobixadigpKX0pfSx0RT1mdW5jdGlvbih0LGUpe3ZhciBuPVhULnN0YXRlc1t0XSxyPWU7IjoiPT09clswXSYmKHI9ci5zdWJzdHIoMSkudHJpbSgpKSxuLmRlc2NyaXB0aW9ucy5wdXNoKFltLnNhbml0aXplVGV4dChyLFp2KCkpKX0sZUU9MCxuRT1bXSxyRT0iVEIiO2NvbnN0IGlFPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLnN0YXRlfSxhZGRTdGF0ZTpRVCxjbGVhcjpLVCxnZXRTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gWFQuc3RhdGVzW3RdfSxnZXRTdGF0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gWFQuc3RhdGVzfSxnZXRSZWxhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gWFQucmVsYXRpb25zfSxnZXRDbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJuIG5FfSxnZXREaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gckV9LGFkZFJlbGF0aW9uOkpULGdldERpdmlkZXJJZDpmdW5jdGlvbigpe3JldHVybiJkaXZpZGVyLWlkLSIrICsrZUV9LHNldERpcmVjdGlvbjpmdW5jdGlvbih0KXtyRT10fSxjbGVhbnVwTGFiZWw6ZnVuY3Rpb24odCl7cmV0dXJuIjoiPT09dC5zdWJzdHJpbmcoMCwxKT90LnN1YnN0cigyKS50cmltKCk6dC50cmltKCl9LGxpbmVUeXBlOntMSU5FOjAsRE9UVEVEX0xJTkU6MX0scmVsYXRpb25UeXBlOntBR0dSRUdBVElPTjowLEVYVEVOU0lPTjoxLENPTVBPU0lUSU9OOjIsREVQRU5ERU5DWTozfSxsb2dEb2N1bWVudHM6ZnVuY3Rpb24oKXtvLmluZm8oIkRvY3VtZW50cyA9ICIsR1QpfSxnZXRSb290RG9jOmZ1bmN0aW9uKCl7cmV0dXJuIFdUfSxzZXRSb290RG9jOmZ1bmN0aW9uKHQpe28uaW5mbygiU2V0dGluZyByb290IGRvYyIsdCksV1Q9dH0sZ2V0Um9vdERvY1YyOmZ1bmN0aW9uKCl7cmV0dXJuIFZUKHtpZDoicm9vdCJ9LHtpZDoicm9vdCIsZG9jOldUfSwhMCkse2lkOiJyb290Iixkb2M6V1R9fSxleHRyYWN0OmZ1bmN0aW9uKHQpe3ZhciBlO2U9dC5kb2M/dC5kb2M6dCxvLmluZm8oZSksS1QoKSxvLmluZm8oIkV4dHJhY3QiLGUpLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7InN0YXRlIj09PXQuc3RtdCYmUVQodC5pZCx0LnR5cGUsdC5kb2MsdC5kZXNjcmlwdGlvbix0Lm5vdGUpLCJyZWxhdGlvbiI9PT10LnN0bXQmJkpUKHQuc3RhdGUxLmlkLHQuc3RhdGUyLmlkLHQuZGVzY3JpcHRpb24pfSkpfSx0cmltQ29sb246ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI6Ij09PXRbMF0/dC5zdWJzdHIoMSkudHJpbSgpOnQudHJpbSgpfX07dmFyIGFFPXt9O2Z1bmN0aW9uIG9FKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9dmFyIHNFLGNFPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPVp2KCkuc3RhdGUucGFkZGluZyxhPTIqWnYoKS5zdGF0ZS5wYWRkaW5nLG89dC5ub2RlKCkuZ2V0QkJveCgpLHM9by53aWR0aCxjPW8ueCx1PXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMCkuYXR0cigieSIsWnYoKS5zdGF0ZS50aXRsZVNoaWZ0KS5hdHRyKCJmb250LXNpemUiLFp2KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuaWQpLGw9dS5ub2RlKCkuZ2V0QkJveCgpLndpZHRoK2EsaD1NYXRoLm1heChsLHMpO2g9PT1zJiYoaCs9YSk7dmFyIGY9dC5ub2RlKCkuZ2V0QkJveCgpO2UuZG9jLHI9Yy1pLGw+cyYmKHI9KHMtaCkvMitpKSxNYXRoLmFicyhjLWYueCk8aSYmbD5zJiYocj1jLShsLXMpLzIpO3ZhciBkPTEtWnYoKS5zdGF0ZS50ZXh0SGVpZ2h0O3JldHVybiB0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLGQpLmF0dHIoImNsYXNzIixuPyJhbHQtY29tcG9zaXQiOiJjb21wb3NpdCIpLmF0dHIoIndpZHRoIixoKS5hdHRyKCJoZWlnaHQiLGYuaGVpZ2h0K1p2KCkuc3RhdGUudGV4dEhlaWdodCtadigpLnN0YXRlLnRpdGxlU2hpZnQrMSkuYXR0cigicngiLCIwIiksdS5hdHRyKCJ4IixyK2kpLGw8PXMmJnUuYXR0cigieCIsYysoaC1hKS8yLWwvMitpKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLFp2KCkuc3RhdGUudGl0bGVTaGlmdC1adigpLnN0YXRlLnRleHRIZWlnaHQtWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IiwzKlp2KCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cigicngiLFp2KCkuc3RhdGUucmFkaXVzKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLFp2KCkuc3RhdGUudGl0bGVTaGlmdC1adigpLnN0YXRlLnRleHRIZWlnaHQtWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IixmLmhlaWdodCszKzIqWnYoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJyeCIsWnYoKS5zdGF0ZS5yYWRpdXMpLHR9LHVFPWZ1bmN0aW9uKHQsZSl7ZS5hdHRyKCJjbGFzcyIsInN0YXRlLW5vdGUiKTt2YXIgbj1lLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLFp2KCkuc3RhdGUucGFkZGluZykscj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT0wLGE9ci5hcHBlbmQoInRleHQiKTthLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IiksYS5hdHRyKCJjbGFzcyIsIm5vdGVUZXh0Iik7dmFyIG8scz10LnJlcGxhY2UoL1xyXG4vZywiPGJyLz4iKSxjPShzPXMucmVwbGFjZSgvXG4vZywiPGJyLz4iKSkuc3BsaXQoWW0ubGluZUJyZWFrUmVnZXgpLHU9MS4yNSpadigpLnN0YXRlLm5vdGVNYXJnaW4sbD1mdW5jdGlvbih0LGUpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighbil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG9FKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/b0UodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciByPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIHI+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3IrK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9bi5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19KGMpO3RyeXtmb3IobC5zKCk7IShvPWwubigpKS5kb25lOyl7dmFyIGg9by52YWx1ZS50cmltKCk7aWYoaC5sZW5ndGg+MCl7dmFyIGY9YS5hcHBlbmQoInRzcGFuIik7Zi50ZXh0KGgpLDA9PT11JiYodSs9Zi5ub2RlKCkuZ2V0QkJveCgpLmhlaWdodCksaSs9dSxmLmF0dHIoIngiLDArWnYoKS5zdGF0ZS5ub3RlTWFyZ2luKSxmLmF0dHIoInkiLDAraSsxLjI1Klp2KCkuc3RhdGUubm90ZU1hcmdpbil9fX1jYXRjaCh0KXtsLmUodCl9ZmluYWxseXtsLmYoKX1yZXR1cm57dGV4dFdpZHRoOmEubm9kZSgpLmdldEJCb3goKS53aWR0aCx0ZXh0SGVpZ2h0Oml9fSh0LDAsMCxlLmFwcGVuZCgiZyIpKSxpPXIudGV4dFdpZHRoLGE9ci50ZXh0SGVpZ2h0O3JldHVybiBuLmF0dHIoImhlaWdodCIsYSsyKlp2KCkuc3RhdGUubm90ZU1hcmdpbiksbi5hdHRyKCJ3aWR0aCIsaSsyKlp2KCkuc3RhdGUubm90ZU1hcmdpbiksbn0sbEU9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmlkLHI9e2lkOm4sbGFiZWw6ZS5pZCx3aWR0aDowLGhlaWdodDowfSxpPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLG4pLmF0dHIoImNsYXNzIiwic3RhdGVHcm91cCIpOyJzdGFydCI9PT1lLnR5cGUmJmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsInN0YXJ0LXN0YXRlIikuYXR0cigiciIsWnYoKS5zdGF0ZS5zaXplVW5pdCkuYXR0cigiY3giLFp2KCkuc3RhdGUucGFkZGluZytadigpLnN0YXRlLnNpemVVbml0KS5hdHRyKCJjeSIsWnYoKS5zdGF0ZS5wYWRkaW5nK1p2KCkuc3RhdGUuc2l6ZVVuaXQpfShpKSwiZW5kIj09PWUudHlwZSYmZnVuY3Rpb24odCl7dC5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImNsYXNzIiwiZW5kLXN0YXRlLW91dGVyIikuYXR0cigiciIsWnYoKS5zdGF0ZS5zaXplVW5pdCtadigpLnN0YXRlLm1pbmlQYWRkaW5nKS5hdHRyKCJjeCIsWnYoKS5zdGF0ZS5wYWRkaW5nK1p2KCkuc3RhdGUuc2l6ZVVuaXQrWnYoKS5zdGF0ZS5taW5pUGFkZGluZykuYXR0cigiY3kiLFp2KCkuc3RhdGUucGFkZGluZytadigpLnN0YXRlLnNpemVVbml0K1p2KCkuc3RhdGUubWluaVBhZGRpbmcpLHQuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsImVuZC1zdGF0ZS1pbm5lciIpLmF0dHIoInIiLFp2KCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoImN4IixadigpLnN0YXRlLnBhZGRpbmcrWnYoKS5zdGF0ZS5zaXplVW5pdCsyKS5hdHRyKCJjeSIsWnYoKS5zdGF0ZS5wYWRkaW5nK1p2KCkuc3RhdGUuc2l6ZVVuaXQrMil9KGkpLCJmb3JrIiE9PWUudHlwZSYmImpvaW4iIT09ZS50eXBlfHxmdW5jdGlvbih0LGUpe3ZhciBuPVp2KCkuc3RhdGUuZm9ya1dpZHRoLHI9WnYoKS5zdGF0ZS5mb3JrSGVpZ2h0O2lmKGUucGFyZW50SWQpe3ZhciBpPW47bj1yLHI9aX10LmFwcGVuZCgicmVjdCIpLnN0eWxlKCJzdHJva2UiLCJibGFjayIpLnN0eWxlKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJ3aWR0aCIsbikuYXR0cigiaGVpZ2h0IixyKS5hdHRyKCJ4IixadigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInkiLFp2KCkuc3RhdGUucGFkZGluZyl9KGksZSksIm5vdGUiPT09ZS50eXBlJiZ1RShlLm5vdGUudGV4dCxpKSwiZGl2aWRlciI9PT1lLnR5cGUmJmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImdyZXkiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjMiKS5hdHRyKCJ4MSIsWnYoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4MiIsMipadigpLnN0YXRlLnRleHRIZWlnaHQpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCl9KGkpLCJkZWZhdWx0Ij09PWUudHlwZSYmMD09PWUuZGVzY3JpcHRpb25zLmxlbmd0aCYmZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLDIqWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ5IixadigpLnN0YXRlLnRleHRIZWlnaHQrMipadigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoImZvbnQtc2l6ZSIsWnYoKS5zdGF0ZS5mb250U2l6ZSkuYXR0cigiY2xhc3MiLCJzdGF0ZS10aXRsZSIpLnRleHQoZS5pZCkubm9kZSgpLmdldEJCb3goKTt0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLFp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsbi53aWR0aCsyKlp2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0IixuLmhlaWdodCsyKlp2KCkuc3RhdGUucGFkZGluZykuYXR0cigicngiLFp2KCkuc3RhdGUucmFkaXVzKX0oaSxlKSwiZGVmYXVsdCI9PT1lLnR5cGUmJmUuZGVzY3JpcHRpb25zLmxlbmd0aD4wJiZmdW5jdGlvbih0LGUpe3ZhciBuPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMipadigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInkiLFp2KCkuc3RhdGUudGV4dEhlaWdodCsxLjMqWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJmb250LXNpemUiLFp2KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuZGVzY3JpcHRpb25zWzBdKS5ub2RlKCkuZ2V0QkJveCgpLHI9bi5oZWlnaHQsaT10LmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLFp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIscisuNCpadigpLnN0YXRlLnBhZGRpbmcrWnYoKS5zdGF0ZS5kaXZpZGVyTWFyZ2luK1p2KCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cigiY2xhc3MiLCJzdGF0ZS1kZXNjcmlwdGlvbiIpLGE9ITAsbz0hMDtlLmRlc2NyaXB0aW9ucy5mb3JFYWNoKChmdW5jdGlvbih0KXthfHwoZnVuY3Rpb24odCxlLG4pe3ZhciByPXQuYXBwZW5kKCJ0c3BhbiIpLmF0dHIoIngiLDIqWnYoKS5zdGF0ZS5wYWRkaW5nKS50ZXh0KGUpO258fHIuYXR0cigiZHkiLFp2KCkuc3RhdGUudGV4dEhlaWdodCl9KGksdCxvKSxvPSExKSxhPSExfSkpO3ZhciBzPXQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLFp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieTEiLFp2KCkuc3RhdGUucGFkZGluZytyK1p2KCkuc3RhdGUuZGl2aWRlck1hcmdpbi8yKS5hdHRyKCJ5MiIsWnYoKS5zdGF0ZS5wYWRkaW5nK3IrWnYoKS5zdGF0ZS5kaXZpZGVyTWFyZ2luLzIpLmF0dHIoImNsYXNzIiwiZGVzY3ItZGl2aWRlciIpLGM9aS5ub2RlKCkuZ2V0QkJveCgpLHU9TWF0aC5tYXgoYy53aWR0aCxuLndpZHRoKTtzLmF0dHIoIngyIix1KzMqWnYoKS5zdGF0ZS5wYWRkaW5nKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLFp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsdSsyKlp2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0IixjLmhlaWdodCtyKzIqWnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJyeCIsWnYoKS5zdGF0ZS5yYWRpdXMpfShpLGUpO3ZhciBhLG89aS5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiByLndpZHRoPW8ud2lkdGgrMipadigpLnN0YXRlLnBhZGRpbmcsci5oZWlnaHQ9by5oZWlnaHQrMipadigpLnN0YXRlLnBhZGRpbmcsYT1yLGFFW25dPWEscn0saEU9MDtVVC5wYXJzZXIueXk9aUU7dmFyIGZFPXt9LGRFPWZ1bmN0aW9uIHQoZSxuLHIsaSl7dmFyIGEscz1uZXcoYmIoKS5HcmFwaCkoe2NvbXBvdW5kOiEwLG11bHRpZ3JhcGg6ITB9KSxjPSEwO2ZvcihhPTA7YTxlLmxlbmd0aDthKyspaWYoInJlbGF0aW9uIj09PWVbYV0uc3RtdCl7Yz0hMTticmVha31yP3Muc2V0R3JhcGgoe3JhbmtkaXI6IkxSIixtdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwLHJhbmtlcjoidGlnaHQtdHJlZSIscmFua3NlcDpjPzE6c0UuZWRnZUxlbmd0aEZhY3Rvcixub2RlU2VwOmM/MTo1MCxpc011bHRpR3JhcGg6ITB9KTpzLnNldEdyYXBoKHtyYW5rZGlyOiJUQiIsbXVsdGlncmFwaDohMCxjb21wb3VuZDohMCxyYW5rc2VwOmM/MTpzRS5lZGdlTGVuZ3RoRmFjdG9yLG5vZGVTZXA6Yz8xOjUwLHJhbmtlcjoidGlnaHQtdHJlZSIsaXNNdWx0aUdyYXBoOiEwfSkscy5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLGlFLmV4dHJhY3QoZSk7Zm9yKHZhciB1PWlFLmdldFN0YXRlcygpLGw9aUUuZ2V0UmVsYXRpb25zKCksaD1PYmplY3Qua2V5cyh1KSxmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciBkPXVbaFtmXV07ciYmKGQucGFyZW50SWQ9cik7dmFyIHA9dm9pZCAwO2lmKGQuZG9jKXt2YXIgeT1uLmFwcGVuZCgiZyIpLmF0dHIoImlkIixkLmlkKS5hdHRyKCJjbGFzcyIsInN0YXRlR3JvdXAiKTtwPXQoZC5kb2MseSxkLmlkLCFpKTt2YXIgZz0oeT1jRSh5LGQsaSkpLm5vZGUoKS5nZXRCQm94KCk7cC53aWR0aD1nLndpZHRoLHAuaGVpZ2h0PWcuaGVpZ2h0K3NFLnBhZGRpbmcvMixmRVtkLmlkXT17eTpzRS5jb21wb3NpdFRpdGxlU2l6ZX19ZWxzZSBwPWxFKG4sZCk7aWYoZC5ub3RlKXt2YXIgbT17ZGVzY3JpcHRpb25zOltdLGlkOmQuaWQrIi1ub3RlIixub3RlOmQubm90ZSx0eXBlOiJub3RlIn0sdj1sRShuLG0pOyJsZWZ0IG9mIj09PWQubm90ZS5wb3NpdGlvbj8ocy5zZXROb2RlKHAuaWQrIi1ub3RlIix2KSxzLnNldE5vZGUocC5pZCxwKSk6KHMuc2V0Tm9kZShwLmlkLHApLHMuc2V0Tm9kZShwLmlkKyItbm90ZSIsdikpLHMuc2V0UGFyZW50KHAuaWQscC5pZCsiLWdyb3VwIikscy5zZXRQYXJlbnQocC5pZCsiLW5vdGUiLHAuaWQrIi1ncm91cCIpfWVsc2Ugcy5zZXROb2RlKHAuaWQscCl9by5kZWJ1ZygiQ291bnQ9IixzLm5vZGVDb3VudCgpLHMpO3ZhciBiPTA7bC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTtiKyssby5kZWJ1ZygiU2V0dGluZyBlZGdlIix0KSxzLnNldEVkZ2UodC5pZDEsdC5pZDIse3JlbGF0aW9uOnQsd2lkdGg6KGU9dC50aXRsZSxlP2UubGVuZ3RoKnNFLmZvbnRTaXplRmFjdG9yOjEpLGhlaWdodDpzRS5sYWJlbEhlaWdodCpZbS5nZXRSb3dzKHQudGl0bGUpLmxlbmd0aCxsYWJlbHBvczoiYyJ9LCJpZCIrYil9KSksbWIoKS5sYXlvdXQocyksby5kZWJ1ZygiR3JhcGggYWZ0ZXIgbGF5b3V0IixzLm5vZGVzKCkpO3ZhciBfPW4ubm9kZSgpO3Mubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2b2lkIDAhPT10JiZ2b2lkIDAhPT1zLm5vZGUodCk/KG8ud2FybigiTm9kZSAiK3QrIjogIitKU09OLnN0cmluZ2lmeShzLm5vZGUodCkpKSxhdSgiIyIrXy5pZCsiICMiK3QpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhzLm5vZGUodCkueC1zLm5vZGUodCkud2lkdGgvMikrIiwiKyhzLm5vZGUodCkueSsoZkVbdF0/ZkVbdF0ueTowKS1zLm5vZGUodCkuaGVpZ2h0LzIpKyIgKSIpLGF1KCIjIitfLmlkKyIgIyIrdCkuYXR0cigiZGF0YS14LXNoaWZ0IixzLm5vZGUodCkueC1zLm5vZGUodCkud2lkdGgvMiksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiIyIrXy5pZCsiICMiK3QrIiAuZGl2aWRlciIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyZW50RWxlbWVudCxuPTAscj0wO2UmJihlLnBhcmVudEVsZW1lbnQmJihuPWUucGFyZW50RWxlbWVudC5nZXRCQm94KCkud2lkdGgpLHI9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoImRhdGEteC1zaGlmdCIpLDEwKSxOdW1iZXIuaXNOYU4ocikmJihyPTApKSx0LnNldEF0dHJpYnV0ZSgieDEiLDAtcis4KSx0LnNldEF0dHJpYnV0ZSgieDIiLG4tci04KX0pKSk6by5kZWJ1ZygiTm8gTm9kZSAiK3QrIjogIitKU09OLnN0cmluZ2lmeShzLm5vZGUodCkpKX0pKTt2YXIgeD1fLmdldEJCb3goKTtzLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmdm9pZCAwIT09cy5lZGdlKHQpJiYoby5kZWJ1ZygiRWRnZSAiK3QudisiIC0+ICIrdC53KyI6ICIrSlNPTi5zdHJpbmdpZnkocy5lZGdlKHQpKSksZnVuY3Rpb24odCxlLG4pe2UucG9pbnRzPWUucG9pbnRzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIU51bWJlci5pc05hTih0LnkpfSkpO3ZhciByPWUucG9pbnRzLGk9enUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSkuY3VydmUoVnUpLGE9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixpKHIpKS5hdHRyKCJpZCIsImVkZ2UiK2hFKS5hdHRyKCJjbGFzcyIsInRyYW5zaXRpb24iKSxzPSIiO2lmKFp2KCkuc3RhdGUuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKHM9KHM9KHM9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksYS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrcysiIyIrZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UgaUUucmVsYXRpb25UeXBlLkFHR1JFR0FUSU9OOnJldHVybiJhZ2dyZWdhdGlvbiI7Y2FzZSBpRS5yZWxhdGlvblR5cGUuRVhURU5TSU9OOnJldHVybiJleHRlbnNpb24iO2Nhc2UgaUUucmVsYXRpb25UeXBlLkNPTVBPU0lUSU9OOnJldHVybiJjb21wb3NpdGlvbiI7Y2FzZSBpRS5yZWxhdGlvblR5cGUuREVQRU5ERU5DWTpyZXR1cm4iZGVwZW5kZW5jeSJ9fShpRS5yZWxhdGlvblR5cGUuREVQRU5ERU5DWSkrIkVuZCkiKSx2b2lkIDAhPT1uLnRpdGxlKXtmb3IodmFyIGM9dC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInN0YXRlTGFiZWwiKSx1PXp2LmNhbGNMYWJlbFBvc2l0aW9uKGUucG9pbnRzKSxsPXUueCxoPXUueSxmPVltLmdldFJvd3Mobi50aXRsZSksZD0wLHA9W10seT0wLGc9MCxtPTA7bTw9Zi5sZW5ndGg7bSsrKXt2YXIgdj1jLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChmW21dKS5hdHRyKCJ4IixsKS5hdHRyKCJ5IixoK2QpLGI9di5ub2RlKCkuZ2V0QkJveCgpO2lmKHk9TWF0aC5tYXgoeSxiLndpZHRoKSxnPU1hdGgubWluKGcsYi54KSxvLmluZm8oYi54LGwsaCtkKSwwPT09ZCl7dmFyIF89di5ub2RlKCkuZ2V0QkJveCgpO2Q9Xy5oZWlnaHQsby5pbmZvKCJUaXRsZSBoZWlnaHQiLGQsaCl9cC5wdXNoKHYpfXZhciB4PWQqZi5sZW5ndGg7aWYoZi5sZW5ndGg+MSl7dmFyIHc9KGYubGVuZ3RoLTEpKmQqLjU7cC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmF0dHIoInkiLGgrZSpkLXcpfSkpLHg9ZCpmLmxlbmd0aH12YXIgaz1jLm5vZGUoKS5nZXRCQm94KCk7Yy5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJjbGFzcyIsImJveCIpLmF0dHIoIngiLGwteS8yLVp2KCkuc3RhdGUucGFkZGluZy8yKS5hdHRyKCJ5IixoLXgvMi1adigpLnN0YXRlLnBhZGRpbmcvMi0zLjUpLmF0dHIoIndpZHRoIix5K1p2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0Iix4K1p2KCkuc3RhdGUucGFkZGluZyksby5pbmZvKGspfWhFKyt9KG4scy5lZGdlKHQpLHMuZWRnZSh0KS5yZWxhdGlvbikpfSkpLHg9Xy5nZXRCQm94KCk7dmFyIHc9e2lkOnJ8fCJyb290IixsYWJlbDpyfHwicm9vdCIsd2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIHcud2lkdGg9eC53aWR0aCsyKnNFLnBhZGRpbmcsdy5oZWlnaHQ9eC5oZWlnaHQrMipzRS5wYWRkaW5nLG8uZGVidWcoIkRvYyByZW5kZXJlZCIsdyxzKSx3fTtjb25zdCBwRT1mdW5jdGlvbih0LGUpe3NFPVp2KCkuc3RhdGUsVVQucGFyc2VyLnl5LmNsZWFyKCksVVQucGFyc2VyLnBhcnNlKHQpLG8uZGVidWcoIlJlbmRlcmluZyBkaWFncmFtICIrdCk7dmFyIG49YXUoIltpZD0nIi5jb25jYXQoZSwiJ10iKSk7bi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZGVwZW5kZW5jeUVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOSw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpLG5ldyhiYigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMCxyYW5rZGlyOiJSTCJ9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpO3ZhciByPWlFLmdldFJvb3REb2MoKTtkRShyLG4sdm9pZCAwLCExKTt2YXIgaT1zRS5wYWRkaW5nLGE9bi5ub2RlKCkuZ2V0QkJveCgpLHM9YS53aWR0aCsyKmksYz1hLmhlaWdodCsyKmk7anYobixjLDEuNzUqcyxzRS51c2VNYXhXaWR0aCksbi5hdHRyKCJ2aWV3Qm94IiwiIi5jb25jYXQoYS54LXNFLnBhZGRpbmcsIiAgIikuY29uY2F0KGEueS1zRS5wYWRkaW5nLCIgIikrcysiICIrYyl9O3ZhciB5RT17fSxnRT17fSxtRT1mdW5jdGlvbih0LGUsbixyKXtpZigicm9vdCIhPT1uLmlkKXt2YXIgaT0icmVjdCI7ITA9PT1uLnN0YXJ0JiYoaT0ic3RhcnQiKSwhMT09PW4uc3RhcnQmJihpPSJlbmQiKSwiZGVmYXVsdCIhPT1uLnR5cGUmJihpPW4udHlwZSksZ0Vbbi5pZF18fChnRVtuLmlkXT17aWQ6bi5pZCxzaGFwZTppLGRlc2NyaXB0aW9uOlltLnNhbml0aXplVGV4dChuLmlkLFp2KCkpLGNsYXNzZXM6InN0YXRlZGlhZ3JhbS1zdGF0ZSJ9KSxuLmRlc2NyaXB0aW9uJiYoQXJyYXkuaXNBcnJheShnRVtuLmlkXS5kZXNjcmlwdGlvbik/KGdFW24uaWRdLnNoYXBlPSJyZWN0V2l0aFRpdGxlIixnRVtuLmlkXS5kZXNjcmlwdGlvbi5wdXNoKG4uZGVzY3JpcHRpb24pKTpnRVtuLmlkXS5kZXNjcmlwdGlvbi5sZW5ndGg+MD8oZ0Vbbi5pZF0uc2hhcGU9InJlY3RXaXRoVGl0bGUiLGdFW24uaWRdLmRlc2NyaXB0aW9uPT09bi5pZD9nRVtuLmlkXS5kZXNjcmlwdGlvbj1bbi5kZXNjcmlwdGlvbl06Z0Vbbi5pZF0uZGVzY3JpcHRpb249W2dFW24uaWRdLmRlc2NyaXB0aW9uLG4uZGVzY3JpcHRpb25dKTooZ0Vbbi5pZF0uc2hhcGU9InJlY3QiLGdFW24uaWRdLmRlc2NyaXB0aW9uPW4uZGVzY3JpcHRpb24pLGdFW24uaWRdLmRlc2NyaXB0aW9uPVltLnNhbml0aXplVGV4dE9yQXJyYXkoZ0Vbbi5pZF0uZGVzY3JpcHRpb24sWnYoKSkpLDE9PT1nRVtuLmlkXS5kZXNjcmlwdGlvbi5sZW5ndGgmJiJyZWN0V2l0aFRpdGxlIj09PWdFW24uaWRdLnNoYXBlJiYoZ0Vbbi5pZF0uc2hhcGU9InJlY3QiKSwhZ0Vbbi5pZF0udHlwZSYmbi5kb2MmJihvLmluZm8oIlNldHRpbmcgY2x1c3RlciBmb3IgIixuLmlkLF9FKG4pKSxnRVtuLmlkXS50eXBlPSJncm91cCIsZ0Vbbi5pZF0uZGlyPV9FKG4pLGdFW24uaWRdLnNoYXBlPSJkaXZpZGVyIj09PW4udHlwZT8iZGl2aWRlciI6InJvdW5kZWRXaXRoVGl0bGUiLGdFW24uaWRdLmNsYXNzZXM9Z0Vbbi5pZF0uY2xhc3NlcysiICIrKHI/InN0YXRlZGlhZ3JhbS1jbHVzdGVyIHN0YXRlZGlhZ3JhbS1jbHVzdGVyLWFsdCI6InN0YXRlZGlhZ3JhbS1jbHVzdGVyIikpO3ZhciBhPXtsYWJlbFN0eWxlOiIiLHNoYXBlOmdFW24uaWRdLnNoYXBlLGxhYmVsVGV4dDpnRVtuLmlkXS5kZXNjcmlwdGlvbixjbGFzc2VzOmdFW24uaWRdLmNsYXNzZXMsc3R5bGU6IiIsaWQ6bi5pZCxkaXI6Z0Vbbi5pZF0uZGlyLGRvbUlkOiJzdGF0ZS0iK24uaWQrIi0iK3ZFLHR5cGU6Z0Vbbi5pZF0udHlwZSxwYWRkaW5nOjE1fTtpZihuLm5vdGUpe3ZhciBzPXtsYWJlbFN0eWxlOiIiLHNoYXBlOiJub3RlIixsYWJlbFRleHQ6bi5ub3RlLnRleHQsY2xhc3Nlczoic3RhdGVkaWFncmFtLW5vdGUiLHN0eWxlOiIiLGlkOm4uaWQrIi0tLS1ub3RlLSIrdkUsZG9tSWQ6InN0YXRlLSIrbi5pZCsiLS0tLW5vdGUtIit2RSx0eXBlOmdFW24uaWRdLnR5cGUscGFkZGluZzoxNX0sYz17bGFiZWxTdHlsZToiIixzaGFwZToibm90ZUdyb3VwIixsYWJlbFRleHQ6bi5ub3RlLnRleHQsY2xhc3NlczpnRVtuLmlkXS5jbGFzc2VzLHN0eWxlOiIiLGlkOm4uaWQrIi0tLS1wYXJlbnQiLGRvbUlkOiJzdGF0ZS0iK24uaWQrIi0tLS1wYXJlbnQtIit2RSx0eXBlOiJncm91cCIscGFkZGluZzowfTt2RSsrLHQuc2V0Tm9kZShuLmlkKyItLS0tcGFyZW50IixjKSx0LnNldE5vZGUocy5pZCxzKSx0LnNldE5vZGUobi5pZCxhKSx0LnNldFBhcmVudChuLmlkLG4uaWQrIi0tLS1wYXJlbnQiKSx0LnNldFBhcmVudChzLmlkLG4uaWQrIi0tLS1wYXJlbnQiKTt2YXIgdT1uLmlkLGw9cy5pZDsibGVmdCBvZiI9PT1uLm5vdGUucG9zaXRpb24mJih1PXMuaWQsbD1uLmlkKSx0LnNldEVkZ2UodSxsLHthcnJvd2hlYWQ6Im5vbmUiLGFycm93VHlwZToiIixzdHlsZToiZmlsbDpub25lIixsYWJlbFN0eWxlOiIiLGNsYXNzZXM6InRyYW5zaXRpb24gbm90ZS1lZGdlIixhcnJvd2hlYWRTdHlsZToiZmlsbDogIzMzMyIsbGFiZWxwb3M6ImMiLGxhYmVsVHlwZToidGV4dCIsdGhpY2tuZXNzOiJub3JtYWwifSl9ZWxzZSB0LnNldE5vZGUobi5pZCxhKX1lJiYicm9vdCIhPT1lLmlkJiYoby50cmFjZSgiU2V0dGluZyBub2RlICIsbi5pZCwiIHRvIGJlIGNoaWxkIG9mIGl0cyBwYXJlbnQgIixlLmlkKSx0LnNldFBhcmVudChuLmlkLGUuaWQpKSxuLmRvYyYmKG8udHJhY2UoIkFkZGluZyBub2RlcyBjaGlsZHJlbiAiKSxiRSh0LG4sbi5kb2MsIXIpKX0sdkU9MCxiRT1mdW5jdGlvbih0LGUsbixyKXtvLnRyYWNlKCJpdGVtcyIsbiksbi5mb3JFYWNoKChmdW5jdGlvbihuKXtpZigic3RhdGUiPT09bi5zdG10fHwiZGVmYXVsdCI9PT1uLnN0bXQpbUUodCxlLG4scik7ZWxzZSBpZigicmVsYXRpb24iPT09bi5zdG10KXttRSh0LGUsbi5zdGF0ZTEsciksbUUodCxlLG4uc3RhdGUyLHIpO3ZhciBpPXtpZDoiZWRnZSIrdkUsYXJyb3doZWFkOiJub3JtYWwiLGFycm93VHlwZUVuZDoiYXJyb3dfYmFyYiIsc3R5bGU6ImZpbGw6bm9uZSIsbGFiZWxTdHlsZToiIixsYWJlbDpZbS5zYW5pdGl6ZVRleHQobi5kZXNjcmlwdGlvbixadigpKSxhcnJvd2hlYWRTdHlsZToiZmlsbDogIzMzMyIsbGFiZWxwb3M6ImMiLGxhYmVsVHlwZToidGV4dCIsdGhpY2tuZXNzOiJub3JtYWwiLGNsYXNzZXM6InRyYW5zaXRpb24ifSxhPW4uc3RhdGUxLmlkLG89bi5zdGF0ZTIuaWQ7dC5zZXRFZGdlKGEsbyxpLHZFKSx2RSsrfX0pKX0sX0U9ZnVuY3Rpb24odCxlKXt2YXIgbj1lfHwiVEIiO2lmKHQuZG9jKWZvcih2YXIgcj0wO3I8dC5kb2MubGVuZ3RoO3IrKyl7dmFyIGk9dC5kb2Nbcl07ImRpciI9PT1pLnN0bXQmJihuPWkudmFsdWUpfXJldHVybiBufTtjb25zdCB4RT1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKXlFW2Vbbl1dPXRbZVtuXV19O2Z1bmN0aW9uIHdFKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBrRSh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBrRSh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2tFKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24ga0UodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgVEU9IiIsRUU9IiIsQ0U9W10sU0U9W10sQUU9W10sTUU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT0wO2U8QUUubGVuZ3RoO2UrKylBRVtlXS5wcm9jZXNzZWQsdD10JiZBRVtlXS5wcm9jZXNzZWQ7cmV0dXJuIHR9O2NvbnN0IE5FPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7YUMucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBadigpLmpvdXJuZXl9LGNsZWFyOmZ1bmN0aW9uKCl7Q0UubGVuZ3RoPTAsU0UubGVuZ3RoPTAsRUU9IiIsVEU9IiIsQUUubGVuZ3RoPTB9LHNldFRpdGxlOmZ1bmN0aW9uKHQpe1RFPXR9LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIFRFfSxhZGRTZWN0aW9uOmZ1bmN0aW9uKHQpe0VFPXQsQ0UucHVzaCh0KX0sZ2V0U2VjdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gQ0V9LGdldFRhc2tzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PU1FKCksZT0wOyF0JiZlPDEwMDspdD1NRSgpLGUrKztyZXR1cm4gU0UucHVzaC5hcHBseShTRSxBRSksU0V9LGFkZFRhc2s6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnN1YnN0cigxKS5zcGxpdCgiOiIpLHI9MCxpPVtdOzE9PT1uLmxlbmd0aD8ocj1OdW1iZXIoblswXSksaT1bXSk6KHI9TnVtYmVyKG5bMF0pLGk9blsxXS5zcGxpdCgiLCIpKTt2YXIgYT1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpfSkpLG89e3NlY3Rpb246RUUsdHlwZTpFRSxwZW9wbGU6YSx0YXNrOnQsc2NvcmU6cn07QUUucHVzaChvKX0sYWRkVGFza09yZzpmdW5jdGlvbih0KXt2YXIgZT17c2VjdGlvbjpFRSx0eXBlOkVFLGRlc2NyaXB0aW9uOnQsdGFzazp0LGNsYXNzZXM6W119O1NFLnB1c2goZSl9LGdldEFjdG9yczpmdW5jdGlvbigpe3JldHVybiB0PVtdLFNFLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucGVvcGxlJiZ0LnB1c2guYXBwbHkodCx3RShlLnBlb3BsZSkpfSkpLHdFKG5ldyBTZXQodCkpLnNvcnQoKTt2YXIgdH19O3ZhciBERT1uKDY3NDEpLE9FPW4ubihERSksQkU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgicmVjdCIpO3JldHVybiBuLmF0dHIoIngiLGUueCksbi5hdHRyKCJ5IixlLnkpLG4uYXR0cigiZmlsbCIsZS5maWxsKSxuLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLG4uYXR0cigid2lkdGgiLGUud2lkdGgpLG4uYXR0cigiaGVpZ2h0IixlLmhlaWdodCksbi5hdHRyKCJyeCIsZS5yeCksbi5hdHRyKCJyeSIsZS5yeSksdm9pZCAwIT09ZS5jbGFzcyYmbi5hdHRyKCJjbGFzcyIsZS5jbGFzcyksbn0sTEU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgiY2lyY2xlIik7cmV0dXJuIG4uYXR0cigiY3giLGUuY3gpLG4uYXR0cigiY3kiLGUuY3kpLG4uYXR0cigiY2xhc3MiLCJhY3Rvci0iK2UucG9zKSxuLmF0dHIoImZpbGwiLGUuZmlsbCksbi5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKSxuLmF0dHIoInIiLGUuciksdm9pZCAwIT09bi5jbGFzcyYmbi5hdHRyKCJjbGFzcyIsbi5jbGFzcyksdm9pZCAwIT09ZS50aXRsZSYmbi5hcHBlbmQoInRpdGxlIikudGV4dChlLnRpdGxlKSxufSxJRT0tMSxSRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSxhLG8scyxjKXtyKGUuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbithLzIpLmF0dHIoInkiLGkrby8yKzUpLnN0eWxlKCJmb250LWNvbG9yIixjKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KHQpLHMpfWZ1bmN0aW9uIGUodCxlLG4saSxhLG8scyxjLHUpe2Zvcih2YXIgbD1jLnRhc2tGb250U2l6ZSxoPWMudGFza0ZvbnRGYW1pbHksZj10LnNwbGl0KC88YnJccypcLz8+L2dpKSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWQqbC1sKihmLmxlbmd0aC0xKS8yLHk9ZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuK2EvMikuYXR0cigieSIsaSkuYXR0cigiZmlsbCIsdSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUoImZvbnQtc2l6ZSIsbCkuc3R5bGUoImZvbnQtZmFtaWx5IixoKTt5LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixuK2EvMikuYXR0cigiZHkiLHApLnRleHQoZltkXSkseS5hdHRyKCJ5IixpK28vMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLHIoeSxzKX19ZnVuY3Rpb24gbih0LG4saSxhLG8scyxjLHUpe3ZhciBsPW4uYXBwZW5kKCJzd2l0Y2giKSxoPWwuYXBwZW5kKCJmb3JlaWduT2JqZWN0IikuYXR0cigieCIsaSkuYXR0cigieSIsYSkuYXR0cigid2lkdGgiLG8pLmF0dHIoImhlaWdodCIscykuYXR0cigicG9zaXRpb24iLCJmaXhlZCIpLmFwcGVuZCgieGh0bWw6ZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZSIpLnN0eWxlKCJoZWlnaHQiLCIxMDAlIikuc3R5bGUoIndpZHRoIiwiMTAwJSIpO2guYXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsImxhYmVsIikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KHQpLGUodCxsLGksYSxvLHMsYyx1KSxyKGgsYyl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbiBpbiBlKW4gaW4gZSYmdC5hdHRyKG4sZVtuXSl9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiJmbyI9PT1yLnRleHRQbGFjZW1lbnQ/bjoib2xkIj09PXIudGV4dFBsYWNlbWVudD90OmV9fSgpO2NvbnN0IEZFPUxFLFBFPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmFwcGVuZCgiZyIpLGk9e3g6MCx5OjAsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfTtpLng9ZS54LGkueT1lLnksaS5maWxsPWUuZmlsbCxpLndpZHRoPW4ud2lkdGgsaS5oZWlnaHQ9bi5oZWlnaHQsaS5jbGFzcz0iam91cm5leS1zZWN0aW9uIHNlY3Rpb24tdHlwZS0iK2UubnVtLGkucng9MyxpLnJ5PTMsQkUocixpKSxSRShuKShlLnRleHQscixpLngsaS55LGkud2lkdGgsaS5oZWlnaHQse2NsYXNzOiJqb3VybmV5LXNlY3Rpb24gc2VjdGlvbi10eXBlLSIrZS5udW19LG4sZS5jb2xvdXIpfSxqRT1mdW5jdGlvbih0LGUpe3ZhciBuPWUudGV4dC5yZXBsYWNlKC88YnJccypcLz8+L2dpLCIgIikscj10LmFwcGVuZCgidGV4dCIpO3IuYXR0cigieCIsZS54KSxyLmF0dHIoInkiLGUueSksci5hdHRyKCJjbGFzcyIsImxlZ2VuZCIpLHIuc3R5bGUoInRleHQtYW5jaG9yIixlLmFuY2hvciksdm9pZCAwIT09ZS5jbGFzcyYmci5hdHRyKCJjbGFzcyIsZS5jbGFzcyk7dmFyIGk9ci5hcHBlbmQoInRzcGFuIik7cmV0dXJuIGkuYXR0cigieCIsZS54KzIqZS50ZXh0TWFyZ2luKSxpLnRleHQobikscn0sWUU9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPWUueCtuLndpZHRoLzIscz10LmFwcGVuZCgiZyIpO0lFKysscy5hcHBlbmQoImxpbmUiKS5hdHRyKCJpZCIsInRhc2siK0lFKS5hdHRyKCJ4MSIsbykuYXR0cigieTEiLGUueSkuYXR0cigieDIiLG8pLmF0dHIoInkyIiw0NTApLmF0dHIoImNsYXNzIiwidGFzay1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsIjQgMiIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKSxyPXMsaT17Y3g6byxjeTozMDArMzAqKDUtZS5zY29yZSksc2NvcmU6ZS5zY29yZX0sci5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixpLmN4KS5hdHRyKCJjeSIsaS5jeSkuYXR0cigiY2xhc3MiLCJmYWNlIikuYXR0cigiciIsMTUpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigib3ZlcmZsb3ciLCJ2aXNpYmxlIiksKGE9ci5hcHBlbmQoImciKSkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsaS5jeC01KS5hdHRyKCJjeSIsaS5jeS01KS5hdHRyKCJyIiwxLjUpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigiZmlsbCIsIiM2NjYiKS5hdHRyKCJzdHJva2UiLCIjNjY2IiksYS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixpLmN4KzUpLmF0dHIoImN5IixpLmN5LTUpLmF0dHIoInIiLDEuNSkuYXR0cigic3Ryb2tlLXdpZHRoIiwyKS5hdHRyKCJmaWxsIiwiIzY2NiIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKSxpLnNjb3JlPjM/ZnVuY3Rpb24odCl7dmFyIGU9SXUoKS5zdGFydEFuZ2xlKE1hdGguUEkvMikuZW5kQW5nbGUoTWF0aC5QSS8yKjMpLmlubmVyUmFkaXVzKDcuNSkub3V0ZXJSYWRpdXMoMTUvMi4yKTt0LmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibW91dGgiKS5hdHRyKCJkIixlKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmN4KyIsIisoaS5jeSsyKSsiKSIpfShhKTppLnNjb3JlPDM/ZnVuY3Rpb24odCl7dmFyIGU9SXUoKS5zdGFydEFuZ2xlKDMqTWF0aC5QSS8yKS5lbmRBbmdsZShNYXRoLlBJLzIqNSkuaW5uZXJSYWRpdXMoNy41KS5vdXRlclJhZGl1cygxNS8yLjIpO3QuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoImQiLGUpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2kuY3grIiwiKyhpLmN5KzcpKyIpIil9KGEpOmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoInN0cm9rZSIsMikuYXR0cigieDEiLGkuY3gtNSkuYXR0cigieTEiLGkuY3krNykuYXR0cigieDIiLGkuY3grNSkuYXR0cigieTIiLGkuY3krNykuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKX0oYSk7dmFyIGM9e3g6MCx5OjAsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfTtjLng9ZS54LGMueT1lLnksYy5maWxsPWUuZmlsbCxjLndpZHRoPW4ud2lkdGgsYy5oZWlnaHQ9bi5oZWlnaHQsYy5jbGFzcz0idGFzayB0YXNrLXR5cGUtIitlLm51bSxjLnJ4PTMsYy5yeT0zLEJFKHMsYyk7dmFyIHU9ZS54KzE0O2UucGVvcGxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuYWN0b3JzW3RdLmNvbG9yLHI9e2N4OnUsY3k6ZS55LHI6NyxmaWxsOm4sc3Ryb2tlOiIjMDAwIix0aXRsZTp0LHBvczplLmFjdG9yc1t0XS5wb3NpdGlvbn07TEUocyxyKSx1Kz0xMH0pKSxSRShuKShlLnRhc2sscyxjLngsYy55LGMud2lkdGgsYy5oZWlnaHQse2NsYXNzOiJ0YXNrIn0sbixlLmNvbG91cil9O0RFLnBhcnNlci55eT1ORTt2YXIgekU9e30sVUU9WnYoKS5qb3VybmV5LHFFPVp2KCkuam91cm5leS5sZWZ0TWFyZ2luLCRFPXtkYXRhOntzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdmVydGljYWxQb3M6MCxzZXF1ZW5jZUl0ZW1zOltdLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlSXRlbXM9W10sdGhpcy5kYXRhPXtzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdGhpcy52ZXJ0aWNhbFBvcz0wfSx1cGRhdGVWYWw6ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09dFtlXT90W2VdPW46dFtlXT1yKG4sdFtlXSl9LHVwZGF0ZUJvdW5kczpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1adigpLmpvdXJuZXksYT10aGlzLG89MDt0aGlzLnNlcXVlbmNlSXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24ocyl7bysrO3ZhciBjPWEuc2VxdWVuY2VJdGVtcy5sZW5ndGgtbysxO2EudXBkYXRlVmFsKHMsInN0YXJ0eSIsZS1jKmkuYm94TWFyZ2luLE1hdGgubWluKSxhLnVwZGF0ZVZhbChzLCJzdG9weSIscitjKmkuYm94TWFyZ2luLE1hdGgubWF4KSxhLnVwZGF0ZVZhbCgkRS5kYXRhLCJzdGFydHgiLHQtYyppLmJveE1hcmdpbixNYXRoLm1pbiksYS51cGRhdGVWYWwoJEUuZGF0YSwic3RvcHgiLG4rYyppLmJveE1hcmdpbixNYXRoLm1heCksYS51cGRhdGVWYWwocywic3RhcnR4Iix0LWMqaS5ib3hNYXJnaW4sTWF0aC5taW4pLGEudXBkYXRlVmFsKHMsInN0b3B4IixuK2MqaS5ib3hNYXJnaW4sTWF0aC5tYXgpLGEudXBkYXRlVmFsKCRFLmRhdGEsInN0YXJ0eSIsZS1jKmkuYm94TWFyZ2luLE1hdGgubWluKSxhLnVwZGF0ZVZhbCgkRS5kYXRhLCJzdG9weSIscitjKmkuYm94TWFyZ2luLE1hdGgubWF4KX0pKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPU1hdGgubWluKHQsbiksYT1NYXRoLm1heCh0LG4pLG89TWF0aC5taW4oZSxyKSxzPU1hdGgubWF4KGUscik7dGhpcy51cGRhdGVWYWwoJEUuZGF0YSwic3RhcnR4IixpLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbCgkRS5kYXRhLCJzdGFydHkiLG8sTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKCRFLmRhdGEsInN0b3B4IixhLE1hdGgubWF4KSx0aGlzLnVwZGF0ZVZhbCgkRS5kYXRhLCJzdG9weSIscyxNYXRoLm1heCksdGhpcy51cGRhdGVCb3VuZHMoaSxvLGEscyl9LGJ1bXBWZXJ0aWNhbFBvczpmdW5jdGlvbih0KXt0aGlzLnZlcnRpY2FsUG9zPXRoaXMudmVydGljYWxQb3MrdCx0aGlzLmRhdGEuc3RvcHk9dGhpcy52ZXJ0aWNhbFBvc30sZ2V0VmVydGljYWxQb3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52ZXJ0aWNhbFBvc30sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX19LEhFPVVFLnNlY3Rpb25GaWxscyxXRT1VRS5zZWN0aW9uQ29sb3Vycztjb25zdCBWRT1mdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXtVRVtlXT10W2VdfSkpfSxHRT1mdW5jdGlvbih0LGUpe3ZhciBuPVp2KCkuam91cm5leTtERS5wYXJzZXIueXkuY2xlYXIoKSxERS5wYXJzZXIucGFyc2UodCsiXG4iKSwkRS5pbml0KCk7dmFyIHI9YXUoIiMiK2UpO3IuYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksci5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiYXJyb3doZWFkIikuYXR0cigicmVmWCIsNSkuYXR0cigicmVmWSIsMikuYXR0cigibWFya2VyV2lkdGgiLDYpLmF0dHIoIm1hcmtlckhlaWdodCIsNCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAsMCBWIDQgTDYsMiBaIik7dmFyIGk9REUucGFyc2VyLnl5LmdldFRhc2tzKCksYT1ERS5wYXJzZXIueXkuZ2V0VGl0bGUoKSxvPURFLnBhcnNlci55eS5nZXRBY3RvcnMoKTtmb3IodmFyIHMgaW4gekUpZGVsZXRlIHpFW3NdO3ZhciBjPTA7by5mb3JFYWNoKChmdW5jdGlvbih0KXt6RVt0XT17Y29sb3I6bi5hY3RvckNvbG91cnNbYyVuLmFjdG9yQ29sb3Vycy5sZW5ndGhdLHBvc2l0aW9uOmN9LGMrK30pKSxmdW5jdGlvbih0KXt2YXIgZT1adigpLmpvdXJuZXksbj02MDtPYmplY3Qua2V5cyh6RSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGk9ekVbcl0uY29sb3IsYT17Y3g6MjAsY3k6bixyOjcsZmlsbDppLHN0cm9rZToiIzAwMCIscG9zOnpFW3JdLnBvc2l0aW9ufTtGRSh0LGEpO3ZhciBvPXt4OjQwLHk6bis3LGZpbGw6IiM2NjYiLHRleHQ6cix0ZXh0TWFyZ2luOjV8ZS5ib3hUZXh0TWFyZ2lufTtqRSh0LG8pLG4rPTIwfSkpfShyKSwkRS5pbnNlcnQoMCwwLHFFLDUwKk9iamVjdC5rZXlzKHpFKS5sZW5ndGgpLGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9WnYoKS5qb3VybmV5LGk9IiIsYT1uKygyKnIuaGVpZ2h0K3IuZGlhZ3JhbU1hcmdpblkpLG89MCxzPSIjQ0NDIixjPSJibGFjayIsdT0wLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGg9ZVtsXTtpZihpIT09aC5zZWN0aW9uKXtzPUhFW28lSEUubGVuZ3RoXSx1PW8lSEUubGVuZ3RoLGM9V0VbbyVXRS5sZW5ndGhdO3ZhciBmPXt4Omwqci50YXNrTWFyZ2luK2wqci53aWR0aCtxRSx5OjUwLHRleHQ6aC5zZWN0aW9uLGZpbGw6cyxudW06dSxjb2xvdXI6Y307UEUodCxmLHIpLGk9aC5zZWN0aW9uLG8rK312YXIgZD1oLnBlb3BsZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHpFW2VdJiYodFtlXT16RVtlXSksdH0pLHt9KTtoLng9bCpyLnRhc2tNYXJnaW4rbCpyLndpZHRoK3FFLGgueT1hLGgud2lkdGg9ci5kaWFncmFtTWFyZ2luWCxoLmhlaWdodD1yLmRpYWdyYW1NYXJnaW5ZLGguY29sb3VyPWMsaC5maWxsPXMsaC5udW09dSxoLmFjdG9ycz1kLFlFKHQsaCxyKSwkRS5pbnNlcnQoaC54LGgueSxoLngraC53aWR0aCtyLnRhc2tNYXJnaW4sNDUwKX19KHIsaSwwKTt2YXIgdT0kRS5nZXRCb3VuZHMoKTthJiZyLmFwcGVuZCgidGV4dCIpLnRleHQoYSkuYXR0cigieCIscUUpLmF0dHIoImZvbnQtc2l6ZSIsIjRleCIpLmF0dHIoImZvbnQtd2VpZ2h0IiwiYm9sZCIpLmF0dHIoInkiLDI1KTt2YXIgbD11LnN0b3B5LXUuc3RhcnR5KzIqbi5kaWFncmFtTWFyZ2luWSxoPXFFK3Uuc3RvcHgrMipuLmRpYWdyYW1NYXJnaW5YO2p2KHIsbCxoLG4udXNlTWF4V2lkdGgpLHIuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLHFFKS5hdHRyKCJ5MSIsNCpuLmhlaWdodCkuYXR0cigieDIiLGgtcUUtNCkuYXR0cigieTIiLDQqbi5oZWlnaHQpLmF0dHIoInN0cm9rZS13aWR0aCIsNCkuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCNhcnJvd2hlYWQpIik7dmFyIGY9YT83MDowO3IuYXR0cigidmlld0JveCIsIiIuY29uY2F0KHUuc3RhcnR4LCIgLTI1ICIpLmNvbmNhdChoLCIgIikuY29uY2F0KGwrZikpLHIuYXR0cigicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSxyLmF0dHIoImhlaWdodCIsbCtmKzI1KX07dmFyIFhFPXt9O2NvbnN0IFpFPWZ1bmN0aW9uKHQpe3JldHVybiJnLmNsYXNzR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBmaWxsOiAiKS5jb25jYXQodC5jbGFzc1RleHQsIjtcbiAgc3Ryb2tlOiBub25lO1xuICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICBmb250LXNpemU6IDEwcHg7XG5cbiAgLnRpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbn1cblxuLm5vZGVMYWJlbCwgLmVkZ2VMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5jbGFzc1RleHQsIjtcbn1cbi5lZGdlTGFiZWwgLmxhYmVsIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG59XG4ubGFiZWwgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmNsYXNzVGV4dCwiO1xufVxuLmVkZ2VMYWJlbCAubGFiZWwgc3BhbiB7XG4gIGJhY2tncm91bmQ6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbn1cblxuLmNsYXNzVGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuLm5vZGUgcmVjdCxcbiAgLm5vZGUgY2lyY2xlLFxuICAubm9kZSBlbGxpcHNlLFxuICAubm9kZSBwb2x5Z29uLFxuICAubm9kZSBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuXG4uZGl2aWRlciB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBzdHJva2U6IDE7XG59XG5cbmcuY2xpY2thYmxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5nLmNsYXNzR3JvdXAgcmVjdCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG59XG5cbmcuY2xhc3NHcm91cCBsaW5lIHtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuLmNsYXNzTGFiZWwgLmJveCB7XG4gIHN0cm9rZTogbm9uZTtcbiAgc3Ryb2tlLXdpZHRoOiAwO1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuLmNsYXNzTGFiZWwgLmxhYmVsIHtcbiAgZmlsbDogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBmb250LXNpemU6IDEwcHg7XG59XG5cbi5yZWxhdGlvbiB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbiAgZmlsbDogbm9uZTtcbn1cblxuLmRhc2hlZC1saW5le1xuICBzdHJva2UtZGFzaGFycmF5OiAzO1xufVxuXG4jY29tcG9zaXRpb25TdGFydCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNjb21wb3NpdGlvbkVuZCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNleHRlbnNpb25TdGFydCwgLmV4dGVuc2lvbiB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmxpbmVDb2xvciwiICFpbXBvcnRhbnQ7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4jZXh0ZW5zaW9uRW5kLCAuZXh0ZW5zaW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhZ2dyZWdhdGlvblN0YXJ0LCAuYWdncmVnYXRpb24ge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhZ2dyZWdhdGlvbkVuZCwgLmFnZ3JlZ2F0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubWFpbkJrZywiICFpbXBvcnRhbnQ7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4uZWRnZVRlcm1pbmFscyB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbn1cblxuIil9LFFFPWZ1bmN0aW9uKHQpe3JldHVybiIubGFiZWwge1xuICAgIGZvbnQtZmFtaWx5OiAiLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBjb2xvcjogIikuY29uY2F0KHQubm9kZVRleHRDb2xvcnx8dC50ZXh0Q29sb3IsIjtcbiAgfVxuICAuY2x1c3Rlci1sYWJlbCB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cbiAgLmNsdXN0ZXItbGFiZWwgc3BhbiB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0LHNwYW4ge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm5vZGVUZXh0Q29sb3J8fHQudGV4dENvbG9yLCI7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0Lm5vZGVUZXh0Q29sb3J8fHQudGV4dENvbG9yLCI7XG4gIH1cblxuICAubm9kZSByZWN0LFxuICAubm9kZSBjaXJjbGUsXG4gIC5ub2RlIGVsbGlwc2UsXG4gIC5ub2RlIHBvbHlnb24sXG4gIC5ub2RlIHBhdGgge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5ub2RlIC5sYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIC5ub2RlLmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmFycm93aGVhZFBhdGgge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFycm93aGVhZENvbG9yLCI7XG4gIH1cblxuICAuZWRnZVBhdGggLnBhdGgge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyLjBweDtcbiAgfVxuXG4gIC5mbG93Y2hhcnQtbGluayB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgICBmaWxsOiBub25lO1xuICB9XG5cbiAgLmVkZ2VMYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgIHJlY3Qge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgICAgZmlsbDogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgIH1cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuY2x1c3RlciByZWN0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5jbHVzdGVyQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jbHVzdGVyQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuICAuY2x1c3RlciB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICAuY2x1c3RlciBzcGFuIHtcbiAgICBjb2xvcjogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG4gIC8qIC5jbHVzdGVyIGRpdiB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfSAqL1xuXG4gIGRpdi5tZXJtYWlkVG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBiYWNrZ3JvdW5kOiAiKS5jb25jYXQodC50ZXJ0aWFyeUNvbG9yLCI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIikuY29uY2F0KHQuYm9yZGVyMiwiO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gIH1cbiIpfSxLRT1mdW5jdGlvbih0KXtyZXR1cm4iXG5kZWZzICNzdGF0ZWRpYWdyYW0tYmFyYkVuZCB7XG4gICAgZmlsbDogIi5jb25jYXQodC50cmFuc2l0aW9uQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRyYW5zaXRpb25Db2xvciwiO1xuICB9XG5nLnN0YXRlR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgc3Ryb2tlOiBub25lO1xuICBmb250LXNpemU6IDEwcHg7XG59XG5nLnN0YXRlR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiO1xuICBzdHJva2U6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTBweDtcblxufVxuZy5zdGF0ZUdyb3VwIC5zdGF0ZS10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnN0YXRlTGFiZWxDb2xvciwiO1xufVxuXG5nLnN0YXRlR3JvdXAgcmVjdCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG59XG5cbmcuc3RhdGVHcm91cCBsaW5lIHtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4udHJhbnNpdGlvbiB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQudHJhbnNpdGlvbkNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbiAgZmlsbDogbm9uZTtcbn1cblxuLnN0YXRlR3JvdXAgLmNvbXBvc2l0IHtcbiAgZmlsbDogIikuY29uY2F0KHQuYmFja2dyb3VuZCwiO1xuICBib3JkZXItYm90dG9tOiAxcHhcbn1cblxuLnN0YXRlR3JvdXAgLmFsdC1jb21wb3NpdCB7XG4gIGZpbGw6ICNlMGUwZTA7XG4gIGJvcmRlci1ib3R0b206IDFweFxufVxuXG4uc3RhdGUtbm90ZSB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm5vdGVCa2dDb2xvciwiO1xuXG4gIHRleHQge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm5vdGVUZXh0Q29sb3IsIjtcbiAgICBzdHJva2U6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICB9XG59XG5cbi5zdGF0ZUxhYmVsIC5ib3gge1xuICBzdHJva2U6IG5vbmU7XG4gIHN0cm9rZS13aWR0aDogMDtcbiAgZmlsbDogIikuY29uY2F0KHQubWFpbkJrZywiO1xuICBvcGFjaXR5OiAwLjU7XG59XG5cbi5lZGdlTGFiZWwgLmxhYmVsIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5sYWJlbEJhY2tncm91bmRDb2xvciwiO1xuICBvcGFjaXR5OiAwLjU7XG59XG4uZWRnZUxhYmVsIC5sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHQudGVydGlhcnlUZXh0Q29sb3IsIjtcbn1cbi5sYWJlbCBkaXYgLmVkZ2VMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dC50ZXJ0aWFyeVRleHRDb2xvciwiO1xufVxuXG4uc3RhdGVMYWJlbCB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQuc3RhdGVMYWJlbENvbG9yLCI7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5ub2RlIGNpcmNsZS5zdGF0ZS1zdGFydCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnNwZWNpYWxTdGF0ZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3BlY2lhbFN0YXRlQ29sb3IsIjtcbn1cblxuLm5vZGUgLmZvcmstam9pbiB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnNwZWNpYWxTdGF0ZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3BlY2lhbFN0YXRlQ29sb3IsIjtcbn1cblxuLm5vZGUgY2lyY2xlLnN0YXRlLWVuZCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmlubmVyRW5kQmFja2dyb3VuZCwiO1xuICBzdHJva2U6ICIpLmNvbmNhdCh0LmJhY2tncm91bmQsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxLjVcbn1cbi5lbmQtc3RhdGUtaW5uZXIge1xuICBmaWxsOiAiKS5jb25jYXQodC5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0LmJhY2tncm91bmQsIjtcbiAgLy8gc3Ryb2tlOiAiKS5jb25jYXQodC5iYWNrZ3JvdW5kLCI7XG4gIHN0cm9rZS13aWR0aDogMS41XG59XG5cbi5ub2RlIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5zdGF0ZUJrZ3x8dC5tYWluQmtnLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cbi5ub2RlIHBvbHlnb24ge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiOztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG4jc3RhdGVkaWFncmFtLWJhcmJFbmQge1xuICBmaWxsOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQsIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5zdGF0ZUJvcmRlcnx8dC5ub2RlQm9yZGVyLCI7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4uY2x1c3Rlci1sYWJlbCwgLm5vZGVMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5zdGF0ZUxhYmVsQ29sb3IsIjtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3Qub3V0ZXIge1xuICByeDogNXB4O1xuICByeTogNXB4O1xufVxuLnN0YXRlZGlhZ3JhbS1zdGF0ZSAuZGl2aWRlciB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiO1xufVxuXG4uc3RhdGVkaWFncmFtLXN0YXRlIC50aXRsZS1zdGF0ZSB7XG4gIHJ4OiA1cHg7XG4gIHJ5OiA1cHg7XG59XG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIuc3RhdGVkaWFncmFtLWNsdXN0ZXIgLmlubmVyIHtcbiAgZmlsbDogIikuY29uY2F0KHQuY29tcG9zaXRlQmFja2dyb3VuZHx8dC5iYWNrZ3JvdW5kLCI7XG59XG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIuc3RhdGVkaWFncmFtLWNsdXN0ZXItYWx0IC5pbm5lciB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmFsdEJhY2tncm91bmQ/dC5hbHRCYWNrZ3JvdW5kOiIjZWZlZmVmIiwiO1xufVxuXG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIgLmlubmVyIHtcbiAgcng6MDtcbiAgcnk6MDtcbn1cblxuLnN0YXRlZGlhZ3JhbS1zdGF0ZSByZWN0LmJhc2ljIHtcbiAgcng6IDVweDtcbiAgcnk6IDVweDtcbn1cbi5zdGF0ZWRpYWdyYW0tc3RhdGUgcmVjdC5kaXZpZGVyIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogMTAsMTA7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmFsdEJhY2tncm91bmQ/dC5hbHRCYWNrZ3JvdW5kOiIjZWZlZmVmIiwiO1xufVxuXG4ubm90ZS1lZGdlIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogNTtcbn1cblxuLnN0YXRlZGlhZ3JhbS1ub3RlIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5ub3RlQmtnQ29sb3IsIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub3RlQm9yZGVyQ29sb3IsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIHJ4OiAwO1xuICByeTogMDtcbn1cbi5zdGF0ZWRpYWdyYW0tbm90ZSByZWN0IHtcbiAgZmlsbDogIikuY29uY2F0KHQubm90ZUJrZ0NvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICByeDogMDtcbiAgcnk6IDA7XG59XG5cbi5zdGF0ZWRpYWdyYW0tbm90ZSB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQubm90ZVRleHRDb2xvciwiO1xufVxuXG4uc3RhdGVkaWFncmFtLW5vdGUgLm5vZGVMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG59XG4uc3RhdGVkaWFncmFtIC5lZGdlTGFiZWwge1xuICBjb2xvcjogcmVkOyAvLyAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsICNkZXBlbmRlbmN5RW5kIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cbiIpfTt2YXIgSkU9e2Zsb3djaGFydDpRRSwiZmxvd2NoYXJ0LXYyIjpRRSxzZXF1ZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4iLmFjdG9yIHtcbiAgICBzdHJva2U6ICIuY29uY2F0KHQuYWN0b3JCb3JkZXIsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RvckJrZywiO1xuICB9XG5cbiAgdGV4dC5hY3RvciA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RvclRleHRDb2xvciwiO1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5hY3Rvci1saW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdG9yTGluZUNvbG9yLCI7XG4gIH1cblxuICAubWVzc2FnZUxpbmUwIHtcbiAgICBzdHJva2Utd2lkdGg6IDEuNTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiBub25lO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5tZXNzYWdlTGluZTEge1xuICAgIHN0cm9rZS13aWR0aDogMS41O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICB9XG5cbiAgI2Fycm93aGVhZCBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5zZXF1ZW5jZU51bWJlciB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2VxdWVuY2VOdW1iZXJDb2xvciwiO1xuICB9XG5cbiAgI3NlcXVlbmNlbnVtYmVyIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICB9XG5cbiAgI2Nyb3NzaGVhZCBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5tZXNzYWdlVGV4dCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2lnbmFsVGV4dENvbG9yLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5zaWduYWxUZXh0Q29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbEJveCB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5sYWJlbEJveEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubGFiZWxCb3hCa2dDb2xvciwiO1xuICB9XG5cbiAgLmxhYmVsVGV4dCwgLmxhYmVsVGV4dCA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5sYWJlbFRleHRDb2xvciwiO1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5sb29wVGV4dCwgLmxvb3BUZXh0ID4gdHNwYW4ge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lmxvb3BUZXh0Q29sb3IsIjtcbiAgICBzdHJva2U6IG5vbmU7XG4gIH1cblxuICAubG9vcExpbmUge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5sYWJlbEJveEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubGFiZWxCb3hCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLm5vdGUge1xuICAgIC8vc3Ryb2tlOiAjZGVjYzkzO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubm90ZUJrZ0NvbG9yLCI7XG4gIH1cblxuICAubm90ZVRleHQsIC5ub3RlVGV4dCA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG4gICAgc3Ryb2tlOiBub25lO1xuICB9XG5cbiAgLmFjdGl2YXRpb24wIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2YXRpb24xIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2YXRpb24yIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdG9yUG9wdXBNZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAuYWN0b3JQb3B1cE1lbnVQYW5lbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFjdG9yQmtnLCI7XG4gICAgYm94LXNoYWRvdzogMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsMCwwLDAuMik7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygzcHggNXB4IDJweCByZ2IoMCAwIDAgLyAwLjQpKTtcbn1cbiAgLmFjdG9yLW1hbiBsaW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdG9yQm9yZGVyLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQuYWN0b3JCa2csIjtcbiAgfVxuICAuYWN0b3ItbWFuIGNpcmNsZSwgbGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5hY3RvckJvcmRlciwiO1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFjdG9yQmtnLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiIpfSxnYW50dDpmdW5jdGlvbih0KXtyZXR1cm4nXG4gIC5tZXJtYWlkLW1haW4tZm9udCB7XG4gICAgZm9udC1mYW1pbHk6ICJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cbiAgLmV4Y2x1ZGUtcmFuZ2Uge1xuICAgIGZpbGw6ICcuY29uY2F0KHQuZXhjbHVkZUJrZ0NvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvbiB7XG4gICAgc3Ryb2tlOiBub25lO1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgfVxuXG4gIC5zZWN0aW9uMCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2VjdGlvbkJrZ0NvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvbjIge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnNlY3Rpb25Ca2dDb2xvcjIsIjtcbiAgfVxuXG4gIC5zZWN0aW9uMSxcbiAgLnNlY3Rpb24zIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hbHRTZWN0aW9uQmtnQ29sb3IsIjtcbiAgICBvcGFjaXR5OiAwLjI7XG4gIH1cblxuICAuc2VjdGlvblRpdGxlMCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG5cbiAgLnNlY3Rpb25UaXRsZTEge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfVxuXG4gIC5zZWN0aW9uVGl0bGUyIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvblRpdGxlMyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG5cbiAgLnNlY3Rpb25UaXRsZSB7XG4gICAgdGV4dC1hbmNob3I6IHN0YXJ0O1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICAgIC8vIHRleHQtaGVpZ2h0OiAxNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuXG4gIH1cblxuXG4gIC8qIEdyaWQgYW5kIGF4aXMgKi9cblxuICAuZ3JpZCAudGljayB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ncmlkQ29sb3IsIjtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzO1xuICAgIHRleHQge1xuICAgICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiO1xuICAgIH1cbiAgfVxuXG4gIC5ncmlkIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMDtcbiAgfVxuXG5cbiAgLyogVG9kYXkgbGluZSAqL1xuXG4gIC50b2RheSB7XG4gICAgZmlsbDogbm9uZTtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRvZGF5TGluZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cblxuXG4gIC8qIFRhc2sgc3R5bGluZyAqL1xuXG4gIC8qIERlZmF1bHQgdGFzayAqL1xuXG4gIC50YXNrIHtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAudGFza1RleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cblxuICAvLyAudGFza1RleHQ6bm90KFtmb250LXNpemVdKSB7XG4gIC8vICAgZm9udC1zaXplOiAiKS5jb25jYXQodC5nYW50dEZvbnRTaXplLCI7XG4gIC8vIH1cblxuICAudGFza1RleHRPdXRzaWRlUmlnaHQge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRhc2tUZXh0RGFya0NvbG9yLCI7XG4gICAgdGV4dC1hbmNob3I6IHN0YXJ0O1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuXG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlTGVmdCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHREYXJrQ29sb3IsIjtcbiAgICB0ZXh0LWFuY2hvcjogZW5kO1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICB9XG5cbiAgLyogU3BlY2lhbCBjYXNlIGNsaWNrYWJsZSAqL1xuICAudGFzay5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAudGFza1RleHQuY2xpY2thYmxlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHRDbGlja2FibGVDb2xvciwiICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlTGVmdC5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dENsaWNrYWJsZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC50YXNrVGV4dE91dHNpZGVSaWdodC5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dENsaWNrYWJsZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC8qIFNwZWNpZmljIHRhc2sgc2V0dGluZ3MgZm9yIHRoZSBzZWN0aW9ucyovXG5cbiAgLnRhc2tUZXh0MCxcbiAgLnRhc2tUZXh0MSxcbiAgLnRhc2tUZXh0MixcbiAgLnRhc2tUZXh0MyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHRDb2xvciwiO1xuICB9XG5cbiAgLnRhc2swLFxuICAudGFzazEsXG4gIC50YXNrMixcbiAgLnRhc2szIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRhc2tCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLnRhc2tUZXh0T3V0c2lkZTAsXG4gIC50YXNrVGV4dE91dHNpZGUyXG4gIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dE91dHNpZGVDb2xvciwiO1xuICB9XG5cbiAgLnRhc2tUZXh0T3V0c2lkZTEsXG4gIC50YXNrVGV4dE91dHNpZGUzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dE91dHNpZGVDb2xvciwiO1xuICB9XG5cblxuICAvKiBBY3RpdmUgdGFzayAqL1xuXG4gIC5hY3RpdmUwLFxuICAuYWN0aXZlMSxcbiAgLmFjdGl2ZTIsXG4gIC5hY3RpdmUzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmVUYXNrQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2ZVRhc2tCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2ZVRleHQwLFxuICAuYWN0aXZlVGV4dDEsXG4gIC5hY3RpdmVUZXh0MixcbiAgLmFjdGl2ZVRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuXG4gIC8qIENvbXBsZXRlZCB0YXNrICovXG5cbiAgLmRvbmUwLFxuICAuZG9uZTEsXG4gIC5kb25lMixcbiAgLmRvbmUzIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmRvbmVUYXNrQm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5kb25lVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICB9XG5cbiAgLmRvbmVUZXh0MCxcbiAgLmRvbmVUZXh0MSxcbiAgLmRvbmVUZXh0MixcbiAgLmRvbmVUZXh0MyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHREYXJrQ29sb3IsIiAhaW1wb3J0YW50O1xuICB9XG5cblxuICAvKiBUYXNrcyBvbiB0aGUgY3JpdGljYWwgbGluZSAqL1xuXG4gIC5jcml0MCxcbiAgLmNyaXQxLFxuICAuY3JpdDIsXG4gIC5jcml0MyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jcml0Qm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5jcml0QmtnQ29sb3IsIjtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAuYWN0aXZlQ3JpdDAsXG4gIC5hY3RpdmVDcml0MSxcbiAgLmFjdGl2ZUNyaXQyLFxuICAuYWN0aXZlQ3JpdDMge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuY3JpdEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQuYWN0aXZlVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICB9XG5cbiAgLmRvbmVDcml0MCxcbiAgLmRvbmVDcml0MSxcbiAgLmRvbmVDcml0MixcbiAgLmRvbmVDcml0MyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jcml0Qm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5kb25lVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7XG4gIH1cblxuICAubWlsZXN0b25lIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgc2NhbGUoMC44LDAuOCk7XG4gIH1cblxuICAubWlsZXN0b25lVGV4dCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICB9XG4gIC5kb25lQ3JpdFRleHQwLFxuICAuZG9uZUNyaXRUZXh0MSxcbiAgLmRvbmVDcml0VGV4dDIsXG4gIC5kb25lQ3JpdFRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuYWN0aXZlQ3JpdFRleHQwLFxuICAuYWN0aXZlQ3JpdFRleHQxLFxuICAuYWN0aXZlQ3JpdFRleHQyLFxuICAuYWN0aXZlQ3JpdFRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuICAudGl0bGVUZXh0IHtcbiAgICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXh0Q29sb3IsIiAgICA7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cbiIpfSxjbGFzc0RpYWdyYW06WkUsImNsYXNzRGlhZ3JhbS12MiI6WkUsY2xhc3M6WkUsc3RhdGVEaWFncmFtOktFLHN0YXRlOktFLGdpdDpmdW5jdGlvbigpe3JldHVybiJcbiAgLmNvbW1pdC1pZCxcbiAgLmNvbW1pdC1tc2csXG4gIC5icmFuY2gtbGFiZWwge1xuICAgIGZpbGw6IGxpZ2h0Z3JleTtcbiAgICBjb2xvcjogbGlnaHRncmV5O1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuICB9XG4ifSxpbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHBpZTpmdW5jdGlvbih0KXtyZXR1cm4iXG4gIC5waWVDaXJjbGV7XG4gICAgc3Ryb2tlOiAiLmNvbmNhdCh0LnBpZVN0cm9rZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoIDogIikuY29uY2F0KHQucGllU3Ryb2tlV2lkdGgsIjtcbiAgICBvcGFjaXR5IDogIikuY29uY2F0KHQucGllT3BhY2l0eSwiO1xuICB9XG4gIC5waWVUaXRsZVRleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1zaXplOiAiKS5jb25jYXQodC5waWVUaXRsZVRleHRTaXplLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQucGllVGl0bGVUZXh0Q29sb3IsIjtcbiAgICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICB9XG4gIC5zbGljZSB7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5waWVTZWN0aW9uVGV4dENvbG9yLCI7XG4gICAgZm9udC1zaXplOiIpLmNvbmNhdCh0LnBpZVNlY3Rpb25UZXh0U2l6ZSwiO1xuICAgIC8vIGZpbGw6IHdoaXRlO1xuICB9XG4gIC5sZWdlbmQgdGV4dCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQucGllTGVnZW5kVGV4dENvbG9yLCI7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdCh0LnBpZUxlZ2VuZFRleHRTaXplLCI7XG4gIH1cbiIpfSxlcjpmdW5jdGlvbih0KXtyZXR1cm4iXG4gIC5lbnRpdHlCb3gge1xuICAgIGZpbGw6ICIuY29uY2F0KHQubWFpbkJrZywiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICB9XG5cbiAgLmF0dHJpYnV0ZUJveE9kZCB7XG4gICAgZmlsbDogI2ZmZmZmZjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgfVxuXG4gIC5hdHRyaWJ1dGVCb3hFdmVuIHtcbiAgICBmaWxsOiAjZjJmMmYyO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICB9XG5cbiAgLnJlbGF0aW9uc2hpcExhYmVsQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXJ0aWFyeUNvbG9yLCI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICIpLmNvbmNhdCh0LnRlcnRpYXJ5Q29sb3IsIjtcbiAgICAgIHJlY3Qge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gIH1cblxuICAgIC5yZWxhdGlvbnNoaXBMaW5lIHtcbiAgICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgfVxuIil9LGpvdXJuZXk6ZnVuY3Rpb24odCl7cmV0dXJuIi5sYWJlbCB7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gICAgY29sb3I6ICIuY29uY2F0KHQudGV4dENvbG9yLCI7XG4gIH1cbiAgLm1vdXRoIHtcbiAgICBzdHJva2U6ICM2NjY7XG4gIH1cblxuICBsaW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiXG4gIH1cblxuICAubGVnZW5kIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXh0Q29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0IHtcbiAgICBmaWxsOiAjMzMzO1xuICB9XG4gIC5sYWJlbCB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiXG4gIH1cblxuICAuZmFjZSB7XG4gICAgIikuY29uY2F0KHQuZmFjZUNvbG9yPyJmaWxsOiAiLmNvbmNhdCh0LmZhY2VDb2xvcik6ImZpbGw6ICNGRkY4REMiLCI7XG4gICAgc3Ryb2tlOiAjOTk5O1xuICB9XG5cbiAgLm5vZGUgcmVjdCxcbiAgLm5vZGUgY2lyY2xlLFxuICAubm9kZSBlbGxpcHNlLFxuICAubm9kZSBwb2x5Z29uLFxuICAubm9kZSBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuICAubm9kZSAubGFiZWwge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAubm9kZS5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5hcnJvd2hlYWRQYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hcnJvd2hlYWRDb2xvciwiO1xuICB9XG5cbiAgLmVkZ2VQYXRoIC5wYXRoIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmxpbmVDb2xvciwiO1xuICAgIHN0cm9rZS13aWR0aDogMS41cHg7XG4gIH1cblxuICAuZmxvd2NoYXJ0LWxpbmsge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgZmlsbDogbm9uZTtcbiAgfVxuXG4gIC5lZGdlTGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICIpLmNvbmNhdCh0LmVkZ2VMYWJlbEJhY2tncm91bmQsIjtcbiAgICByZWN0IHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmNsdXN0ZXIgcmVjdCB7XG4gIH1cblxuICAuY2x1c3RlciB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICBkaXYubWVybWFpZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6ICIpLmNvbmNhdCh0LnRlcnRpYXJ5Q29sb3IsIjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAiKS5jb25jYXQodC5ib3JkZXIyLCI7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxuXG4gIC50YXNrLXR5cGUtMCwgLnNlY3Rpb24tdHlwZS0wICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlMCk6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTEsIC5zZWN0aW9uLXR5cGUtMSAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTEpOiIiLCI7XG4gIH1cbiAgLnRhc2stdHlwZS0yLCAuc2VjdGlvbi10eXBlLTIgIHtcbiAgICAiKS5jb25jYXQodC5maWxsVHlwZTA/ImZpbGw6ICIuY29uY2F0KHQuZmlsbFR5cGUyKToiIiwiO1xuICB9XG4gIC50YXNrLXR5cGUtMywgLnNlY3Rpb24tdHlwZS0zICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlMyk6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTQsIC5zZWN0aW9uLXR5cGUtNCAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTQpOiIiLCI7XG4gIH1cbiAgLnRhc2stdHlwZS01LCAuc2VjdGlvbi10eXBlLTUgIHtcbiAgICAiKS5jb25jYXQodC5maWxsVHlwZTA/ImZpbGw6ICIuY29uY2F0KHQuZmlsbFR5cGU1KToiIiwiO1xuICB9XG4gIC50YXNrLXR5cGUtNiwgLnNlY3Rpb24tdHlwZS02ICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlNik6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTcsIC5zZWN0aW9uLXR5cGUtNyAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTcpOiIiLCI7XG4gIH1cblxuICAuYWN0b3ItMCB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IwPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMCk6IiIsIjtcbiAgfVxuICAuYWN0b3ItMSB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IxPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMSk6IiIsIjtcbiAgfVxuICAuYWN0b3ItMiB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IyPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMik6IiIsIjtcbiAgfVxuICAuYWN0b3ItMyB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IzPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMyk6IiIsIjtcbiAgfVxuICAuYWN0b3ItNCB7XG4gICAgIikuY29uY2F0KHQuYWN0b3I0PyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yNCk6IiIsIjtcbiAgfVxuICAuYWN0b3ItNSB7XG4gICAgIikuY29uY2F0KHQuYWN0b3I1PyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yNSk6IiIsIjtcbiAgfVxuXG4gIH1cbiIpfSxyZXF1aXJlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4iXG5cbiAgbWFya2VyIHtcbiAgICBmaWxsOiAiLmNvbmNhdCh0LnJlbGF0aW9uQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnJlbGF0aW9uQ29sb3IsIjtcbiAgfVxuXG4gIG1hcmtlci5jcm9zcyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdCh0LmZvbnRTaXplLCI7XG4gIH1cblxuICAucmVxQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJhY2tncm91bmQsIjtcbiAgICBmaWxsLW9wYWNpdHk6IDEwMCU7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlckNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlclNpemUsIjtcbiAgfVxuICBcbiAgLnJlcVRpdGxlLCAucmVxTGFiZWx7XG4gICAgZmlsbDogICIpLmNvbmNhdCh0LnJlcXVpcmVtZW50VGV4dENvbG9yLCI7XG4gIH1cbiAgLnJlcUxhYmVsQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZCwiO1xuICAgIGZpbGwtb3BhY2l0eTogMTAwJTtcbiAgfVxuXG4gIC5yZXEtdGl0bGUtbGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlckNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlclNpemUsIjtcbiAgfVxuICAucmVsYXRpb25zaGlwTGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZWxhdGlvbkNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxO1xuICB9XG4gIC5yZWxhdGlvbnNoaXBMYWJlbCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQucmVsYXRpb25MYWJlbENvbG9yLCI7XG4gIH1cblxuIil9fTtmdW5jdGlvbiB0Qyh0KXtyZXR1cm4gdEM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHRDKHQpfXZhciBlQz1mdW5jdGlvbih0KXt2YXIgZT10O3JldHVybihlPShlPWUucmVwbGFjZSgv76yCwrDCsC9nLChmdW5jdGlvbigpe3JldHVybiImIyJ9KSkpLnJlcGxhY2UoL++sgsKwL2csKGZ1bmN0aW9uKCl7cmV0dXJuIiYifSkpKS5yZXBsYWNlKC/CtsOfL2csKGZ1bmN0aW9uKCl7cmV0dXJuIjsifSkpfSxuQz17fTtmdW5jdGlvbiByQyh0KXt2YXIgZTtXdyh0LmdpdCksQngodC5mbG93Y2hhcnQpLFJ4KHQuZmxvd2NoYXJ0KSx2b2lkIDAhPT10LnNlcXVlbmNlRGlhZ3JhbSYmelQuc2V0Q29uZihPdih0LnNlcXVlbmNlLHQuc2VxdWVuY2VEaWFncmFtKSkselQuc2V0Q29uZih0LnNlcXVlbmNlKSx0LmdhbnR0LExiKHQuY2xhc3MpLHQuc3RhdGUseEUodC5zdGF0ZSksSncodC5jbGFzcyksUF8odC5lciksVkUodC5qb3VybmV5KSxFayh0LnJlcXVpcmVtZW50KSxlPXQuY2xhc3MsT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7WEVbdF09ZVt0XX0pKX12YXIgaUM9T2JqZWN0LmZyZWV6ZSh7cmVuZGVyOmZ1bmN0aW9uKHQsZSxuLHIpe0p2KCk7dmFyIGk9ZSxhPXp2LmRldGVjdEluaXQoaSk7YSYmS3YoYSk7dmFyIHM9WnYoKTtpZihlLmxlbmd0aD5zLm1heFRleHRTaXplJiYoaT0iZ3JhcGggVEI7YVtNYXhpbXVtIHRleHQgc2l6ZSBpbiBkaWFncmFtIGV4Y2VlZGVkXTtzdHlsZSBhIGZpbGw6I2ZhYSIpLHZvaWQgMCE9PXIpci5pbm5lckhUTUw9IiIsYXUocikuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImQiK3QpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrcy5mb250RmFtaWx5KS5hcHBlbmQoInN2ZyIpLmF0dHIoImlkIix0KS5hdHRyKCJ3aWR0aCIsIjEwMCUiKS5hdHRyKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIikuYXBwZW5kKCJnIik7ZWxzZXt2YXIgYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtjJiZjLnJlbW92ZSgpO3ZhciB1PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkIit0KTt1JiZ1LnJlbW92ZSgpLGF1KCJib2R5IikuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImQiK3QpLmFwcGVuZCgic3ZnIikuYXR0cigiaWQiLHQpLmF0dHIoIndpZHRoIiwiMTAwJSIpLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKS5hcHBlbmQoImciKX13aW5kb3cudHh0PWksaT1pLnJlcGxhY2UoL3N0eWxlLio6XFMqIy4qOy9nLChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0xKX0pKS5yZXBsYWNlKC9jbGFzc0RlZi4qOlxTKiMuKjsvZywoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3Vic3RyaW5nKDAsdC5sZW5ndGgtMSl9KSkucmVwbGFjZSgvI1x3KzsvZywoZnVuY3Rpb24odCl7dmFyIGU9dC5zdWJzdHJpbmcoMSx0Lmxlbmd0aC0xKTtyZXR1cm4vXlwrP1xkKyQvLnRlc3QoZSk/Iu+sgsKwwrAiK2UrIsK2w58iOiLvrILCsCIrZSsiwrbDnyJ9KSk7dmFyIGw9YXUoIiNkIit0KS5ub2RlKCksaD16di5kZXRlY3RUeXBlKGkscyksZj1sLmZpcnN0Q2hpbGQsZD1mLmZpcnN0Q2hpbGQscD0iIjtpZih2b2lkIDAhPT1zLnRoZW1lQ1NTJiYocCs9IlxuIi5jb25jYXQocy50aGVtZUNTUykpLHZvaWQgMCE9PXMuZm9udEZhbWlseSYmKHArPSJcbjpyb290IHsgLS1tZXJtYWlkLWZvbnQtZmFtaWx5OiAiLmNvbmNhdChzLmZvbnRGYW1pbHksIn0iKSksdm9pZCAwIT09cy5hbHRGb250RmFtaWx5JiYocCs9IlxuOnJvb3QgeyAtLW1lcm1haWQtYWx0LWZvbnQtZmFtaWx5OiAiLmNvbmNhdChzLmFsdEZvbnRGYW1pbHksIn0iKSksImZsb3djaGFydCI9PT1ofHwiZmxvd2NoYXJ0LXYyIj09PWh8fCJncmFwaCI9PT1oKXt2YXIgeT1mdW5jdGlvbih0KXtvLmluZm8oIkV4dHJhY3RpbmcgY2xhc3NlcyIpLGZ4LmNsZWFyKCk7dHJ5e3ZhciBlPXB4KCkucGFyc2VyO3JldHVybiBlLnl5PWZ4LGUucGFyc2UodCksZnguZ2V0Q2xhc3NlcygpfWNhdGNoKHQpe3JldHVybn19KGkpLGc9cy5odG1sTGFiZWxzfHxzLmZsb3djaGFydC5odG1sTGFiZWxzO2Zvcih2YXIgbSBpbiB5KWc/KHArPSJcbi4iLmNvbmNhdChtLCIgPiAqIHsgIikuY29uY2F0KHlbbV0uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKSwiICFpbXBvcnRhbnQ7IH0iKSxwKz0iXG4uIi5jb25jYXQobSwiIHNwYW4geyAiKS5jb25jYXQoeVttXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpKToocCs9IlxuLiIuY29uY2F0KG0sIiBwYXRoIHsgIikuY29uY2F0KHlbbV0uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKSwiICFpbXBvcnRhbnQ7IH0iKSxwKz0iXG4uIi5jb25jYXQobSwiIHJlY3QgeyAiKS5jb25jYXQoeVttXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpLHArPSJcbi4iLmNvbmNhdChtLCIgcG9seWdvbiB7ICIpLmNvbmNhdCh5W21dLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIiksIiAhaW1wb3J0YW50OyB9IikscCs9IlxuLiIuY29uY2F0KG0sIiBlbGxpcHNlIHsgIikuY29uY2F0KHlbbV0uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKSwiICFpbXBvcnRhbnQ7IH0iKSxwKz0iXG4uIi5jb25jYXQobSwiIGNpcmNsZSB7ICIpLmNvbmNhdCh5W21dLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIiksIiAhaW1wb3J0YW50OyB9IikseVttXS50ZXh0U3R5bGVzJiYocCs9IlxuLiIuY29uY2F0KG0sIiB0c3BhbiB7ICIpLmNvbmNhdCh5W21dLnRleHRTdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpKSl9dmFyIHY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaW0oRW0oIiIuY29uY2F0KHQsInsiKS5jb25jYXQoZSwifSIpKSxhbSl9KCIjIi5jb25jYXQodCksZnVuY3Rpb24odCxlLG4pe3JldHVybiIge1xuICAgIGZvbnQtZmFtaWx5OiAiLmNvbmNhdChuLmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdChuLmZvbnRTaXplLCI7XG4gICAgZmlsbDogIikuY29uY2F0KG4udGV4dENvbG9yLCJcbiAgfVxuXG4gIC8qIENsYXNzZXMgY29tbW9uIGZvciBtdWx0aXBsZSBkaWFncmFtcyAqL1xuXG4gIC5lcnJvci1pY29uIHtcbiAgICBmaWxsOiAiKS5jb25jYXQobi5lcnJvckJrZ0NvbG9yLCI7XG4gIH1cbiAgLmVycm9yLXRleHQge1xuICAgIGZpbGw6ICIpLmNvbmNhdChuLmVycm9yVGV4dENvbG9yLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQobi5lcnJvclRleHRDb2xvciwiO1xuICB9XG5cbiAgLmVkZ2UtdGhpY2tuZXNzLW5vcm1hbCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgLmVkZ2UtdGhpY2tuZXNzLXRoaWNrIHtcbiAgICBzdHJva2Utd2lkdGg6IDMuNXB4XG4gIH1cbiAgLmVkZ2UtcGF0dGVybi1zb2xpZCB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMDtcbiAgfVxuXG4gIC5lZGdlLXBhdHRlcm4tZGFzaGVke1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDM7XG4gIH1cbiAgLmVkZ2UtcGF0dGVybi1kb3R0ZWQge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDI7XG4gIH1cblxuICAubWFya2VyIHtcbiAgICBmaWxsOiAiKS5jb25jYXQobi5saW5lQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdChuLmxpbmVDb2xvciwiO1xuICB9XG4gIC5tYXJrZXIuY3Jvc3Mge1xuICAgIHN0cm9rZTogIikuY29uY2F0KG4ubGluZUNvbG9yLCI7XG4gIH1cblxuICBzdmcge1xuICAgIGZvbnQtZmFtaWx5OiAiKS5jb25jYXQobi5mb250RmFtaWx5LCI7XG4gICAgZm9udC1zaXplOiAiKS5jb25jYXQobi5mb250U2l6ZSwiO1xuICB9XG5cbiAgIikuY29uY2F0KEpFW3RdKG4pLCJcblxuICAiKS5jb25jYXQoZSwiXG4iKX0oaCxwLHMudGhlbWVWYXJpYWJsZXMpKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Yi5pbm5lckhUTUw9IiMiLmNvbmNhdCh0LCIgIikrdixmLmluc2VydEJlZm9yZShiLGQpO3RyeXtzd2l0Y2goaCl7Y2FzZSJnaXQiOnMuZmxvd2NoYXJ0LmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLFd3KHMuZ2l0KSxmdW5jdGlvbih0LGUsbil7dHJ5e3ZhciByPVJ3KCkucGFyc2VyO3IueXk9Qncsci55eS5jbGVhcigpLG8uZGVidWcoImluIGdpdGdyYXBoIHJlbmRlcmVyIix0KyJcbiIsImlkOiIsZSxuKSxyLnBhcnNlKHQrIlxuIiksUHc9T2JqZWN0LmFzc2lnbihQdyxqdyxCdy5nZXRPcHRpb25zKCkpLG8uZGVidWcoImVmZmVjdGl2ZSBvcHRpb25zIixQdyk7dmFyIGk9QncuZ2V0RGlyZWN0aW9uKCk7Rnc9QncuZ2V0Q29tbWl0cygpO3ZhciBhPUJ3LmdldEJyYW5jaGVzQXNPYmpBcnJheSgpOyJCVCI9PT1pJiYoUHcubm9kZUxhYmVsLng9YS5sZW5ndGgqUHcuYnJhbmNoT2Zmc2V0LFB3Lm5vZGVMYWJlbC53aWR0aD0iMTAwJSIsUHcubm9kZUxhYmVsLnk9LTIqUHcubm9kZVJhZGl1cyk7dmFyIHM9YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSk7Zm9yKHZhciBjIGluIGZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJnIikuYXR0cigiaWQiLCJkZWYtY29tbWl0IikuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJyIixQdy5ub2RlUmFkaXVzKS5hdHRyKCJjeCIsMCkuYXR0cigiY3kiLDApLHQuc2VsZWN0KCIjZGVmLWNvbW1pdCIpLmFwcGVuZCgiZm9yZWlnbk9iamVjdCIpLmF0dHIoIndpZHRoIixQdy5ub2RlTGFiZWwud2lkdGgpLmF0dHIoImhlaWdodCIsUHcubm9kZUxhYmVsLmhlaWdodCkuYXR0cigieCIsUHcubm9kZUxhYmVsLngpLmF0dHIoInkiLFB3Lm5vZGVMYWJlbC55KS5hdHRyKCJjbGFzcyIsIm5vZGUtbGFiZWwiKS5hdHRyKCJyZXF1aXJlZEZlYXR1cmVzIiwiaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5IikuYXBwZW5kKCJwIikuaHRtbCgiIil9KHMpLEx3PTEsYSl7dmFyIHU9YVtjXTskdyhzLHUuY29tbWl0LmlkLGEsaSksSHcocyx1LmNvbW1pdCxpKSxMdysrfXMuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24oKXtyZXR1cm4iQlQiPT09aT9PYmplY3Qua2V5cyhGdykubGVuZ3RoKlB3Lm5vZGVTcGFjaW5nOihhLmxlbmd0aCsxKSpQdy5icmFuY2hPZmZzZXR9KSl9Y2F0Y2godCl7by5lcnJvcigiRXJyb3Igd2hpbGUgcmVuZGVyaW5nIGdpdGdyYXBoIiksby5lcnJvcih0Lm1lc3NhZ2UpfX0oaSx0LCExKTticmVhaztjYXNlImZsb3djaGFydCI6cy5mbG93Y2hhcnQuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUsQngocy5mbG93Y2hhcnQpLEx4KGksdCk7YnJlYWs7Y2FzZSJmbG93Y2hhcnQtdjIiOnMuZmxvd2NoYXJ0LmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLFJ4KHMuZmxvd2NoYXJ0KSxGeChpLHQpO2JyZWFrO2Nhc2Uic2VxdWVuY2UiOnMuc2VxdWVuY2UuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUscy5zZXF1ZW5jZURpYWdyYW0/KHpULnNldENvbmYoT2JqZWN0LmFzc2lnbihzLnNlcXVlbmNlLHMuc2VxdWVuY2VEaWFncmFtKSksY29uc29sZS5lcnJvcigiYG1lcm1haWQgY29uZmlnLnNlcXVlbmNlRGlhZ3JhbWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgY29uZmlnLnNlcXVlbmNlYC4gUGxlYXNlIHVwZGF0ZSB5b3VyIG1lcm1haWQgY29uZmlnLiIpKTp6VC5zZXRDb25mKHMuc2VxdWVuY2UpLHpULmRyYXcoaSx0KTticmVhaztjYXNlImdhbnR0IjpzLmdhbnR0LmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLHMuZ2FudHQsX3coaSx0KTticmVhaztjYXNlImNsYXNzIjpzLmNsYXNzLmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLExiKHMuY2xhc3MpLEliKGksdCk7YnJlYWs7Y2FzZSJjbGFzc0RpYWdyYW0iOnMuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUsZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7VF9bZV09dFtlXX0pKX0ocy5jbGFzcyksZnVuY3Rpb24odCxlKXtvLmluZm8oIkRyYXdpbmcgY2xhc3MiKSx5Yi5jbGVhcigpLF9iLnBhcnNlci5wYXJzZSh0KTt2YXIgbj1adigpLmZsb3djaGFydDtvLmluZm8oImNvbmZpZzoiLG4pO3ZhciByPW4ubm9kZVNwYWNpbmd8fDUwLGk9bi5yYW5rU3BhY2luZ3x8NTAsYT1uZXcoYmIoKS5HcmFwaCkoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KS5zZXRHcmFwaCh7cmFua2Rpcjp5Yi5nZXREaXJlY3Rpb24oKSxub2Rlc2VwOnIscmFua3NlcDppLG1hcmdpbng6OCxtYXJnaW55Ojh9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLHM9eWIuZ2V0Q2xhc3NlcygpLGM9eWIuZ2V0UmVsYXRpb25zKCk7by5pbmZvKGMpLGZ1bmN0aW9uKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7by5pbmZvKCJrZXlzOiIsbiksby5pbmZvKHQpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9dFtuXSxpPSIiO3IuY3NzQ2xhc3Nlcy5sZW5ndGg+MCYmKGk9aSsiICIrci5jc3NDbGFzc2VzLmpvaW4oIiAiKSk7dmFyIGEscz17bGFiZWxTdHlsZToiIn0sYz12b2lkIDAhPT1yLnRleHQ/ci50ZXh0OnIuaWQ7ci50eXBlLGE9ImNsYXNzX2JveCIsZS5zZXROb2RlKHIuaWQse2xhYmVsU3R5bGU6cy5sYWJlbFN0eWxlLHNoYXBlOmEsbGFiZWxUZXh0OmMsY2xhc3NEYXRhOnIscng6MCxyeTowLGNsYXNzOmksc3R5bGU6cy5zdHlsZSxpZDpyLmlkLGRvbUlkOnIuZG9tSWQsaGF2ZUNhbGxiYWNrOnIuaGF2ZUNhbGxiYWNrLGxpbms6ci5saW5rLHdpZHRoOiJncm91cCI9PT1yLnR5cGU/NTAwOnZvaWQgMCx0eXBlOnIudHlwZSxwYWRkaW5nOlp2KCkuZmxvd2NoYXJ0LnBhZGRpbmd9KSxvLmluZm8oInNldE5vZGUiLHtsYWJlbFN0eWxlOnMubGFiZWxTdHlsZSxzaGFwZTphLGxhYmVsVGV4dDpjLHJ4OjAscnk6MCxjbGFzczppLHN0eWxlOnMuc3R5bGUsaWQ6ci5pZCx3aWR0aDoiZ3JvdXAiPT09ci50eXBlPzUwMDp2b2lkIDAsdHlwZTpyLnR5cGUscGFkZGluZzpadigpLmZsb3djaGFydC5wYWRkaW5nfSl9KSl9KHMsYSksZnVuY3Rpb24odCxlKXt2YXIgbj0wO3QuZm9yRWFjaCgoZnVuY3Rpb24ocil7bisrO3ZhciBpPXtjbGFzc2VzOiJyZWxhdGlvbiJ9O2kucGF0dGVybj0xPT1yLnJlbGF0aW9uLmxpbmVUeXBlPyJkYXNoZWQiOiJzb2xpZCIsaS5pZD0iaWQiK24sImFycm93X29wZW4iPT09ci50eXBlP2kuYXJyb3doZWFkPSJub25lIjppLmFycm93aGVhZD0ibm9ybWFsIixvLmluZm8oaSxyKSxpLnN0YXJ0TGFiZWxSaWdodD0ibm9uZSI9PT1yLnJlbGF0aW9uVGl0bGUxPyIiOnIucmVsYXRpb25UaXRsZTEsaS5lbmRMYWJlbExlZnQ9Im5vbmUiPT09ci5yZWxhdGlvblRpdGxlMj8iIjpyLnJlbGF0aW9uVGl0bGUyLGkuYXJyb3dUeXBlU3RhcnQ9RV8oci5yZWxhdGlvbi50eXBlMSksaS5hcnJvd1R5cGVFbmQ9RV8oci5yZWxhdGlvbi50eXBlMik7dmFyIGE9IiIscz0iIjtpZih2b2lkIDAhPT1yLnN0eWxlKXt2YXIgYz1BdihyLnN0eWxlKTthPWMuc3R5bGUscz1jLmxhYmVsU3R5bGV9ZWxzZSBhPSJmaWxsOm5vbmUiO2kuc3R5bGU9YSxpLmxhYmVsU3R5bGU9cyx2b2lkIDAhPT1yLmludGVycG9sYXRlP2kuY3VydmU9Q3Yoci5pbnRlcnBvbGF0ZSxQdSk6dm9pZCAwIT09dC5kZWZhdWx0SW50ZXJwb2xhdGU/aS5jdXJ2ZT1Ddih0LmRlZmF1bHRJbnRlcnBvbGF0ZSxQdSk6aS5jdXJ2ZT1DdihUXy5jdXJ2ZSxQdSksci50ZXh0PXIudGl0bGUsdm9pZCAwPT09ci50ZXh0P3ZvaWQgMCE9PXIuc3R5bGUmJihpLmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIik6KGkuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiLGkubGFiZWxwb3M9ImMiLFp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHM/KGkubGFiZWxUeXBlPSJodG1sIixpLmxhYmVsPSc8c3BhbiBjbGFzcz0iZWRnZUxhYmVsIj4nK3IudGV4dCsiPC9zcGFuPiIpOihpLmxhYmVsVHlwZT0idGV4dCIsaS5sYWJlbD1yLnRleHQucmVwbGFjZShZbS5saW5lQnJlYWtSZWdleCwiXG4iKSx2b2lkIDA9PT1yLnN0eWxlJiYoaS5zdHlsZT1pLnN0eWxlfHwic3Ryb2tlOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O2ZpbGw6bm9uZSIpLGkubGFiZWxTdHlsZT1pLmxhYmVsU3R5bGUucmVwbGFjZSgiY29sb3I6IiwiZmlsbDoiKSkpLGUuc2V0RWRnZShyLmlkMSxyLmlkMixpLG4pfSkpfShjLGEpO3ZhciB1PWF1KCdbaWQ9IicuY29uY2F0KGUsJyJdJykpO3UuYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIik7dmFyIGw9YXUoIiMiK2UrIiBnIik7a18obCxhLFsiYWdncmVnYXRpb24iLCJleHRlbnNpb24iLCJjb21wb3NpdGlvbiIsImRlcGVuZGVuY3kiXSwiY2xhc3NEaWFncmFtIixlKTt2YXIgaD11Lm5vZGUoKS5nZXRCQm94KCksZj1oLndpZHRoKzE2LGQ9aC5oZWlnaHQrMTY7aWYoby5kZWJ1ZygibmV3IFZpZXdCb3ggMCAwICIuY29uY2F0KGYsIiAiKS5jb25jYXQoZCksInRyYW5zbGF0ZSgiLmNvbmNhdCg4LWEuX2xhYmVsLm1hcmdpbngsIiwgIikuY29uY2F0KDgtYS5fbGFiZWwubWFyZ2lueSwiKSIpKSxqdih1LGQsZixuLnVzZU1heFdpZHRoKSx1LmF0dHIoInZpZXdCb3giLCIwIDAgIi5jb25jYXQoZiwiICIpLmNvbmNhdChkKSksdS5zZWxlY3QoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIi5jb25jYXQoOC1hLl9sYWJlbC5tYXJnaW54LCIsICIpLmNvbmNhdCg4LWgueSwiKSIpKSwhbi5odG1sTGFiZWxzKWZvcih2YXIgcD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9IicrZSsnIl0gLmVkZ2VMYWJlbCAubGFiZWwnKSx5PTA7eTxwLmxlbmd0aDt5Kyspe3ZhciBnPXBbeV0sbT1nLmdldEJCb3goKSx2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWN0Iik7di5zZXRBdHRyaWJ1dGUoInJ4IiwwKSx2LnNldEF0dHJpYnV0ZSgicnkiLDApLHYuc2V0QXR0cmlidXRlKCJ3aWR0aCIsbS53aWR0aCksdi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbS5oZWlnaHQpLGcuaW5zZXJ0QmVmb3JlKHYsZy5maXJzdENoaWxkKX19KGksdCk7YnJlYWs7Y2FzZSJzdGF0ZSI6cy5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxzLnN0YXRlLHBFKGksdCk7YnJlYWs7Y2FzZSJzdGF0ZURpYWdyYW0iOnMuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUseEUocy5zdGF0ZSksZnVuY3Rpb24odCxlKXtvLmluZm8oIkRyYXdpbmcgc3RhdGUgZGlhZ3JhbSAodjIpIixlKSxpRS5jbGVhcigpLGdFPXt9O3ZhciBuPXFUKCkucGFyc2VyO24ueXk9aUUsbi5wYXJzZSh0KTt2YXIgcj1pRS5nZXREaXJlY3Rpb24oKTt2b2lkIDA9PT1yJiYocj0iTFIiKTt2YXIgaT1adigpLnN0YXRlLGE9aS5ub2RlU3BhY2luZ3x8NTAscz1pLnJhbmtTcGFjaW5nfHw1MDtvLmluZm8oaUUuZ2V0Um9vdERvY1YyKCkpLGlFLmV4dHJhY3QoaUUuZ2V0Um9vdERvY1YyKCkpLG8uaW5mbyhpRS5nZXRSb290RG9jVjIoKSk7dmFyIGM9bmV3KGJiKCkuR3JhcGgpKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6X0UoaUUuZ2V0Um9vdERvY1YyKCkpLG5vZGVzZXA6YSxyYW5rc2VwOnMsbWFyZ2lueDo4LG1hcmdpbnk6OH0pLnNldERlZmF1bHRFZGdlTGFiZWwoKGZ1bmN0aW9uKCl7cmV0dXJue319KSk7bUUoYyx2b2lkIDAsaUUuZ2V0Um9vdERvY1YyKCksITApO3ZhciB1PWF1KCdbaWQ9IicuY29uY2F0KGUsJyJdJykpLGw9YXUoIiMiK2UrIiBnIik7a18obCxjLFsiYmFyYiJdLCJzdGF0ZWRpYWdyYW0iLGUpO3ZhciBoPXUubm9kZSgpLmdldEJCb3goKSxmPWgud2lkdGgrMTYsZD1oLmhlaWdodCsxNjt1LmF0dHIoImNsYXNzIiwic3RhdGVkaWFncmFtIik7dmFyIHA9dS5ub2RlKCkuZ2V0QkJveCgpO2p2KHUsZCwxLjc1KmYsaS51c2VNYXhXaWR0aCk7dmFyIHk9IiIuY29uY2F0KHAueC04LCIgIikuY29uY2F0KHAueS04LCIgIikuY29uY2F0KGYsIiAiKS5jb25jYXQoZCk7by5kZWJ1Zygidmlld0JveCAiLmNvbmNhdCh5KSksdS5hdHRyKCJ2aWV3Qm94Iix5KTtmb3IodmFyIGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkPSInK2UrJyJdIC5lZGdlTGFiZWwgLmxhYmVsJyksbT0wO208Zy5sZW5ndGg7bSsrKXt2YXIgdj1nW21dLGI9di5nZXRCQm94KCksXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicmVjdCIpO18uc2V0QXR0cmlidXRlKCJyeCIsMCksXy5zZXRBdHRyaWJ1dGUoInJ5IiwwKSxfLnNldEF0dHJpYnV0ZSgid2lkdGgiLGIud2lkdGgpLF8uc2V0QXR0cmlidXRlKCJoZWlnaHQiLGIuaGVpZ2h0KSx2Lmluc2VydEJlZm9yZShfLHYuZmlyc3RDaGlsZCl9fShpLHQpO2JyZWFrO2Nhc2UiaW5mbyI6cy5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxKdyhzLmNsYXNzKSxmdW5jdGlvbih0LGUsbil7dHJ5e3ZhciByPVF3KCkucGFyc2VyO3IueXk9WHcsby5kZWJ1ZygiUmVuZXJpbmcgaW5mbyBkaWFncmFtXG4iK3QpLHIucGFyc2UodCksby5kZWJ1ZygiUGFyc2VkIGluZm8gZGlhZ3JhbSIpO3ZhciBpPWF1KCIjIitlKTtpLmFwcGVuZCgiZyIpLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLDEwMCkuYXR0cigieSIsNDApLmF0dHIoImNsYXNzIiwidmVyc2lvbiIpLmF0dHIoImZvbnQtc2l6ZSIsIjMycHgiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KCJ2ICIrbiksaS5hdHRyKCJoZWlnaHQiLDEwMCksaS5hdHRyKCJ3aWR0aCIsNDAwKX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgaW5mbyBkaWFncmFtIiksby5lcnJvcih0Lm1lc3NhZ2UpfX0oaSx0LE5tKTticmVhaztjYXNlInBpZSI6Y2soaSx0KTticmVhaztjYXNlImVyIjpQXyhzLmVyKSxqXyhpLHQpO2JyZWFrO2Nhc2Uiam91cm5leSI6VkUocy5qb3VybmV5KSxHRShpLHQpO2JyZWFrO2Nhc2UicmVxdWlyZW1lbnQiOkVrKHMucmVxdWlyZW1lbnQpLENrKGksdCl9fWNhdGNoKGUpe3Rocm93IGZ1bmN0aW9uKHQsZSl7dHJ5e28uZGVidWcoIlJlbmVyaW5nIHN2ZyBmb3Igc3ludGF4IGVycm9yXG4iKTt2YXIgbj1hdSgiIyIrdCkscj1uLmFwcGVuZCgiZyIpO3IuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00MTEuMzEzLDEyMy4zMTNjNi4yNS02LjI1IDYuMjUtMTYuMzc1IDAtMjIuNjI1cy0xNi4zNzUtNi4yNS0yMi42MjUsMGwtMzIsMzItOS4zNzUsOS4zNzUtMjAuNjg4LTIwLjY4OGMtMTIuNDg0LTEyLjUtMzIuNzY2LTEyLjUtNDUuMjUsMGwtMTYsMTZjLTEuMjYxLDEuMjYxLTIuMzA0LDIuNjQ4LTMuMzEsNC4wNTEtMjEuNzM5LTguNTYxLTQ1LjMyNC0xMy40MjYtNzAuMDY1LTEzLjQyNi0xMDUuODY3LDAtMTkyLDg2LjEzMy0xOTIsMTkyczg2LjEzMywxOTIgMTkyLDE5MiAxOTItODYuMTMzIDE5Mi0xOTJjMC0yNC43NDEtNC44NjQtNDguMzI3LTEzLjQyNi03MC4wNjUgMS40MDItMS4wMDcgMi43OS0yLjA0OSA0LjA1MS0zLjMxbDE2LTE2YzEyLjUtMTIuNDkyIDEyLjUtMzIuNzU4IDAtNDUuMjVsLTIwLjY4OC0yMC42ODggOS4zNzUtOS4zNzUgMzIuMDAxLTMxLjk5OXptLTIxOS4zMTMsMTAwLjY4N2MtNTIuOTM4LDAtOTYsNDMuMDYzLTk2LDk2IDAsOC44MzYtNy4xNjQsMTYtMTYsMTZzLTE2LTcuMTY0LTE2LTE2YzAtNzAuNTc4IDU3LjQyMi0xMjggMTI4LTEyOCA4LjgzNiwwIDE2LDcuMTY0IDE2LDE2cy03LjE2NCwxNi0xNiwxNnoiKSxyLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItaWNvbiIpLmF0dHIoImQiLCJtNDU5LjAyLDE0OC45OGMtNi4yNS02LjI1LTE2LjM3NS02LjI1LTIyLjYyNSwwcy02LjI1LDE2LjM3NSAwLDIyLjYyNWwxNiwxNmMzLjEyNSwzLjEyNSA3LjIxOSw0LjY4OCAxMS4zMTMsNC42ODggNC4wOTQsMCA4LjE4OC0xLjU2MyAxMS4zMTMtNC42ODggNi4yNS02LjI1IDYuMjUtMTYuMzc1IDAtMjIuNjI1bC0xNi4wMDEtMTZ6Iiksci5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImVycm9yLWljb24iKS5hdHRyKCJkIiwibTM0MC4zOTUsNzUuNjA1YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OCA2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVsLTE2LTE2Yy02LjI1LTYuMjUtMTYuMzc1LTYuMjUtMjIuNjI1LDBzLTYuMjUsMTYuMzc1IDAsMjIuNjI1bDE1Ljk5OSwxNnoiKSxyLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItaWNvbiIpLmF0dHIoImQiLCJtNDAwLDY0YzguODQ0LDAgMTYtNy4xNjQgMTYtMTZ2LTMyYzAtOC44MzYtNy4xNTYtMTYtMTYtMTYtOC44NDQsMC0xNiw3LjE2NC0xNiwxNnYzMmMwLDguODM2IDcuMTU2LDE2IDE2LDE2eiIpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00OTYsOTYuNTg2aC0zMmMtOC44NDQsMC0xNiw3LjE2NC0xNiwxNiAwLDguODM2IDcuMTU2LDE2IDE2LDE2aDMyYzguODQ0LDAgMTYtNy4xNjQgMTYtMTYgMC04LjgzNi03LjE1Ni0xNi0xNi0xNnoiKSxyLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItaWNvbiIpLmF0dHIoImQiLCJtNDM2Ljk4LDc1LjYwNWMzLjEyNSwzLjEyNSA3LjIxOSw0LjY4OCAxMS4zMTMsNC42ODggNC4wOTQsMCA4LjE4OC0xLjU2MyAxMS4zMTMtNC42ODhsMzItMzJjNi4yNS02LjI1IDYuMjUtMTYuMzc1IDAtMjIuNjI1cy0xNi4zNzUtNi4yNS0yMi42MjUsMGwtMzIsMzJjLTYuMjUxLDYuMjUtNi4yNTEsMTYuMzc1LTAuMDAxLDIyLjYyNXoiKSxyLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItdGV4dCIpLmF0dHIoIngiLDEyNDApLmF0dHIoInkiLDI1MCkuYXR0cigiZm9udC1zaXplIiwiMTUwcHgiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KCJTeW50YXggZXJyb3IgaW4gZ3JhcGgiKSxyLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItdGV4dCIpLmF0dHIoIngiLDEwNTApLmF0dHIoInkiLDQwMCkuYXR0cigiZm9udC1zaXplIiwiMTAwcHgiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KCJtZXJtYWlkIHZlcnNpb24gIitlKSxuLmF0dHIoImhlaWdodCIsMTAwKSxuLmF0dHIoIndpZHRoIiw0MDApLG4uYXR0cigidmlld0JveCIsIjc2OCAwIDUxMiA1MTIiKX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgaW5mbyBkaWFncmFtIiksby5lcnJvcih0Lm1lc3NhZ2UpfX0odCxObSksZX1hdSgnW2lkPSInLmNvbmNhdCh0LCciXScpKS5zZWxlY3RBbGwoImZvcmVpZ25vYmplY3QgPiAqIikuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIik7dmFyIF89YXUoIiNkIit0KS5ub2RlKCkuaW5uZXJIVE1MO2lmKG8uZGVidWcoImNuZi5hcnJvd01hcmtlckFic29sdXRlIixzLmFycm93TWFya2VyQWJzb2x1dGUpLHMuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmImZhbHNlIiE9PXMuYXJyb3dNYXJrZXJBYnNvbHV0ZXx8KF89Xy5yZXBsYWNlKC9tYXJrZXItZW5kPSJ1cmxcKC4qPyMvZywnbWFya2VyLWVuZD0idXJsKCMnLCJnIikpLF89KF89ZUMoXykpLnJlcGxhY2UoLzxicj4vZywiPGJyLz4iKSx2b2lkIDAhPT1uKXN3aXRjaChoKXtjYXNlImZsb3djaGFydCI6Y2FzZSJmbG93Y2hhcnQtdjIiOm4oXyxmeC5iaW5kRnVuY3Rpb25zKTticmVhaztjYXNlImdhbnR0IjpuKF8seXcuYmluZEZ1bmN0aW9ucyk7YnJlYWs7Y2FzZSJjbGFzcyI6Y2FzZSJjbGFzc0RpYWdyYW0iOm4oXyx5Yi5iaW5kRnVuY3Rpb25zKTticmVhaztkZWZhdWx0Om4oXyl9ZWxzZSBvLmRlYnVnKCJDQiA9IHVuZGVmaW5lZCEiKTtRay5mb3JFYWNoKChmdW5jdGlvbih0KXt0KCl9KSksUWs9W107dmFyIHg9YXUoIiNkIit0KS5ub2RlKCk7cmV0dXJuIG51bGwhPT14JiYiZnVuY3Rpb24iPT10eXBlb2YgeC5yZW1vdmUmJmF1KCIjZCIrdCkubm9kZSgpLnJlbW92ZSgpLF99LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVp2KCksbj16di5kZXRlY3RJbml0KHQsZSk7biYmby5kZWJ1ZygicmVpbml0ICIsbik7dmFyIHIsaT16di5kZXRlY3RUeXBlKHQsZSk7c3dpdGNoKG8uZGVidWcoIlR5cGUgIitpKSxpKXtjYXNlImdpdCI6KHI9UncoKSkucGFyc2VyLnl5PUJ3O2JyZWFrO2Nhc2UiZmxvd2NoYXJ0IjpjYXNlImZsb3djaGFydC12MiI6ZnguY2xlYXIoKSwocj1weCgpKS5wYXJzZXIueXk9Zng7YnJlYWs7Y2FzZSJzZXF1ZW5jZSI6KHI9QWsoKSkucGFyc2VyLnl5PVprO2JyZWFrO2Nhc2UiZ2FudHQiOihyPWJ3KCkpLnBhcnNlci55eT15dzticmVhaztjYXNlImNsYXNzIjpjYXNlImNsYXNzRGlhZ3JhbSI6KHI9eGIoKSkucGFyc2VyLnl5PXliO2JyZWFrO2Nhc2Uic3RhdGUiOmNhc2Uic3RhdGVEaWFncmFtIjoocj1xVCgpKS5wYXJzZXIueXk9aUU7YnJlYWs7Y2FzZSJpbmZvIjpvLmRlYnVnKCJpbmZvIGluZm8gaW5mbyIpLChyPVF3KCkpLnBhcnNlci55eT1YdzticmVhaztjYXNlInBpZSI6by5kZWJ1ZygicGllIiksKHI9ZWsoKSkucGFyc2VyLnl5PWFrO2JyZWFrO2Nhc2UiZXIiOm8uZGVidWcoImVyIiksKHI9T18oKSkucGFyc2VyLnl5PU5fO2JyZWFrO2Nhc2Uiam91cm5leSI6by5kZWJ1ZygiSm91cm5leSIpLChyPU9FKCkpLnBhcnNlci55eT1ORTticmVhaztjYXNlInJlcXVpcmVtZW50IjpjYXNlInJlcXVpcmVtZW50RGlhZ3JhbSI6by5kZWJ1ZygiUmVxdWlyZW1lbnREaWFncmFtIiksKHI9bGsoKSkucGFyc2VyLnl5PWdrfXJldHVybiByLnBhcnNlci55eS5ncmFwaFR5cGU9aSxyLnBhcnNlci55eS5wYXJzZUVycm9yPWZ1bmN0aW9uKHQsZSl7dGhyb3d7c3RyOnQsaGFzaDplfX0sci5wYXJzZSh0KSxyfSxwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbixyKXt0cnl7aWYodm9pZCAwIT09ZSlzd2l0Y2goZT1lLnRyaW0oKSxuKXtjYXNlIm9wZW5fZGlyZWN0aXZlIjpuQz17fTticmVhaztjYXNlInR5cGVfZGlyZWN0aXZlIjpuQy50eXBlPWUudG9Mb3dlckNhc2UoKTticmVhaztjYXNlImFyZ19kaXJlY3RpdmUiOm5DLmFyZ3M9SlNPTi5wYXJzZShlKTticmVhaztjYXNlImNsb3NlX2RpcmVjdGl2ZSI6KGZ1bmN0aW9uKHQsZSxuKXtzd2l0Y2goby5kZWJ1ZygiRGlyZWN0aXZlIHR5cGU9Ii5jb25jYXQoZS50eXBlLCIgd2l0aCBhcmdzOiIpLGUuYXJncyksZS50eXBlKXtjYXNlImluaXQiOmNhc2UiaW5pdGlhbGl6ZSI6WyJjb25maWciXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2b2lkIDAhPT1lLmFyZ3NbdF0mJigiZmxvd2NoYXJ0LXYyIj09PW4mJihuPSJmbG93Y2hhcnQiKSxlLmFyZ3Nbbl09ZS5hcmdzW3RdLGRlbGV0ZSBlLmFyZ3NbdF0pfSkpLG8uZGVidWcoInNhbml0aXplIGluIGhhbmRsZURpcmVjdGl2ZSIsZS5hcmdzKSxZdihlLmFyZ3MpLG8uZGVidWcoInNhbml0aXplIGluIGhhbmRsZURpcmVjdGl2ZSAoZG9uZSkiLGUuYXJncyksZS5hcmdzLEt2KGUuYXJncyk7YnJlYWs7Y2FzZSJ3cmFwIjpjYXNlIm5vd3JhcCI6dCYmdC5zZXRXcmFwJiZ0LnNldFdyYXAoIndyYXAiPT09ZS50eXBlKTticmVhaztkZWZhdWx0Om8ud2FybigiVW5oYW5kbGVkIGRpcmVjdGl2ZTogc291cmNlOiAnJSV7Ii5jb25jYXQoZS50eXBlLCI6ICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShlLmFyZ3M/ZS5hcmdzOnt9KSwifSUlIiksZSl9fSkodCxuQyxyKSxuQz1udWxsfX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgc2VxdWVuY2VEaWFncmFtIGRpcmVjdGl2ZTogIi5jb25jYXQoZSwiIGppc29uIGNvbnRleHQ6ICIpLmNvbmNhdChuKSksby5lcnJvcih0Lm1lc3NhZ2UpfX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0JiZ0LmZvbnRGYW1pbHkmJih0LnRoZW1lVmFyaWFibGVzJiZ0LnRoZW1lVmFyaWFibGVzLmZvbnRGYW1pbHl8fCh0LnRoZW1lVmFyaWFibGVzPXtmb250RmFtaWx5OnQuZm9udEZhbWlseX0pKSxmdW5jdGlvbih0KXtxdj1Pdih7fSx0KX0odCksdCYmdC50aGVtZSYmaXZbdC50aGVtZV0/dC50aGVtZVZhcmlhYmxlcz1pdlt0LnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyh0LnRoZW1lVmFyaWFibGVzKTp0JiYodC50aGVtZVZhcmlhYmxlcz1pdi5kZWZhdWx0LmdldFRoZW1lVmFyaWFibGVzKHQudGhlbWVWYXJpYWJsZXMpKTt2YXIgZT0ib2JqZWN0Ij09PXRDKHQpP2Z1bmN0aW9uKHQpe3JldHVybiBIdj1Pdih7fSwkdiksSHY9T3YoSHYsdCksdC50aGVtZSYmKEh2LnRoZW1lVmFyaWFibGVzPWl2W3QudGhlbWVdLmdldFRoZW1lVmFyaWFibGVzKHQudGhlbWVWYXJpYWJsZXMpKSxWdj1HdihIdixXdiksSHZ9KHQpOlh2KCk7ckMoZSkscyhlLmxvZ0xldmVsKX0scmVpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxnZXRDb25maWc6WnYsc2V0Q29uZmlnOmZ1bmN0aW9uKHQpe3JldHVybiBPdihWdix0KSxadigpfSxnZXRTaXRlQ29uZmlnOlh2LHVwZGF0ZVNpdGVDb25maWc6ZnVuY3Rpb24odCl7cmV0dXJuIEh2PU92KEh2LHQpLEd2KEh2LFd2KSxIdn0scmVzZXQ6ZnVuY3Rpb24oKXtKdigpfSxnbG9iYWxSZXNldDpmdW5jdGlvbigpe0p2KCksckMoWnYoKSl9LGRlZmF1bHRDb25maWc6JHZ9KTtzKFp2KCkubG9nTGV2ZWwpLEp2KFp2KCkpO2NvbnN0IGFDPWlDO3ZhciBvQz1mdW5jdGlvbigpe3NDLnN0YXJ0T25Mb2FkP2FDLmdldENvbmZpZygpLnN0YXJ0T25Mb2FkJiZzQy5pbml0KCk6dm9pZCAwPT09c0Muc3RhcnRPbkxvYWQmJihvLmRlYnVnKCJJbiBzdGFydCwgbm8gY29uZmlnIiksYUMuZ2V0Q29uZmlnKCkuc3RhcnRPbkxvYWQmJnNDLmluaXQoKSl9OyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXtvQygpfSksITEpO3ZhciBzQz17c3RhcnRPbkxvYWQ6ITAsaHRtbExhYmVsczohMCxtZXJtYWlkQVBJOmFDLHBhcnNlOmFDLnBhcnNlLHJlbmRlcjphQy5yZW5kZXIsaW5pdDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9YUMuZ2V0Q29uZmlnKCk7YXJndW1lbnRzLmxlbmd0aD49Mj8odm9pZCAwIT09YXJndW1lbnRzWzBdJiYoc0Muc2VxdWVuY2VDb25maWc9YXJndW1lbnRzWzBdKSx0PWFyZ3VtZW50c1sxXSk6dD1hcmd1bWVudHNbMF0sImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdPyhlPWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLG8uZGVidWcoIkNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpOnZvaWQgMCE9PXIubWVybWFpZCYmKCJmdW5jdGlvbiI9PXR5cGVvZiByLm1lcm1haWQuY2FsbGJhY2s/KGU9ci5tZXJtYWlkLmNhbGxiYWNrLG8uZGVidWcoIkNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpOm8uZGVidWcoIk5vIENhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpLHQ9dm9pZCAwPT09dD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIubWVybWFpZCIpOiJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpOnQgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZT9bdF06dCxvLmRlYnVnKCJTdGFydCBPbiBMb2FkIGJlZm9yZTogIitzQy5zdGFydE9uTG9hZCksdm9pZCAwIT09c0Muc3RhcnRPbkxvYWQmJihvLmRlYnVnKCJTdGFydCBPbiBMb2FkIGlubmVyOiAiK3NDLnN0YXJ0T25Mb2FkKSxhQy51cGRhdGVTaXRlQ29uZmlnKHtzdGFydE9uTG9hZDpzQy5zdGFydE9uTG9hZH0pKSx2b2lkIDAhPT1zQy5nYW50dENvbmZpZyYmYUMudXBkYXRlU2l0ZUNvbmZpZyh7Z2FudHQ6c0MuZ2FudHRDb25maWd9KTtmb3IodmFyIGksYT1uZXcgenYuaW5pdElkR2VuZXJhdGlvcihyLmRldGVybWluaXN0aWNJZHMsci5kZXRlcm1pbmlzdGljSURTZWVkKSxzPWZ1bmN0aW9uKHIpe3ZhciBzPXRbcl07aWYocy5nZXRBdHRyaWJ1dGUoImRhdGEtcHJvY2Vzc2VkIikpcmV0dXJuImNvbnRpbnVlIjtzLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiLCEwKTt2YXIgYz0ibWVybWFpZC0iLmNvbmNhdChhLm5leHQoKSk7aT1zLmlubmVySFRNTCxpPXp2LmVudGl0eURlY29kZShpKS50cmltKCkucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwiPGJyLz4iKTt2YXIgdT16di5kZXRlY3RJbml0KGkpO3UmJm8uZGVidWcoIkRldGVjdGVkIGVhcmx5IHJlaW5pdDogIix1KTt0cnl7YUMucmVuZGVyKGMsaSwoZnVuY3Rpb24odCxuKXtzLmlubmVySFRNTD10LHZvaWQgMCE9PWUmJmUoYyksbiYmbihzKX0pLHMpfWNhdGNoKHQpe28ud2FybigiU3ludGF4IEVycm9yIHJlbmRlcmluZyIpLG8ud2Fybih0KSxuLnBhcnNlRXJyb3ImJm4ucGFyc2VFcnJvcih0KX19LGM9MDtjPHQubGVuZ3RoO2MrKylzKGMpfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQubWVybWFpZCYmKHZvaWQgMCE9PXQubWVybWFpZC5zdGFydE9uTG9hZCYmKHNDLnN0YXJ0T25Mb2FkPXQubWVybWFpZC5zdGFydE9uTG9hZCksdm9pZCAwIT09dC5tZXJtYWlkLmh0bWxMYWJlbHMmJihzQy5odG1sTGFiZWxzPSJmYWxzZSIhPT10Lm1lcm1haWQuaHRtbExhYmVscyYmITEhPT10Lm1lcm1haWQuaHRtbExhYmVscykpLGFDLmluaXRpYWxpemUodCl9LGNvbnRlbnRMb2FkZWQ6b0N9O2NvbnN0IGNDPXNDfSw0OTQ5Oih0LGUsbik9Pnt0LmV4cG9ydHM9e2dyYXBobGliOm4oNjYxNCksZGFncmU6bigxNDYzKSxpbnRlcnNlY3Q6big4MTE0KSxyZW5kZXI6big1Nzg3KSx1dGlsOm4oODM1NSksdmVyc2lvbjpuKDU2ODkpfX0sOTE0NDoodCxlLG4pPT57dmFyIHI9big4MzU1KTtmdW5jdGlvbiBpKHQsZSxuLGkpe3ZhciBhPXQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIik7ci5hcHBseVN0eWxlKGEsbltpKyJTdHlsZSJdKSxuW2krIkNsYXNzIl0mJmEuYXR0cigiY2xhc3MiLG5baSsiQ2xhc3MiXSl9dC5leHBvcnRzPXtkZWZhdWx0Omksbm9ybWFsOmksdmVlOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBhPXQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgTCA0IDUgeiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIik7ci5hcHBseVN0eWxlKGEsbltpKyJTdHlsZSJdKSxuW2krIkNsYXNzIl0mJmEuYXR0cigiY2xhc3MiLG5baSsiQ2xhc3MiXSl9LHVuZGlyZWN0ZWQ6ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDUgTCAxMCA1Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKTtyLmFwcGx5U3R5bGUoYSxuW2krIlN0eWxlIl0pLG5baSsiQ2xhc3MiXSYmYS5hdHRyKCJjbGFzcyIsbltpKyJDbGFzcyJdKX19fSw1NjMyOih0LGUsbik9Pnt2YXIgcj1uKDgzNTUpLGk9big0MzIyKSxhPW4oMTMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz1lLm5vZGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gci5pc1N1YmdyYXBoKGUsdCl9KSkscz10LnNlbGVjdEFsbCgiZy5jbHVzdGVyIikuZGF0YShvLChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTtyZXR1cm4gcy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKSxzLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyIikuYXR0cigiaWQiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5ub2RlKHQpLmlkfSkpLnN0eWxlKCJvcGFjaXR5IiwwKSxzPXQuc2VsZWN0QWxsKCJnLmNsdXN0ZXIiKSxyLmFwcGx5VHJhbnNpdGlvbihzLGUpLnN0eWxlKCJvcGFjaXR5IiwxKSxzLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KSxyPWkuc2VsZWN0KHRoaXMpO2kuc2VsZWN0KHRoaXMpLmFwcGVuZCgicmVjdCIpO3ZhciBvPXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO2EobyxuLG4uY2x1c3RlckxhYmVsUG9zKX0pKSxzLnNlbGVjdEFsbCgicmVjdCIpLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KSxhPWkuc2VsZWN0KHRoaXMpO3IuYXBwbHlTdHlsZShhLG4uc3R5bGUpfSkpLG49cy5leGl0P3MuZXhpdCgpOnMuc2VsZWN0QWxsKG51bGwpLHIuYXBwbHlUcmFuc2l0aW9uKG4sZSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLHN9fSw2MzE1Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9bigxMDM0KSxpPW4oMTMyMiksYT1uKDgzNTUpLG89big0MzIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixzPXQuc2VsZWN0QWxsKCJnLmVkZ2VMYWJlbCIpLmRhdGEoZS5lZGdlcygpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5lZGdlVG9JZCh0KX0pKS5jbGFzc2VkKCJ1cGRhdGUiLCEwKTtyZXR1cm4gcy5leGl0KCkucmVtb3ZlKCkscy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImVkZ2VMYWJlbCIsITApLnN0eWxlKCJvcGFjaXR5IiwwKSwocz10LnNlbGVjdEFsbCgiZy5lZGdlTGFiZWwiKSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIG49by5zZWxlY3QodGhpcyk7bi5zZWxlY3QoIi5sYWJlbCIpLnJlbW92ZSgpO3ZhciBhPWUuZWRnZSh0KSxzPWkobixlLmVkZ2UodCksMCwwKS5jbGFzc2VkKCJsYWJlbCIsITApLGM9cy5ub2RlKCkuZ2V0QkJveCgpO2EubGFiZWxJZCYmcy5hdHRyKCJpZCIsYS5sYWJlbElkKSxyLmhhcyhhLCJ3aWR0aCIpfHwoYS53aWR0aD1jLndpZHRoKSxyLmhhcyhhLCJoZWlnaHQiKXx8KGEuaGVpZ2h0PWMuaGVpZ2h0KX0pKSxuPXMuZXhpdD9zLmV4aXQoKTpzLnNlbGVjdEFsbChudWxsKSxhLmFwcGx5VHJhbnNpdGlvbihuLGUpLnN0eWxlKCJvcGFjaXR5IiwwKS5yZW1vdmUoKSxzfX0sOTQwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9bigxMDM0KSxpPW4oNzU4NCksYT1uKDgzNTUpLG89big0MzIyKTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49KG8ubGluZXx8by5zdmcubGluZSkoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSk7cmV0dXJuKG4uY3VydmV8fG4uaW50ZXJwb2xhdGUpKHQuY3VydmUpLG4oZSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYz10LnNlbGVjdEFsbCgiZy5lZGdlUGF0aCIpLmRhdGEoZS5lZGdlcygpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5lZGdlVG9JZCh0KX0pKS5jbGFzc2VkKCJ1cGRhdGUiLCEwKSx1PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZWRnZVBhdGgiKS5zdHlsZSgib3BhY2l0eSIsMCk7cmV0dXJuIG4uYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZWRnZSh0KSxpPWUubm9kZSh0LnYpLmVsZW07cmV0dXJuIHMobixyLnJhbmdlKG4ucG9pbnRzLmxlbmd0aCkubWFwKChmdW5jdGlvbigpe3JldHVybiBlPSh0PWkpLmdldEJCb3goKSx7eDoobj10Lm93bmVyU1ZHRWxlbWVudC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkubXVsdGlwbHkodC5nZXRTY3JlZW5DVE0oKSkudHJhbnNsYXRlKGUud2lkdGgvMixlLmhlaWdodC8yKSkuZSx5Om4uZn07dmFyIHQsZSxufSkpKX0pKSxuLmFwcGVuZCgiZGVmcyIpLG59KGMsZSk7IWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leGl0KCk7YS5hcHBseVRyYW5zaXRpb24obixlKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCl9KGMsZSk7dmFyIGw9dm9pZCAwIT09Yy5tZXJnZT9jLm1lcmdlKHUpOmM7cmV0dXJuIGEuYXBwbHlUcmFuc2l0aW9uKGwsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLGwuZWFjaCgoZnVuY3Rpb24odCl7dmFyIG49by5zZWxlY3QodGhpcykscj1lLmVkZ2UodCk7ci5lbGVtPXRoaXMsci5pZCYmbi5hdHRyKCJpZCIsci5pZCksYS5hcHBseUNsYXNzKG4sci5jbGFzcywobi5jbGFzc2VkKCJ1cGRhdGUiKT8idXBkYXRlICI6IiIpKyJlZGdlUGF0aCIpfSkpLGwuc2VsZWN0QWxsKCJwYXRoLnBhdGgiKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7bi5hcnJvd2hlYWRJZD1yLnVuaXF1ZUlkKCJhcnJvd2hlYWQiKTt2YXIgYz1vLnNlbGVjdCh0aGlzKS5hdHRyKCJtYXJrZXItZW5kIiwoZnVuY3Rpb24oKXtyZXR1cm4idXJsKCIrKHQ9bG9jYXRpb24uaHJlZixlPW4uYXJyb3doZWFkSWQsdC5zcGxpdCgiIyIpWzBdKyIjIitlKyIpIik7dmFyIHQsZX0pKS5zdHlsZSgiZmlsbCIsIm5vbmUiKTthLmFwcGx5VHJhbnNpdGlvbihjLGUpLmF0dHIoImQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj10LmVkZ2UoZSkscj10Lm5vZGUoZS52KSxhPXQubm9kZShlLncpLG89bi5wb2ludHMuc2xpY2UoMSxuLnBvaW50cy5sZW5ndGgtMSk7cmV0dXJuIG8udW5zaGlmdChpKHIsb1swXSkpLG8ucHVzaChpKGEsb1tvLmxlbmd0aC0xXSkpLHMobixvKX0oZSx0KX0pKSxhLmFwcGx5U3R5bGUoYyxuLnN0eWxlKX0pKSxsLnNlbGVjdEFsbCgiZGVmcyAqIikucmVtb3ZlKCksbC5zZWxlY3RBbGwoImRlZnMiKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgcj1lLmVkZ2UodCk7KDAsbltyLmFycm93aGVhZF0pKG8uc2VsZWN0KHRoaXMpLHIuYXJyb3doZWFkSWQsciwiYXJyb3doZWFkIil9KSksbH19LDYwNzoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oMTAzNCksaT1uKDEzMjIpLGE9big4MzU1KSxvPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcyxjPWUubm9kZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFhLmlzU3ViZ3JhcGgoZSx0KX0pKSx1PXQuc2VsZWN0QWxsKCJnLm5vZGUiKS5kYXRhKGMsKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLmNsYXNzZWQoInVwZGF0ZSIsITApO3JldHVybiB1LmV4aXQoKS5yZW1vdmUoKSx1LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJub2RlIikuc3R5bGUoIm9wYWNpdHkiLDApLCh1PXQuc2VsZWN0QWxsKCJnLm5vZGUiKSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHM9ZS5ub2RlKHQpLGM9by5zZWxlY3QodGhpcyk7YS5hcHBseUNsYXNzKGMscy5jbGFzcywoYy5jbGFzc2VkKCJ1cGRhdGUiKT8idXBkYXRlICI6IiIpKyJub2RlIiksYy5zZWxlY3QoImcubGFiZWwiKS5yZW1vdmUoKTt2YXIgdT1jLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxsPWkodSxzKSxoPW5bcy5zaGFwZV0sZj1yLnBpY2sobC5ub2RlKCkuZ2V0QkJveCgpLCJ3aWR0aCIsImhlaWdodCIpO3MuZWxlbT10aGlzLHMuaWQmJmMuYXR0cigiaWQiLHMuaWQpLHMubGFiZWxJZCYmdS5hdHRyKCJpZCIscy5sYWJlbElkKSxyLmhhcyhzLCJ3aWR0aCIpJiYoZi53aWR0aD1zLndpZHRoKSxyLmhhcyhzLCJoZWlnaHQiKSYmKGYuaGVpZ2h0PXMuaGVpZ2h0KSxmLndpZHRoKz1zLnBhZGRpbmdMZWZ0K3MucGFkZGluZ1JpZ2h0LGYuaGVpZ2h0Kz1zLnBhZGRpbmdUb3Arcy5wYWRkaW5nQm90dG9tLHUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHMucGFkZGluZ0xlZnQtcy5wYWRkaW5nUmlnaHQpLzIrIiwiKyhzLnBhZGRpbmdUb3Atcy5wYWRkaW5nQm90dG9tKS8yKyIpIik7dmFyIGQ9by5zZWxlY3QodGhpcyk7ZC5zZWxlY3QoIi5sYWJlbC1jb250YWluZXIiKS5yZW1vdmUoKTt2YXIgcD1oKGQsZixzKS5jbGFzc2VkKCJsYWJlbC1jb250YWluZXIiLCEwKTthLmFwcGx5U3R5bGUocCxzLnN0eWxlKTt2YXIgeT1wLm5vZGUoKS5nZXRCQm94KCk7cy53aWR0aD15LndpZHRoLHMuaGVpZ2h0PXkuaGVpZ2h0fSkpLHM9dS5leGl0P3UuZXhpdCgpOnUuc2VsZWN0QWxsKG51bGwpLGEuYXBwbHlUcmFuc2l0aW9uKHMsZSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLHV9fSw0MzIyOih0LGUsbik9Pnt2YXIgcjtpZighcil0cnl7cj1uKDcxODgpfWNhdGNoKHQpe31yfHwocj13aW5kb3cuZDMpLHQuZXhwb3J0cz1yfSwxNDYzOih0LGUsbik9Pnt2YXIgcjt0cnl7cj1uKDY4MSl9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5kYWdyZSksdC5leHBvcnRzPXJ9LDY2MTQ6KHQsZSxuKT0+e3ZhciByO3RyeXtyPW4oODI4Mil9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5ncmFwaGxpYiksdC5leHBvcnRzPXJ9LDgxMTQ6KHQsZSxuKT0+e3QuZXhwb3J0cz17bm9kZTpuKDc1ODQpLGNpcmNsZTpuKDY1ODcpLGVsbGlwc2U6bigzMjYwKSxwb2x5Z29uOm4oNTMzNykscmVjdDpuKDgwNDkpfX0sNjU4NzoodCxlLG4pPT57dmFyIHI9bigzMjYwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByKHQsZSxlLG4pfX0sMzI2MDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQueCxhPXQueSxvPWktci54LHM9YS1yLnksYz1NYXRoLnNxcnQoZSplKnMqcytuKm4qbypvKSx1PU1hdGguYWJzKGUqbipvL2MpO3IueDxpJiYodT0tdSk7dmFyIGw9TWF0aC5hYnMoZSpuKnMvYyk7cmV0dXJuIHIueTxhJiYobD0tbCkse3g6aSt1LHk6YStsfX19LDY4MDg6dD0+e2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdCplPjB9dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGkpe3ZhciBhLG8scyxjLHUsbCxoLGYsZCxwLHksZyxtO2lmKCEoYT1uLnktdC55LHM9dC54LW4ueCx1PW4ueCp0LnktdC54Km4ueSxkPWEqci54K3Mqci55K3UscD1hKmkueCtzKmkueSt1LDAhPT1kJiYwIT09cCYmZShkLHApfHwobz1pLnktci55LGM9ci54LWkueCxsPWkueCpyLnktci54KmkueSxoPW8qdC54K2MqdC55K2wsZj1vKm4ueCtjKm4ueStsLDAhPT1oJiYwIT09ZiYmZShoLGYpfHwwPT0oeT1hKmMtbypzKSkpKXJldHVybiBnPU1hdGguYWJzKHkvMikse3g6KG09cypsLWMqdSk8MD8obS1nKS95OihtK2cpL3kseToobT1vKnUtYSpsKTwwPyhtLWcpL3k6KG0rZykveX19fSw3NTg0OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbnRlcnNlY3QoZSl9fSw1MzM3Oih0LGUsbik9Pnt2YXIgcj1uKDY4MDgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC54LGE9dC55LG89W10scz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtzPU1hdGgubWluKHMsdC54KSxjPU1hdGgubWluKGMsdC55KX0pKTtmb3IodmFyIHU9aS10LndpZHRoLzItcyxsPWEtdC5oZWlnaHQvMi1jLGg9MDtoPGUubGVuZ3RoO2grKyl7dmFyIGY9ZVtoXSxkPWVbaDxlLmxlbmd0aC0xP2grMTowXSxwPXIodCxuLHt4OnUrZi54LHk6bCtmLnl9LHt4OnUrZC54LHk6bCtkLnl9KTtwJiZvLnB1c2gocCl9cmV0dXJuIG8ubGVuZ3RoPyhvLmxlbmd0aD4xJiZvLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LW4ueCxpPXQueS1uLnksYT1NYXRoLnNxcnQocipyK2kqaSksbz1lLngtbi54LHM9ZS55LW4ueSxjPU1hdGguc3FydChvKm8rcypzKTtyZXR1cm4gYTxjPy0xOmE9PT1jPzA6MX0pKSxvWzBdKTooY29uc29sZS5sb2coIk5PIElOVEVSU0VDVElPTiBGT1VORCwgUkVUVVJOIE5PREUgQ0VOVEVSIix0KSx0KX19LDgwNDk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaT10LngsYT10Lnksbz1lLngtaSxzPWUueS1hLGM9dC53aWR0aC8yLHU9dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5hYnMocykqYz5NYXRoLmFicyhvKSp1PyhzPDAmJih1PS11KSxuPTA9PT1zPzA6dSpvL3Mscj11KToobzwwJiYoYz0tYyksbj1jLHI9MD09PW8/MDpjKnMvbykse3g6aStuLHk6YStyfX19LDgyODQ6KHQsZSxuKT0+e3ZhciByPW4oODM1NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ3aWR0aCIsIjEwMDAwMCIpLGk9bi5hcHBlbmQoInhodG1sOmRpdiIpO2kuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIik7dmFyIGE9ZS5sYWJlbDtzd2l0Y2godHlwZW9mIGEpe2Nhc2UiZnVuY3Rpb24iOmkuaW5zZXJ0KGEpO2JyZWFrO2Nhc2Uib2JqZWN0IjppLmluc2VydCgoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTticmVhaztkZWZhdWx0OmkuaHRtbChhKX1yLmFwcGx5U3R5bGUoaSxlLmxhYmVsU3R5bGUpLGkuc3R5bGUoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSxpLnN0eWxlKCJ3aGl0ZS1zcGFjZSIsIm5vd3JhcCIpO3ZhciBvPWkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBuLmF0dHIoIndpZHRoIixvLndpZHRoKS5hdHRyKCJoZWlnaHQiLG8uaGVpZ2h0KSxufX0sMTMyMjoodCxlLG4pPT57dmFyIHI9big3MzE4KSxpPW4oODI4NCksYT1uKDgyODcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIG89ZS5sYWJlbCxzPXQuYXBwZW5kKCJnIik7InN2ZyI9PT1lLmxhYmVsVHlwZT9hKHMsZSk6InN0cmluZyIhPXR5cGVvZiBvfHwiaHRtbCI9PT1lLmxhYmVsVHlwZT9pKHMsZSk6cihzLGUpO3ZhciBjLHU9cy5ub2RlKCkuZ2V0QkJveCgpO3N3aXRjaChuKXtjYXNlInRvcCI6Yz0tZS5oZWlnaHQvMjticmVhaztjYXNlImJvdHRvbSI6Yz1lLmhlaWdodC8yLXUuaGVpZ2h0O2JyZWFrO2RlZmF1bHQ6Yz0tdS5oZWlnaHQvMn1yZXR1cm4gcy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistdS53aWR0aC8yKyIsIitjKyIpIiksc319LDgyODc6KHQsZSxuKT0+e3ZhciByPW4oODM1NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dDtyZXR1cm4gbi5ub2RlKCkuYXBwZW5kQ2hpbGQoZS5sYWJlbCksci5hcHBseVN0eWxlKG4sZS5sYWJlbFN0eWxlKSxufX0sNzMxODoodCxlLG4pPT57dmFyIHI9big4MzU1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5hcHBlbmQoInRleHQiKSxpPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPSIiLHI9ITEsaT0wO2k8dC5sZW5ndGg7KytpKWU9dFtpXSxyPyhuKz0ibiI9PT1lPyJcbiI6ZSxyPSExKToiXFwiPT09ZT9yPSEwOm4rPWU7cmV0dXJuIG59KGUubGFiZWwpLnNwbGl0KCJcbiIpLGE9MDthPGkubGVuZ3RoO2ErKyluLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpLmF0dHIoImR5IiwiMWVtIikuYXR0cigieCIsIjEiKS50ZXh0KGlbYV0pO3JldHVybiByLmFwcGx5U3R5bGUobixlLmxhYmVsU3R5bGUpLG59fSwxMDM0Oih0LGUsbik9Pnt2YXIgcjt0cnl7cj17ZGVmYXVsdHM6bigxNzQ3KSxlYWNoOm4oNjA3MyksaXNGdW5jdGlvbjpuKDM1NjApLGlzUGxhaW5PYmplY3Q6big4NjMwKSxwaWNrOm4oOTcyMiksaGFzOm4oODcyMSkscmFuZ2U6big2MDI2KSx1bmlxdWVJZDpuKDM5NTUpfX1jYXRjaCh0KXt9cnx8KHI9d2luZG93Ll8pLHQuZXhwb3J0cz1yfSw2MzgxOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4MzU1KSxpPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5maWx0ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIWkuc2VsZWN0KHRoaXMpLmNsYXNzZWQoInVwZGF0ZSIpfSkpO2Z1bmN0aW9uIGEodCl7dmFyIG49ZS5ub2RlKHQpO3JldHVybiJ0cmFuc2xhdGUoIituLngrIiwiK24ueSsiKSJ9bi5hdHRyKCJ0cmFuc2Zvcm0iLGEpLHIuYXBwbHlUcmFuc2l0aW9uKHQsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsYSksci5hcHBseVRyYW5zaXRpb24obi5zZWxlY3RBbGwoInJlY3QiKSxlKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiBlLm5vZGUodCkud2lkdGh9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuIGUubm9kZSh0KS5oZWlnaHR9KSkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybi1lLm5vZGUodCkud2lkdGgvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuLWUubm9kZSh0KS5oZWlnaHQvMn0pKX19LDQ1Nzc6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgzNTUpLGk9big0MzIyKSxhPW4oMTAzNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1lLmVkZ2UodCk7cmV0dXJuIGEuaGFzKG4sIngiKT8idHJhbnNsYXRlKCIrbi54KyIsIituLnkrIikiOiIifXQuZmlsdGVyKChmdW5jdGlvbigpe3JldHVybiFpLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJ1cGRhdGUiKX0pKS5hdHRyKCJ0cmFuc2Zvcm0iLG4pLHIuYXBwbHlUcmFuc2l0aW9uKHQsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsbil9fSw0ODQ5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4MzU1KSxpPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1lLm5vZGUodCk7cmV0dXJuInRyYW5zbGF0ZSgiK24ueCsiLCIrbi55KyIpIn10LmZpbHRlcigoZnVuY3Rpb24oKXtyZXR1cm4haS5zZWxlY3QodGhpcykuY2xhc3NlZCgidXBkYXRlIil9KSkuYXR0cigidHJhbnNmb3JtIixuKSxyLmFwcGx5VHJhbnNpdGlvbih0LGUpLnN0eWxlKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLG4pfX0sNTc4NzoodCxlLG4pPT57dmFyIHI9bigxMDM0KSxpPW4oNDMyMiksYT1uKDE0NjMpLmxheW91dDt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uKDYwNyksZT1uKDU2MzIpLGk9big2MzE1KSx1PW4oOTQwKSxsPW4oNDg0OSksaD1uKDQ1NzcpLGY9big2MzgxKSxkPW4oNDQxOCkscD1uKDkxNDQpLHk9ZnVuY3Rpb24obix5KXshZnVuY3Rpb24odCl7dC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTtyLmhhcyhuLCJsYWJlbCIpfHx0LmNoaWxkcmVuKGUpLmxlbmd0aHx8KG4ubGFiZWw9ZSksci5oYXMobiwicGFkZGluZ1giKSYmci5kZWZhdWx0cyhuLHtwYWRkaW5nTGVmdDpuLnBhZGRpbmdYLHBhZGRpbmdSaWdodDpuLnBhZGRpbmdYfSksci5oYXMobiwicGFkZGluZ1kiKSYmci5kZWZhdWx0cyhuLHtwYWRkaW5nVG9wOm4ucGFkZGluZ1kscGFkZGluZ0JvdHRvbTpuLnBhZGRpbmdZfSksci5oYXMobiwicGFkZGluZyIpJiZyLmRlZmF1bHRzKG4se3BhZGRpbmdMZWZ0Om4ucGFkZGluZyxwYWRkaW5nUmlnaHQ6bi5wYWRkaW5nLHBhZGRpbmdUb3A6bi5wYWRkaW5nLHBhZGRpbmdCb3R0b206bi5wYWRkaW5nfSksci5kZWZhdWx0cyhuLG8pLHIuZWFjaChbInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSwoZnVuY3Rpb24odCl7blt0XT1OdW1iZXIoblt0XSl9KSksci5oYXMobiwid2lkdGgiKSYmKG4uX3ByZXZXaWR0aD1uLndpZHRoKSxyLmhhcyhuLCJoZWlnaHQiKSYmKG4uX3ByZXZIZWlnaHQ9bi5oZWlnaHQpfSkpLHQuZWRnZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7ci5oYXMobiwibGFiZWwiKXx8KG4ubGFiZWw9IiIpLHIuZGVmYXVsdHMobixzKX0pKX0oeSk7dmFyIGc9YyhuLCJvdXRwdXQiKSxtPWMoZywiY2x1c3RlcnMiKSx2PWMoZywiZWRnZVBhdGhzIiksYj1pKGMoZywiZWRnZUxhYmVscyIpLHkpLF89dChjKGcsIm5vZGVzIikseSxkKTthKHkpLGwoXyx5KSxoKGIseSksdSh2LHkscCk7dmFyIHg9ZShtLHkpO2YoeCx5KSxmdW5jdGlvbih0KXtyLmVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj10Lm5vZGUoZSk7ci5oYXMobiwiX3ByZXZXaWR0aCIpP24ud2lkdGg9bi5fcHJldldpZHRoOmRlbGV0ZSBuLndpZHRoLHIuaGFzKG4sIl9wcmV2SGVpZ2h0Iik/bi5oZWlnaHQ9bi5fcHJldkhlaWdodDpkZWxldGUgbi5oZWlnaHQsZGVsZXRlIG4uX3ByZXZXaWR0aCxkZWxldGUgbi5fcHJldkhlaWdodH0pKX0oeSl9O3JldHVybiB5LmNyZWF0ZU5vZGVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUseSk6dH0seS5jcmVhdGVDbHVzdGVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHkpOmV9LHkuY3JlYXRlRWRnZUxhYmVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHkpOml9LHkuY3JlYXRlRWRnZVBhdGhzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQseSk6dX0seS5zaGFwZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9dCx5KTpkfSx5LmFycm93cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD10LHkpOnB9LHl9O3ZhciBvPXtwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAscGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHJ4OjAscnk6MCxzaGFwZToicmVjdCJ9LHM9e2Fycm93aGVhZDoibm9ybWFsIixjdXJ2ZTppLmN1cnZlTGluZWFyfTtmdW5jdGlvbiBjKHQsZSl7dmFyIG49dC5zZWxlY3QoImcuIitlKTtyZXR1cm4gbi5lbXB0eSgpJiYobj10LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixlKSksbn19LDQ0MTg6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgwNDkpLGk9bigzMjYwKSxhPW4oNjU4Nyksbz1uKDUzMzcpO3QuZXhwb3J0cz17cmVjdDpmdW5jdGlvbih0LGUsbil7dmFyIGk9dC5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJyeCIsbi5yeCkuYXR0cigicnkiLG4ucnkpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiByKG4sdCl9LGl9LGVsbGlwc2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUud2lkdGgvMixhPWUuaGVpZ2h0LzIsbz10Lmluc2VydCgiZWxsaXBzZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJyeCIscikuYXR0cigicnkiLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gaShuLHIsYSx0KX0sb30sY2lyY2xlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1NYXRoLm1heChlLndpZHRoLGUuaGVpZ2h0KS8yLGk9dC5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJyIixyKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGEobixyLHQpfSxpfSxkaWFtb25kOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLndpZHRoKk1hdGguU1FSVDIvMixpPWUuaGVpZ2h0Kk1hdGguU1FSVDIvMixhPVt7eDowLHk6LWl9LHt4Oi1yLHk6MH0se3g6MCx5Oml9LHt4OnIseTowfV0scz10Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsYS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LngrIiwiK3QueX0pKS5qb2luKCIgIikpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gbyhuLGEsdCl9LHN9fX0sODM1NToodCxlLG4pPT57dmFyIHI9bigxMDM0KTt0LmV4cG9ydHM9e2lzU3ViZ3JhcGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQuY2hpbGRyZW4oZSkubGVuZ3RofSxlZGdlVG9JZDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0LnYpKyI6IithKHQudykrIjoiK2EodC5uYW1lKX0sYXBwbHlTdHlsZTpmdW5jdGlvbih0LGUpe2UmJnQuYXR0cigic3R5bGUiLGUpfSxhcHBseUNsYXNzOmZ1bmN0aW9uKHQsZSxuKXtlJiZ0LmF0dHIoImNsYXNzIixlKS5hdHRyKCJjbGFzcyIsbisiICIrdC5hdHRyKCJjbGFzcyIpKX0sYXBwbHlUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ncmFwaCgpO2lmKHIuaXNQbGFpbk9iamVjdChuKSl7dmFyIGk9bi50cmFuc2l0aW9uO2lmKHIuaXNGdW5jdGlvbihpKSlyZXR1cm4gaSh0KX1yZXR1cm4gdH19O3ZhciBpPS86L2c7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD9TdHJpbmcodCkucmVwbGFjZShpLCJcXDoiKToiIn19LDU2ODk6dD0+e3QuZXhwb3J0cz0iMC42LjQifSw3MTg4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLHtGb3JtYXRTcGVjaWZpZXI6KCk9PnVjLGFjdGl2ZTooKT0+SnIsYXJjOigpPT5meCxhcmVhOigpPT52eCxhcmVhUmFkaWFsOigpPT5TeCxhc2NlbmRpbmc6KCk9PmksYXV0b1R5cGU6KCk9PkZvLGF4aXNCb3R0b206KCk9Pml0LGF4aXNMZWZ0OigpPT5hdCxheGlzUmlnaHQ6KCk9PnJ0LGF4aXNUb3A6KCk9Pm50LGJpc2VjdDooKT0+dSxiaXNlY3RMZWZ0OigpPT5jLGJpc2VjdFJpZ2h0OigpPT5zLGJpc2VjdG9yOigpPT5hLGJsb2I6KCk9Pm1zLGJydXNoOigpPT5BaSxicnVzaFNlbGVjdGlvbjooKT0+RWksYnJ1c2hYOigpPT5DaSxicnVzaFk6KCk9PlNpLGJ1ZmZlcjooKT0+YnMsY2hvcmQ6KCk9PkZpLGNsaWVudFBvaW50OigpPT5EbixjbHVzdGVyOigpPT5TZCxjb2xvcjooKT0+VmUsY29udG91ckRlbnNpdHk6KCk9Pm9vLGNvbnRvdXJzOigpPT50byxjcmVhdGU6KCk9PmpfLGNyZWF0b3I6KCk9PmllLGNyb3NzOigpPT5mLGNzdjooKT0+VHMsY3N2Rm9ybWF0OigpPT5Ubyxjc3ZGb3JtYXRCb2R5OigpPT5Fbyxjc3ZGb3JtYXRSb3c6KCk9PlNvLGNzdkZvcm1hdFJvd3M6KCk9PkNvLGNzdkZvcm1hdFZhbHVlOigpPT5Bbyxjc3ZQYXJzZTooKT0+d28sY3N2UGFyc2VSb3dzOigpPT5rbyxjdWJlaGVsaXg6KCk9PiRhLGN1cnZlQmFzaXM6KCk9PnN3LGN1cnZlQmFzaXNDbG9zZWQ6KCk9PnV3LGN1cnZlQmFzaXNPcGVuOigpPT5odyxjdXJ2ZUJ1bmRsZTooKT0+ZHcsY3VydmVDYXJkaW5hbDooKT0+Z3csY3VydmVDYXJkaW5hbENsb3NlZDooKT0+dncsY3VydmVDYXJkaW5hbE9wZW46KCk9Pl93LGN1cnZlQ2F0bXVsbFJvbTooKT0+a3csY3VydmVDYXRtdWxsUm9tQ2xvc2VkOigpPT5FdyxjdXJ2ZUNhdG11bGxSb21PcGVuOigpPT5TdyxjdXJ2ZUxpbmVhcjooKT0+cHgsY3VydmVMaW5lYXJDbG9zZWQ6KCk9Pk13LGN1cnZlTW9ub3RvbmVYOigpPT5GdyxjdXJ2ZU1vbm90b25lWTooKT0+UHcsY3VydmVOYXR1cmFsOigpPT56dyxjdXJ2ZVN0ZXA6KCk9PnF3LGN1cnZlU3RlcEFmdGVyOigpPT5IdyxjdXJ2ZVN0ZXBCZWZvcmU6KCk9PiR3LGN1c3RvbUV2ZW50OigpPT5nZSxkZXNjZW5kaW5nOigpPT5kLGRldmlhdGlvbjooKT0+ZyxkaXNwYXRjaDooKT0+ZnQsZHJhZzooKT0+cG8sZHJhZ0Rpc2FibGU6KCk9PlNlLGRyYWdFbmFibGU6KCk9PkFlLGRzdjooKT0+a3MsZHN2Rm9ybWF0OigpPT5fbyxlYXNlQmFjazooKT0+aHMsZWFzZUJhY2tJbjooKT0+dXMsZWFzZUJhY2tJbk91dDooKT0+aHMsZWFzZUJhY2tPdXQ6KCk9PmxzLGVhc2VCb3VuY2U6KCk9Pm9zLGVhc2VCb3VuY2VJbjooKT0+YXMsZWFzZUJvdW5jZUluT3V0OigpPT5zcyxlYXNlQm91bmNlT3V0OigpPT5vcyxlYXNlQ2lyY2xlOigpPT5ycyxlYXNlQ2lyY2xlSW46KCk9PmVzLGVhc2VDaXJjbGVJbk91dDooKT0+cnMsZWFzZUNpcmNsZU91dDooKT0+bnMsZWFzZUN1YmljOigpPT5YcixlYXNlQ3ViaWNJbjooKT0+VnIsZWFzZUN1YmljSW5PdXQ6KCk9PlhyLGVhc2VDdWJpY091dDooKT0+R3IsZWFzZUVsYXN0aWM6KCk9PnBzLGVhc2VFbGFzdGljSW46KCk9PmRzLGVhc2VFbGFzdGljSW5PdXQ6KCk9PnlzLGVhc2VFbGFzdGljT3V0OigpPT5wcyxlYXNlRXhwOigpPT50cyxlYXNlRXhwSW46KCk9PktvLGVhc2VFeHBJbk91dDooKT0+dHMsZWFzZUV4cE91dDooKT0+Sm8sZWFzZUxpbmVhcjooKT0+am8sZWFzZVBvbHk6KCk9PkhvLGVhc2VQb2x5SW46KCk9PnFvLGVhc2VQb2x5SW5PdXQ6KCk9PkhvLGVhc2VQb2x5T3V0OigpPT4kbyxlYXNlUXVhZDooKT0+VW8sZWFzZVF1YWRJbjooKT0+WW8sZWFzZVF1YWRJbk91dDooKT0+VW8sZWFzZVF1YWRPdXQ6KCk9PnpvLGVhc2VTaW46KCk9PlpvLGVhc2VTaW5JbjooKT0+R28sZWFzZVNpbkluT3V0OigpPT5abyxlYXNlU2luT3V0OigpPT5YbyxlbnRyaWVzOigpPT5wYSxldmVudDooKT0+bGUsZXh0ZW50OigpPT5tLGZvcmNlQ2VudGVyOigpPT5Ccyxmb3JjZUNvbGxpZGU6KCk9PldzLGZvcmNlTGluazooKT0+WHMsZm9yY2VNYW55Qm9keTooKT0+dGMsZm9yY2VSYWRpYWw6KCk9PmVjLGZvcmNlU2ltdWxhdGlvbjooKT0+SnMsZm9yY2VYOigpPT5uYyxmb3JjZVk6KCk9PnJjLGZvcm1hdDooKT0+cGMsZm9ybWF0RGVmYXVsdExvY2FsZTooKT0+YmMsZm9ybWF0TG9jYWxlOigpPT52Yyxmb3JtYXRQcmVmaXg6KCk9PnljLGZvcm1hdFNwZWNpZmllcjooKT0+Y2MsZ2VvQWxiZXJzOigpPT5VZixnZW9BbGJlcnNVc2E6KCk9PnFmLGdlb0FyZWE6KCk9Pnl1LGdlb0F6aW11dGhhbEVxdWFsQXJlYTooKT0+VmYsZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3OigpPT5XZixnZW9BemltdXRoYWxFcXVpZGlzdGFudDooKT0+WGYsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6KCk9PkdmLGdlb0JvdW5kczooKT0+c2wsZ2VvQ2VudHJvaWQ6KCk9PmJsLGdlb0NpcmNsZTooKT0+TmwsZ2VvQ2xpcEFudGltZXJpZGlhbjooKT0+VWwsZ2VvQ2xpcENpcmNsZTooKT0+cWwsZ2VvQ2xpcEV4dGVudDooKT0+VmwsZ2VvQ2xpcFJlY3RhbmdsZTooKT0+V2wsZ2VvQ29uaWNDb25mb3JtYWw6KCk9PmVkLGdlb0NvbmljQ29uZm9ybWFsUmF3OigpPT50ZCxnZW9Db25pY0VxdWFsQXJlYTooKT0+emYsZ2VvQ29uaWNFcXVhbEFyZWFSYXc6KCk9PllmLGdlb0NvbmljRXF1aWRpc3RhbnQ6KCk9PmFkLGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6KCk9PmlkLGdlb0NvbnRhaW5zOigpPT5waCxnZW9EaXN0YW5jZTooKT0+YWgsZ2VvRXF1YWxFYXJ0aDooKT0+ZmQsZ2VvRXF1YWxFYXJ0aFJhdzooKT0+aGQsZ2VvRXF1aXJlY3Rhbmd1bGFyOigpPT5yZCxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6KCk9Pm5kLGdlb0dub21vbmljOigpPT5wZCxnZW9Hbm9tb25pY1JhdzooKT0+ZGQsZ2VvR3JhdGljdWxlOigpPT5taCxnZW9HcmF0aWN1bGUxMDooKT0+dmgsZ2VvSWRlbnRpdHk6KCk9PnlkLGdlb0ludGVycG9sYXRlOigpPT5iaCxnZW9MZW5ndGg6KCk9Pm5oLGdlb01lcmNhdG9yOigpPT5RZixnZW9NZXJjYXRvclJhdzooKT0+WmYsZ2VvTmF0dXJhbEVhcnRoMTooKT0+bWQsZ2VvTmF0dXJhbEVhcnRoMVJhdzooKT0+Z2QsZ2VvT3J0aG9ncmFwaGljOigpPT5iZCxnZW9PcnRob2dyYXBoaWNSYXc6KCk9PnZkLGdlb1BhdGg6KCk9PmtmLGdlb1Byb2plY3Rpb246KCk9PkZmLGdlb1Byb2plY3Rpb25NdXRhdG9yOigpPT5QZixnZW9Sb3RhdGlvbjooKT0+U2wsZ2VvU3RlcmVvZ3JhcGhpYzooKT0+eGQsZ2VvU3RlcmVvZ3JhcGhpY1JhdzooKT0+X2QsZ2VvU3RyZWFtOigpPT5udSxnZW9UcmFuc2Zvcm06KCk9PlRmLGdlb1RyYW5zdmVyc2VNZXJjYXRvcjooKT0+a2QsZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3OigpPT53ZCxncmF5OigpPT5rYSxoY2w6KCk9Pk9hLGhpZXJhcmNoeTooKT0+TWQsaGlzdG9ncmFtOigpPT5ELGhzbDooKT0+YW4saHRtbDooKT0+RHMsaW1hZ2U6KCk9PkNzLGludGVycG9sYXRlOigpPT5NbixpbnRlcnBvbGF0ZUFycmF5OigpPT54bixpbnRlcnBvbGF0ZUJhc2lzOigpPT51bixpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOigpPT5sbixpbnRlcnBvbGF0ZUJsdWVzOigpPT5mXyxpbnRlcnBvbGF0ZUJyQkc6KCk9PlRiLGludGVycG9sYXRlQnVHbjooKT0+VWIsaW50ZXJwb2xhdGVCdVB1OigpPT4kYixpbnRlcnBvbGF0ZUNpdmlkaXM6KCk9PmtfLGludGVycG9sYXRlQ29vbDooKT0+Q18saW50ZXJwb2xhdGVDdWJlaGVsaXg6KCk9PnpwLGludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdDooKT0+VF8saW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nOigpPT5VcCxpbnRlcnBvbGF0ZURhdGU6KCk9PmtuLGludGVycG9sYXRlRGlzY3JldGU6KCk9PlNwLGludGVycG9sYXRlR25CdTooKT0+V2IsaW50ZXJwb2xhdGVHcmVlbnM6KCk9PnBfLGludGVycG9sYXRlR3JleXM6KCk9PmdfLGludGVycG9sYXRlSGNsOigpPT5QcCxpbnRlcnBvbGF0ZUhjbExvbmc6KCk9PmpwLGludGVycG9sYXRlSHNsOigpPT5McCxpbnRlcnBvbGF0ZUhzbExvbmc6KCk9PklwLGludGVycG9sYXRlSHVlOigpPT5BcCxpbnRlcnBvbGF0ZUluZmVybm86KCk9PkZfLGludGVycG9sYXRlTGFiOigpPT5ScCxpbnRlcnBvbGF0ZU1hZ21hOigpPT5SXyxpbnRlcnBvbGF0ZU51bWJlcjooKT0+VG4saW50ZXJwb2xhdGVOdW1iZXJBcnJheTooKT0+Ym4saW50ZXJwb2xhdGVPYmplY3Q6KCk9PkVuLGludGVycG9sYXRlT3JSZDooKT0+R2IsaW50ZXJwb2xhdGVPcmFuZ2VzOigpPT53XyxpbnRlcnBvbGF0ZVBSR246KCk9PkNiLGludGVycG9sYXRlUGlZRzooKT0+QWIsaW50ZXJwb2xhdGVQbGFzbWE6KCk9PlBfLGludGVycG9sYXRlUHVCdTooKT0+S2IsaW50ZXJwb2xhdGVQdUJ1R246KCk9PlpiLGludGVycG9sYXRlUHVPcjooKT0+TmIsaW50ZXJwb2xhdGVQdVJkOigpPT50XyxpbnRlcnBvbGF0ZVB1cnBsZXM6KCk9PnZfLGludGVycG9sYXRlUmFpbmJvdzooKT0+QV8saW50ZXJwb2xhdGVSZEJ1OigpPT5PYixpbnRlcnBvbGF0ZVJkR3k6KCk9PkxiLGludGVycG9sYXRlUmRQdTooKT0+bl8saW50ZXJwb2xhdGVSZFlsQnU6KCk9PlJiLGludGVycG9sYXRlUmRZbEduOigpPT5QYixpbnRlcnBvbGF0ZVJlZHM6KCk9Pl9fLGludGVycG9sYXRlUmdiOigpPT55bixpbnRlcnBvbGF0ZVJnYkJhc2lzOigpPT5tbixpbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkOigpPT52bixpbnRlcnBvbGF0ZVJvdW5kOigpPT5NcCxpbnRlcnBvbGF0ZVNpbmVib3c6KCk9Pk9fLGludGVycG9sYXRlU3BlY3RyYWw6KCk9PlliLGludGVycG9sYXRlU3RyaW5nOigpPT5BbixpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzczooKT0+cHIsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6KCk9PnlyLGludGVycG9sYXRlVHVyYm86KCk9PkJfLGludGVycG9sYXRlVmlyaWRpczooKT0+SV8saW50ZXJwb2xhdGVXYXJtOigpPT5FXyxpbnRlcnBvbGF0ZVlsR246KCk9Pm9fLGludGVycG9sYXRlWWxHbkJ1OigpPT5pXyxpbnRlcnBvbGF0ZVlsT3JCcjooKT0+Y18saW50ZXJwb2xhdGVZbE9yUmQ6KCk9PmxfLGludGVycG9sYXRlWm9vbTooKT0+T3AsaW50ZXJydXB0OigpPT5hcixpbnRlcnZhbDooKT0+ZmssaXNvRm9ybWF0OigpPT51ayxpc29QYXJzZTooKT0+aGssanNvbjooKT0+QXMsa2V5czooKT0+ZmEsbGFiOigpPT5UYSxsY2g6KCk9PkRhLGxpbmU6KCk9Pm14LGxpbmVSYWRpYWw6KCk9PkN4LGxpbmtIb3Jpem9udGFsOigpPT5SeCxsaW5rUmFkaWFsOigpPT5QeCxsaW5rVmVydGljYWw6KCk9PkZ4LGxvY2FsOigpPT56XyxtYXA6KCk9Pm5hLG1hdGNoZXI6KCk9Pm10LG1heDooKT0+SSxtZWFuOigpPT5SLG1lZGlhbjooKT0+RixtZXJnZTooKT0+UCxtaW46KCk9PmosbW91c2U6KCk9PkJuLG5hbWVzcGFjZTooKT0+RXQsbmFtZXNwYWNlczooKT0+VHQsbmVzdDooKT0+cmEsbm93OigpPT4kbixwYWNrOigpPT50cCxwYWNrRW5jbG9zZTooKT0+SWQscGFja1NpYmxpbmdzOigpPT5HZCxwYWlyczooKT0+bCxwYXJ0aXRpb246KCk9Pm9wLHBhdGg6KCk9PldpLHBlcm11dGU6KCk9PlkscGllOigpPT54eCxwaWVjZXdpc2U6KCk9PnFwLHBvaW50UmFkaWFsOigpPT5BeCxwb2x5Z29uQXJlYTooKT0+SHAscG9seWdvbkNlbnRyb2lkOigpPT5XcCxwb2x5Z29uQ29udGFpbnM6KCk9PlFwLHBvbHlnb25IdWxsOigpPT5acCxwb2x5Z29uTGVuZ3RoOigpPT5LcCxwcmVjaXNpb25GaXhlZDooKT0+X2MscHJlY2lzaW9uUHJlZml4OigpPT54YyxwcmVjaXNpb25Sb3VuZDooKT0+d2MscXVhZHRyZWU6KCk9PllzLHF1YW50aWxlOigpPT5PLHF1YW50aXplOigpPT4kcCxyYWRpYWxBcmVhOigpPT5TeCxyYWRpYWxMaW5lOigpPT5DeCxyYW5kb21CYXRlczooKT0+aXkscmFuZG9tRXhwb25lbnRpYWw6KCk9PmF5LHJhbmRvbUlyd2luSGFsbDooKT0+cnkscmFuZG9tTG9nTm9ybWFsOigpPT5ueSxyYW5kb21Ob3JtYWw6KCk9PmV5LHJhbmRvbVVuaWZvcm06KCk9PnR5LHJhbmdlOigpPT5rLHJnYjooKT0+UWUscmliYm9uOigpPT5LaSxzY2FsZUJhbmQ6KCk9PmR5LHNjYWxlRGl2ZXJnaW5nOigpPT5vYixzY2FsZURpdmVyZ2luZ0xvZzooKT0+c2Isc2NhbGVEaXZlcmdpbmdQb3c6KCk9PnViLHNjYWxlRGl2ZXJnaW5nU3FydDooKT0+bGIsc2NhbGVEaXZlcmdpbmdTeW1sb2c6KCk9PmNiLHNjYWxlSWRlbnRpdHk6KCk9Pk15LHNjYWxlSW1wbGljaXQ6KCk9Pmh5LHNjYWxlTGluZWFyOigpPT5BeSxzY2FsZUxvZzooKT0+UHksc2NhbGVPcmRpbmFsOigpPT5meSxzY2FsZVBvaW50OigpPT55eSxzY2FsZVBvdzooKT0+Vnksc2NhbGVRdWFudGlsZTooKT0+WHksc2NhbGVRdWFudGl6ZTooKT0+Wnksc2NhbGVTZXF1ZW50aWFsOigpPT5KdixzY2FsZVNlcXVlbnRpYWxMb2c6KCk9PnRiLHNjYWxlU2VxdWVudGlhbFBvdzooKT0+bmIsc2NhbGVTZXF1ZW50aWFsUXVhbnRpbGU6KCk9PmliLHNjYWxlU2VxdWVudGlhbFNxcnQ6KCk9PnJiLHNjYWxlU2VxdWVudGlhbFN5bWxvZzooKT0+ZWIsc2NhbGVTcXJ0OigpPT5HeSxzY2FsZVN5bWxvZzooKT0+VXksc2NhbGVUaHJlc2hvbGQ6KCk9PlF5LHNjYWxlVGltZTooKT0+WXYsc2NhbGVVdGM6KCk9Plp2LHNjYW46KCk9Pnosc2NoZW1lQWNjZW50OigpPT5kYixzY2hlbWVCbHVlczooKT0+aF8sc2NoZW1lQnJCRzooKT0+a2Isc2NoZW1lQnVHbjooKT0+emIsc2NoZW1lQnVQdTooKT0+cWIsc2NoZW1lQ2F0ZWdvcnkxMDooKT0+ZmIsc2NoZW1lRGFyazI6KCk9PnBiLHNjaGVtZUduQnU6KCk9PkhiLHNjaGVtZUdyZWVuczooKT0+ZF8sc2NoZW1lR3JleXM6KCk9PnlfLHNjaGVtZU9yUmQ6KCk9PlZiLHNjaGVtZU9yYW5nZXM6KCk9PnhfLHNjaGVtZVBSR246KCk9PkViLHNjaGVtZVBhaXJlZDooKT0+eWIsc2NoZW1lUGFzdGVsMTooKT0+Z2Isc2NoZW1lUGFzdGVsMjooKT0+bWIsc2NoZW1lUGlZRzooKT0+U2Isc2NoZW1lUHVCdTooKT0+UWIsc2NoZW1lUHVCdUduOigpPT5YYixzY2hlbWVQdU9yOigpPT5NYixzY2hlbWVQdVJkOigpPT5KYixzY2hlbWVQdXJwbGVzOigpPT5tXyxzY2hlbWVSZEJ1OigpPT5EYixzY2hlbWVSZEd5OigpPT5CYixzY2hlbWVSZFB1OigpPT5lXyxzY2hlbWVSZFlsQnU6KCk9PkliLHNjaGVtZVJkWWxHbjooKT0+RmIsc2NoZW1lUmVkczooKT0+Yl8sc2NoZW1lU2V0MTooKT0+dmIsc2NoZW1lU2V0MjooKT0+YmIsc2NoZW1lU2V0MzooKT0+X2Isc2NoZW1lU3BlY3RyYWw6KCk9PmpiLHNjaGVtZVRhYmxlYXUxMDooKT0+eGIsc2NoZW1lWWxHbjooKT0+YV8sc2NoZW1lWWxHbkJ1OigpPT5yXyxzY2hlbWVZbE9yQnI6KCk9PnNfLHNjaGVtZVlsT3JSZDooKT0+dV8sc2VsZWN0OigpPT5UZSxzZWxlY3RBbGw6KCk9PnFfLHNlbGVjdGlvbjooKT0+a2Usc2VsZWN0b3I6KCk9PnB0LHNlbGVjdG9yQWxsOigpPT5ndCxzZXQ6KCk9PmhhLHNodWZmbGU6KCk9PlUsc3RhY2s6KCk9Plh3LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOigpPT5RdyxzdGFja09mZnNldEV4cGFuZDooKT0+Wncsc3RhY2tPZmZzZXROb25lOigpPT5XdyxzdGFja09mZnNldFNpbGhvdWV0dGU6KCk9Pkt3LHN0YWNrT2Zmc2V0V2lnZ2xlOigpPT5KdyxzdGFja09yZGVyQXBwZWFyYW5jZTooKT0+dGssc3RhY2tPcmRlckFzY2VuZGluZzooKT0+bmssc3RhY2tPcmRlckRlc2NlbmRpbmc6KCk9PmlrLHN0YWNrT3JkZXJJbnNpZGVPdXQ6KCk9PmFrLHN0YWNrT3JkZXJOb25lOigpPT5WdyxzdGFja09yZGVyUmV2ZXJzZTooKT0+b2ssc3RyYXRpZnk6KCk9PmhwLHN0eWxlOigpPT5SdCxzdW06KCk9PnEsc3ZnOigpPT5PcyxzeW1ib2w6KCk9PnJ3LHN5bWJvbENpcmNsZTooKT0+angsc3ltYm9sQ3Jvc3M6KCk9Pll4LHN5bWJvbERpYW1vbmQ6KCk9PnF4LHN5bWJvbFNxdWFyZTooKT0+R3gsc3ltYm9sU3RhcjooKT0+Vngsc3ltYm9sVHJpYW5nbGU6KCk9Plp4LHN5bWJvbFd5ZTooKT0+ZXcsc3ltYm9sczooKT0+bncsdGV4dDooKT0+eHMsdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczooKT0+Qix0aHJlc2hvbGRTY290dDooKT0+TCx0aHJlc2hvbGRTdHVyZ2VzOigpPT5OLHRpY2tGb3JtYXQ6KCk9PkN5LHRpY2tJbmNyZW1lbnQ6KCk9PkEsdGlja1N0ZXA6KCk9Pk0sdGlja3M6KCk9PlMsdGltZURheTooKT0+QWcsdGltZURheXM6KCk9Pk1nLHRpbWVGb3JtYXQ6KCk9PnBtLHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOigpPT5Jdix0aW1lRm9ybWF0TG9jYWxlOigpPT5mbSx0aW1lRnJpZGF5OigpPT52Zyx0aW1lRnJpZGF5czooKT0+RWcsdGltZUhvdXI6KCk9PkRnLHRpbWVIb3VyczooKT0+T2csdGltZUludGVydmFsOigpPT50Zyx0aW1lTWlsbGlzZWNvbmQ6KCk9PllnLHRpbWVNaWxsaXNlY29uZHM6KCk9PnpnLHRpbWVNaW51dGU6KCk9PkxnLHRpbWVNaW51dGVzOigpPT5JZyx0aW1lTW9uZGF5OigpPT5wZyx0aW1lTW9uZGF5czooKT0+eGcsdGltZU1vbnRoOigpPT5hZyx0aW1lTW9udGhzOigpPT5vZyx0aW1lUGFyc2U6KCk9PnltLHRpbWVTYXR1cmRheTooKT0+YmcsdGltZVNhdHVyZGF5czooKT0+Q2csdGltZVNlY29uZDooKT0+RmcsdGltZVNlY29uZHM6KCk9PlBnLHRpbWVTdW5kYXk6KCk9PmRnLHRpbWVTdW5kYXlzOigpPT5fZyx0aW1lVGh1cnNkYXk6KCk9Pm1nLHRpbWVUaHVyc2RheXM6KCk9PlRnLHRpbWVUdWVzZGF5OigpPT55Zyx0aW1lVHVlc2RheXM6KCk9PndnLHRpbWVXZWRuZXNkYXk6KCk9PmdnLHRpbWVXZWRuZXNkYXlzOigpPT5rZyx0aW1lV2VlazooKT0+ZGcsdGltZVdlZWtzOigpPT5fZyx0aW1lWWVhcjooKT0+bmcsdGltZVllYXJzOigpPT5yZyx0aW1lb3V0OigpPT5Lbix0aW1lcjooKT0+Vm4sdGltZXJGbHVzaDooKT0+R24sdG91Y2g6KCk9Pk9uLHRvdWNoZXM6KCk9PiRfLHRyYW5zaXRpb246KCk9PiRyLHRyYW5zcG9zZTooKT0+JCx0cmVlOigpPT52cCx0cmVlbWFwOigpPT5rcCx0cmVlbWFwQmluYXJ5OigpPT5UcCx0cmVlbWFwRGljZTooKT0+YXAsdHJlZW1hcFJlc3F1YXJpZnk6KCk9PkNwLHRyZWVtYXBTbGljZTooKT0+YnAsdHJlZW1hcFNsaWNlRGljZTooKT0+RXAsdHJlZW1hcFNxdWFyaWZ5OigpPT53cCx0c3Y6KCk9PkVzLHRzdkZvcm1hdDooKT0+T28sdHN2Rm9ybWF0Qm9keTooKT0+Qm8sdHN2Rm9ybWF0Um93OigpPT5Jbyx0c3ZGb3JtYXRSb3dzOigpPT5Mbyx0c3ZGb3JtYXRWYWx1ZTooKT0+Um8sdHN2UGFyc2U6KCk9Pk5vLHRzdlBhcnNlUm93czooKT0+RG8sdXRjRGF5OigpPT5pbSx1dGNEYXlzOigpPT5hbSx1dGNGb3JtYXQ6KCk9PmdtLHV0Y0ZyaWRheTooKT0+R2csdXRjRnJpZGF5czooKT0+ZW0sdXRjSG91cjooKT0+SHYsdXRjSG91cnM6KCk9Pld2LHV0Y01pbGxpc2Vjb25kOigpPT5ZZyx1dGNNaWxsaXNlY29uZHM6KCk9PnpnLHV0Y01pbnV0ZTooKT0+R3YsdXRjTWludXRlczooKT0+WHYsdXRjTW9uZGF5OigpPT4kZyx1dGNNb25kYXlzOigpPT5RZyx1dGNNb250aDooKT0+VXYsdXRjTW9udGhzOigpPT5xdix1dGNQYXJzZTooKT0+bW0sdXRjU2F0dXJkYXk6KCk9PlhnLHV0Y1NhdHVyZGF5czooKT0+bm0sdXRjU2Vjb25kOigpPT5GZyx1dGNTZWNvbmRzOigpPT5QZyx1dGNTdW5kYXk6KCk9PnFnLHV0Y1N1bmRheXM6KCk9PlpnLHV0Y1RodXJzZGF5OigpPT5WZyx1dGNUaHVyc2RheXM6KCk9PnRtLHV0Y1R1ZXNkYXk6KCk9PkhnLHV0Y1R1ZXNkYXlzOigpPT5LZyx1dGNXZWRuZXNkYXk6KCk9PldnLHV0Y1dlZG5lc2RheXM6KCk9PkpnLHV0Y1dlZWs6KCk9PnFnLHV0Y1dlZWtzOigpPT5aZyx1dGNZZWFyOigpPT5zbSx1dGNZZWFyczooKT0+Y20sdmFsdWVzOigpPT5kYSx2YXJpYW5jZTooKT0+eSx2ZXJzaW9uOigpPT5yLHZvcm9ub2k6KCk9PktrLHdpbmRvdzooKT0+T3QseG1sOigpPT5Ocyx6aXA6KCk9Plcsem9vbTooKT0+ZlQsem9vbUlkZW50aXR5OigpPT5uVCx6b29tVHJhbnNmb3JtOigpPT5yVH0pO3ZhciByPSI1LjE2LjAiO2Z1bmN0aW9uIGkodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gYSh0KXt2YXIgZTtyZXR1cm4gMT09PXQubGVuZ3RoJiYoZT10LHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gaShlKHQpLG4pfSkse2xlZnQ6ZnVuY3Rpb24oZSxuLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtyPGk7KXt2YXIgYT1yK2k+Pj4xO3QoZVthXSxuKTwwP3I9YSsxOmk9YX1yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24oZSxuLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtyPGk7KXt2YXIgYT1yK2k+Pj4xO3QoZVthXSxuKT4wP2k9YTpyPWErMX1yZXR1cm4gcn19fXZhciBvPWEoaSkscz1vLnJpZ2h0LGM9by5sZWZ0O2NvbnN0IHU9cztmdW5jdGlvbiBsKHQsZSl7bnVsbD09ZSYmKGU9aCk7Zm9yKHZhciBuPTAscj10Lmxlbmd0aC0xLGk9dFswXSxhPW5ldyBBcnJheShyPDA/MDpyKTtuPHI7KWFbbl09ZShpLGk9dFsrK25dKTtyZXR1cm4gYX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gZih0LGUsbil7dmFyIHIsaSxhLG8scz10Lmxlbmd0aCxjPWUubGVuZ3RoLHU9bmV3IEFycmF5KHMqYyk7Zm9yKG51bGw9PW4mJihuPWgpLHI9YT0wO3I8czsrK3IpZm9yKG89dFtyXSxpPTA7aTxjOysraSwrK2EpdVthXT1uKG8sZVtpXSk7cmV0dXJuIHV9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24geSh0LGUpe3ZhciBuLHIsaT10Lmxlbmd0aCxhPTAsbz0tMSxzPTAsYz0wO2lmKG51bGw9PWUpZm9yKDsrK288aTspaXNOYU4obj1wKHRbb10pKXx8KGMrPShyPW4tcykqKG4tKHMrPXIvKythKSkpO2Vsc2UgZm9yKDsrK288aTspaXNOYU4obj1wKGUodFtvXSxvLHQpKSl8fChjKz0ocj1uLXMpKihuLShzKz1yLysrYSkpKTtpZihhPjEpcmV0dXJuIGMvKGEtMSl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPXkodCxlKTtyZXR1cm4gbj9NYXRoLnNxcnQobik6bn1mdW5jdGlvbiBtKHQsZSl7dmFyIG4scixpLGE9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxhOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3Iocj1pPW47KytvPGE7KW51bGwhPShuPXRbb10pJiYocj5uJiYocj1uKSxpPG4mJihpPW4pKX1lbHNlIGZvcig7KytvPGE7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3Iocj1pPW47KytvPGE7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmKHI+biYmKHI9biksaTxuJiYoaT1uKSk7cmV0dXJuW3IsaV19dmFyIHY9QXJyYXkucHJvdG90eXBlLGI9di5zbGljZSxfPXYubWFwO2Z1bmN0aW9uIHgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHcodCl7cmV0dXJuIHR9ZnVuY3Rpb24gayh0LGUsbil7dD0rdCxlPStlLG49KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTppPDM/MTorbjtmb3IodmFyIHI9LTEsaT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxhPW5ldyBBcnJheShpKTsrK3I8aTspYVtyXT10K3IqbjtyZXR1cm4gYX12YXIgVD1NYXRoLnNxcnQoNTApLEU9TWF0aC5zcXJ0KDEwKSxDPU1hdGguc3FydCgyKTtmdW5jdGlvbiBTKHQsZSxuKXt2YXIgcixpLGEsbyxzPS0xO2lmKG49K24sKHQ9K3QpPT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKHI9ZTx0KSYmKGk9dCx0PWUsZT1pKSwwPT09KG89QSh0LGUsbikpfHwhaXNGaW5pdGUobykpcmV0dXJuW107aWYobz4wKWZvcih0PU1hdGguY2VpbCh0L28pLGU9TWF0aC5mbG9vcihlL28pLGE9bmV3IEFycmF5KGk9TWF0aC5jZWlsKGUtdCsxKSk7KytzPGk7KWFbc109KHQrcykqbztlbHNlIGZvcih0PU1hdGguZmxvb3IodCpvKSxlPU1hdGguY2VpbChlKm8pLGE9bmV3IEFycmF5KGk9TWF0aC5jZWlsKHQtZSsxKSk7KytzPGk7KWFbc109KHQtcykvbztyZXR1cm4gciYmYS5yZXZlcnNlKCksYX1mdW5jdGlvbiBBKHQsZSxuKXt2YXIgcj0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhyKS9NYXRoLkxOMTApLGE9ci9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49VD8xMDphPj1FPzU6YT49Qz8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PVQ/MTA6YT49RT81OmE+PUM/MjoxKX1mdW5jdGlvbiBNKHQsZSxuKXt2YXIgcj1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbiksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCkpLGE9ci9pO3JldHVybiBhPj1UP2kqPTEwOmE+PUU/aSo9NTphPj1DJiYoaSo9MiksZTx0Py1pOml9ZnVuY3Rpb24gTih0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiBEKCl7dmFyIHQ9dyxlPW0sbj1OO2Z1bmN0aW9uIHIocil7dmFyIGksYSxvPXIubGVuZ3RoLHM9bmV3IEFycmF5KG8pO2ZvcihpPTA7aTxvOysraSlzW2ldPXQocltpXSxpLHIpO3ZhciBjPWUocyksbD1jWzBdLGg9Y1sxXSxmPW4ocyxsLGgpO0FycmF5LmlzQXJyYXkoZil8fChmPU0obCxoLGYpLGY9ayhNYXRoLmNlaWwobC9mKSpmLGgsZikpO2Zvcih2YXIgZD1mLmxlbmd0aDtmWzBdPD1sOylmLnNoaWZ0KCksLS1kO2Zvcig7ZltkLTFdPmg7KWYucG9wKCksLS1kO3ZhciBwLHk9bmV3IEFycmF5KGQrMSk7Zm9yKGk9MDtpPD1kOysraSkocD15W2ldPVtdKS54MD1pPjA/ZltpLTFdOmwscC54MT1pPGQ/ZltpXTpoO2ZvcihpPTA7aTxvOysraSlsPD0oYT1zW2ldKSYmYTw9aCYmeVt1KGYsYSwwLGQpXS5wdXNoKHJbaV0pO3JldHVybiB5fXJldHVybiByLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6eChlKSxyKTp0fSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OngoW3RbMF0sdFsxXV0pLHIpOmV9LHIudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/eChiLmNhbGwodCkpOngodCkscik6bn0scn1mdW5jdGlvbiBPKHQsZSxuKXtpZihudWxsPT1uJiYobj1wKSxyPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fHI8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W3ItMV0sci0xLHQpO3ZhciByLGk9KHItMSkqZSxhPU1hdGguZmxvb3IoaSksbz0rbih0W2FdLGEsdCk7cmV0dXJuIG8rKCtuKHRbYSsxXSxhKzEsdCktbykqKGktYSl9fWZ1bmN0aW9uIEIodCxlLG4pe3JldHVybiB0PV8uY2FsbCh0LHApLnNvcnQoaSksTWF0aC5jZWlsKChuLWUpLygyKihPKHQsLjc1KS1PKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX1mdW5jdGlvbiBMKHQsZSxuKXtyZXR1cm4gTWF0aC5jZWlsKChuLWUpLygzLjUqZyh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfWZ1bmN0aW9uIEkodCxlKXt2YXIgbixyLGk9dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxpOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj10W2FdKSYmbj5yJiYocj1uKX1lbHNlIGZvcig7KythPGk7KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJm4+ciYmKHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gUih0LGUpe3ZhciBuLHI9dC5sZW5ndGgsaT1yLGE9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1wKHRbYV0pKT8tLWk6bys9bjtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49cChlKHRbYV0sYSx0KSkpPy0taTpvKz1uO2lmKGkpcmV0dXJuIG8vaX1mdW5jdGlvbiBGKHQsZSl7dmFyIG4scj10Lmxlbmd0aCxhPS0xLG89W107aWYobnVsbD09ZSlmb3IoOysrYTxyOylpc05hTihuPXAodFthXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPXAoZSh0W2FdLGEsdCkpKXx8by5wdXNoKG4pO3JldHVybiBPKG8uc29ydChpKSwuNSl9ZnVuY3Rpb24gUCh0KXtmb3IodmFyIGUsbixyLGk9dC5sZW5ndGgsYT0tMSxvPTA7KythPGk7KW8rPXRbYV0ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShvKTstLWk+PTA7KWZvcihlPShyPXRbaV0pLmxlbmd0aDstLWU+PTA7KW5bLS1vXT1yW2VdO3JldHVybiBufWZ1bmN0aW9uIGoodCxlKXt2YXIgbixyLGk9dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxpOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj10W2FdKSYmcj5uJiYocj1uKX1lbHNlIGZvcig7KythPGk7KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJnI+biYmKHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gWSh0LGUpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09dFtlW25dXTtyZXR1cm4gcn1mdW5jdGlvbiB6KHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4scixhPTAsbz0wLHM9dFtvXTtmb3IobnVsbD09ZSYmKGU9aSk7KythPG47KShlKHI9dFthXSxzKTwwfHwwIT09ZShzLHMpKSYmKHM9cixvPWEpO3JldHVybiAwPT09ZShzLHMpP286dm9pZCAwfX1mdW5jdGlvbiBVKHQsZSxuKXtmb3IodmFyIHIsaSxhPShudWxsPT1uP3QubGVuZ3RoOm4pLShlPW51bGw9PWU/MDorZSk7YTspaT1NYXRoLnJhbmRvbSgpKmEtLXwwLHI9dFthK2VdLHRbYStlXT10W2krZV0sdFtpK2VdPXI7cmV0dXJuIHR9ZnVuY3Rpb24gcSh0LGUpe3ZhciBuLHI9dC5sZW5ndGgsaT0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysraTxyOykobj0rdFtpXSkmJihhKz1uKTtlbHNlIGZvcig7KytpPHI7KShuPStlKHRbaV0saSx0KSkmJihhKz1uKTtyZXR1cm4gYX1mdW5jdGlvbiAkKHQpe2lmKCEoaT10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLG49aih0LEgpLHI9bmV3IEFycmF5KG4pOysrZTxuOylmb3IodmFyIGksYT0tMSxvPXJbZV09bmV3IEFycmF5KGkpOysrYTxpOylvW2FdPXRbYV1bZV07cmV0dXJuIHJ9ZnVuY3Rpb24gSCh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gVygpe3JldHVybiAkKGFyZ3VtZW50cyl9dmFyIFY9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEcodCl7cmV0dXJuIHR9dmFyIFg9MWUtNjtmdW5jdGlvbiBaKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gUSh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIEsodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybit0KGUpfX1mdW5jdGlvbiBKKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIHR0KCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIGV0KHQsZSl7dmFyIG49W10scj1udWxsLGk9bnVsbCxhPTYsbz02LHM9MyxjPTE9PT10fHw0PT09dD8tMToxLHU9ND09PXR8fDI9PT10PyJ4IjoieSIsbD0xPT09dHx8Mz09PXQ/WjpRO2Z1bmN0aW9uIGgoaCl7dmFyIGY9bnVsbD09cj9lLnRpY2tzP2UudGlja3MuYXBwbHkoZSxuKTplLmRvbWFpbigpOnIsZD1udWxsPT1pP2UudGlja0Zvcm1hdD9lLnRpY2tGb3JtYXQuYXBwbHkoZSxuKTpHOmkscD1NYXRoLm1heChhLDApK3MseT1lLnJhbmdlKCksZz0reVswXSsuNSxtPSt5W3kubGVuZ3RoLTFdKy41LHY9KGUuYmFuZHdpZHRoP0o6SykoZS5jb3B5KCkpLGI9aC5zZWxlY3Rpb24/aC5zZWxlY3Rpb24oKTpoLF89Yi5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSkseD1iLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGYsZSkub3JkZXIoKSx3PXguZXhpdCgpLGs9eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLFQ9eC5zZWxlY3QoImxpbmUiKSxFPXguc2VsZWN0KCJ0ZXh0Iik7Xz1fLm1lcmdlKF8uZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikpLHg9eC5tZXJnZShrKSxUPVQubWVyZ2Uoay5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHUrIjIiLGMqYSkpLEU9RS5tZXJnZShrLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHUsYypwKS5hdHRyKCJkeSIsMT09PXQ/IjBlbSI6Mz09PXQ/IjAuNzFlbSI6IjAuMzJlbSIpKSxoIT09YiYmKF89Xy50cmFuc2l0aW9uKGgpLHg9eC50cmFuc2l0aW9uKGgpLFQ9VC50cmFuc2l0aW9uKGgpLEU9RS50cmFuc2l0aW9uKGgpLHc9dy50cmFuc2l0aW9uKGgpLmF0dHIoIm9wYWNpdHkiLFgpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXYodCkpP2wodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLGsuYXR0cigib3BhY2l0eSIsWCkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gbChlJiZpc0Zpbml0ZShlPWUodCkpP2U6dih0KSl9KSkpLHcucmVtb3ZlKCksXy5hdHRyKCJkIiw0PT09dHx8Mj09dD9vPyJNIitjKm8rIiwiK2crIkgwLjVWIittKyJIIitjKm86Ik0wLjUsIitnKyJWIittOm8/Ik0iK2crIiwiK2MqbysiVjAuNUgiK20rIlYiK2MqbzoiTSIrZysiLDAuNUgiK20pLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGwodih0KSl9KSksVC5hdHRyKHUrIjIiLGMqYSksRS5hdHRyKHUsYypwKS50ZXh0KGQpLGIuZmlsdGVyKHR0KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxiLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9dn0pKX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1WLmNhbGwoYXJndW1lbnRzKSxofSxoLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9bXTpWLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOlYuY2FsbCh0KSxoKTpyJiZyLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGgpOml9LGgudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bz0rdCxoKTphfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsaCk6YX0saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsaCk6c30saH1mdW5jdGlvbiBudCh0KXtyZXR1cm4gZXQoMSx0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQoMix0KX1mdW5jdGlvbiBpdCh0KXtyZXR1cm4gZXQoMyx0KX1mdW5jdGlvbiBhdCh0KXtyZXR1cm4gZXQoNCx0KX12YXIgb3Q9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gc3QoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxyPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIHJ8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtyW3RdPVtdfXJldHVybiBuZXcgY3Qocil9ZnVuY3Rpb24gY3QodCl7dGhpcy5fPXR9ZnVuY3Rpb24gdXQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixyPXQuaW5kZXhPZigiLiIpO2lmKHI+PTAmJihuPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIGx0KHQsZSl7Zm9yKHZhciBuLHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYoKG49dFtyXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gaHQodCxlLG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZih0W3JdLm5hbWU9PT1lKXt0W3JdPW90LHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1jdC5wcm90b3R5cGU9c3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcy5fLGk9dXQodCsiIixyKSxhPS0xLG89aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8bzspaWYobj0odD1pW2FdKS50eXBlKXJbbl09aHQocltuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIHIpcltuXT1odChyW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxvOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49bHQocltuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgY3QodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLHIsaT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0ocj10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKXJbYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXJbaV0udmFsdWUuYXBwbHkoZSxuKX19O2NvbnN0IGZ0PXN0O2Z1bmN0aW9uIGR0KCl7fWZ1bmN0aW9uIHB0KHQpe3JldHVybiBudWxsPT10P2R0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24geXQoKXtyZXR1cm5bXX1mdW5jdGlvbiBndCh0KXtyZXR1cm4gbnVsbD09dD95dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIG10KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIGJ0KHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIF90KHQsZSxuLHIsaSxhKXtmb3IodmFyIG8scz0wLGM9ZS5sZW5ndGgsdT1hLmxlbmd0aDtzPHU7KytzKShvPWVbc10pPyhvLl9fZGF0YV9fPWFbc10scltzXT1vKTpuW3NdPW5ldyBidCh0LGFbc10pO2Zvcig7czxjOysrcykobz1lW3NdKSYmKGlbc109byl9ZnVuY3Rpb24geHQodCxlLG4scixpLGEsbyl7dmFyIHMsYyx1LGw9e30saD1lLmxlbmd0aCxmPWEubGVuZ3RoLGQ9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmKGRbc109dT0iJCIrby5jYWxsKGMsYy5fX2RhdGFfXyxzLGUpLHUgaW4gbD9pW3NdPWM6bFt1XT1jKTtmb3Iocz0wO3M8ZjsrK3MpKGM9bFt1PSIkIitvLmNhbGwodCxhW3NdLHMsYSldKT8ocltzXT1jLGMuX19kYXRhX189YVtzXSxsW3VdPW51bGwpOm5bc109bmV3IGJ0KHQsYVtzXSk7Zm9yKHM9MDtzPGg7KytzKShjPWVbc10pJiZsW2Rbc11dPT09YyYmKGlbc109Yyl9ZnVuY3Rpb24gd3QodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59YnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpidCxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTt2YXIga3Q9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IFR0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDprdCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIEV0KHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLFR0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpUdFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIEN0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBTdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEF0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gTXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gTnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIER0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIE90KHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBCdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBMdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIEl0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsbil9fWZ1bmN0aW9uIFJ0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8T3QodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gRnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFB0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBqdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24genQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgVXQodCl9ZnVuY3Rpb24gVXQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVl0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gcXQodCxlKXtmb3IodmFyIG49enQodCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLmFkZChlW3JdKX1mdW5jdGlvbiAkdCh0LGUpe2Zvcih2YXIgbj16dCh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4ucmVtb3ZlKGVbcl0pfWZ1bmN0aW9uIEh0KHQpe3JldHVybiBmdW5jdGlvbigpe3F0KHRoaXMsdCl9fWZ1bmN0aW9uIFd0KHQpe3JldHVybiBmdW5jdGlvbigpeyR0KHRoaXMsdCl9fWZ1bmN0aW9uIFZ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP3F0OiR0KSh0aGlzLHQpfX1mdW5jdGlvbiBHdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gWHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBadCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gUXQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBLdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBKdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHRlKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGVlKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gbmUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1rdCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09a3Q/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIHJlKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGllKHQpe3ZhciBlPUV0KHQpO3JldHVybihlLmxvY2FsP3JlOm5lKShlKX1mdW5jdGlvbiBhZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIG9lKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gc2UoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGNlKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1VdC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciB1ZT17fSxsZT1udWxsO2Z1bmN0aW9uIGhlKHQsZSxuKXtyZXR1cm4gdD1mZSh0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIGZlKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9bGU7bGU9cjt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7bGU9aX19fWZ1bmN0aW9uIGRlKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4scj0wLGk9LTEsYT1lLmxlbmd0aDtyPGE7KytyKW49ZVtyXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytpXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysraT9lLmxlbmd0aD1pOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiB5ZSh0LGUsbil7dmFyIHI9dWUuaGFzT3duUHJvcGVydHkodC50eXBlKT9oZTpmZTtyZXR1cm4gZnVuY3Rpb24oaSxhLG8pe3ZhciBzLGM9dGhpcy5fX29uLHU9cihlLGEsbyk7aWYoYylmb3IodmFyIGw9MCxoPWMubGVuZ3RoO2w8aDsrK2wpaWYoKHM9Y1tsXSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9dSxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsdSxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOnUsY2FwdHVyZTpufSxjP2MucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBnZSh0LGUsbixyKXt2YXIgaT1sZTt0LnNvdXJjZUV2ZW50PWxlLGxlPXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4scil9ZmluYWxseXtsZT1pfX1mdW5jdGlvbiBtZSh0LGUsbil7dmFyIHI9T3QodCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkoZSxuKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KGkuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksaS5kZXRhaWw9bi5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gdmUodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbWUodGhpcyx0LGUpfX1mdW5jdGlvbiBiZSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fCh1ZT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIF9lPVtudWxsXTtmdW5jdGlvbiB4ZSh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiB3ZSgpe3JldHVybiBuZXcgeGUoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxfZSl9eGUucHJvdG90eXBlPXdlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6eGUsc2VsZWN0OmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1wdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvLHM9ZVtpXSxjPXMubGVuZ3RoLHU9cltpXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKGE9c1tsXSkmJihvPXQuY2FsbChhLGEuX19kYXRhX18sbCxzKSkmJigiX19kYXRhX18iaW4gYSYmKG8uX19kYXRhX189YS5fX2RhdGFfXyksdVtsXT1vKTtyZXR1cm4gbmV3IHhlKHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Z3QodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciBvLHM9ZVthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiYoci5wdXNoKHQuY2FsbChvLG8uX19kYXRhX18sdSxzKSksaS5wdXNoKG8pKTtyZXR1cm4gbmV3IHhlKHIsaSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bXQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbz1lW2ldLHM9by5sZW5ndGgsYz1yW2ldPVtdLHU9MDt1PHM7Kyt1KShhPW9bdV0pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLHUsbykmJmMucHVzaChhKTtyZXR1cm4gbmV3IHhlKHIsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGw9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtwWysrbF09dH0pKSxwO3ZhciBuLHI9ZT94dDpfdCxpPXRoaXMuX3BhcmVudHMsYT10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJihuPXQsdD1mdW5jdGlvbigpe3JldHVybiBufSk7Zm9yKHZhciBvPWEubGVuZ3RoLHM9bmV3IEFycmF5KG8pLGM9bmV3IEFycmF5KG8pLHU9bmV3IEFycmF5KG8pLGw9MDtsPG87KytsKXt2YXIgaD1pW2xdLGY9YVtsXSxkPWYubGVuZ3RoLHA9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyxsLGkpLHk9cC5sZW5ndGgsZz1jW2xdPW5ldyBBcnJheSh5KSxtPXNbbF09bmV3IEFycmF5KHkpO3IoaCxmLGcsbSx1W2xdPW5ldyBBcnJheShkKSxwLGUpO2Zvcih2YXIgdixiLF89MCx4PTA7Xzx5OysrXylpZih2PWdbX10pe2ZvcihfPj14JiYoeD1fKzEpOyEoYj1tW3hdKSYmKyt4PHk7KTt2Ll9uZXh0PWJ8fG51bGx9fXJldHVybihzPW5ldyB4ZShzLGkpKS5fZW50ZXI9YyxzLl9leGl0PXUsc30sZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHhlKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKHZ0KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbigpe3JldHVybiBuZXcgeGUodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcCh2dCksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgdD90KHIpOnIuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLHImJmk/ci5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyB4ZShvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIHIsaT10W2VdLGE9aS5sZW5ndGgtMSxvPWlbYV07LS1hPj0wOykocj1pW2FdKSYmKG8mJjReci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKSYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLG8pLG89cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD13dCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxyPW4ubGVuZ3RoLGk9bmV3IEFycmF5KHIpLGE9MDthPHI7KythKXtmb3IodmFyIG8scz1uW2FdLGM9cy5sZW5ndGgsdT1pW2FdPW5ldyBBcnJheShjKSxsPTA7bDxjOysrbCkobz1zW2xdKSYmKHVbbF09byk7dS5zb3J0KGUpfXJldHVybiBuZXcgeGUoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByPXRbZV0saT0wLGE9ci5sZW5ndGg7aTxhOysraSl7dmFyIG89cltpXTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxyPWUubGVuZ3RoO248cjsrK24pZm9yKHZhciBpLGE9ZVtuXSxvPTAscz1hLmxlbmd0aDtvPHM7KytvKShpPWFbb10pJiZ0LmNhbGwoaSxpLl9fZGF0YV9fLG8sYSk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1FdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/U3Q6Q3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9EdDpOdDpuLmxvY2FsP010OkF0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0J0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP0l0Okx0KSh0LGUsbnVsbD09bj8iIjpuKSk6UnQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/RnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/anQ6UHQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49WXQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9enQodGhpcy5ub2RlKCkpLGk9LTEsYT1uLmxlbmd0aDsrK2k8YTspaWYoIXIuY29udGFpbnMobltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/VnQ6ZT9IdDpXdCkobixlKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/R3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1p0Olh0KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/UXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0p0Okt0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2godGUpfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZWUpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppZSh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmllKHQpLHI9bnVsbD09ZT9hZToiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnB0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKG9lKX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/Y2U6c2UpfSxkYXR1bTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9ZGUodCsiIiksbz1hLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/eWU6cGUsbnVsbD09biYmKG49ITEpLHI9MDtyPG87KytyKXRoaXMuZWFjaChzKGFbcl0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgYyx1PTAsbD1zLmxlbmd0aDt1PGw7Kyt1KWZvcihyPTAsYz1zW3VdO3I8bzsrK3IpaWYoKGk9YVtyXSkudHlwZT09PWMudHlwZSYmaS5uYW1lPT09Yy5uYW1lKXJldHVybiBjLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2JlOnZlKSh0LGUpKX19O2NvbnN0IGtlPXdlO2Z1bmN0aW9uIFRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeGUoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB4ZShbW3RdXSxfZSl9ZnVuY3Rpb24gRWUoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBDZSgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gU2UodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1UZSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLENlLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLENlLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBBZSh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9VGUodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoci5vbigiY2xpY2suZHJhZyIsQ2UsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBNZSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gTmUodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gZSluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gRGUoKXt9dmFyIE9lPS43LEJlPTEvT2UsTGU9IlxccyooWystXT9cXGQrKVxccyoiLEllPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFJlPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixGZT0vXiMoWzAtOWEtZl17Myw4fSkkLyxQZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbTGUsTGUsTGVdKyJcXCkkIiksamU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1JlLFJlLFJlXSsiXFwpJCIpLFllPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbTGUsTGUsTGUsSWVdKyJcXCkkIiksemU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tSZSxSZSxSZSxJZV0rIlxcKSQiKSxVZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbSWUsUmUsUmVdKyJcXCkkIikscWU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tJZSxSZSxSZSxJZV0rIlxcKSQiKSwkZT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBIZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFdlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gVmUodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9RmUuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9HZShlKTozPT09bj9uZXcgS2UoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP1hlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP1hlKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9UGUuZXhlYyh0KSk/bmV3IEtlKGVbMV0sZVsyXSxlWzNdLDEpOihlPWplLmV4ZWModCkpP25ldyBLZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1ZZS5leGVjKHQpKT9YZShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT16ZS5leGVjKHQpKT9YZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1VZS5leGVjKHQpKT9ubihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXFlLmV4ZWModCkpP25uKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6JGUuaGFzT3duUHJvcGVydHkodCk/R2UoJGVbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBLZShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEdlKHQpe3JldHVybiBuZXcgS2UodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFhlKHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgS2UodCxlLG4scil9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEZXx8KHQ9VmUodCkpLHQ/bmV3IEtlKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBLZX1mdW5jdGlvbiBRZSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WmUodCk6bmV3IEtlKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBLZSh0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gSmUoKXtyZXR1cm4iIyIrZW4odGhpcy5yKStlbih0aGlzLmcpK2VuKHRoaXMuYil9ZnVuY3Rpb24gdG4oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBlbih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIG5uKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgb24odCxlLG4scil9ZnVuY3Rpb24gcm4odCl7aWYodCBpbnN0YW5jZW9mIG9uKXJldHVybiBuZXcgb24odC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRGV8fCh0PVZlKHQpKSwhdClyZXR1cm4gbmV3IG9uO2lmKHQgaW5zdGFuY2VvZiBvbilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IG9uKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gYW4odCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JuKHQpOm5ldyBvbih0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gb24odCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIHNuKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBjbih0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fWZ1bmN0aW9uIHVuKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBjbigobi1yL2UpKmUsbyxpLGEscyl9fWZ1bmN0aW9uIGxuKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSksaT10WyhyK2UtMSklZV0sYT10W3IlZV0sbz10WyhyKzEpJWVdLHM9dFsocisyKSVlXTtyZXR1cm4gY24oKG4tci9lKSplLGksYSxvLHMpfX1mdW5jdGlvbiBobih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gZm4odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBkbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mbih0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6aG4oaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBwbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mbih0LG4pOmhuKGlzTmFOKHQpP2U6dCl9TWUoRGUsVmUse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6SGUsZm9ybWF0SGV4OkhlLGZvcm1hdEhzbDpmdW5jdGlvbigpe3JldHVybiBybih0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOldlLHRvU3RyaW5nOldlfSksTWUoS2UsUWUsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/QmU6TWF0aC5wb3coQmUsdCksbmV3IEtlKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P09lOk1hdGgucG93KE9lLHQpLG5ldyBLZSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OkplLGZvcm1hdEhleDpKZSxmb3JtYXRSZ2I6dG4sdG9TdHJpbmc6dG59KSksTWUob24sYW4sTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/QmU6TWF0aC5wb3coQmUsdCksbmV3IG9uKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/T2U6TWF0aC5wb3coT2UsdCksbmV3IG9uKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLHI9bisobjwuNT9uOjEtbikqZSxpPTIqbi1yO3JldHVybiBuZXcgS2Uoc24odD49MjQwP3QtMjQwOnQrMTIwLGksciksc24odCxpLHIpLHNuKHQ8MTIwP3QrMjQwOnQtMTIwLGksciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7Y29uc3QgeW49ZnVuY3Rpb24gdChlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gMT09KHQ9K3QpP3BuOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKmUsbil9fShlLG4sdCk6aG4oaXNOYU4oZSk/bjplKX19KGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgcj1uKCh0PVFlKHQpKS5yLChlPVFlKGUpKS5yKSxpPW4odC5nLGUuZyksYT1uKHQuYixlLmIpLG89cG4odC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9cihlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIGduKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixyLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKXI9UWUoZVtuXSksYVtuXT1yLnJ8fDAsb1tuXT1yLmd8fDAsc1tuXT1yLmJ8fDA7cmV0dXJuIGE9dChhKSxvPXQobykscz10KHMpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9YSh0KSxyLmc9byh0KSxyLmI9cyh0KSxyKyIifX19dmFyIG1uPWduKHVuKSx2bj1nbihsbik7ZnVuY3Rpb24gYm4odCxlKXtlfHwoZT1bXSk7dmFyIG4scj10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLGk9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihhKXtmb3Iobj0wO248cjsrK24paVtuXT10W25dKigxLWEpK2Vbbl0qYTtyZXR1cm4gaX19ZnVuY3Rpb24gX24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIHhuKHQsZSl7cmV0dXJuKF9uKGUpP2JuOnduKSh0LGUpfWZ1bmN0aW9uIHduKHQsZSl7dmFyIG4scj1lP2UubGVuZ3RoOjAsaT10P01hdGgubWluKHIsdC5sZW5ndGgpOjAsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPGk7KytuKWFbbl09TW4odFtuXSxlW25dKTtmb3IoO248cjsrK24pb1tuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pb1tuXT1hW25dKHQpO3JldHVybiBvfX1mdW5jdGlvbiBrbih0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIG4uc2V0VGltZSh0KigxLXIpK2Uqciksbn19ZnVuY3Rpb24gVG4odCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gRW4odCxlKXt2YXIgbixyPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9yW25dPU1uKHRbbl0sZVtuXSk6aVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiByKWlbbl09cltuXSh0KTtyZXR1cm4gaX19dmFyIENuPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTbj1uZXcgUmVnRXhwKENuLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEFuKHQsZSl7dmFyIG4scixpLGE9Q24ubGFzdEluZGV4PVNuLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1Dbi5leGVjKHQpKSYmKHI9U24uZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4OlRuKG4scil9KSksYT1Tbi5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIE1uKHQsZSl7dmFyIG4scj10eXBlb2YgZTtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT09cj9obihlKTooIm51bWJlciI9PT1yP1RuOiJzdHJpbmciPT09cj8obj1WZShlKSk/KGU9bix5bik6QW46ZSBpbnN0YW5jZW9mIFZlP3luOmUgaW5zdGFuY2VvZiBEYXRlP2tuOl9uKGUpP2JuOkFycmF5LmlzQXJyYXkoZSk/d246ImZ1bmN0aW9uIiE9dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmd8fGlzTmFOKGUpP0VuOlRuKSh0LGUpfWZ1bmN0aW9uIE5uKCl7Zm9yKHZhciB0LGU9bGU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gRG4odCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgcj1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIHIueD1lLmNsaWVudFgsci55PWUuY2xpZW50WSxbKHI9ci5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LHIueV19dmFyIGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLWkubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLWkudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBPbih0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9Tm4oKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciByLGk9MCxhPWU/ZS5sZW5ndGg6MDtpPGE7KytpKWlmKChyPWVbaV0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBEbih0LHIpO3JldHVybiBudWxsfWZ1bmN0aW9uIEJuKHQpe3ZhciBlPU5uKCk7cmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMmJihlPWUuY2hhbmdlZFRvdWNoZXNbMF0pLERuKHQsZSl9dmFyIExuLEluLFJuPTAsRm49MCxQbj0wLGpuPTAsWW49MCx6bj0wLFVuPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHFuPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uICRuKCl7cmV0dXJuIFlufHwocW4oSG4pLFluPVVuLm5vdygpK3puKX1mdW5jdGlvbiBIbigpe1luPTB9ZnVuY3Rpb24gV24oKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIFZuKHQsZSxuKXt2YXIgcj1uZXcgV247cmV0dXJuIHIucmVzdGFydCh0LGUsbikscn1mdW5jdGlvbiBHbigpeyRuKCksKytSbjtmb3IodmFyIHQsZT1MbjtlOykodD1Zbi1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tUm59ZnVuY3Rpb24gWG4oKXtZbj0oam49VW4ubm93KCkpK3puLFJuPUZuPTA7dHJ5e0duKCl9ZmluYWxseXtSbj0wLGZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbj1MbixyPTEvMDtuOyluLl9jYWxsPyhyPm4uX3RpbWUmJihyPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6TG49ZSk7SW49dCxRbihyKX0oKSxZbj0wfX1mdW5jdGlvbiBabigpe3ZhciB0PVVuLm5vdygpLGU9dC1qbjtlPjFlMyYmKHpuLT1lLGpuPXQpfWZ1bmN0aW9uIFFuKHQpe1JufHwoRm4mJihGbj1jbGVhclRpbWVvdXQoRm4pKSx0LVluPjI0Pyh0PDEvMCYmKEZuPXNldFRpbWVvdXQoWG4sdC1Vbi5ub3coKS16bikpLFBuJiYoUG49Y2xlYXJJbnRlcnZhbChQbikpKTooUG58fChqbj1Vbi5ub3coKSxQbj1zZXRJbnRlcnZhbChabiwxZTMpKSxSbj0xLHFuKFhuKSkpfWZ1bmN0aW9uIEtuKHQsZSxuKXt2YXIgcj1uZXcgV247cmV0dXJuIGU9bnVsbD09ZT8wOitlLHIucmVzdGFydCgoZnVuY3Rpb24obil7ci5zdG9wKCksdChuK2UpfSksZSxuKSxyfVduLnByb3RvdHlwZT1Wbi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlduLHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj8kbigpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxJbj09PXRoaXN8fChJbj9Jbi5fbmV4dD10aGlzOkxuPXRoaXMsSW49dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixRbigpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxRbigpKX19O3ZhciBKbj1mdCgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSx0cj1bXTtmdW5jdGlvbiBlcih0LGUsbixyLGksYSl7dmFyIG89dC5fX3RyYW5zaXRpb247aWYobyl7aWYobiBpbiBvKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbih0LGUsbil7dmFyIHIsaT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKGMpe3ZhciB1LGwsaCxmO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKHUgaW4gaSlpZigoZj1pW3VdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09Zi5zdGF0ZSlyZXR1cm4gS24oYSk7ND09PWYuc3RhdGU/KGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pOit1PGUmJihmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKX1pZihLbigoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbyhjKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLHI9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLHU9MCxsPS0xO3U8aDsrK3UpKGY9bi50d2Vlblt1XS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKHJbKytsXT1mKTtyLmxlbmd0aD1sKzF9fWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciBpPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksYT0tMSxvPXIubGVuZ3RoOysrYTxvOylyW2FdLmNhbGwodCxpKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIHIgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSBpW2VdLGkpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1pW2VdPW4sbi50aW1lcj1WbigoZnVuY3Rpb24odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KHQsbix7bmFtZTplLGluZGV4OnIsZ3JvdXA6aSxvbjpKbix0d2Vlbjp0cix0aW1lOmEudGltZSxkZWxheTphLmRlbGF5LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzZTphLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gbnIodCxlKXt2YXIgbj1pcih0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHJyKHQsZSl7dmFyIG49aXIodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gaXIodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhcih0LGUpe3ZhciBuLHIsaSxhPXQuX190cmFuc2l0aW9uLG89ITA7aWYoYSl7Zm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixhKShuPWFbaV0pLm5hbWU9PT1lPyhyPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgYVtpXSk6bz0hMTtvJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fXZhciBvcixzcixjcix1cixscj0xODAvTWF0aC5QSSxocj17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBmcih0LGUsbixyLGksYSl7dmFyIG8scyxjO3JldHVybihvPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1vLGUvPW8pLChjPXQqbitlKnIpJiYobi09dCpjLHItPWUqYyksKHM9TWF0aC5zcXJ0KG4qbityKnIpKSYmKG4vPXMsci89cyxjLz1zKSx0KnI8ZSpuJiYodD0tdCxlPS1lLGM9LWMsbz0tbykse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpscixza2V3WDpNYXRoLmF0YW4oYykqbHIsc2NhbGVYOm8sc2NhbGVZOnN9fWZ1bmN0aW9uIGRyKHQsZSxuLHIpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLG8pe3ZhciBzPVtdLGM9W107cmV0dXJuIGE9dChhKSxvPXQobyksZnVuY3Rpb24odCxyLGksYSxvLHMpe2lmKHQhPT1pfHxyIT09YSl7dmFyIGM9by5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6Yy00LHg6VG4odCxpKX0se2k6Yy0yLHg6VG4ocixhKX0pfWVsc2UoaXx8YSkmJm8ucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxhLnB1c2goe2k6bi5wdXNoKGkobikrInJvdGF0ZSgiLG51bGwsciktMix4OlRuKHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urcil9KGEucm90YXRlLG8ucm90YXRlLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/YS5wdXNoKHtpOm4ucHVzaChpKG4pKyJza2V3WCgiLG51bGwsciktMix4OlRuKHQsZSl9KTplJiZuLnB1c2goaShuKSsic2tld1goIitlK3IpfShhLnNrZXdYLG8uc2tld1gscyxjKSxmdW5jdGlvbih0LGUsbixyLGEsbyl7aWYodCE9PW58fGUhPT1yKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7by5wdXNoKHtpOnMtNCx4OlRuKHQsbil9LHtpOnMtMix4OlRuKGUscil9KX1lbHNlIDE9PT1uJiYxPT09cnx8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrcisiKSIpfShhLnNjYWxlWCxhLnNjYWxlWSxvLnNjYWxlWCxvLnNjYWxlWSxzLGMpLGE9bz1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLHI9Yy5sZW5ndGg7KytuPHI7KXNbKGU9Y1tuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIHByPWRyKChmdW5jdGlvbih0KXtyZXR1cm4ibm9uZSI9PT10P2hyOihvcnx8KG9yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHNyPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjcj1kb2N1bWVudC5kZWZhdWx0Vmlldyksb3Iuc3R5bGUudHJhbnNmb3JtPXQsdD1jci5nZXRDb21wdXRlZFN0eWxlKHNyLmFwcGVuZENoaWxkKG9yKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxzci5yZW1vdmVDaGlsZChvciksZnIoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHlyPWRyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9ocjoodXJ8fCh1cj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx1ci5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9dXIudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/ZnIoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6aHIpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBncih0LGUpe3ZhciBuLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9cnIodGhpcyx0KSxhPWkudHdlZW47aWYoYSE9PW4pZm9yKHZhciBvPTAscz0ocj1uPWEpLmxlbmd0aDtvPHM7KytvKWlmKHJbb10ubmFtZT09PWUpeyhyPXIuc2xpY2UoKSkuc3BsaWNlKG8sMSk7YnJlYWt9aS50d2Vlbj1yfX1mdW5jdGlvbiBtcih0LGUsbil7dmFyIHIsaTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9cnIodGhpcyx0KSxvPWEudHdlZW47aWYobyE9PXIpe2k9KHI9bykuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxjPTAsdT1pLmxlbmd0aDtjPHU7KytjKWlmKGlbY10ubmFtZT09PWUpe2lbY109czticmVha31jPT09dSYmaS5wdXNoKHMpfWEudHdlZW49aX19ZnVuY3Rpb24gdnIodCxlLG4pe3ZhciByPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9cnIodGhpcyxyKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gaXIodCxyKS52YWx1ZVtlXX19ZnVuY3Rpb24gYnIodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP1RuOmUgaW5zdGFuY2VvZiBWZT95bjoobj1WZShlKSk/KGU9bix5bik6QW4pKHQsZSl9ZnVuY3Rpb24gX3IodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHhyKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gd3IodCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19ZnVuY3Rpb24ga3IodCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIFRyKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1jKyIiKT9udWxsOm89PT1yJiZzPT09aT9hOihpPXMsYT1lKHI9byxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIEVyKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gQ3IodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIFNyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gQXIodCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZTcih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gTXIodCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZDcih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gTnIodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtucih0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gRHIodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe25yKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtycih0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gQnIodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3JyKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gTHIodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7cnIodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIElyKHQsZSxuKXt2YXIgcixpLGE9ZnVuY3Rpb24odCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfShlKT9ucjpycjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1hKHRoaXMsdCkscz1vLm9uO3MhPT1yJiYoaT0ocj1zKS5jb3B5KCkpLm9uKGUsbiksby5vbj1pfX12YXIgUnI9a2UucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIEZyKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIFByKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLHIpLG4pfX1mdW5jdGlvbiBqcih0LGUsbil7dmFyIHIsaTtmdW5jdGlvbiBhKCl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYocj0oaT1hKSYmUHIodCxhLG4pKSxyfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gWXIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIHpyKHQpe3ZhciBlLG47ZnVuY3Rpb24gcigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09biYmKGU9KG49cikmJllyKHIpKSxlfXJldHVybiByLl92YWx1ZT10LHJ9dmFyIFVyPTA7ZnVuY3Rpb24gcXIodCxlLG4scil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1yfWZ1bmN0aW9uICRyKHQpe3JldHVybiBrZSgpLnRyYW5zaXRpb24odCl9ZnVuY3Rpb24gSHIoKXtyZXR1cm4rK1VyfXZhciBXcj1rZS5wcm90b3R5cGU7ZnVuY3Rpb24gVnIodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIEdyKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBYcih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn1xci5wcm90b3R5cGU9JHIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxcixzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1wdCh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgcyxjLHU9cltvXSxsPXUubGVuZ3RoLGg9YVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpKHM9dVtmXSkmJihjPXQuY2FsbChzLHMuX19kYXRhX18sZix1KSkmJigiX19kYXRhX18iaW4gcyYmKGMuX19kYXRhX189cy5fX2RhdGFfXyksaFtmXT1jLGVyKGhbZl0sZSxuLGYsaCxpcihzLG4pKSk7cmV0dXJuIG5ldyBxcihhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Z3QodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPVtdLG89W10scz0wO3M8aTsrK3MpZm9yKHZhciBjLHU9cltzXSxsPXUubGVuZ3RoLGg9MDtoPGw7KytoKWlmKGM9dVtoXSl7Zm9yKHZhciBmLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxoLHUpLHA9aXIoYyxuKSx5PTAsZz1kLmxlbmd0aDt5PGc7Kyt5KShmPWRbeV0pJiZlcihmLGUsbix5LGQscCk7YS5wdXNoKGQpLG8ucHVzaChjKX1yZXR1cm4gbmV3IHFyKGEsbyxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW10KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBxcihyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyBxcihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgUnIodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUhyKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpaWYobz1zW3VdKXt2YXIgbD1pcihvLGUpO2VyKG8sdCxuLHUscyx7dGltZTpsLnRpbWUrbC5kZWxheStsLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246bC5kdXJhdGlvbixlYXNlOmwuZWFzZX0pfXJldHVybiBuZXcgcXIocix0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6V3IuY2FsbCxub2RlczpXci5ub2Rlcyxub2RlOldyLm5vZGUsc2l6ZTpXci5zaXplLGVtcHR5OldyLmVtcHR5LGVhY2g6V3IuZWFjaCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aXIodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKElyKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1FdCh0KSxyPSJ0cmFuc2Zvcm0iPT09bj95cjpicjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9FcjpUcikobixyLHZyKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3hyOl9yKShuKToobi5sb2NhbD9rcjp3cikobixyLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgcj1FdCh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChyLmxvY2FsP0FyOk1yKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP3ByOmJyO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVJ0KHRoaXMsdCksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxSdCh0aGlzLHQpKTtyZXR1cm4gYT09PW8/bnVsbDphPT09biYmbz09PXI/aTppPWUobj1hLHI9byl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxGcih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1SdCh0aGlzLHQpLHM9bih0aGlzKSxjPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9cz1SdCh0aGlzLHQpKSxvPT09Yz9udWxsOm89PT1yJiZjPT09aT9hOihpPWMsYT1lKHI9byxzKSl9fSh0LHIsdnIodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhLG89InN0eWxlLiIrZSxzPSJlbmQuIitvO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXJyKHRoaXMsdCksdT1jLm9uLGw9bnVsbD09Yy52YWx1ZVtvXT9hfHwoYT1GcihlKSk6dm9pZCAwO3U9PT1uJiZpPT09bHx8KHI9KG49dSkuY29weSgpKS5vbihzLGk9bCksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1SdCh0aGlzLHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19KHQscixlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixqcih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSh2cih0aGlzLCJ0ZXh0Iix0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0obnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsenIodCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PXQpcmV0dXJuO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByLGk9aXIodGhpcy5ub2RlKCksbikudHdlZW4sYT0wLG89aS5sZW5ndGg7YTxvOysrYSlpZigocj1pW2FdKS5uYW1lPT09dClyZXR1cm4gci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP2dyOm1yKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P05yOkRyKShlLHQpKTppcih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9PcjpCcikoZSx0KSk6aXIodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKExyKGUsdCkpOmlyKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbyl7dmFyIHM9e3ZhbHVlOm99LGM9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49cnIodGhpcyxyKSxpPW4ub247aSE9PXQmJigoZT0odD1pKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChjKSksbi5vbj1lfSkpfSkpfX07dmFyIFpyPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpYcn07ZnVuY3Rpb24gUXIodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gWnIudGltZT0kbigpLFpyO3JldHVybiBufWtlLnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXthcih0aGlzLHQpfSkpfSxrZS5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBxcj8oZT10Ll9pZCx0PXQuX25hbWUpOihlPUhyKCksKG49WnIpLnRpbWU9JG4oKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiZlcihvLHQsZSx1LHMsbnx8UXIobyxlKSk7cmV0dXJuIG5ldyBxcihyLHRoaXMuX3BhcmVudHMsdCxlKX07dmFyIEtyPVtudWxsXTtmdW5jdGlvbiBKcih0LGUpe3ZhciBuLHIsaT10Ll9fdHJhbnNpdGlvbjtpZihpKWZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsaSlpZigobj1pW3JdKS5zdGF0ZT4xJiZuLm5hbWU9PT1lKXJldHVybiBuZXcgcXIoW1t0XV0sS3IsZSwrcik7cmV0dXJuIG51bGx9ZnVuY3Rpb24gdGkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGVpKHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gbmkoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiByaSgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIGlpPXtuYW1lOiJkcmFnIn0sYWk9e25hbWU6InNwYWNlIn0sb2k9e25hbWU6ImhhbmRsZSJ9LHNpPXtuYW1lOiJjZW50ZXIifTtmdW5jdGlvbiBjaSh0KXtyZXR1cm5bK3RbMF0sK3RbMV1dfWZ1bmN0aW9uIHVpKHQpe3JldHVybltjaSh0WzBdKSxjaSh0WzFdKV19ZnVuY3Rpb24gbGkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBPbihlLGxlLnRvdWNoZXMsdCl9fXZhciBoaT17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKGJpKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1srdFswXSxlWzBdWzFdXSxbK3RbMV0sZVsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzBdLHRbMV1bMF1dfX0sZmk9e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcChiaSksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LGRpPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChiaSksaW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/bnVsbDp1aSh0KX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0scGk9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHlpPXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxnaT17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sbWk9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sdmk9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24gYmkodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gX2koKXtyZXR1cm4hbGUuY3RybEtleSYmIWxlLmJ1dHRvbn1mdW5jdGlvbiB4aSgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIHdpKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGtpKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gVGkodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBFaSh0KXt2YXIgZT10Ll9fYnJ1c2g7cmV0dXJuIGU/ZS5kaW0ub3V0cHV0KGUuc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uIENpKCl7cmV0dXJuIE1pKGhpKX1mdW5jdGlvbiBTaSgpe3JldHVybiBNaShmaSl9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gTWkoZGkpfWZ1bmN0aW9uIE1pKHQpe3ZhciBlLG49eGkscj1faSxpPXdpLGE9ITAsbz1mdCgic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBjKGUpe3ZhciBuPWUucHJvcGVydHkoIl9fYnJ1c2giLHkpLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtiaSgib3ZlcmxheSIpXSk7bi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixwaS5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWtpKHRoaXMpLmV4dGVudDtUZSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksZS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtiaSgic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixwaS5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgcj1lLnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEodC5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO3IuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gcGlbdC50eXBlXX0pKSxlLmVhY2godSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLGYpLmZpbHRlcihpKS5vbigidG91Y2hzdGFydC5icnVzaCIsZikub24oInRvdWNobW92ZS5icnVzaCIsZCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixwKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gdSgpe3ZhciB0PVRlKHRoaXMpLGU9a2kodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1zLzI6ZVswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLXMvMjplWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlLG4pe3ZhciByPXQuX19icnVzaC5lbWl0dGVyO3JldHVybiFyfHxuJiZyLmNsZWFuP25ldyBoKHQsZSxuKTpyfWZ1bmN0aW9uIGgodCxlLG4pe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ufWZ1bmN0aW9uIGYoKXtpZigoIWV8fGxlLnRvdWNoZXMpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4saSxvLHMsYyxoLGYsZCxwLHksZyxtPXRoaXMsdj1sZS50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KGEmJmxlLm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/aWk6YSYmbGUuYWx0S2V5P3NpOm9pLF89dD09PWZpP251bGw6bWlbdl0seD10PT09aGk/bnVsbDp2aVt2XSx3PWtpKG0pLGs9dy5leHRlbnQsVD13LnNlbGVjdGlvbixFPWtbMF1bMF0sQz1rWzBdWzFdLFM9a1sxXVswXSxBPWtbMV1bMV0sTT0wLE49MCxEPV8mJngmJmEmJmxlLnNoaWZ0S2V5LE89bGUudG91Y2hlcz9saShsZS5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpCbixCPU8obSksTD1CLEk9bChtLGFyZ3VtZW50cywhMCkuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT12PyhUJiYocD0hMCksdy5zZWxlY3Rpb249VD1bW249dD09PWZpP0U6QlswXSxvPXQ9PT1oaT9DOkJbMV1dLFtjPXQ9PT1maT9TOm4sZj10PT09aGk/QTpvXV0pOihuPVRbMF1bMF0sbz1UWzBdWzFdLGM9VFsxXVswXSxmPVRbMV1bMV0pLGk9bixzPW8saD1jLGQ9Zjt2YXIgUj1UZShtKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxGPVIuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIscGlbdl0pO2lmKGxlLnRvdWNoZXMpSS5tb3ZlZD1qLEkuZW5kZWQ9ejtlbHNle3ZhciBQPVRlKGxlLnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLGosITApLm9uKCJtb3VzZXVwLmJydXNoIix6LCEwKTthJiZQLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLHEsITApLFNlKGxlLnZpZXcpfW5pKCksYXIobSksdS5jYWxsKG0pLEkuc3RhcnQoKX1mdW5jdGlvbiBqKCl7dmFyIHQ9TyhtKTshRHx8eXx8Z3x8KE1hdGguYWJzKHRbMF0tTFswXSk+TWF0aC5hYnModFsxXS1MWzFdKT9nPSEwOnk9ITApLEw9dCxwPSEwLHJpKCksWSgpfWZ1bmN0aW9uIFkoKXt2YXIgdDtzd2l0Y2goTT1MWzBdLUJbMF0sTj1MWzFdLUJbMV0sYil7Y2FzZSBhaTpjYXNlIGlpOl8mJihNPU1hdGgubWF4KEUtbixNYXRoLm1pbihTLWMsTSkpLGk9bitNLGg9YytNKSx4JiYoTj1NYXRoLm1heChDLW8sTWF0aC5taW4oQS1mLE4pKSxzPW8rTixkPWYrTik7YnJlYWs7Y2FzZSBvaTpfPDA/KE09TWF0aC5tYXgoRS1uLE1hdGgubWluKFMtbixNKSksaT1uK00saD1jKTpfPjAmJihNPU1hdGgubWF4KEUtYyxNYXRoLm1pbihTLWMsTSkpLGk9bixoPWMrTSkseDwwPyhOPU1hdGgubWF4KEMtbyxNYXRoLm1pbihBLW8sTikpLHM9bytOLGQ9Zik6eD4wJiYoTj1NYXRoLm1heChDLWYsTWF0aC5taW4oQS1mLE4pKSxzPW8sZD1mK04pO2JyZWFrO2Nhc2Ugc2k6XyYmKGk9TWF0aC5tYXgoRSxNYXRoLm1pbihTLG4tTSpfKSksaD1NYXRoLm1heChFLE1hdGgubWluKFMsYytNKl8pKSkseCYmKHM9TWF0aC5tYXgoQyxNYXRoLm1pbihBLG8tTip4KSksZD1NYXRoLm1heChDLE1hdGgubWluKEEsZitOKngpKSl9aDxpJiYoXyo9LTEsdD1uLG49YyxjPXQsdD1pLGk9aCxoPXQsdiBpbiB5aSYmRi5hdHRyKCJjdXJzb3IiLHBpW3Y9eWlbdl1dKSksZDxzJiYoeCo9LTEsdD1vLG89ZixmPXQsdD1zLHM9ZCxkPXQsdiBpbiBnaSYmRi5hdHRyKCJjdXJzb3IiLHBpW3Y9Z2lbdl1dKSksdy5zZWxlY3Rpb24mJihUPXcuc2VsZWN0aW9uKSx5JiYoaT1UWzBdWzBdLGg9VFsxXVswXSksZyYmKHM9VFswXVsxXSxkPVRbMV1bMV0pLFRbMF1bMF09PT1pJiZUWzBdWzFdPT09cyYmVFsxXVswXT09PWgmJlRbMV1bMV09PT1kfHwody5zZWxlY3Rpb249W1tpLHNdLFtoLGRdXSx1LmNhbGwobSksSS5icnVzaCgpKX1mdW5jdGlvbiB6KCl7aWYobmkoKSxsZS50b3VjaGVzKXtpZihsZS50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApfWVsc2UgQWUobGUudmlldyxwKSxQLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtSLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksRi5hdHRyKCJjdXJzb3IiLHBpLm92ZXJsYXkpLHcuc2VsZWN0aW9uJiYoVD13LnNlbGVjdGlvbiksVGkoVCkmJih3LnNlbGVjdGlvbj1udWxsLHUuY2FsbChtKSksSS5lbmQoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKGxlLmtleUNvZGUpe2Nhc2UgMTY6RD1fJiZ4O2JyZWFrO2Nhc2UgMTg6Yj09PW9pJiYoXyYmKGM9aC1NKl8sbj1pK00qXykseCYmKGY9ZC1OKngsbz1zK04qeCksYj1zaSxZKCkpO2JyZWFrO2Nhc2UgMzI6YiE9PW9pJiZiIT09c2l8fChfPDA/Yz1oLU06Xz4wJiYobj1pLU0pLHg8MD9mPWQtTjp4PjAmJihvPXMtTiksYj1haSxGLmF0dHIoImN1cnNvciIscGkuc2VsZWN0aW9uKSxZKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXJpKCl9ZnVuY3Rpb24gcSgpe3N3aXRjaChsZS5rZXlDb2RlKXtjYXNlIDE2OkQmJih5PWc9RD0hMSxZKCkpO2JyZWFrO2Nhc2UgMTg6Yj09PXNpJiYoXzwwP2M9aDpfPjAmJihuPWkpLHg8MD9mPWQ6eD4wJiYobz1zKSxiPW9pLFkoKSk7YnJlYWs7Y2FzZSAzMjpiPT09YWkmJihsZS5hbHRLZXk/KF8mJihjPWgtTSpfLG49aStNKl8pLHgmJihmPWQtTip4LG89cytOKngpLGI9c2kpOihfPDA/Yz1oOl8+MCYmKG49aSkseDwwP2Y9ZDp4PjAmJihvPXMpLGI9b2kpLEYuYXR0cigiY3Vyc29yIixwaVt2XSksWSgpKTticmVhaztkZWZhdWx0OnJldHVybn1yaSgpfX1mdW5jdGlvbiBkKCl7bCh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBwKCl7bCh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiB5KCl7dmFyIGU9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBlLmV4dGVudD11aShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZS5kaW09dCxlfXJldHVybiBjLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1lLl9fYnJ1c2gsaT1sKGUsYXJndW1lbnRzKSxhPXIuc2VsZWN0aW9uLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLHIuZXh0ZW50KSxzPU1uKGEsbyk7ZnVuY3Rpb24gYyh0KXtyLnNlbGVjdGlvbj0xPT09dCYmbnVsbD09PW8/bnVsbDpzKHQpLHUuY2FsbChlKSxpLmJydXNoKCl9cmV0dXJuIG51bGwhPT1hJiZudWxsIT09bz9jOmMoMSl9KSk6ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHMsaT1lLl9fYnJ1c2gsYT10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxyKTpuLGkuZXh0ZW50KSxvPWwoZSxyKS5iZWZvcmVzdGFydCgpO2FyKGUpLGkuc2VsZWN0aW9uPW51bGw9PT1hP251bGw6YSx1LmNhbGwoZSksby5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGMuY2xlYXI9ZnVuY3Rpb24odCl7Yy5tb3ZlKHQsbnVsbCl9LGgucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZSl7Z2UobmV3IGVpKGMsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLG8uYXBwbHksbyxbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxjLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRpKHVpKHQpKSxjKTpufSxjLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRpKCEhdCksYyk6cn0sYy50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0aSghIXQpLGMpOml9LGMuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxjKTpzfSxjLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsYyk6YX0sYy5vbj1mdW5jdGlvbigpe3ZhciB0PW8ub24uYXBwbHkobyxhcmd1bWVudHMpO3JldHVybiB0PT09bz9jOnR9LGN9dmFyIE5pPU1hdGguY29zLERpPU1hdGguc2luLE9pPU1hdGguUEksQmk9T2kvMixMaT0yKk9pLElpPU1hdGgubWF4O2Z1bmN0aW9uIFJpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19ZnVuY3Rpb24gRmkoKXt2YXIgdD0wLGU9bnVsbCxuPW51bGwscj1udWxsO2Z1bmN0aW9uIGkoaSl7dmFyIGEsbyxzLGMsdSxsLGg9aS5sZW5ndGgsZj1bXSxkPWsoaCkscD1bXSx5PVtdLGc9eS5ncm91cHM9bmV3IEFycmF5KGgpLG09bmV3IEFycmF5KGgqaCk7Zm9yKGE9MCx1PS0xOysrdTxoOyl7Zm9yKG89MCxsPS0xOysrbDxoOylvKz1pW3VdW2xdO2YucHVzaChvKSxwLnB1c2goayhoKSksYSs9b31mb3IoZSYmZC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGZbdF0sZltuXSl9KSksbiYmcC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gbihpW2VdW3RdLGlbZV1bcl0pfSkpfSkpLGM9KGE9SWkoMCxMaS10KmgpL2EpP3Q6TGkvaCxvPTAsdT0tMTsrK3U8aDspe2ZvcihzPW8sbD0tMTsrK2w8aDspe3ZhciB2PWRbdV0sYj1wW3ZdW2xdLF89aVt2XVtiXSx4PW8sdz1vKz1fKmE7bVtiKmgrdl09e2luZGV4OnYsc3ViaW5kZXg6YixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpffX1nW3ZdPXtpbmRleDp2LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTpvLHZhbHVlOmZbdl19LG8rPWN9Zm9yKHU9LTE7Kyt1PGg7KWZvcihsPXUtMTsrK2w8aDspe3ZhciBUPW1bbCpoK3VdLEU9bVt1KmgrbF07KFQudmFsdWV8fEUudmFsdWUpJiZ5LnB1c2goVC52YWx1ZTxFLnZhbHVlP3tzb3VyY2U6RSx0YXJnZXQ6VH06e3NvdXJjZTpULHRhcmdldDpFfSl9cmV0dXJuIHI/eS5zb3J0KHIpOnl9cmV0dXJuIGkucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9SWkoMCxlKSxpKTp0fSxpLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxpKTplfSxpLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxpKTpufSxpLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cj1udWxsOihyPVJpKHQpKS5fPXQsaSk6ciYmci5ffSxpfXZhciBQaT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gamkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBZaT1NYXRoLlBJLHppPTIqWWksVWk9MWUtNixxaT16aS1VaTtmdW5jdGlvbiAkaSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIEhpKCl7cmV0dXJuIG5ldyAkaX0kaS5wcm90b3R5cGU9SGkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokaSxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4scil7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0rcil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyArcisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4scixpKXt0PSt0LGU9K2Usbj0rbixyPStyLGk9K2k7dmFyIGE9dGhpcy5feDEsbz10aGlzLl95MSxzPW4tdCxjPXItZSx1PWEtdCxsPW8tZSxoPXUqdStsKmw7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+VWkpaWYoTWF0aC5hYnMobCpzLWMqdSk+VWkmJmkpe3ZhciBmPW4tYSxkPXItbyxwPXMqcytjKmMseT1mKmYrZCpkLGc9TWF0aC5zcXJ0KHApLG09TWF0aC5zcXJ0KGgpLHY9aSpNYXRoLnRhbigoWWktTWF0aC5hY29zKChwK2gteSkvKDIqZyptKSkpLzIpLGI9di9tLF89di9nO01hdGguYWJzKGItMSk+VWkmJih0aGlzLl8rPSJMIisodCtiKnUpKyIsIisoZStiKmwpKSx0aGlzLl8rPSJBIitpKyIsIitpKyIsMCwwLCIrICsobCpmPnUqZCkrIiwiKyh0aGlzLl94MT10K18qcykrIiwiKyh0aGlzLl95MT1lK18qYyl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt0PSt0LGU9K2UsYT0hIWE7dmFyIG89KG49K24pKk1hdGguY29zKHIpLHM9bipNYXRoLnNpbihyKSxjPXQrbyx1PWUrcyxsPTFeYSxoPWE/ci1pOmktcjtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2MrIiwiK3U6KE1hdGguYWJzKHRoaXMuX3gxLWMpPlVpfHxNYXRoLmFicyh0aGlzLl95MS11KT5VaSkmJih0aGlzLl8rPSJMIitjKyIsIit1KSxuJiYoaDwwJiYoaD1oJXppK3ppKSxoPnFpP3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodC1vKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodGhpcy5feDE9YykrIiwiKyh0aGlzLl95MT11KTpoPlVpJiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1ZaSkrIiwiK2wrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLHIpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtyKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2NvbnN0IFdpPUhpO2Z1bmN0aW9uIFZpKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBHaSh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gWGkodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFppKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gUWkodCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gS2koKXt2YXIgdD1WaSxlPUdpLG49WGkscj1aaSxpPVFpLGE9bnVsbDtmdW5jdGlvbiBvKCl7dmFyIG8scz1QaS5jYWxsKGFyZ3VtZW50cyksYz10LmFwcGx5KHRoaXMscyksdT1lLmFwcGx5KHRoaXMscyksbD0rbi5hcHBseSh0aGlzLChzWzBdPWMscykpLGg9ci5hcHBseSh0aGlzLHMpLUJpLGY9aS5hcHBseSh0aGlzLHMpLUJpLGQ9bCpOaShoKSxwPWwqRGkoaCkseT0rbi5hcHBseSh0aGlzLChzWzBdPXUscykpLGc9ci5hcHBseSh0aGlzLHMpLUJpLG09aS5hcHBseSh0aGlzLHMpLUJpO2lmKGF8fChhPW89V2koKSksYS5tb3ZlVG8oZCxwKSxhLmFyYygwLDAsbCxoLGYpLGg9PT1nJiZmPT09bXx8KGEucXVhZHJhdGljQ3VydmVUbygwLDAseSpOaShnKSx5KkRpKGcpKSxhLmFyYygwLDAseSxnLG0pKSxhLnF1YWRyYXRpY0N1cnZlVG8oMCwwLGQscCksYS5jbG9zZVBhdGgoKSxvKXJldHVybiBhPW51bGwsbysiInx8bnVsbH1yZXR1cm4gby5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqaSgrdCksbyk6bn0sby5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6amkoK3QpLG8pOnJ9LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqaSgrdCksbyk6aX0sby5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxvKTp0fSxvLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG8pOmV9LG8uY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT10P251bGw6dCxvKTphfSxvfXZhciBKaT0iJCI7ZnVuY3Rpb24gdGEoKXt9ZnVuY3Rpb24gZWEodCxlKXt2YXIgbj1uZXcgdGE7aWYodCBpbnN0YW5jZW9mIHRhKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIHIsaT0tMSxhPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK2k8YTspbi5zZXQoaSx0W2ldKTtlbHNlIGZvcig7KytpPGE7KW4uc2V0KGUocj10W2ldLGksdCkscil9ZWxzZSBpZih0KWZvcih2YXIgbyBpbiB0KW4uc2V0KG8sdFtvXSk7cmV0dXJuIG59dGEucHJvdG90eXBlPWVhLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dGEsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBKaSt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tKaSt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbSmkrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9SmkrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09SmkmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1KaSYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PUppKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1KaSYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTtjb25zdCBuYT1lYTtmdW5jdGlvbiByYSgpe3ZhciB0LGUsbixyPVtdLGk9W107ZnVuY3Rpb24gYShuLGksbyxzKXtpZihpPj1yLmxlbmd0aClyZXR1cm4gbnVsbCE9dCYmbi5zb3J0KHQpLG51bGwhPWU/ZShuKTpuO2Zvcih2YXIgYyx1LGwsaD0tMSxmPW4ubGVuZ3RoLGQ9cltpKytdLHA9bmEoKSx5PW8oKTsrK2g8ZjspKGw9cC5nZXQoYz1kKHU9bltoXSkrIiIpKT9sLnB1c2godSk6cC5zZXQoYyxbdV0pO3JldHVybiBwLmVhY2goKGZ1bmN0aW9uKHQsZSl7cyh5LGUsYSh0LGksbyxzKSl9KSkseX1mdW5jdGlvbiBvKHQsbil7aWYoKytuPnIubGVuZ3RoKXJldHVybiB0O3ZhciBhLHM9aVtuLTFdO3JldHVybiBudWxsIT1lJiZuPj1yLmxlbmd0aD9hPXQuZW50cmllcygpOihhPVtdLHQuZWFjaCgoZnVuY3Rpb24odCxlKXthLnB1c2goe2tleTplLHZhbHVlczpvKHQsbil9KX0pKSksbnVsbCE9cz9hLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHModC5rZXksZS5rZXkpfSkpOmF9cmV0dXJuIG49e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0LDAsaWEsYWEpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIGEodCwwLG9hLHNhKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gbyhhKHQsMCxvYSxzYSksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gci5wdXNoKHQpLG59LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBpW3IubGVuZ3RoLTFdPXQsbn0sc29ydFZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gdD1lLG59LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gZT10LG59fX1mdW5jdGlvbiBpYSgpe3JldHVybnt9fWZ1bmN0aW9uIGFhKHQsZSxuKXt0W2VdPW59ZnVuY3Rpb24gb2EoKXtyZXR1cm4gbmEoKX1mdW5jdGlvbiBzYSh0LGUsbil7dC5zZXQoZSxuKX1mdW5jdGlvbiBjYSgpe312YXIgdWE9bmEucHJvdG90eXBlO2Z1bmN0aW9uIGxhKHQsZSl7dmFyIG49bmV3IGNhO2lmKHQgaW5zdGFuY2VvZiBjYSl0LmVhY2goKGZ1bmN0aW9uKHQpe24uYWRkKHQpfSkpO2Vsc2UgaWYodCl7dmFyIHI9LTEsaT10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPGk7KW4uYWRkKHRbcl0pO2Vsc2UgZm9yKDsrK3I8aTspbi5hZGQoZSh0W3JdLHIsdCkpfXJldHVybiBufWNhLnByb3RvdHlwZT1sYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmNhLGhhczp1YS5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0ppKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOnVhLnJlbW92ZSxjbGVhcjp1YS5jbGVhcix2YWx1ZXM6dWEua2V5cyxzaXplOnVhLnNpemUsZW1wdHk6dWEuZW1wdHksZWFjaDp1YS5lYWNofTtjb25zdCBoYT1sYTtmdW5jdGlvbiBmYSh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gZGEodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHBhKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh7a2V5Om4sdmFsdWU6dFtuXX0pO3JldHVybiBlfXZhciB5YT1NYXRoLlBJLzE4MCxnYT0xODAvTWF0aC5QSSxtYT0uOTY0MjIsdmE9LjgyNTIxLGJhPTQvMjksX2E9Ni8yOSx4YT0zKl9hKl9hO2Z1bmN0aW9uIHdhKHQpe2lmKHQgaW5zdGFuY2VvZiBFYSlyZXR1cm4gbmV3IEVhKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIEJhKXJldHVybiBMYSh0KTt0IGluc3RhbmNlb2YgS2V8fCh0PVplKHQpKTt2YXIgZSxuLHI9TWEodC5yKSxpPU1hKHQuZyksYT1NYSh0LmIpLG89Q2EoKC4yMjI1MDQ1KnIrLjcxNjg3ODYqaSsuMDYwNjE2OSphKS8xKTtyZXR1cm4gcj09PWkmJmk9PT1hP2U9bj1vOihlPUNhKCguNDM2MDc0NypyKy4zODUwNjQ5KmkrLjE0MzA4MDQqYSkvbWEpLG49Q2EoKC4wMTM5MzIyKnIrLjA5NzEwNDUqaSsuNzE0MTczMyphKS92YSkpLG5ldyBFYSgxMTYqby0xNiw1MDAqKGUtbyksMjAwKihvLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24ga2EodCxlKXtyZXR1cm4gbmV3IEVhKHQsMCwwLG51bGw9PWU/MTplKX1mdW5jdGlvbiBUYSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/d2EodCk6bmV3IEVhKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBFYSh0LGUsbixyKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gQ2EodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC94YStiYX1mdW5jdGlvbiBTYSh0KXtyZXR1cm4gdD5fYT90KnQqdDp4YSoodC1iYSl9ZnVuY3Rpb24gQWEodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBNYSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBOYSh0KXtpZih0IGluc3RhbmNlb2YgQmEpcmV0dXJuIG5ldyBCYSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBFYXx8KHQ9d2EodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyBCYShOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSpnYTtyZXR1cm4gbmV3IEJhKGU8MD9lKzM2MDplLE1hdGguc3FydCh0LmEqdC5hK3QuYip0LmIpLHQubCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIERhKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OYSh0KTpuZXcgQmEobixlLHQsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIE9hKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OYSh0KTpuZXcgQmEodCxlLG4sbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEJhKHQsZSxuLHIpe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBMYSh0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgRWEodC5sLDAsMCx0Lm9wYWNpdHkpO3ZhciBlPXQuaCp5YTtyZXR1cm4gbmV3IEVhKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9TWUoRWEsVGEsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRWEodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBFYSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgS2UoQWEoMy4xMzM4NTYxKihlPW1hKlNhKGUpKS0xLjYxNjg2NjcqKHQ9MSpTYSh0KSktLjQ5MDYxNDYqKG49dmEqU2EobikpKSxBYSgtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLEFhKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksTWUoQmEsT2EsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQmEodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCYSh0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBMYSh0aGlzKS5yZ2IoKX19KSk7dmFyIElhPS0uMTQ4NjEsUmE9MS43ODI3NyxGYT0tLjI5MjI3LFBhPS0uOTA2NDksamE9MS45NzI5NCxZYT1qYSpQYSx6YT1qYSpSYSxVYT1SYSpGYS1QYSpJYTtmdW5jdGlvbiBxYSh0KXtpZih0IGluc3RhbmNlb2YgSGEpcmV0dXJuIG5ldyBIYSh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBLZXx8KHQ9WmUodCkpO3ZhciBlPXQuci8yNTUsbj10LmcvMjU1LHI9dC5iLzI1NSxpPShVYSpyK1lhKmUtemEqbikvKFVhK1lhLXphKSxhPXItaSxvPShqYSoobi1pKS1GYSphKS9QYSxzPU1hdGguc3FydChvKm8rYSphKS8oamEqaSooMS1pKSksYz1zP01hdGguYXRhbjIobyxhKSpnYS0xMjA6TmFOO3JldHVybiBuZXcgSGEoYzwwP2MrMzYwOmMscyxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gJGEodCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3FhKHQpOm5ldyBIYSh0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gSGEodCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfU1lKEhhLCRhLE5lKERlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0JlOk1hdGgucG93KEJlLHQpLG5ldyBIYSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P09lOk1hdGgucG93KE9lLHQpLG5ldyBIYSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqeWEsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLHI9TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IEtlKDI1NSooZStuKihJYSpyK1JhKmkpKSwyNTUqKGUrbiooRmEqcitQYSppKSksMjU1KihlK24qKGphKnIpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgV2E9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFZhKHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiBHYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gWGEodCxlKXtmb3IodmFyIG4scj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihuPVphKHQsZVtyXSkpcmV0dXJuIG47cmV0dXJuIDB9ZnVuY3Rpb24gWmEodCxlKXtmb3IodmFyIG49ZVswXSxyPWVbMV0saT0tMSxhPTAsbz10Lmxlbmd0aCxzPW8tMTthPG87cz1hKyspe3ZhciBjPXRbYV0sdT1jWzBdLGw9Y1sxXSxoPXRbc10sZj1oWzBdLGQ9aFsxXTtpZihRYShjLGgsZSkpcmV0dXJuIDA7bD5yIT1kPnImJm48KGYtdSkqKHItbCkvKGQtbCkrdSYmKGk9LWkpfXJldHVybiBpfWZ1bmN0aW9uIFFhKHQsZSxuKXt2YXIgcixpLGEsbztyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPT0oblswXS10WzBdKSooZVsxXS10WzFdKX0odCxlLG4pJiYoaT10W3I9Kyh0WzBdPT09ZVswXSldLGE9bltyXSxvPWVbcl0saTw9YSYmYTw9b3x8bzw9YSYmYTw9aSl9ZnVuY3Rpb24gS2EoKXt9dmFyIEphPVtbXSxbW1sxLDEuNV0sWy41LDFdXV0sW1tbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWy41LDFdXV0sW1tbMSwuNV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbLjUsMV1dLFtbMSwuNV0sWzEuNSwxXV1dLFtbWzEsLjVdLFsxLDEuNV1dXSxbW1sxLC41XSxbLjUsMV1dXSxbW1suNSwxXSxbMSwuNV1dXSxbW1sxLDEuNV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEsLjVdXSxbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsxLC41XV1dLFtbWy41LDFdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWzEuNSwxXV1dLFtbWy41LDFdLFsxLDEuNV1dXSxbXV07ZnVuY3Rpb24gdG8oKXt2YXIgdD0xLGU9MSxuPU4scj1zO2Z1bmN0aW9uIGkodCl7dmFyIGU9bih0KTtpZihBcnJheS5pc0FycmF5KGUpKWU9ZS5zbGljZSgpLnNvcnQoVmEpO2Vsc2V7dmFyIHI9bSh0KSxpPXJbMF0sbz1yWzFdO2U9TShpLG8sZSksZT1rKE1hdGguZmxvb3IoaS9lKSplLE1hdGguZmxvb3Ioby9lKSplLGUpfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlKX0pKX1mdW5jdGlvbiBhKG4saSl7dmFyIGE9W10scz1bXTtyZXR1cm4gZnVuY3Rpb24obixyLGkpe3ZhciBhLHMsYyx1LGwsaCxmPW5ldyBBcnJheSxkPW5ldyBBcnJheTtmb3IoYT1zPS0xLHU9blswXT49cixKYVt1PDwxXS5mb3JFYWNoKHApOysrYTx0LTE7KWM9dSx1PW5bYSsxXT49cixKYVtjfHU8PDFdLmZvckVhY2gocCk7Zm9yKEphW3U8PDBdLmZvckVhY2gocCk7KytzPGUtMTspe2ZvcihhPS0xLHU9bltzKnQrdF0+PXIsbD1uW3MqdF0+PXIsSmFbdTw8MXxsPDwyXS5mb3JFYWNoKHApOysrYTx0LTE7KWM9dSx1PW5bcyp0K3QrYSsxXT49cixoPWwsbD1uW3MqdCthKzFdPj1yLEphW2N8dTw8MXxsPDwyfGg8PDNdLmZvckVhY2gocCk7SmFbdXxsPDwzXS5mb3JFYWNoKHApfWZvcihhPS0xLGw9bltzKnRdPj1yLEphW2w8PDJdLmZvckVhY2gocCk7KythPHQtMTspaD1sLGw9bltzKnQrYSsxXT49cixKYVtsPDwyfGg8PDNdLmZvckVhY2gocCk7ZnVuY3Rpb24gcCh0KXt2YXIgZSxuLHI9W3RbMF1bMF0rYSx0WzBdWzFdK3NdLGM9W3RbMV1bMF0rYSx0WzFdWzFdK3NdLHU9byhyKSxsPW8oYyk7KGU9ZFt1XSk/KG49ZltsXSk/KGRlbGV0ZSBkW2UuZW5kXSxkZWxldGUgZltuLnN0YXJ0XSxlPT09bj8oZS5yaW5nLnB1c2goYyksaShlLnJpbmcpKTpmW2Uuc3RhcnRdPWRbbi5lbmRdPXtzdGFydDplLnN0YXJ0LGVuZDpuLmVuZCxyaW5nOmUucmluZy5jb25jYXQobi5yaW5nKX0pOihkZWxldGUgZFtlLmVuZF0sZS5yaW5nLnB1c2goYyksZFtlLmVuZD1sXT1lKTooZT1mW2xdKT8obj1kW3VdKT8oZGVsZXRlIGZbZS5zdGFydF0sZGVsZXRlIGRbbi5lbmRdLGU9PT1uPyhlLnJpbmcucHVzaChjKSxpKGUucmluZykpOmZbbi5zdGFydF09ZFtlLmVuZF09e3N0YXJ0Om4uc3RhcnQsZW5kOmUuZW5kLHJpbmc6bi5yaW5nLmNvbmNhdChlLnJpbmcpfSk6KGRlbGV0ZSBmW2Uuc3RhcnRdLGUucmluZy51bnNoaWZ0KHIpLGZbZS5zdGFydD11XT1lKTpmW3VdPWRbbF09e3N0YXJ0OnUsZW5kOmwscmluZzpbcixjXX19SmFbbDw8M10uZm9yRWFjaChwKX0obixpLChmdW5jdGlvbih0KXtyKHQsbixpKSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoLHI9dFtuLTFdWzFdKnRbMF1bMF0tdFtuLTFdWzBdKnRbMF1bMV07KytlPG47KXIrPXRbZS0xXVsxXSp0W2VdWzBdLXRbZS0xXVswXSp0W2VdWzFdO3JldHVybiByfSh0KT4wP2EucHVzaChbdF0pOnMucHVzaCh0KX0pKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAscj1hLmxlbmd0aDtuPHI7KytuKWlmKC0xIT09WGEoKGU9YVtuXSlbMF0sdCkpcmV0dXJuIHZvaWQgZS5wdXNoKHQpfSkpLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOmksY29vcmRpbmF0ZXM6YX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gMiplWzBdK2VbMV0qKHQrMSkqNH1mdW5jdGlvbiBzKG4scixpKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBhLG89blswXSxzPW5bMV0sYz0wfG8sdT0wfHMsbD1yW3UqdCtjXTtvPjAmJm88dCYmYz09PW8mJihhPXJbdSp0K2MtMV0sblswXT1vKyhpLWEpLyhsLWEpLS41KSxzPjAmJnM8ZSYmdT09PXMmJihhPXJbKHUtMSkqdCtjXSxuWzFdPXMrKGktYSkvKGwtYSktLjUpfSkpfXJldHVybiBpLmNvbnRvdXI9YSxpLnNpemU9ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3QsZV07dmFyIHI9TWF0aC5jZWlsKG5bMF0pLGE9TWF0aC5jZWlsKG5bMV0pO2lmKCEocj4wJiZhPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9cixlPWEsaX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9HYShXYS5jYWxsKHQpKTpHYSh0KSxpKTpufSxpLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10P3M6S2EsaSk6cj09PXN9LGl9ZnVuY3Rpb24gZW8odCxlLG4pe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsYT0xKyhuPDwxKSxvPTA7bzxpOysrbylmb3IodmFyIHM9MCxjPTA7czxyK247KytzKXM8ciYmKGMrPXQuZGF0YVtzK28qcl0pLHM+PW4mJihzPj1hJiYoYy09dC5kYXRhW3MtYStvKnJdKSxlLmRhdGFbcy1uK28qcl09Yy9NYXRoLm1pbihzKzEsci0xK2EtcyxhKSl9ZnVuY3Rpb24gbm8odCxlLG4pe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsYT0xKyhuPDwxKSxvPTA7bzxyOysrbylmb3IodmFyIHM9MCxjPTA7czxpK247KytzKXM8aSYmKGMrPXQuZGF0YVtvK3Mqcl0pLHM+PW4mJihzPj1hJiYoYy09dC5kYXRhW28rKHMtYSkqcl0pLGUuZGF0YVtvKyhzLW4pKnJdPWMvTWF0aC5taW4ocysxLGktMSthLXMsYSkpfWZ1bmN0aW9uIHJvKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGlvKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGFvKCl7cmV0dXJuIDF9ZnVuY3Rpb24gb28oKXt2YXIgdD1ybyxlPWlvLG49YW8scj05NjAsaT01MDAsYT0yMCxvPTIscz0zKmEsYz1yKzIqcz4+byx1PWkrMipzPj5vLGw9R2EoMjApO2Z1bmN0aW9uIGgocil7dmFyIGk9bmV3IEZsb2F0MzJBcnJheShjKnUpLGg9bmV3IEZsb2F0MzJBcnJheShjKnUpO3IuZm9yRWFjaCgoZnVuY3Rpb24ocixhLGwpe3ZhciBoPSt0KHIsYSxsKStzPj5vLGY9K2UocixhLGwpK3M+Pm8sZD0rbihyLGEsbCk7aD49MCYmaDxjJiZmPj0wJiZmPHUmJihpW2grZipjXSs9ZCl9KSksZW8oe3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTppfSx7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOmh9LGE+Pm8pLG5vKHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aH0se3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTppfSxhPj5vKSxlbyh7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOml9LHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aH0sYT4+byksbm8oe3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTpofSx7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOml9LGE+Pm8pLGVvKHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aX0se3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTpofSxhPj5vKSxubyh7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOmh9LHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aX0sYT4+byk7dmFyIGQ9bChpKTtpZighQXJyYXkuaXNBcnJheShkKSl7dmFyIHA9SShpKTtkPU0oMCxwLGQpLChkPWsoMCxNYXRoLmZsb29yKHAvZCkqZCxkKSkuc2hpZnQoKX1yZXR1cm4gdG8oKS50aHJlc2hvbGRzKGQpLnNpemUoW2MsdV0pKGkpLm1hcChmKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKm8pLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChkKSx0fWZ1bmN0aW9uIGQodCl7dC5mb3JFYWNoKHApfWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKHkpfWZ1bmN0aW9uIHkodCl7dFswXT10WzBdKk1hdGgucG93KDIsbyktcyx0WzFdPXRbMV0qTWF0aC5wb3coMixvKS1zfWZ1bmN0aW9uIGcoKXtyZXR1cm4gYz1yKzIqKHM9MyphKT4+byx1PWkrMipzPj5vLGh9cmV0dXJuIGgueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkdhKCtlKSxoKTp0fSxoLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHYSgrdCksaCk6ZX0saC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHYSgrdCksaCk6bn0saC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltyLGldO3ZhciBlPU1hdGguY2VpbCh0WzBdKSxuPU1hdGguY2VpbCh0WzFdKTtpZighKGU+PTB8fGU+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHI9ZSxpPW4sZygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxvO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksZygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP0dhKFdhLmNhbGwodCkpOkdhKHQpLGgpOmx9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQoYSooYSsxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gYT1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMiksZygpfSxofWZ1bmN0aW9uIHNvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBjbyh0LGUsbixyLGksYSxvLHMsYyx1KXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc3ViamVjdD1uLHRoaXMuaWRlbnRpZmllcj1yLHRoaXMuYWN0aXZlPWksdGhpcy54PWEsdGhpcy55PW8sdGhpcy5keD1zLHRoaXMuZHk9Yyx0aGlzLl89dX1mdW5jdGlvbiB1bygpe3JldHVybiFsZS5jdHJsS2V5JiYhbGUuYnV0dG9ufWZ1bmN0aW9uIGxvKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX1mdW5jdGlvbiBobyh0KXtyZXR1cm4gbnVsbD09dD97eDpsZS54LHk6bGUueX06dH1mdW5jdGlvbiBmbygpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBwbygpe3ZhciB0LGUsbixyLGk9dW8sYT1sbyxvPWhvLHM9Zm8sYz17fSx1PWZ0KCJzdGFydCIsImRyYWciLCJlbmQiKSxsPTAsaD0wO2Z1bmN0aW9uIGYodCl7dC5vbigibW91c2Vkb3duLmRyYWciLGQpLmZpbHRlcihzKS5vbigidG91Y2hzdGFydC5kcmFnIixnKS5vbigidG91Y2htb3ZlLmRyYWciLG0pLm9uKCJ0b3VjaGVuZC5kcmFnIHRvdWNoY2FuY2VsLmRyYWciLHYpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBkKCl7aWYoIXImJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbz1iKCJtb3VzZSIsYS5hcHBseSh0aGlzLGFyZ3VtZW50cyksQm4sdGhpcyxhcmd1bWVudHMpO28mJihUZShsZS52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLHAsITApLm9uKCJtb3VzZXVwLmRyYWciLHksITApLFNlKGxlLnZpZXcpLEVlKCksbj0hMSx0PWxlLmNsaWVudFgsZT1sZS5jbGllbnRZLG8oInN0YXJ0IikpfX1mdW5jdGlvbiBwKCl7aWYoQ2UoKSwhbil7dmFyIHI9bGUuY2xpZW50WC10LGk9bGUuY2xpZW50WS1lO249cipyK2kqaT5ofWMubW91c2UoImRyYWciKX1mdW5jdGlvbiB5KCl7VGUobGUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIG1vdXNldXAuZHJhZyIsbnVsbCksQWUobGUudmlldyxuKSxDZSgpLGMubW91c2UoImVuZCIpfWZ1bmN0aW9uIGcoKXtpZihpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQsZSxuPWxlLmNoYW5nZWRUb3VjaGVzLHI9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz1uLmxlbmd0aDtmb3IodD0wO3Q8bzsrK3QpKGU9YihuW3RdLmlkZW50aWZpZXIscixPbix0aGlzLGFyZ3VtZW50cykpJiYoRWUoKSxlKCJzdGFydCIpKX19ZnVuY3Rpb24gbSgpe3ZhciB0LGUsbj1sZS5jaGFuZ2VkVG91Y2hlcyxyPW4ubGVuZ3RoO2Zvcih0PTA7dDxyOysrdCkoZT1jW25bdF0uaWRlbnRpZmllcl0pJiYoQ2UoKSxlKCJkcmFnIikpfWZ1bmN0aW9uIHYoKXt2YXIgdCxlLG49bGUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IociYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyPW51bGx9KSw1MDApLHQ9MDt0PGk7Kyt0KShlPWNbblt0XS5pZGVudGlmaWVyXSkmJihFZSgpLGUoImVuZCIpKX1mdW5jdGlvbiBiKHQsZSxuLHIsaSl7dmFyIGEscyxoLGQ9bihlLHQpLHA9dS5jb3B5KCk7aWYoZ2UobmV3IGNvKGYsImJlZm9yZXN0YXJ0IixhLHQsbCxkWzBdLGRbMV0sMCwwLHApLChmdW5jdGlvbigpe3JldHVybiBudWxsIT0obGUuc3ViamVjdD1hPW8uYXBwbHkocixpKSkmJihzPWEueC1kWzBdfHwwLGg9YS55LWRbMV18fDAsITApfSkpKXJldHVybiBmdW5jdGlvbiBvKHUpe3ZhciB5LGc9ZDtzd2l0Y2godSl7Y2FzZSJzdGFydCI6Y1t0XT1vLHk9bCsrO2JyZWFrO2Nhc2UiZW5kIjpkZWxldGUgY1t0XSwtLWw7Y2FzZSJkcmFnIjpkPW4oZSx0KSx5PWx9Z2UobmV3IGNvKGYsdSxhLHQseSxkWzBdK3MsZFsxXStoLGRbMF0tZ1swXSxkWzFdLWdbMV0scCkscC5hcHBseSxwLFt1LHIsaV0pfX1yZXR1cm4gZi5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzbyghIXQpLGYpOml9LGYuY29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c28odCksZik6YX0sZi5zdWJqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c28odCksZik6b30sZi50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzbyghIXQpLGYpOnN9LGYub249ZnVuY3Rpb24oKXt2YXIgdD11Lm9uLmFwcGx5KHUsYXJndW1lbnRzKTtyZXR1cm4gdD09PXU/Zjp0fSxmLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9KHQ9K3QpKnQsZik6TWF0aC5zcXJ0KGgpfSxmfWNvLnByb3RvdHlwZS5vbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuXy5vbi5hcHBseSh0aGlzLl8sYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXMuXz90aGlzOnR9O3ZhciB5bz17fSxnbz17fTtmdW5jdGlvbiBtbyh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KSsiOiBkWyIrZSsnXSB8fCAiIid9KSkuam9pbigiLCIpKyJ9Iil9ZnVuY3Rpb24gdm8odCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKSxuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgciBpbiB0KXIgaW4gZXx8bi5wdXNoKGVbcl09cil9KSksbn1mdW5jdGlvbiBibyh0LGUpe3ZhciBuPXQrIiIscj1uLmxlbmd0aDtyZXR1cm4gcjxlP25ldyBBcnJheShlLXIrMSkuam9pbigwKStuOm59ZnVuY3Rpb24gX28odCl7dmFyIGU9bmV3IFJlZ0V4cCgnWyInK3QrIlxuXHJdIiksbj10LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gcih0LGUpe3ZhciByLGk9W10sYT10Lmxlbmd0aCxvPTAscz0wLGM9YTw9MCx1PSExO2Z1bmN0aW9uIGwoKXtpZihjKXJldHVybiBnbztpZih1KXJldHVybiB1PSExLHlvO3ZhciBlLHIsaT1vO2lmKDM0PT09dC5jaGFyQ29kZUF0KGkpKXtmb3IoO28rKzxhJiYzNCE9PXQuY2hhckNvZGVBdChvKXx8MzQ9PT10LmNoYXJDb2RlQXQoKytvKTspO3JldHVybihlPW8pPj1hP2M9ITA6MTA9PT0ocj10LmNoYXJDb2RlQXQobysrKSk/dT0hMDoxMz09PXImJih1PSEwLDEwPT09dC5jaGFyQ29kZUF0KG8pJiYrK28pLHQuc2xpY2UoaSsxLGUtMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7bzxhOyl7aWYoMTA9PT0ocj10LmNoYXJDb2RlQXQoZT1vKyspKSl1PSEwO2Vsc2UgaWYoMTM9PT1yKXU9ITAsMTA9PT10LmNoYXJDb2RlQXQobykmJisrbztlbHNlIGlmKHIhPT1uKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGksZSl9cmV0dXJuIGM9ITAsdC5zbGljZShpLGEpfWZvcigxMD09PXQuY2hhckNvZGVBdChhLTEpJiYtLWEsMTM9PT10LmNoYXJDb2RlQXQoYS0xKSYmLS1hOyhyPWwoKSkhPT1nbzspe2Zvcih2YXIgaD1bXTtyIT09eW8mJnIhPT1nbzspaC5wdXNoKHIpLHI9bCgpO2UmJm51bGw9PShoPWUoaCxzKyspKXx8aS5wdXNoKGgpfXJldHVybiBpfWZ1bmN0aW9uIGkoZSxuKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8oZVt0XSl9KSkuam9pbih0KX0pKX1mdW5jdGlvbiBhKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6dCBpbnN0YW5jZW9mIERhdGU/ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRVVENIb3VycygpLG49dC5nZXRVVENNaW51dGVzKCkscj10LmdldFVUQ1NlY29uZHMoKSxpPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7cmV0dXJuIGlzTmFOKHQpPyJJbnZhbGlkIERhdGUiOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/Ii0iK2JvKC10LDYpOnQ+OTk5OT8iKyIrYm8odCw2KTpibyh0LDQpfSh0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitibyh0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrYm8odC5nZXRVVENEYXRlKCksMikrKGk/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIjoiK2JvKHIsMikrIi4iK2JvKGksMykrIloiOnI/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIjoiK2JvKHIsMikrIloiOm58fGU/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIloiOiIiKX0odCk6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxhPXIodCwoZnVuY3Rpb24odCxyKXtpZihuKXJldHVybiBuKHQsci0xKTtpPXQsbj1lP2Z1bmN0aW9uKHQsZSl7dmFyIG49bW8odCk7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIGUobihyKSxpLHQpfX0odCxlKTptbyh0KX0pKTtyZXR1cm4gYS5jb2x1bW5zPWl8fFtdLGF9LHBhcnNlUm93czpyLGZvcm1hdDpmdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1uJiYobj12byhlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChpKGUsbikpLmpvaW4oIlxuIil9LGZvcm1hdEJvZHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZSYmKGU9dm8odCkpLGkodCxlKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChhKS5qb2luKCJcbiIpfSxmb3JtYXRSb3c6YSxmb3JtYXRWYWx1ZTpvfX12YXIgeG89X28oIiwiKSx3bz14by5wYXJzZSxrbz14by5wYXJzZVJvd3MsVG89eG8uZm9ybWF0LEVvPXhvLmZvcm1hdEJvZHksQ289eG8uZm9ybWF0Um93cyxTbz14by5mb3JtYXRSb3csQW89eG8uZm9ybWF0VmFsdWUsTW89X28oIlx0IiksTm89TW8ucGFyc2UsRG89TW8ucGFyc2VSb3dzLE9vPU1vLmZvcm1hdCxCbz1Nby5mb3JtYXRCb2R5LExvPU1vLmZvcm1hdFJvd3MsSW89TW8uZm9ybWF0Um93LFJvPU1vLmZvcm1hdFZhbHVlO2Z1bmN0aW9uIEZvKHQpe2Zvcih2YXIgZSBpbiB0KXt2YXIgbixyLGk9dFtlXS50cmltKCk7aWYoaSlpZigidHJ1ZSI9PT1pKWk9ITA7ZWxzZSBpZigiZmFsc2UiPT09aSlpPSExO2Vsc2UgaWYoIk5hTiI9PT1pKWk9TmFOO2Vsc2UgaWYoaXNOYU4obj0raSkpe2lmKCEocj1pLm1hdGNoKC9eKFstK11cZHsyfSk/XGR7NH0oLVxkezJ9KC1cZHsyfSk/KT8oVFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkezN9KT8pPyhafFstK11cZHsyfTpcZHsyfSk/KT8kLykpKWNvbnRpbnVlO1BvJiZyWzRdJiYhcls3XSYmKGk9aS5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9ULywiICIpKSxpPW5ldyBEYXRlKGkpfWVsc2UgaT1uO2Vsc2UgaT1udWxsO3RbZV09aX1yZXR1cm4gdH12YXIgUG89bmV3IERhdGUoIjIwMTktMDEtMDFUMDA6MDAiKS5nZXRIb3VycygpfHxuZXcgRGF0ZSgiMjAxOS0wNy0wMVQwMDowMCIpLmdldEhvdXJzKCk7ZnVuY3Rpb24gam8odCl7cmV0dXJuK3R9ZnVuY3Rpb24gWW8odCl7cmV0dXJuIHQqdH1mdW5jdGlvbiB6byh0KXtyZXR1cm4gdCooMi10KX1mdW5jdGlvbiBVbyh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdDotLXQqKDItdCkrMSkvMn12YXIgcW89ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSwkbz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIDEtTWF0aC5wb3coMS10LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSxIbz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSxXbz1NYXRoLlBJLFZvPVdvLzI7ZnVuY3Rpb24gR28odCl7cmV0dXJuIDE9PSt0PzE6MS1NYXRoLmNvcyh0KlZvKX1mdW5jdGlvbiBYbyh0KXtyZXR1cm4gTWF0aC5zaW4odCpWbyl9ZnVuY3Rpb24gWm8odCl7cmV0dXJuKDEtTWF0aC5jb3MoV28qdCkpLzJ9ZnVuY3Rpb24gUW8odCl7cmV0dXJuIDEuMDAwOTc3NTE3MTA2NTQ5NCooTWF0aC5wb3coMiwtMTAqdCktLjAwMDk3NjU2MjUpfWZ1bmN0aW9uIEtvKHQpe3JldHVybiBRbygxLSt0KX1mdW5jdGlvbiBKbyh0KXtyZXR1cm4gMS1Rbyh0KX1mdW5jdGlvbiB0cyh0KXtyZXR1cm4oKHQqPTIpPD0xP1FvKDEtdCk6Mi1Rbyh0LTEpKS8yfWZ1bmN0aW9uIGVzKHQpe3JldHVybiAxLU1hdGguc3FydCgxLXQqdCl9ZnVuY3Rpb24gbnModCl7cmV0dXJuIE1hdGguc3FydCgxLSAtLXQqdCl9ZnVuY3Rpb24gcnModCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU1hdGguc3FydCgxLXQqdCk6TWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpLzJ9dmFyIGlzPTcuNTYyNTtmdW5jdGlvbiBhcyh0KXtyZXR1cm4gMS1vcygxLXQpfWZ1bmN0aW9uIG9zKHQpe3JldHVybih0PSt0KTwuMzYzNjM2MzYzNjM2MzYzNjU/aXMqdCp0OnQ8LjcyNzI3MjcyNzI3MjcyNzM/aXMqKHQtPS41NDU0NTQ1NDU0NTQ1NDU0KSp0Ky43NTp0PC45MDkwOTA5MDkwOTA5MDkxP2lzKih0LT0uODE4MTgxODE4MTgxODE4MikqdCsuOTM3NTppcyoodC09Ljk1NDU0NTQ1NDU0NTQ1NDYpKnQrLjk4NDM3NX1mdW5jdGlvbiBzcyh0KXtyZXR1cm4oKHQqPTIpPD0xPzEtb3MoMS10KTpvcyh0LTEpKzEpLzJ9dmFyIGNzPTEuNzAxNTgsdXM9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybih0PSt0KSp0KihlKih0LTEpK3QpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0oY3MpLGxzPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4tLXQqdCooKHQrMSkqZSt0KSsxfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0oY3MpLGhzPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufShjcyksZnM9MipNYXRoLlBJLGRzPWZ1bmN0aW9uIHQoZSxuKXt2YXIgcj1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPWZzKTtmdW5jdGlvbiBpKHQpe3JldHVybiBlKlFvKC0gLS10KSpNYXRoLnNpbigoci10KS9uKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMykscHM9ZnVuY3Rpb24gdChlLG4pe3ZhciByPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89ZnMpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIDEtZSpRbyh0PSt0KSpNYXRoLnNpbigodCtyKS9uKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMykseXM9ZnVuY3Rpb24gdChlLG4pe3ZhciByPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89ZnMpO2Z1bmN0aW9uIGkodCl7cmV0dXJuKCh0PTIqdC0xKTwwP2UqUW8oLXQpKk1hdGguc2luKChyLXQpL24pOjItZSpRbyh0KSpNYXRoLnNpbigocit0KS9uKSkvMn1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMyk7ZnVuY3Rpb24gZ3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmJsb2IoKX1mdW5jdGlvbiBtcyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oZ3MpfWZ1bmN0aW9uIHZzKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5hcnJheUJ1ZmZlcigpfWZ1bmN0aW9uIGJzKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbih2cyl9ZnVuY3Rpb24gX3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiB4cyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oX3MpfWZ1bmN0aW9uIHdzKHQpe3JldHVybiBmdW5jdGlvbihlLG4scil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKHI9bixuPXZvaWQgMCkseHMoZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHIpfSkpfX1mdW5jdGlvbiBrcyh0LGUsbixyKXszPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihyPW4sbj12b2lkIDApO3ZhciBpPV9vKHQpO3JldHVybiB4cyhlLG4pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBpLnBhcnNlKHQscil9KSl9dmFyIFRzPXdzKHdvKSxFcz13cyhObyk7ZnVuY3Rpb24gQ3ModCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7dmFyIGk9bmV3IEltYWdlO2Zvcih2YXIgYSBpbiBlKWlbYV09ZVthXTtpLm9uZXJyb3I9cixpLm9ubG9hZD1mdW5jdGlvbigpe24oaSl9LGkuc3JjPXR9KSl9ZnVuY3Rpb24gU3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO2lmKDIwNCE9PXQuc3RhdHVzJiYyMDUhPT10LnN0YXR1cylyZXR1cm4gdC5qc29uKCl9ZnVuY3Rpb24gQXModCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKFNzKX1mdW5jdGlvbiBNcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4geHMoZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fWNvbnN0IE5zPU1zKCJhcHBsaWNhdGlvbi94bWwiKTt2YXIgRHM9TXMoInRleHQvaHRtbCIpLE9zPU1zKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gQnModCxlKXt2YXIgbjtmdW5jdGlvbiByKCl7dmFyIHIsaSxhPW4ubGVuZ3RoLG89MCxzPTA7Zm9yKHI9MDtyPGE7KytyKW8rPShpPW5bcl0pLngscys9aS55O2ZvcihvPW8vYS10LHM9cy9hLWUscj0wO3I8YTsrK3IpKGk9bltyXSkueC09byxpLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLHIuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qscik6ZX0scn1mdW5jdGlvbiBMcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSXMoKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9ZnVuY3Rpb24gUnModCxlLG4scil7aWYoaXNOYU4oZSl8fGlzTmFOKG4pKXJldHVybiB0O3ZhciBpLGEsbyxzLGMsdSxsLGgsZixkPXQuX3Jvb3QscD17ZGF0YTpyfSx5PXQuX3gwLGc9dC5feTAsbT10Ll94MSx2PXQuX3kxO2lmKCFkKXJldHVybiB0Ll9yb290PXAsdDtmb3IoO2QubGVuZ3RoOylpZigodT1lPj0oYT0oeSttKS8yKSk/eT1hOm09YSwobD1uPj0obz0oZyt2KS8yKSk/Zz1vOnY9byxpPWQsIShkPWRbaD1sPDwxfHVdKSlyZXR1cm4gaVtoXT1wLHQ7aWYocz0rdC5feC5jYWxsKG51bGwsZC5kYXRhKSxjPSt0Ll95LmNhbGwobnVsbCxkLmRhdGEpLGU9PT1zJiZuPT09YylyZXR1cm4gcC5uZXh0PWQsaT9pW2hdPXA6dC5fcm9vdD1wLHQ7ZG97aT1pP2lbaF09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLCh1PWU+PShhPSh5K20pLzIpKT95PWE6bT1hLChsPW4+PShvPShnK3YpLzIpKT9nPW86dj1vfXdoaWxlKChoPWw8PDF8dSk9PShmPShjPj1vKTw8MXxzPj1hKSk7cmV0dXJuIGlbZl09ZCxpW2hdPXAsdH1mdW5jdGlvbiBGcyh0LGUsbixyLGkpe3RoaXMubm9kZT10LHRoaXMueDA9ZSx0aGlzLnkwPW4sdGhpcy54MT1yLHRoaXMueTE9aX1mdW5jdGlvbiBQcyh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBqcyh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBZcyh0LGUsbil7dmFyIHI9bmV3IHpzKG51bGw9PWU/UHM6ZSxudWxsPT1uP2pzOm4sTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9yOnIuYWRkQWxsKHQpfWZ1bmN0aW9uIHpzKHQsZSxuLHIsaSxhKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3gwPW4sdGhpcy5feTA9cix0aGlzLl94MT1pLHRoaXMuX3kxPWEsdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24gVXModCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0sbj1lO3Q9dC5uZXh0OyluPW4ubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfXZhciBxcz1Zcy5wcm90b3R5cGU9enMucHJvdG90eXBlO2Z1bmN0aW9uICRzKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiBIcyh0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rpb24gV3ModCl7dmFyIGUsbixyPTEsaT0xO2Z1bmN0aW9uIGEoKXtmb3IodmFyIHQsYSxzLGMsdSxsLGgsZj1lLmxlbmd0aCxkPTA7ZDxpOysrZClmb3IoYT1ZcyhlLCRzLEhzKS52aXNpdEFmdGVyKG8pLHQ9MDt0PGY7Kyt0KXM9ZVt0XSxsPW5bcy5pbmRleF0saD1sKmwsYz1zLngrcy52eCx1PXMueStzLnZ5LGEudmlzaXQocCk7ZnVuY3Rpb24gcCh0LGUsbixpLGEpe3ZhciBvPXQuZGF0YSxmPXQucixkPWwrZjtpZighbylyZXR1cm4gZT5jK2R8fGk8Yy1kfHxuPnUrZHx8YTx1LWQ7aWYoby5pbmRleD5zLmluZGV4KXt2YXIgcD1jLW8ueC1vLnZ4LHk9dS1vLnktby52eSxnPXAqcCt5Knk7ZzxkKmQmJigwPT09cCYmKGcrPShwPUlzKCkpKnApLDA9PT15JiYoZys9KHk9SXMoKSkqeSksZz0oZC0oZz1NYXRoLnNxcnQoZykpKS9nKnIscy52eCs9KHAqPWcpKihkPShmKj1mKS8oaCtmKSkscy52eSs9KHkqPWcpKmQsby52eC09cCooZD0xLWQpLG8udnktPXkqZCl9fX1mdW5jdGlvbiBvKHQpe2lmKHQuZGF0YSlyZXR1cm4gdC5yPW5bdC5kYXRhLmluZGV4XTtmb3IodmFyIGU9dC5yPTA7ZTw0OysrZSl0W2VdJiZ0W2VdLnI+dC5yJiYodC5yPXRbZV0ucil9ZnVuY3Rpb24gcygpe2lmKGUpe3ZhciByLGksYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSkscj0wO3I8YTsrK3IpaT1lW3JdLG5baS5pbmRleF09K3QoaSxyLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9THMobnVsbD09dD8xOit0KSksYS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxzKCl9LGEuaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxhKTppfSxhLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGEpOnJ9LGEucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLHMoKSxhKTp0fSxhfWZ1bmN0aW9uIFZzKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIEdzKHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIFhzKHQpe3ZhciBlLG4scixpLGEsbz1WcyxzPWZ1bmN0aW9uKHQpe3JldHVybiAxL01hdGgubWluKGlbdC5zb3VyY2UuaW5kZXhdLGlbdC50YXJnZXQuaW5kZXhdKX0sYz1McygzMCksdT0xO2Z1bmN0aW9uIGwocil7Zm9yKHZhciBpPTAsbz10Lmxlbmd0aDtpPHU7KytpKWZvcih2YXIgcyxjLGwsaCxmLGQscCx5PTA7eTxvOysreSljPShzPXRbeV0pLnNvdXJjZSxoPShsPXMudGFyZ2V0KS54K2wudngtYy54LWMudnh8fElzKCksZj1sLnkrbC52eS1jLnktYy52eXx8SXMoKSxoKj1kPSgoZD1NYXRoLnNxcnQoaCpoK2YqZikpLW5beV0pL2QqciplW3ldLGYqPWQsbC52eC09aCoocD1hW3ldKSxsLnZ5LT1mKnAsYy52eCs9aCoocD0xLXApLGMudnkrPWYqcH1mdW5jdGlvbiBoKCl7aWYocil7dmFyIHMsYyx1PXIubGVuZ3RoLGw9dC5sZW5ndGgsaD1uYShyLG8pO2ZvcihzPTAsaT1uZXcgQXJyYXkodSk7czxsOysrcykoYz10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgYy5zb3VyY2UmJihjLnNvdXJjZT1HcyhoLGMuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBjLnRhcmdldCYmKGMudGFyZ2V0PUdzKGgsYy50YXJnZXQpKSxpW2Muc291cmNlLmluZGV4XT0oaVtjLnNvdXJjZS5pbmRleF18fDApKzEsaVtjLnRhcmdldC5pbmRleF09KGlbYy50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsYT1uZXcgQXJyYXkobCk7czxsOysrcyljPXRbc10sYVtzXT1pW2Muc291cmNlLmluZGV4XS8oaVtjLnNvdXJjZS5pbmRleF0raVtjLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KGwpLGYoKSxuPW5ldyBBcnJheShsKSxkKCl9fWZ1bmN0aW9uIGYoKXtpZihyKWZvcih2YXIgbj0wLGk9dC5sZW5ndGg7bjxpOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBkKCl7aWYocilmb3IodmFyIGU9MCxpPXQubGVuZ3RoO2U8aTsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxsLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10LGgoKX0sbC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGgoKSxsKTp0fSxsLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbCk6b30sbC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGwpOnV9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMcygrdCksZigpLGwpOnN9LGwuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMcygrdCksZCgpLGwpOmN9LGx9ZnVuY3Rpb24gWnModCl7cmV0dXJuIHQueH1mdW5jdGlvbiBRcyh0KXtyZXR1cm4gdC55fXFzLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxlLG49bmV3IHpzKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkscj10aGlzLl9yb290O2lmKCFyKXJldHVybiBuO2lmKCFyLmxlbmd0aClyZXR1cm4gbi5fcm9vdD1VcyhyKSxuO2Zvcih0PVt7c291cmNlOnIsdGFyZ2V0Om4uX3Jvb3Q9bmV3IEFycmF5KDQpfV07cj10LnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShlPXIuc291cmNlW2ldKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0OnIudGFyZ2V0W2ldPW5ldyBBcnJheSg0KX0pOnIudGFyZ2V0W2ldPVVzKGUpKTtyZXR1cm4gbn0scXMuYWRkPWZ1bmN0aW9uKHQpe3ZhciBlPSt0aGlzLl94LmNhbGwobnVsbCx0KSxuPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gUnModGhpcy5jb3ZlcihlLG4pLGUsbix0KX0scXMuYWRkQWxsPWZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLGE9dC5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSksYz0xLzAsdT0xLzAsbD0tMS8wLGg9LTEvMDtmb3Iobj0wO248YTsrK24paXNOYU4ocj0rdGhpcy5feC5jYWxsKG51bGwsZT10W25dKSl8fGlzTmFOKGk9K3RoaXMuX3kuY2FsbChudWxsLGUpKXx8KG9bbl09cixzW25dPWkscjxjJiYoYz1yKSxyPmwmJihsPXIpLGk8dSYmKHU9aSksaT5oJiYoaD1pKSk7aWYoYz5sfHx1PmgpcmV0dXJuIHRoaXM7Zm9yKHRoaXMuY292ZXIoYyx1KS5jb3ZlcihsLGgpLG49MDtuPGE7KytuKVJzKHRoaXMsb1tuXSxzW25dLHRbbl0pO3JldHVybiB0aGlzfSxxcy5jb3Zlcj1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQ9K3QpfHxpc05hTihlPStlKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl94MCxyPXRoaXMuX3kwLGk9dGhpcy5feDEsYT10aGlzLl95MTtpZihpc05hTihuKSlpPShuPU1hdGguZmxvb3IodCkpKzEsYT0ocj1NYXRoLmZsb29yKGUpKSsxO2Vsc2V7Zm9yKHZhciBvLHMsYz1pLW4sdT10aGlzLl9yb290O24+dHx8dD49aXx8cj5lfHxlPj1hOylzd2l0Y2gocz0oZTxyKTw8MXx0PG4sKG89bmV3IEFycmF5KDQpKVtzXT11LHU9byxjKj0yLHMpe2Nhc2UgMDppPW4rYyxhPXIrYzticmVhaztjYXNlIDE6bj1pLWMsYT1yK2M7YnJlYWs7Y2FzZSAyOmk9bitjLHI9YS1jO2JyZWFrO2Nhc2UgMzpuPWktYyxyPWEtY310aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9dSl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9cix0aGlzLl94MT1pLHRoaXMuX3kxPWEsdGhpc30scXMuZGF0YT1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LHFzLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0scXMuZmluZD1mdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhLG8scyxjLHUsbD10aGlzLl94MCxoPXRoaXMuX3kwLGY9dGhpcy5feDEsZD10aGlzLl95MSxwPVtdLHk9dGhpcy5fcm9vdDtmb3IoeSYmcC5wdXNoKG5ldyBGcyh5LGwsaCxmLGQpKSxudWxsPT1uP249MS8wOihsPXQtbixoPWUtbixmPXQrbixkPWUrbixuKj1uKTtjPXAucG9wKCk7KWlmKCEoISh5PWMubm9kZSl8fChpPWMueDApPmZ8fChhPWMueTApPmR8fChvPWMueDEpPGx8fChzPWMueTEpPGgpKWlmKHkubGVuZ3RoKXt2YXIgZz0oaStvKS8yLG09KGErcykvMjtwLnB1c2gobmV3IEZzKHlbM10sZyxtLG8scyksbmV3IEZzKHlbMl0saSxtLGcscyksbmV3IEZzKHlbMV0sZyxhLG8sbSksbmV3IEZzKHlbMF0saSxhLGcsbSkpLCh1PShlPj1tKTw8MXx0Pj1nKSYmKGM9cFtwLmxlbmd0aC0xXSxwW3AubGVuZ3RoLTFdPXBbcC5sZW5ndGgtMS11XSxwW3AubGVuZ3RoLTEtdV09Yyl9ZWxzZXt2YXIgdj10LSt0aGlzLl94LmNhbGwobnVsbCx5LmRhdGEpLGI9ZS0rdGhpcy5feS5jYWxsKG51bGwseS5kYXRhKSxfPXYqditiKmI7aWYoXzxuKXt2YXIgeD1NYXRoLnNxcnQobj1fKTtsPXQteCxoPWUteCxmPXQreCxkPWUreCxyPXkuZGF0YX19cmV0dXJuIHJ9LHFzLnJlbW92ZT1mdW5jdGlvbih0KXtpZihpc05hTihhPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKG89K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLHIsaSxhLG8scyxjLHUsbCxoLGYsZD10aGlzLl9yb290LHA9dGhpcy5feDAseT10aGlzLl95MCxnPXRoaXMuX3gxLG09dGhpcy5feTE7aWYoIWQpcmV0dXJuIHRoaXM7aWYoZC5sZW5ndGgpZm9yKDs7KXtpZigodT1hPj0ocz0ocCtnKS8yKSk/cD1zOmc9cywobD1vPj0oYz0oeSttKS8yKSk/eT1jOm09YyxlPWQsIShkPWRbaD1sPDwxfHVdKSlyZXR1cm4gdGhpcztpZighZC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGY9aCl9Zm9yKDtkLmRhdGEhPT10OylpZihyPWQsIShkPWQubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKGk9ZC5uZXh0KSYmZGVsZXRlIGQubmV4dCxyPyhpP3IubmV4dD1pOmRlbGV0ZSByLm5leHQsdGhpcyk6ZT8oaT9lW2hdPWk6ZGVsZXRlIGVbaF0sKGQ9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJmQ9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFkLmxlbmd0aCYmKG4/bltmXT1kOnRoaXMuX3Jvb3Q9ZCksdGhpcyk6KHRoaXMuX3Jvb3Q9aSx0aGlzKX0scXMucmVtb3ZlQWxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30scXMucm9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSxxcy5zaXplPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0scXMudmlzaXQ9ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksYSxvLHM9W10sYz10aGlzLl9yb290O2ZvcihjJiZzLnB1c2gobmV3IEZzKGMsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGM9ZS5ub2RlLHI9ZS54MCxpPWUueTAsYT1lLngxLG89ZS55MSkmJmMubGVuZ3RoKXt2YXIgdT0ocithKS8yLGw9KGkrbykvMjsobj1jWzNdKSYmcy5wdXNoKG5ldyBGcyhuLHUsbCxhLG8pKSwobj1jWzJdKSYmcy5wdXNoKG5ldyBGcyhuLHIsbCx1LG8pKSwobj1jWzFdKSYmcy5wdXNoKG5ldyBGcyhuLHUsaSxhLGwpKSwobj1jWzBdKSYmcy5wdXNoKG5ldyBGcyhuLHIsaSx1LGwpKX1yZXR1cm4gdGhpc30scXMudmlzaXRBZnRlcj1mdW5jdGlvbih0KXt2YXIgZSxuPVtdLHI9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgRnModGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciBpPWUubm9kZTtpZihpLmxlbmd0aCl7dmFyIGEsbz1lLngwLHM9ZS55MCxjPWUueDEsdT1lLnkxLGw9KG8rYykvMixoPShzK3UpLzI7KGE9aVswXSkmJm4ucHVzaChuZXcgRnMoYSxvLHMsbCxoKSksKGE9aVsxXSkmJm4ucHVzaChuZXcgRnMoYSxsLHMsYyxoKSksKGE9aVsyXSkmJm4ucHVzaChuZXcgRnMoYSxvLGgsbCx1KSksKGE9aVszXSkmJm4ucHVzaChuZXcgRnMoYSxsLGgsYyx1KSl9ci5wdXNoKGUpfWZvcig7ZT1yLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30scXMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LHFzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgS3M9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO2Z1bmN0aW9uIEpzKHQpe3ZhciBlLG49MSxyPS4wMDEsaT0xLU1hdGgucG93KHIsMS8zMDApLGE9MCxvPS42LHM9bmEoKSxjPVZuKGwpLHU9ZnQoInRpY2siLCJlbmQiKTtmdW5jdGlvbiBsKCl7aCgpLHUuY2FsbCgidGljayIsZSksbjxyJiYoYy5zdG9wKCksdS5jYWxsKCJlbmQiLGUpKX1mdW5jdGlvbiBoKHIpe3ZhciBjLHUsbD10Lmxlbmd0aDt2b2lkIDA9PT1yJiYocj0xKTtmb3IodmFyIGg9MDtoPHI7KytoKWZvcihuKz0oYS1uKSppLHMuZWFjaCgoZnVuY3Rpb24odCl7dChuKX0pKSxjPTA7YzxsOysrYyludWxsPT0odT10W2NdKS5meD91LngrPXUudngqPW86KHUueD11LmZ4LHUudng9MCksbnVsbD09dS5meT91LnkrPXUudnkqPW86KHUueT11LmZ5LHUudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gZigpe2Zvcih2YXIgZSxuPTAscj10Lmxlbmd0aDtuPHI7KytuKXtpZigoZT10W25dKS5pbmRleD1uLG51bGwhPWUuZngmJihlLng9ZS5meCksbnVsbCE9ZS5meSYmKGUueT1lLmZ5KSxpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgaT0xMCpNYXRoLnNxcnQobiksYT1uKktzO2UueD1pKk1hdGguY29zKGEpLGUueT1pKk1hdGguc2luKGEpfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZigpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVzdGFydChsKSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGMuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZigpLHMuZWFjaChkKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxlKTpyfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGUpOitpfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxlKTphfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTEtdCxlKToxLW99LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LGQobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxhLG8scyxjLHU9MCxsPXQubGVuZ3RoO2ZvcihudWxsPT1yP3I9MS8wOnIqPXIsdT0wO3U8bDsrK3UpKG89KGk9ZS0ocz10W3VdKS54KSppKyhhPW4tcy55KSphKTxyJiYoYz1zLHI9byk7cmV0dXJuIGN9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8odS5vbih0LG4pLGUpOnUub24odCl9fX1mdW5jdGlvbiB0Yygpe3ZhciB0LGUsbixyLGk9THMoLTMwKSxhPTEsbz0xLzAscz0uODE7ZnVuY3Rpb24gYyhyKXt2YXIgaSxhPXQubGVuZ3RoLG89WXModCxacyxRcykudmlzaXRBZnRlcihsKTtmb3Iobj1yLGk9MDtpPGE7KytpKWU9dFtpXSxvLnZpc2l0KGgpfWZ1bmN0aW9uIHUoKXtpZih0KXt2YXIgZSxuLGE9dC5sZW5ndGg7Zm9yKHI9bmV3IEFycmF5KGEpLGU9MDtlPGE7KytlKW49dFtlXSxyW24uaW5kZXhdPStpKG4sZSx0KX19ZnVuY3Rpb24gbCh0KXt2YXIgZSxuLGksYSxvLHM9MCxjPTA7aWYodC5sZW5ndGgpe2ZvcihpPWE9bz0wO288NDsrK28pKGU9dFtvXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsYys9bixpKz1uKmUueCxhKz1uKmUueSk7dC54PWkvYyx0Lnk9YS9jfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9cltlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LGksYyx1KXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgbD10LngtZS54LGg9dC55LWUueSxmPXUtaSxkPWwqbCtoKmg7aWYoZipmL3M8ZClyZXR1cm4gZDxvJiYoMD09PWwmJihkKz0obD1JcygpKSpsKSwwPT09aCYmKGQrPShoPUlzKCkpKmgpLGQ8YSYmKGQ9TWF0aC5zcXJ0KGEqZCkpLGUudngrPWwqdC52YWx1ZSpuL2QsZS52eSs9aCp0LnZhbHVlKm4vZCksITA7aWYoISh0Lmxlbmd0aHx8ZD49bykpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PWwmJihkKz0obD1JcygpKSpsKSwwPT09aCYmKGQrPShoPUlzKCkpKmgpLGQ8YSYmKGQ9TWF0aC5zcXJ0KGEqZCkpKTtkb3t0LmRhdGEhPT1lJiYoZj1yW3QuZGF0YS5pbmRleF0qbi9kLGUudngrPWwqZixlLnZ5Kz1oKmYpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGMuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsdSgpfSxjLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6THMoK3QpLHUoKSxjKTppfSxjLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxjKTpNYXRoLnNxcnQoYSl9LGMuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGMpOk1hdGguc3FydChvKX0sYy50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsYyk6TWF0aC5zcXJ0KHMpfSxjfWZ1bmN0aW9uIGVjKHQsZSxuKXt2YXIgcixpLGEsbz1McyguMSk7ZnVuY3Rpb24gcyh0KXtmb3IodmFyIG89MCxzPXIubGVuZ3RoO288czsrK28pe3ZhciBjPXJbb10sdT1jLngtZXx8MWUtNixsPWMueS1ufHwxZS02LGg9TWF0aC5zcXJ0KHUqdStsKmwpLGY9KGFbb10taCkqaVtvXSp0L2g7Yy52eCs9dSpmLGMudnkrPWwqZn19ZnVuY3Rpb24gYygpe2lmKHIpe3ZhciBlLG49ci5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG4pLGE9bmV3IEFycmF5KG4pLGU9MDtlPG47KytlKWFbZV09K3QocltlXSxlLHIpLGlbZV09aXNOYU4oYVtlXSk/MDorbyhyW2VdLGUscil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McygrdCkpLG51bGw9PWUmJihlPTApLG51bGw9PW4mJihuPTApLHMuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXQsYygpfSxzLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6THMoK3QpLGMoKSxzKTpvfSxzLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkxzKCtlKSxjKCkscyk6dH0scy54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LHMpOmV9LHMueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxzKTpufSxzfWZ1bmN0aW9uIG5jKHQpe3ZhciBlLG4scixpPUxzKC4xKTtmdW5jdGlvbiBhKHQpe2Zvcih2YXIgaSxhPTAsbz1lLmxlbmd0aDthPG87KythKShpPWVbYV0pLnZ4Kz0oclthXS1pLngpKm5bYV0qdH1mdW5jdGlvbiBvKCl7aWYoZSl7dmFyIGEsbz1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobykscj1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2EpblthXT1pc05hTihyW2FdPSt0KGVbYV0sYSxlKSk/MDoraShlW2FdLGEsZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McyhudWxsPT10PzA6K3QpKSxhLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LG8oKX0sYS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxzKCt0KSxvKCksYSk6aX0sYS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLG8oKSxhKTp0fSxhfWZ1bmN0aW9uIHJjKHQpe3ZhciBlLG4scixpPUxzKC4xKTtmdW5jdGlvbiBhKHQpe2Zvcih2YXIgaSxhPTAsbz1lLmxlbmd0aDthPG87KythKShpPWVbYV0pLnZ5Kz0oclthXS1pLnkpKm5bYV0qdH1mdW5jdGlvbiBvKCl7aWYoZSl7dmFyIGEsbz1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobykscj1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2EpblthXT1pc05hTihyW2FdPSt0KGVbYV0sYSxlKSk/MDoraShlW2FdLGEsZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McyhudWxsPT10PzA6K3QpKSxhLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LG8oKX0sYS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxzKCt0KSxvKCksYSk6aX0sYS55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLG8oKSxhKTp0fSxhfWZ1bmN0aW9uIGljKHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLHI9dC5zbGljZSgwLG4pO3JldHVybltyLmxlbmd0aD4xP3JbMF0rci5zbGljZSgyKTpyLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIGFjKHQpe3JldHVybih0PWljKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIG9jLHNjPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIGNjKHQpe2lmKCEoZT1zYy5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgdWMoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gdWModCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gbGModCxlKXt2YXIgbj1pYyh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciByPW5bMF0saT1uWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStyOnIubGVuZ3RoPmkrMT9yLnNsaWNlKDAsaSsxKSsiLiIrci5zbGljZShpKzEpOnIrbmV3IEFycmF5KGktci5sZW5ndGgrMikuam9pbigiMCIpfWNjLnByb3RvdHlwZT11Yy5wcm90b3R5cGUsdWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07Y29uc3QgaGM9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModD1NYXRoLnJvdW5kKHQpKT49MWUyMT90LnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6dC50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGxjKDEwMCp0LGUpfSxyOmxjLHM6ZnVuY3Rpb24odCxlKXt2YXIgbj1pYyh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciByPW5bMF0saT1uWzFdLGE9aS0ob2M9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLG89ci5sZW5ndGg7cmV0dXJuIGE9PT1vP3I6YT5vP3IrbmV3IEFycmF5KGEtbysxKS5qb2luKCIwIik6YT4wP3Iuc2xpY2UoMCxhKSsiLiIrci5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStpYyh0LE1hdGgubWF4KDAsZSthLTEpKVswXX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9fTtmdW5jdGlvbiBmYyh0KXtyZXR1cm4gdH12YXIgZGMscGMseWMsZ2M9QXJyYXkucHJvdG90eXBlLm1hcCxtYz1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gdmModCl7dmFyIGUsbixyPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP2ZjOihlPWdjLmNhbGwodC5ncm91cGluZyxOdW1iZXIpLG49dC50aG91c2FuZHMrIiIsZnVuY3Rpb24odCxyKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxvPTAscz1lWzBdLGM9MDtpPjAmJnM+MCYmKGMrcysxPnImJihzPU1hdGgubWF4KDEsci1jKSksYS5wdXNoKHQuc3Vic3RyaW5nKGktPXMsaStzKSksISgoYys9cysxKT5yKSk7KXM9ZVtvPShvKzEpJWUubGVuZ3RoXTtyZXR1cm4gYS5yZXZlcnNlKCkuam9pbihuKX0pLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLGE9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLG89dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIscz12b2lkIDA9PT10Lm51bWVyYWxzP2ZjOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fShnYy5jYWxsKHQubnVtZXJhbHMsU3RyaW5nKSksYz12b2lkIDA9PT10LnBlcmNlbnQ/IiUiOnQucGVyY2VudCsiIix1PXZvaWQgMD09PXQubWludXM/Ii0iOnQubWludXMrIiIsbD12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBoKHQpe3ZhciBlPSh0PWNjKHQpKS5maWxsLG49dC5hbGlnbixoPXQuc2lnbixmPXQuc3ltYm9sLGQ9dC56ZXJvLHA9dC53aWR0aCx5PXQuY29tbWEsZz10LnByZWNpc2lvbixtPXQudHJpbSx2PXQudHlwZTsibiI9PT12Pyh5PSEwLHY9ImciKTpoY1t2XXx8KHZvaWQgMD09PWcmJihnPTEyKSxtPSEwLHY9ImciKSwoZHx8IjAiPT09ZSYmIj0iPT09bikmJihkPSEwLGU9IjAiLG49Ij0iKTt2YXIgYj0iJCI9PT1mP2k6IiMiPT09ZiYmL1tib3hYXS8udGVzdCh2KT8iMCIrdi50b0xvd2VyQ2FzZSgpOiIiLF89IiQiPT09Zj9hOi9bJXBdLy50ZXN0KHYpP2M6IiIseD1oY1t2XSx3PS9bZGVmZ3BycyVdLy50ZXN0KHYpO2Z1bmN0aW9uIGsodCl7dmFyIGksYSxjLGY9YixrPV87aWYoImMiPT09dilrPXgodCkrayx0PSIiO2Vsc2V7dmFyIFQ9KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/bDp4KE1hdGguYWJzKHQpLGcpLG0mJih0PWZ1bmN0aW9uKHQpe3Q6Zm9yKHZhciBlLG49dC5sZW5ndGgscj0xLGk9LTE7cjxuOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjppPWU9cjticmVhaztjYXNlIjAiOjA9PT1pJiYoaT1yKSxlPXI7YnJlYWs7ZGVmYXVsdDppZighK3Rbcl0pYnJlYWsgdDtpPjAmJihpPTApfXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UoZSsxKTp0fSh0KSksVCYmMD09K3QmJiIrIiE9PWgmJihUPSExKSxmPShUPyIoIj09PWg/aDp1OiItIj09PWh8fCIoIj09PWg/IiI6aCkrZixrPSgicyI9PT12P21jWzgrb2MvM106IiIpK2srKFQmJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLGE9dC5sZW5ndGg7KytpPGE7KWlmKDQ4PihjPXQuY2hhckNvZGVBdChpKSl8fGM+NTcpe2s9KDQ2PT09Yz9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStrLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX15JiYhZCYmKHQ9cih0LDEvMCkpO3ZhciBFPWYubGVuZ3RoK3QubGVuZ3RoK2subGVuZ3RoLEM9RTxwP25ldyBBcnJheShwLUUrMSkuam9pbihlKToiIjtzd2l0Y2goeSYmZCYmKHQ9cihDK3QsQy5sZW5ndGg/cC1rLmxlbmd0aDoxLzApLEM9IiIpLG4pe2Nhc2UiPCI6dD1mK3QraytDO2JyZWFrO2Nhc2UiPSI6dD1mK0MrdCtrO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsRT1DLmxlbmd0aD4+MSkrZit0K2srQy5zbGljZShFKTticmVhaztkZWZhdWx0OnQ9QytmK3Qra31yZXR1cm4gcyh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh2KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxrLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LGt9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbih0LGUpe3ZhciBuPWgoKCh0PWNjKHQpKS50eXBlPSJmIix0KSkscj0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhYyhlKS8zKSkpLGk9TWF0aC5wb3coMTAsLXIpLGE9bWNbOCtyLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihpKnQpK2F9fX19ZnVuY3Rpb24gYmModCl7cmV0dXJuIGRjPXZjKHQpLHBjPWRjLmZvcm1hdCx5Yz1kYy5mb3JtYXRQcmVmaXgsZGN9ZnVuY3Rpb24gX2ModCl7cmV0dXJuIE1hdGgubWF4KDAsLWFjKE1hdGguYWJzKHQpKSl9ZnVuY3Rpb24geGModCxlKXtyZXR1cm4gTWF0aC5tYXgoMCwzKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhYyhlKS8zKSkpLWFjKE1hdGguYWJzKHQpKSl9ZnVuY3Rpb24gd2ModCxlKXtyZXR1cm4gdD1NYXRoLmFicyh0KSxlPU1hdGguYWJzKGUpLXQsTWF0aC5tYXgoMCxhYyhlKS1hYyh0KSkrMX1mdW5jdGlvbiBrYygpe3JldHVybiBuZXcgVGN9ZnVuY3Rpb24gVGMoKXt0aGlzLnJlc2V0KCl9YmMoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pLFRjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VGMscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtDYyhFYyx0LHRoaXMudCksQ2ModGhpcyxFYy5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9RWMudDp0aGlzLnM9RWMudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgRWM9bmV3IFRjO2Z1bmN0aW9uIENjKHQsZSxuKXt2YXIgcj10LnM9ZStuLGk9ci1lLGE9ci1pO3QudD1lLWErKG4taSl9dmFyIFNjPTFlLTYsQWM9MWUtMTIsTWM9TWF0aC5QSSxOYz1NYy8yLERjPU1jLzQsT2M9MipNYyxCYz0xODAvTWMsTGM9TWMvMTgwLEljPU1hdGguYWJzLFJjPU1hdGguYXRhbixGYz1NYXRoLmF0YW4yLFBjPU1hdGguY29zLGpjPU1hdGguY2VpbCxZYz1NYXRoLmV4cCx6Yz0oTWF0aC5mbG9vcixNYXRoLmxvZyksVWM9TWF0aC5wb3cscWM9TWF0aC5zaW4sJGM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LEhjPU1hdGguc3FydCxXYz1NYXRoLnRhbjtmdW5jdGlvbiBWYyh0KXtyZXR1cm4gdD4xPzA6dDwtMT9NYzpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gR2ModCl7cmV0dXJuIHQ+MT9OYzp0PC0xPy1OYzpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gWGModCl7cmV0dXJuKHQ9cWModC8yKSkqdH1mdW5jdGlvbiBaYygpe31mdW5jdGlvbiBRYyh0LGUpe3QmJkpjLmhhc093blByb3BlcnR5KHQudHlwZSkmJkpjW3QudHlwZV0odCxlKX12YXIgS2M9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtRYyh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspUWMobltyXS5nZW9tZXRyeSxlKX19LEpjPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe3Q9dC5jb29yZGluYXRlcyxlLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspdD1uW3JdLGUucG9pbnQodFswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7dHUodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KXR1KG5bcl0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe2V1KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspZXUobltyXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KVFjKG5bcl0sZSl9fTtmdW5jdGlvbiB0dSh0LGUsbil7dmFyIHIsaT0tMSxhPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytpPGE7KXI9dFtpXSxlLnBvaW50KHJbMF0sclsxXSxyWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBldSh0LGUpe3ZhciBuPS0xLHI9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPHI7KXR1KHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBudSh0LGUpe3QmJktjLmhhc093blByb3BlcnR5KHQudHlwZSk/S2NbdC50eXBlXSh0LGUpOlFjKHQsZSl9dmFyIHJ1LGl1LGF1LG91LHN1LGN1PWtjKCksdXU9a2MoKSxsdT17cG9pbnQ6WmMsbGluZVN0YXJ0OlpjLGxpbmVFbmQ6WmMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Y3UucmVzZXQoKSxsdS5saW5lU3RhcnQ9aHUsbHUubGluZUVuZD1mdX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStjdTt1dS5hZGQodDwwP09jK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9WmN9LHNwaGVyZTpmdW5jdGlvbigpe3V1LmFkZChPYyl9fTtmdW5jdGlvbiBodSgpe2x1LnBvaW50PWR1fWZ1bmN0aW9uIGZ1KCl7cHUocnUsaXUpfWZ1bmN0aW9uIGR1KHQsZSl7bHUucG9pbnQ9cHUscnU9dCxpdT1lLGF1PXQqPUxjLG91PVBjKGU9KGUqPUxjKS8yK0RjKSxzdT1xYyhlKX1mdW5jdGlvbiBwdSh0LGUpe3ZhciBuPSh0Kj1MYyktYXUscj1uPj0wPzE6LTEsaT1yKm4sYT1QYyhlPShlKj1MYykvMitEYyksbz1xYyhlKSxzPXN1Km8sYz1vdSphK3MqUGMoaSksdT1zKnIqcWMoaSk7Y3UuYWRkKEZjKHUsYykpLGF1PXQsb3U9YSxzdT1vfWZ1bmN0aW9uIHl1KHQpe3JldHVybiB1dS5yZXNldCgpLG51KHQsbHUpLDIqdXV9ZnVuY3Rpb24gZ3UodCl7cmV0dXJuW0ZjKHRbMV0sdFswXSksR2ModFsyXSldfWZ1bmN0aW9uIG11KHQpe3ZhciBlPXRbMF0sbj10WzFdLHI9UGMobik7cmV0dXJuW3IqUGMoZSkscipxYyhlKSxxYyhuKV19ZnVuY3Rpb24gdnUodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gYnUodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIF91KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24geHUodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIHd1KHQpe3ZhciBlPUhjKHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIga3UsVHUsRXUsQ3UsU3UsQXUsTXUsTnUsRHUsT3UsQnUsTHUsSXUsUnUsRnUsUHUsanUsWXUsenUsVXUscXUsJHUsSHUsV3UsVnUsR3UsWHU9a2MoKSxadT17cG9pbnQ6UXUsbGluZVN0YXJ0Okp1LGxpbmVFbmQ6dGwscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WnUucG9pbnQ9ZWwsWnUubGluZVN0YXJ0PW5sLFp1LmxpbmVFbmQ9cmwsWHUucmVzZXQoKSxsdS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2x1LnBvbHlnb25FbmQoKSxadS5wb2ludD1RdSxadS5saW5lU3RhcnQ9SnUsWnUubGluZUVuZD10bCxjdTwwPyhrdT0tKEV1PTE4MCksVHU9LShDdT05MCkpOlh1PlNjP0N1PTkwOlh1PC0xZS02JiYoVHU9LTkwKSxPdVswXT1rdSxPdVsxXT1FdX0sc3BoZXJlOmZ1bmN0aW9uKCl7a3U9LShFdT0xODApLFR1PS0oQ3U9OTApfX07ZnVuY3Rpb24gUXUodCxlKXtEdS5wdXNoKE91PVtrdT10LEV1PXRdKSxlPFR1JiYoVHU9ZSksZT5DdSYmKEN1PWUpfWZ1bmN0aW9uIEt1KHQsZSl7dmFyIG49bXUoW3QqTGMsZSpMY10pO2lmKE51KXt2YXIgcj1idShOdSxuKSxpPWJ1KFtyWzFdLC1yWzBdLDBdLHIpO3d1KGkpLGk9Z3UoaSk7dmFyIGEsbz10LVN1LHM9bz4wPzE6LTEsYz1pWzBdKkJjKnMsdT1JYyhvKT4xODA7dV4ocypTdTxjJiZjPHMqdCk/KGE9aVsxXSpCYyk+Q3UmJihDdT1hKTp1XihzKlN1PChjPShjKzM2MCklMzYwLTE4MCkmJmM8cyp0KT8oYT0taVsxXSpCYyk8VHUmJihUdT1hKTooZTxUdSYmKFR1PWUpLGU+Q3UmJihDdT1lKSksdT90PFN1P2lsKGt1LHQpPmlsKGt1LEV1KSYmKEV1PXQpOmlsKHQsRXUpPmlsKGt1LEV1KSYmKGt1PXQpOkV1Pj1rdT8odDxrdSYmKGt1PXQpLHQ+RXUmJihFdT10KSk6dD5TdT9pbChrdSx0KT5pbChrdSxFdSkmJihFdT10KTppbCh0LEV1KT5pbChrdSxFdSkmJihrdT10KX1lbHNlIER1LnB1c2goT3U9W2t1PXQsRXU9dF0pO2U8VHUmJihUdT1lKSxlPkN1JiYoQ3U9ZSksTnU9bixTdT10fWZ1bmN0aW9uIEp1KCl7WnUucG9pbnQ9S3V9ZnVuY3Rpb24gdGwoKXtPdVswXT1rdSxPdVsxXT1FdSxadS5wb2ludD1RdSxOdT1udWxsfWZ1bmN0aW9uIGVsKHQsZSl7aWYoTnUpe3ZhciBuPXQtU3U7WHUuYWRkKEljKG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgQXU9dCxNdT1lO2x1LnBvaW50KHQsZSksS3UodCxlKX1mdW5jdGlvbiBubCgpe2x1LmxpbmVTdGFydCgpfWZ1bmN0aW9uIHJsKCl7ZWwoQXUsTXUpLGx1LmxpbmVFbmQoKSxJYyhYdSk+U2MmJihrdT0tKEV1PTE4MCkpLE91WzBdPWt1LE91WzFdPUV1LE51PW51bGx9ZnVuY3Rpb24gaWwodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIGFsKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBvbCh0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9ZnVuY3Rpb24gc2wodCl7dmFyIGUsbixyLGksYSxvLHM7aWYoQ3U9RXU9LShrdT1UdT0xLzApLER1PVtdLG51KHQsWnUpLG49RHUubGVuZ3RoKXtmb3IoRHUuc29ydChhbCksZT0xLGE9W3I9RHVbMF1dO2U8bjsrK2Upb2wociwoaT1EdVtlXSlbMF0pfHxvbChyLGlbMV0pPyhpbChyWzBdLGlbMV0pPmlsKHJbMF0sclsxXSkmJihyWzFdPWlbMV0pLGlsKGlbMF0sclsxXSk+aWwoclswXSxyWzFdKSYmKHJbMF09aVswXSkpOmEucHVzaChyPWkpO2ZvcihvPS0xLzAsZT0wLHI9YVtuPWEubGVuZ3RoLTFdO2U8PW47cj1pLCsrZSlpPWFbZV0sKHM9aWwoclsxXSxpWzBdKSk+byYmKG89cyxrdT1pWzBdLEV1PXJbMV0pfXJldHVybiBEdT1PdT1udWxsLGt1PT09MS8wfHxUdT09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1trdSxUdV0sW0V1LEN1XV19dmFyIGNsPXtzcGhlcmU6WmMscG9pbnQ6dWwsbGluZVN0YXJ0OmhsLGxpbmVFbmQ6cGwscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Y2wubGluZVN0YXJ0PXlsLGNsLmxpbmVFbmQ9Z2x9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtjbC5saW5lU3RhcnQ9aGwsY2wubGluZUVuZD1wbH19O2Z1bmN0aW9uIHVsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpO2xsKG4qUGModCksbipxYyh0KSxxYyhlKSl9ZnVuY3Rpb24gbGwodCxlLG4peysrQnUsSXUrPSh0LUl1KS9CdSxSdSs9KGUtUnUpL0J1LEZ1Kz0obi1GdSkvQnV9ZnVuY3Rpb24gaGwoKXtjbC5wb2ludD1mbH1mdW5jdGlvbiBmbCh0LGUpe3QqPUxjO3ZhciBuPVBjKGUqPUxjKTtXdT1uKlBjKHQpLFZ1PW4qcWModCksR3U9cWMoZSksY2wucG9pbnQ9ZGwsbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIGRsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpLHI9bipQYyh0KSxpPW4qcWModCksYT1xYyhlKSxvPUZjKEhjKChvPVZ1KmEtR3UqaSkqbysobz1HdSpyLVd1KmEpKm8rKG89V3UqaS1WdSpyKSpvKSxXdSpyK1Z1KmkrR3UqYSk7THUrPW8sUHUrPW8qKFd1KyhXdT1yKSksanUrPW8qKFZ1KyhWdT1pKSksWXUrPW8qKEd1KyhHdT1hKSksbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIHBsKCl7Y2wucG9pbnQ9dWx9ZnVuY3Rpb24geWwoKXtjbC5wb2ludD1tbH1mdW5jdGlvbiBnbCgpe3ZsKCR1LEh1KSxjbC5wb2ludD11bH1mdW5jdGlvbiBtbCh0LGUpeyR1PXQsSHU9ZSx0Kj1MYyxlKj1MYyxjbC5wb2ludD12bDt2YXIgbj1QYyhlKTtXdT1uKlBjKHQpLFZ1PW4qcWModCksR3U9cWMoZSksbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIHZsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpLHI9bipQYyh0KSxpPW4qcWModCksYT1xYyhlKSxvPVZ1KmEtR3UqaSxzPUd1KnItV3UqYSxjPVd1KmktVnUqcix1PUhjKG8qbytzKnMrYypjKSxsPUdjKHUpLGg9dSYmLWwvdTt6dSs9aCpvLFV1Kz1oKnMscXUrPWgqYyxMdSs9bCxQdSs9bCooV3UrKFd1PXIpKSxqdSs9bCooVnUrKFZ1PWkpKSxZdSs9bCooR3UrKEd1PWEpKSxsbChXdSxWdSxHdSl9ZnVuY3Rpb24gYmwodCl7QnU9THU9SXU9UnU9RnU9UHU9anU9WXU9enU9VXU9cXU9MCxudSh0LGNsKTt2YXIgZT16dSxuPVV1LHI9cXUsaT1lKmUrbipuK3IqcjtyZXR1cm4gaTxBYyYmKGU9UHUsbj1qdSxyPVl1LEx1PFNjJiYoZT1JdSxuPVJ1LHI9RnUpLChpPWUqZStuKm4rcipyKTxBYyk/W05hTixOYU5dOltGYyhuLGUpKkJjLEdjKHIvSGMoaSkpKkJjXX1mdW5jdGlvbiBfbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24geGwodCxlKXtmdW5jdGlvbiBuKG4scil7cmV0dXJuIG49dChuLHIpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixyKXtyZXR1cm4obj1lLmludmVydChuLHIpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gd2wodCxlKXtyZXR1cm5bSWModCk+TWM/dCtNYXRoLnJvdW5kKC10L09jKSpPYzp0LGVdfWZ1bmN0aW9uIGtsKHQsZSxuKXtyZXR1cm4odCU9T2MpP2V8fG4/eGwoRWwodCksQ2woZSxuKSk6RWwodCk6ZXx8bj9DbChlLG4pOndsfWZ1bmN0aW9uIFRsKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVyblsoZSs9dCk+TWM/ZS1PYzplPC1NYz9lK09jOmUsbl19fWZ1bmN0aW9uIEVsKHQpe3ZhciBlPVRsKHQpO3JldHVybiBlLmludmVydD1UbCgtdCksZX1mdW5jdGlvbiBDbCh0LGUpe3ZhciBuPVBjKHQpLHI9cWModCksaT1QYyhlKSxhPXFjKGUpO2Z1bmN0aW9uIG8odCxlKXt2YXIgbz1QYyhlKSxzPVBjKHQpKm8sYz1xYyh0KSpvLHU9cWMoZSksbD11Km4rcypyO3JldHVybltGYyhjKmktbCphLHMqbi11KnIpLEdjKGwqaStjKmEpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbz1QYyhlKSxzPVBjKHQpKm8sYz1xYyh0KSpvLHU9cWMoZSksbD11KmktYyphO3JldHVybltGYyhjKmkrdSphLHMqbitsKnIpLEdjKGwqbi1zKnIpXX0sb31mdW5jdGlvbiBTbCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybihlPXQoZVswXSpMYyxlWzFdKkxjKSlbMF0qPUJjLGVbMV0qPUJjLGV9cmV0dXJuIHQ9a2wodFswXSpMYyx0WzFdKkxjLHQubGVuZ3RoPjI/dFsyXSpMYzowKSxlLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4oZT10LmludmVydChlWzBdKkxjLGVbMV0qTGMpKVswXSo9QmMsZVsxXSo9QmMsZX0sZX1mdW5jdGlvbiBBbCh0LGUsbixyLGksYSl7aWYobil7dmFyIG89UGMoZSkscz1xYyhlKSxjPXIqbjtudWxsPT1pPyhpPWUrcipPYyxhPWUtYy8yKTooaT1NbChvLGkpLGE9TWwobyxhKSwocj4wP2k8YTppPmEpJiYoaSs9cipPYykpO2Zvcih2YXIgdSxsPWk7cj4wP2w+YTpsPGE7bC09Yyl1PWd1KFtvLC1zKlBjKGwpLC1zKnFjKGwpXSksdC5wb2ludCh1WzBdLHVbMV0pfX1mdW5jdGlvbiBNbCh0LGUpeyhlPW11KGUpKVswXS09dCx3dShlKTt2YXIgbj1WYygtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1uOm4pK09jLVNjKSVPY31mdW5jdGlvbiBObCgpe3ZhciB0LGUsbj1fbChbMCwwXSkscj1fbCg5MCksaT1fbCg2KSxhPXtwb2ludDpmdW5jdGlvbihuLHIpe3QucHVzaChuPWUobixyKSksblswXSo9QmMsblsxXSo9QmN9fTtmdW5jdGlvbiBvKCl7dmFyIG89bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscz1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpMYyxjPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKkxjO3JldHVybiB0PVtdLGU9a2woLW9bMF0qTGMsLW9bMV0qTGMsMCkuaW52ZXJ0LEFsKGEscyxjLDEpLG89e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1lPW51bGwsb31yZXR1cm4gby5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpfbChbK3RbMF0sK3RbMV1dKSxvKTpufSxvLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ol9sKCt0KSxvKTpyfSxvLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ol9sKCt0KSxvKTppfSxvfWZ1bmN0aW9uIERsKCl7dmFyIHQsZT1bXTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24oZSxuLHIpe3QucHVzaChbZSxuLHJdKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ZS5wdXNoKHQ9W10pfSxsaW5lRW5kOlpjLHJlam9pbjpmdW5jdGlvbigpe2UubGVuZ3RoPjEmJmUucHVzaChlLnBvcCgpLmNvbmNhdChlLnNoaWZ0KCkpKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIG49ZTtyZXR1cm4gZT1bXSx0PW51bGwsbn19fWZ1bmN0aW9uIE9sKHQsZSl7cmV0dXJuIEljKHRbMF0tZVswXSk8U2MmJkljKHRbMV0tZVsxXSk8U2N9ZnVuY3Rpb24gQmwodCxlLG4scil7dGhpcy54PXQsdGhpcy56PWUsdGhpcy5vPW4sdGhpcy5lPXIsdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBMbCh0LGUsbixyLGkpe3ZhciBhLG8scz1bXSxjPVtdO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoISgoZT10Lmxlbmd0aC0xKTw9MCkpe3ZhciBlLG4scj10WzBdLG89dFtlXTtpZihPbChyLG8pKXtpZighclsyXSYmIW9bMl0pe2ZvcihpLmxpbmVTdGFydCgpLGE9MDthPGU7KythKWkucG9pbnQoKHI9dFthXSlbMF0sclsxXSk7cmV0dXJuIHZvaWQgaS5saW5lRW5kKCl9b1swXSs9MmUtNn1zLnB1c2gobj1uZXcgQmwocix0LG51bGwsITApKSxjLnB1c2gobi5vPW5ldyBCbChyLG51bGwsbiwhMSkpLHMucHVzaChuPW5ldyBCbChvLHQsbnVsbCwhMSkpLGMucHVzaChuLm89bmV3IEJsKG8sbnVsbCxuLCEwKSl9fSkpLHMubGVuZ3RoKXtmb3IoYy5zb3J0KGUpLElsKHMpLElsKGMpLGE9MCxvPWMubGVuZ3RoO2E8bzsrK2EpY1thXS5lPW49IW47Zm9yKHZhciB1LGwsaD1zWzBdOzspe2Zvcih2YXIgZj1oLGQ9ITA7Zi52OylpZigoZj1mLm4pPT09aClyZXR1cm47dT1mLnosaS5saW5lU3RhcnQoKTtkb3tpZihmLnY9Zi5vLnY9ITAsZi5lKXtpZihkKWZvcihhPTAsbz11Lmxlbmd0aDthPG87KythKWkucG9pbnQoKGw9dVthXSlbMF0sbFsxXSk7ZWxzZSByKGYueCxmLm4ueCwxLGkpO2Y9Zi5ufWVsc2V7aWYoZClmb3IodT1mLnAueixhPXUubGVuZ3RoLTE7YT49MDstLWEpaS5wb2ludCgobD11W2FdKVswXSxsWzFdKTtlbHNlIHIoZi54LGYucC54LC0xLGkpO2Y9Zi5wfXU9KGY9Zi5vKS56LGQ9IWR9d2hpbGUoIWYudik7aS5saW5lRW5kKCl9fX1mdW5jdGlvbiBJbCh0KXtpZihlPXQubGVuZ3RoKXtmb3IodmFyIGUsbixyPTAsaT10WzBdOysrcjxlOylpLm49bj10W3JdLG4ucD1pLGk9bjtpLm49bj10WzBdLG4ucD1pfX13bC5pbnZlcnQ9d2w7dmFyIFJsPWtjKCk7ZnVuY3Rpb24gRmwodCl7cmV0dXJuIEljKHRbMF0pPD1NYz90WzBdOiRjKHRbMF0pKigoSWModFswXSkrTWMpJU9jLU1jKX1mdW5jdGlvbiBQbCh0LGUpe3ZhciBuPUZsKGUpLHI9ZVsxXSxpPXFjKHIpLGE9W3FjKG4pLC1QYyhuKSwwXSxvPTAscz0wO1JsLnJlc2V0KCksMT09PWk/cj1OYytTYzotMT09PWkmJihyPS1OYy1TYyk7Zm9yKHZhciBjPTAsdT10Lmxlbmd0aDtjPHU7KytjKWlmKGg9KGw9dFtjXSkubGVuZ3RoKWZvcih2YXIgbCxoLGY9bFtoLTFdLGQ9RmwoZikscD1mWzFdLzIrRGMseT1xYyhwKSxnPVBjKHApLG09MDttPGg7KyttLGQ9Yix5PXgsZz13LGY9dil7dmFyIHY9bFttXSxiPUZsKHYpLF89dlsxXS8yK0RjLHg9cWMoXyksdz1QYyhfKSxrPWItZCxUPWs+PTA/MTotMSxFPVQqayxDPUU+TWMsUz15Kng7aWYoUmwuYWRkKEZjKFMqVCpxYyhFKSxnKncrUypQYyhFKSkpLG8rPUM/aytUKk9jOmssQ15kPj1uXmI+PW4pe3ZhciBBPWJ1KG11KGYpLG11KHYpKTt3dShBKTt2YXIgTT1idShhLEEpO3d1KE0pO3ZhciBOPShDXms+PTA/LTE6MSkqR2MoTVsyXSk7KHI+Tnx8cj09PU4mJihBWzBdfHxBWzFdKSkmJihzKz1DXms+PTA/MTotMSl9fXJldHVybihvPC0xZS02fHxvPFNjJiZSbDwtMWUtNileMSZzfWZ1bmN0aW9uIGpsKHQsZSxuLHIpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgYSxvLHMsYz1lKGkpLHU9RGwoKSxsPWUodSksaD0hMSxmPXtwb2ludDpkLGxpbmVTdGFydDp5LGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmLnBvaW50PW0sZi5saW5lU3RhcnQ9dixmLmxpbmVFbmQ9YixvPVtdLGE9W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmLnBvaW50PWQsZi5saW5lU3RhcnQ9eSxmLmxpbmVFbmQ9ZyxvPVAobyk7dmFyIHQ9UGwoYSxyKTtvLmxlbmd0aD8oaHx8KGkucG9seWdvblN0YXJ0KCksaD0hMCksTGwobyx6bCx0LG4saSkpOnQmJihofHwoaS5wb2x5Z29uU3RhcnQoKSxoPSEwKSxpLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLGgmJihpLnBvbHlnb25FbmQoKSxoPSExKSxvPWE9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBkKGUsbil7dChlLG4pJiZpLnBvaW50KGUsbil9ZnVuY3Rpb24gcCh0LGUpe2MucG9pbnQodCxlKX1mdW5jdGlvbiB5KCl7Zi5wb2ludD1wLGMubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2YucG9pbnQ9ZCxjLmxpbmVFbmQoKX1mdW5jdGlvbiBtKHQsZSl7cy5wdXNoKFt0LGVdKSxsLnBvaW50KHQsZSl9ZnVuY3Rpb24gdigpe2wubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiBiKCl7bShzWzBdWzBdLHNbMF1bMV0pLGwubGluZUVuZCgpO3ZhciB0LGUsbixyLGM9bC5jbGVhbigpLGY9dS5yZXN1bHQoKSxkPWYubGVuZ3RoO2lmKHMucG9wKCksYS5wdXNoKHMpLHM9bnVsbCxkKWlmKDEmYyl7aWYoKGU9KG49ZlswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoaS5wb2x5Z29uU3RhcnQoKSxoPSEwKSxpLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KWkucG9pbnQoKHI9blt0XSlbMF0sclsxXSk7aS5saW5lRW5kKCl9fWVsc2UgZD4xJiYyJmMmJmYucHVzaChmLnBvcCgpLmNvbmNhdChmLnNoaWZ0KCkpKSxvLnB1c2goZi5maWx0ZXIoWWwpKX1yZXR1cm4gZn19ZnVuY3Rpb24gWWwodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gemwodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tTmMtU2M6TmMtdFsxXSktKChlPWUueClbMF08MD9lWzFdLU5jLVNjOk5jLWVbMV0pfWNvbnN0IFVsPWpsKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uKHQpe3ZhciBlLG49TmFOLHI9TmFOLGk9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24oYSxvKXt2YXIgcz1hPjA/TWM6LU1jLGM9SWMoYS1uKTtJYyhjLU1jKTxTYz8odC5wb2ludChuLHI9KHIrbykvMj4wP05jOi1OYyksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLHIpLHQucG9pbnQoYSxyKSxlPTApOmkhPT1zJiZjPj1NYyYmKEljKG4taSk8U2MmJihuLT1pKlNjKSxJYyhhLXMpPFNjJiYoYS09cypTYykscj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLG89cWModC1uKTtyZXR1cm4gSWMobyk+U2M/UmMoKHFjKGUpKihhPVBjKHIpKSpxYyhuKS1xYyhyKSooaT1QYyhlKSkqcWModCkpLyhpKmEqbykpOihlK3IpLzJ9KG4scixhLG8pLHQucG9pbnQoaSxyKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxyKSxlPTApLHQucG9pbnQobj1hLHI9byksaT1zfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksbj1yPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1lfX19KSwoZnVuY3Rpb24odCxlLG4scil7dmFyIGk7aWYobnVsbD09dClpPW4qTmMsci5wb2ludCgtTWMsaSksci5wb2ludCgwLGkpLHIucG9pbnQoTWMsaSksci5wb2ludChNYywwKSxyLnBvaW50KE1jLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLU1jLC1pKSxyLnBvaW50KC1NYywwKSxyLnBvaW50KC1NYyxpKTtlbHNlIGlmKEljKHRbMF0tZVswXSk+U2Mpe3ZhciBhPXRbMF08ZVswXT9NYzotTWM7aT1uKmEvMixyLnBvaW50KC1hLGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KGEsaSl9ZWxzZSByLnBvaW50KGVbMF0sZVsxXSl9KSxbLU1jLC1OY10pO2Z1bmN0aW9uIHFsKHQpe3ZhciBlPVBjKHQpLG49NipMYyxyPWU+MCxpPUljKGUpPlNjO2Z1bmN0aW9uIGEodCxuKXtyZXR1cm4gUGModCkqUGMobik+ZX1mdW5jdGlvbiBvKHQsbixyKXt2YXIgaT1bMSwwLDBdLGE9YnUobXUodCksbXUobikpLG89dnUoYSxhKSxzPWFbMF0sYz1vLXMqcztpZighYylyZXR1cm4hciYmdDt2YXIgdT1lKm8vYyxsPS1lKnMvYyxoPWJ1KGksYSksZj14dShpLHUpO191KGYseHUoYSxsKSk7dmFyIGQ9aCxwPXZ1KGYsZCkseT12dShkLGQpLGc9cCpwLXkqKHZ1KGYsZiktMSk7aWYoIShnPDApKXt2YXIgbT1IYyhnKSx2PXh1KGQsKC1wLW0pL3kpO2lmKF91KHYsZiksdj1ndSh2KSwhcilyZXR1cm4gdjt2YXIgYixfPXRbMF0seD1uWzBdLHc9dFsxXSxrPW5bMV07eDxfJiYoYj1fLF89eCx4PWIpO3ZhciBUPXgtXyxFPUljKFQtTWMpPFNjO2lmKCFFJiZrPHcmJihiPXcsdz1rLGs9YiksRXx8VDxTYz9FP3craz4wXnZbMV08KEljKHZbMF0tXyk8U2M/dzprKTp3PD12WzFdJiZ2WzFdPD1rOlQ+TWNeKF88PXZbMF0mJnZbMF08PXgpKXt2YXIgQz14dShkLCgtcCttKS95KTtyZXR1cm4gX3UoQyxmKSxbdixndShDKV19fX1mdW5jdGlvbiBzKGUsbil7dmFyIGk9cj90Ok1jLXQsYT0wO3JldHVybiBlPC1pP2F8PTE6ZT5pJiYoYXw9MiksbjwtaT9hfD00Om4+aSYmKGF8PTgpLGF9cmV0dXJuIGpsKGEsKGZ1bmN0aW9uKHQpe3ZhciBlLG4sYyx1LGw7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3U9Yz0hMSxsPTF9LHBvaW50OmZ1bmN0aW9uKGgsZil7dmFyIGQscD1baCxmXSx5PWEoaCxmKSxnPXI/eT8wOnMoaCxmKTp5P3MoaCsoaDwwP01jOi1NYyksZik6MDtpZighZSYmKHU9Yz15KSYmdC5saW5lU3RhcnQoKSx5IT09YyYmKCEoZD1vKGUscCkpfHxPbChlLGQpfHxPbChwLGQpKSYmKHBbMl09MSkseSE9PWMpbD0wLHk/KHQubGluZVN0YXJ0KCksZD1vKHAsZSksdC5wb2ludChkWzBdLGRbMV0pKTooZD1vKGUscCksdC5wb2ludChkWzBdLGRbMV0sMiksdC5saW5lRW5kKCkpLGU9ZDtlbHNlIGlmKGkmJmUmJnJeeSl7dmFyIG07ZyZufHwhKG09byhwLGUsITApKXx8KGw9MCxyPyh0LmxpbmVTdGFydCgpLHQucG9pbnQobVswXVswXSxtWzBdWzFdKSx0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KG1bMF1bMF0sbVswXVsxXSwzKSkpfSF5fHxlJiZPbChlLHApfHx0LnBvaW50KHBbMF0scFsxXSksZT1wLGM9eSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGx8KHUmJmMpPDwxfX19KSwoZnVuY3Rpb24oZSxyLGksYSl7QWwoYSx0LG4saSxlLHIpfSkscj9bMCwtdF06Wy1NYyx0LU1jXSl9dmFyICRsPTFlOSxIbD0tJGw7ZnVuY3Rpb24gV2wodCxlLG4scil7ZnVuY3Rpb24gaShpLGEpe3JldHVybiB0PD1pJiZpPD1uJiZlPD1hJiZhPD1yfWZ1bmN0aW9uIGEoaSxhLHMsdSl7dmFyIGw9MCxoPTA7aWYobnVsbD09aXx8KGw9byhpLHMpKSE9PShoPW8oYSxzKSl8fGMoaSxhKTwwXnM+MClkb3t1LnBvaW50KDA9PT1sfHwzPT09bD90Om4sbD4xP3I6ZSl9d2hpbGUoKGw9KGwrcys0KSU0KSE9PWgpO2Vsc2UgdS5wb2ludChhWzBdLGFbMV0pfWZ1bmN0aW9uIG8ocixpKXtyZXR1cm4gSWMoclswXS10KTxTYz9pPjA/MDozOkljKHJbMF0tbik8U2M/aT4wPzI6MTpJYyhyWzFdLWUpPFNjP2k+MD8xOjA6aT4wPzM6Mn1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGModC54LGUueCl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPW8odCwxKSxyPW8oZSwxKTtyZXR1cm4gbiE9PXI/bi1yOjA9PT1uP2VbMV0tdFsxXToxPT09bj90WzBdLWVbMF06Mj09PW4/dFsxXS1lWzFdOmVbMF0tdFswXX1yZXR1cm4gZnVuY3Rpb24obyl7dmFyIGMsdSxsLGgsZixkLHAseSxnLG0sdixiPW8sXz1EbCgpLHg9e3BvaW50OncsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7eC5wb2ludD1rLHUmJnUucHVzaChsPVtdKSxtPSEwLGc9ITEscD15PU5hTn0sbGluZUVuZDpmdW5jdGlvbigpe2MmJihrKGgsZiksZCYmZyYmXy5yZWpvaW4oKSxjLnB1c2goXy5yZXN1bHQoKSkpLHgucG9pbnQ9dyxnJiZiLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yj1fLGM9W10sdT1bXSx2PSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxuPTAsaT11Lmxlbmd0aDtuPGk7KytuKWZvcih2YXIgYSxvLHM9dVtuXSxjPTEsbD1zLmxlbmd0aCxoPXNbMF0sZj1oWzBdLGQ9aFsxXTtjPGw7KytjKWE9ZixvPWQsZj0oaD1zW2NdKVswXSxkPWhbMV0sbzw9cj9kPnImJihmLWEpKihyLW8pPihkLW8pKih0LWEpJiYrK2U6ZDw9ciYmKGYtYSkqKHItbyk8KGQtbykqKHQtYSkmJi0tZTtyZXR1cm4gZX0oKSxuPXYmJmUsaT0oYz1QKGMpKS5sZW5ndGg7KG58fGkpJiYoby5wb2x5Z29uU3RhcnQoKSxuJiYoby5saW5lU3RhcnQoKSxhKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpKSxpJiZMbChjLHMsZSxhLG8pLG8ucG9seWdvbkVuZCgpKSxiPW8sYz11PWw9bnVsbH19O2Z1bmN0aW9uIHcodCxlKXtpKHQsZSkmJmIucG9pbnQodCxlKX1mdW5jdGlvbiBrKGEsbyl7dmFyIHM9aShhLG8pO2lmKHUmJmwucHVzaChbYSxvXSksbSloPWEsZj1vLGQ9cyxtPSExLHMmJihiLmxpbmVTdGFydCgpLGIucG9pbnQoYSxvKSk7ZWxzZSBpZihzJiZnKWIucG9pbnQoYSxvKTtlbHNle3ZhciBjPVtwPU1hdGgubWF4KEhsLE1hdGgubWluKCRsLHApKSx5PU1hdGgubWF4KEhsLE1hdGgubWluKCRsLHkpKV0sXz1bYT1NYXRoLm1heChIbCxNYXRoLm1pbigkbCxhKSksbz1NYXRoLm1heChIbCxNYXRoLm1pbigkbCxvKSldOyFmdW5jdGlvbih0LGUsbixyLGksYSl7dmFyIG8scz10WzBdLGM9dFsxXSx1PTAsbD0xLGg9ZVswXS1zLGY9ZVsxXS1jO2lmKG89bi1zLGh8fCEobz4wKSl7aWYoby89aCxoPDApe2lmKG88dSlyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGg+MCl7aWYobz5sKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1zLGh8fCEobzwwKSl7aWYoby89aCxoPDApe2lmKG8+bClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGg+MCl7aWYobzx1KXJldHVybjtvPGwmJihsPW8pfWlmKG89ci1jLGZ8fCEobz4wKSl7aWYoby89ZixmPDApe2lmKG88dSlyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGY+MCl7aWYobz5sKXJldHVybjtvPnUmJih1PW8pfWlmKG89YS1jLGZ8fCEobzwwKSl7aWYoby89ZixmPDApe2lmKG8+bClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGY+MCl7aWYobzx1KXJldHVybjtvPGwmJihsPW8pfXJldHVybiB1PjAmJih0WzBdPXMrdSpoLHRbMV09Yyt1KmYpLGw8MSYmKGVbMF09cytsKmgsZVsxXT1jK2wqZiksITB9fX19fShjLF8sdCxlLG4scik/cyYmKGIubGluZVN0YXJ0KCksYi5wb2ludChhLG8pLHY9ITEpOihnfHwoYi5saW5lU3RhcnQoKSxiLnBvaW50KGNbMF0sY1sxXSkpLGIucG9pbnQoX1swXSxfWzFdKSxzfHxiLmxpbmVFbmQoKSx2PSExKX1wPWEseT1vLGc9c31yZXR1cm4geH19ZnVuY3Rpb24gVmwoKXt2YXIgdCxlLG4scj0wLGk9MCxhPTk2MCxvPTUwMDtyZXR1cm4gbj17c3RyZWFtOmZ1bmN0aW9uKG4pe3JldHVybiB0JiZlPT09bj90OnQ9V2wocixpLGEsbykoZT1uKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStzWzBdWzBdLGk9K3NbMF1bMV0sYT0rc1sxXVswXSxvPStzWzFdWzFdLHQ9ZT1udWxsLG4pOltbcixpXSxbYSxvXV19fX12YXIgR2wsWGwsWmwsUWw9a2MoKSxLbD17c3BoZXJlOlpjLHBvaW50OlpjLGxpbmVTdGFydDpmdW5jdGlvbigpe0tsLnBvaW50PXRoLEtsLmxpbmVFbmQ9Smx9LGxpbmVFbmQ6WmMscG9seWdvblN0YXJ0OlpjLHBvbHlnb25FbmQ6WmN9O2Z1bmN0aW9uIEpsKCl7S2wucG9pbnQ9S2wubGluZUVuZD1aY31mdW5jdGlvbiB0aCh0LGUpe0dsPXQqPUxjLFhsPXFjKGUqPUxjKSxabD1QYyhlKSxLbC5wb2ludD1laH1mdW5jdGlvbiBlaCh0LGUpe3QqPUxjO3ZhciBuPXFjKGUqPUxjKSxyPVBjKGUpLGk9SWModC1HbCksYT1QYyhpKSxvPXIqcWMoaSkscz1abCpuLVhsKnIqYSxjPVhsKm4rWmwqciphO1FsLmFkZChGYyhIYyhvKm8rcypzKSxjKSksR2w9dCxYbD1uLFpsPXJ9ZnVuY3Rpb24gbmgodCl7cmV0dXJuIFFsLnJlc2V0KCksbnUodCxLbCksK1FsfXZhciByaD1bbnVsbCxudWxsXSxpaD17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6cmh9O2Z1bmN0aW9uIGFoKHQsZSl7cmV0dXJuIHJoWzBdPXQscmhbMV09ZSxuaChpaCl9dmFyIG9oPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNoKHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZihjaChuW3JdLmdlb21ldHJ5LGUpKXJldHVybiEwO3JldHVybiExfX0sc2g9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiB1aCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZih1aChuW3JdLGUpKXJldHVybiEwO3JldHVybiExfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGxoKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspaWYobGgobltyXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe3JldHVybiBoaCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWlmKGhoKG5bcl0sZSkpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10Lmdlb21ldHJpZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZihjaChuW3JdLGUpKXJldHVybiEwO3JldHVybiExfX07ZnVuY3Rpb24gY2godCxlKXtyZXR1cm4hKCF0fHwhc2guaGFzT3duUHJvcGVydHkodC50eXBlKSkmJnNoW3QudHlwZV0odCxlKX1mdW5jdGlvbiB1aCh0LGUpe3JldHVybiAwPT09YWgodCxlKX1mdW5jdGlvbiBsaCh0LGUpe2Zvcih2YXIgbixyLGksYT0wLG89dC5sZW5ndGg7YTxvO2ErKyl7aWYoMD09PShyPWFoKHRbYV0sZSkpKXJldHVybiEwO2lmKGE+MCYmKGk9YWgodFthXSx0W2EtMV0pKT4wJiZuPD1pJiZyPD1pJiYobityLWkpKigxLU1hdGgucG93KChuLXIpL2ksMikpPEFjKmkpcmV0dXJuITA7bj1yfXJldHVybiExfWZ1bmN0aW9uIGhoKHQsZSl7cmV0dXJuISFQbCh0Lm1hcChmaCksZGgoZSkpfWZ1bmN0aW9uIGZoKHQpe3JldHVybih0PXQubWFwKGRoKSkucG9wKCksdH1mdW5jdGlvbiBkaCh0KXtyZXR1cm5bdFswXSpMYyx0WzFdKkxjXX1mdW5jdGlvbiBwaCh0LGUpe3JldHVybih0JiZvaC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP29oW3QudHlwZV06Y2gpKHQsZSl9ZnVuY3Rpb24geWgodCxlLG4pe3ZhciByPWsodCxlLVNjLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pKX19ZnVuY3Rpb24gZ2godCxlLG4pe3ZhciByPWsodCxlLVNjLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gbWgoKXt2YXIgdCxlLG4scixpLGEsbyxzLGMsdSxsLGgsZj0xMCxkPWYscD05MCx5PTM2MCxnPTIuNTtmdW5jdGlvbiBtKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6digpfX1mdW5jdGlvbiB2KCl7cmV0dXJuIGsoamMoci9wKSpwLG4scCkubWFwKGwpLmNvbmNhdChrKGpjKHMveSkqeSxvLHkpLm1hcChoKSkuY29uY2F0KGsoamMoZS9mKSpmLHQsZikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gSWModCVwKT5TY30pKS5tYXAoYykpLmNvbmNhdChrKGpjKGEvZCkqZCxpLGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIEljKHQleSk+U2N9KSkubWFwKHUpKX1yZXR1cm4gbS5saW5lcz1mdW5jdGlvbigpe3JldHVybiB2KCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19KSl9LG0ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbbChyKS5jb25jYXQoaChvKS5zbGljZSgxKSxsKG4pLnJldmVyc2UoKS5zbGljZSgxKSxoKHMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sbS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bS5leHRlbnRNYWpvcih0KS5leHRlbnRNaW5vcih0KTptLmV4dGVudE1pbm9yKCl9LG0uZXh0ZW50TWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3RbMF1bMF0sbj0rdFsxXVswXSxzPSt0WzBdWzFdLG89K3RbMV1bMV0scj5uJiYodD1yLHI9bixuPXQpLHM+byYmKHQ9cyxzPW8sbz10KSxtLnByZWNpc2lvbihnKSk6W1tyLHNdLFtuLG9dXX0sbS5leHRlbnRNaW5vcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rblswXVswXSx0PStuWzFdWzBdLGE9K25bMF1bMV0saT0rblsxXVsxXSxlPnQmJihuPWUsZT10LHQ9biksYT5pJiYobj1hLGE9aSxpPW4pLG0ucHJlY2lzaW9uKGcpKTpbW2UsYV0sW3QsaV1dfSxtLnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bS5zdGVwTWFqb3IodCkuc3RlcE1pbm9yKHQpOm0uc3RlcE1pbm9yKCl9LG0uc3RlcE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHk9K3RbMV0sbSk6W3AseV19LG0uc3RlcE1pbm9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSt0WzBdLGQ9K3RbMV0sbSk6W2YsZF19LG0ucHJlY2lzaW9uPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPStmLGM9eWgoYSxpLDkwKSx1PWdoKGUsdCxnKSxsPXloKHMsbyw5MCksaD1naChyLG4sZyksbSk6Z30sbS5leHRlbnRNYWpvcihbWy0xODAsLTg5Ljk5OTk5OV0sWzE4MCw4OS45OTk5OTldXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC4wMDAwMDFdLFsxODAsODAuMDAwMDAxXV0pfWZ1bmN0aW9uIHZoKCl7cmV0dXJuIG1oKCkoKX1mdW5jdGlvbiBiaCh0LGUpe3ZhciBuPXRbMF0qTGMscj10WzFdKkxjLGk9ZVswXSpMYyxhPWVbMV0qTGMsbz1QYyhyKSxzPXFjKHIpLGM9UGMoYSksdT1xYyhhKSxsPW8qUGMobiksaD1vKnFjKG4pLGY9YypQYyhpKSxkPWMqcWMoaSkscD0yKkdjKEhjKFhjKGEtcikrbypjKlhjKGktbikpKSx5PXFjKHApLGc9cD9mdW5jdGlvbih0KXt2YXIgZT1xYyh0Kj1wKS95LG49cWMocC10KS95LHI9bipsK2UqZixpPW4qaCtlKmQsYT1uKnMrZSp1O3JldHVybltGYyhpLHIpKkJjLEZjKGEsSGMocipyK2kqaSkpKkJjXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipCYyxyKkJjXX07cmV0dXJuIGcuZGlzdGFuY2U9cCxnfWZ1bmN0aW9uIF9oKHQpe3JldHVybiB0fXZhciB4aCx3aCxraCxUaCxFaD1rYygpLENoPWtjKCksU2g9e3BvaW50OlpjLGxpbmVTdGFydDpaYyxsaW5lRW5kOlpjLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1NoLmxpbmVTdGFydD1BaCxTaC5saW5lRW5kPURofSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7U2gubGluZVN0YXJ0PVNoLmxpbmVFbmQ9U2gucG9pbnQ9WmMsRWguYWRkKEljKENoKSksQ2gucmVzZXQoKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9RWgvMjtyZXR1cm4gRWgucmVzZXQoKSx0fX07ZnVuY3Rpb24gQWgoKXtTaC5wb2ludD1NaH1mdW5jdGlvbiBNaCh0LGUpe1NoLnBvaW50PU5oLHhoPWtoPXQsd2g9VGg9ZX1mdW5jdGlvbiBOaCh0LGUpe0NoLmFkZChUaCp0LWtoKmUpLGtoPXQsVGg9ZX1mdW5jdGlvbiBEaCgpe05oKHhoLHdoKX1jb25zdCBPaD1TaDt2YXIgQmg9MS8wLExoPUJoLEloPS1CaCxSaD1JaCxGaD17cG9pbnQ6ZnVuY3Rpb24odCxlKXt0PEJoJiYoQmg9dCksdD5JaCYmKEloPXQpLGU8TGgmJihMaD1lKSxlPlJoJiYoUmg9ZSl9LGxpbmVTdGFydDpaYyxsaW5lRW5kOlpjLHBvbHlnb25TdGFydDpaYyxwb2x5Z29uRW5kOlpjLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbQmgsTGhdLFtJaCxSaF1dO3JldHVybiBJaD1SaD0tKExoPUJoPTEvMCksdH19O2NvbnN0IFBoPUZoO3ZhciBqaCxZaCx6aCxVaCxxaD0wLCRoPTAsSGg9MCxXaD0wLFZoPTAsR2g9MCxYaD0wLFpoPTAsUWg9MCxLaD17cG9pbnQ6SmgsbGluZVN0YXJ0OnRmLGxpbmVFbmQ6cmYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7S2gubGluZVN0YXJ0PWFmLEtoLmxpbmVFbmQ9b2Z9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtLaC5wb2ludD1KaCxLaC5saW5lU3RhcnQ9dGYsS2gubGluZUVuZD1yZn0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9UWg/W1hoL1FoLFpoL1FoXTpHaD9bV2gvR2gsVmgvR2hdOkhoP1txaC9IaCwkaC9IaF06W05hTixOYU5dO3JldHVybiBxaD0kaD1IaD1XaD1WaD1HaD1YaD1aaD1RaD0wLHR9fTtmdW5jdGlvbiBKaCh0LGUpe3FoKz10LCRoKz1lLCsrSGh9ZnVuY3Rpb24gdGYoKXtLaC5wb2ludD1lZn1mdW5jdGlvbiBlZih0LGUpe0toLnBvaW50PW5mLEpoKHpoPXQsVWg9ZSl9ZnVuY3Rpb24gbmYodCxlKXt2YXIgbj10LXpoLHI9ZS1VaCxpPUhjKG4qbityKnIpO1doKz1pKih6aCt0KS8yLFZoKz1pKihVaCtlKS8yLEdoKz1pLEpoKHpoPXQsVWg9ZSl9ZnVuY3Rpb24gcmYoKXtLaC5wb2ludD1KaH1mdW5jdGlvbiBhZigpe0toLnBvaW50PXNmfWZ1bmN0aW9uIG9mKCl7Y2YoamgsWWgpfWZ1bmN0aW9uIHNmKHQsZSl7S2gucG9pbnQ9Y2YsSmgoamg9emg9dCxZaD1VaD1lKX1mdW5jdGlvbiBjZih0LGUpe3ZhciBuPXQtemgscj1lLVVoLGk9SGMobipuK3Iqcik7V2grPWkqKHpoK3QpLzIsVmgrPWkqKFVoK2UpLzIsR2grPWksWGgrPShpPVVoKnQtemgqZSkqKHpoK3QpLFpoKz1pKihVaCtlKSxRaCs9MyppLEpoKHpoPXQsVWg9ZSl9Y29uc3QgdWY9S2g7ZnVuY3Rpb24gbGYodCl7dGhpcy5fY29udGV4dD10fWxmLnByb3RvdHlwZT17X3JhZGl1czo0LjUscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhZGl1cz10LHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSksdGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTticmVhaztkZWZhdWx0OnRoaXMuX2NvbnRleHQubW92ZVRvKHQrdGhpcy5fcmFkaXVzLGUpLHRoaXMuX2NvbnRleHQuYXJjKHQsZSx0aGlzLl9yYWRpdXMsMCxPYyl9fSxyZXN1bHQ6WmN9O3ZhciBoZixmZixkZixwZix5ZixnZj1rYygpLG1mPXtwb2ludDpaYyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXttZi5wb2ludD12Zn0sbGluZUVuZDpmdW5jdGlvbigpe2hmJiZiZihmZixkZiksbWYucG9pbnQ9WmN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2hmPSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7aGY9bnVsbH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9K2dmO3JldHVybiBnZi5yZXNldCgpLHR9fTtmdW5jdGlvbiB2Zih0LGUpe21mLnBvaW50PWJmLGZmPXBmPXQsZGY9eWY9ZX1mdW5jdGlvbiBiZih0LGUpe3BmLT10LHlmLT1lLGdmLmFkZChIYyhwZipwZit5Zip5ZikpLHBmPXQseWY9ZX1jb25zdCBfZj1tZjtmdW5jdGlvbiB4Zigpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiB3Zih0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBrZih0LGUpe3ZhciBuLHIsaT00LjU7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyLnBvaW50UmFkaXVzKCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbnUodCxuKHIpKSksci5yZXN1bHQoKX1yZXR1cm4gYS5hcmVhPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4oT2gpKSxPaC5yZXN1bHQoKX0sYS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4oX2YpKSxfZi5yZXN1bHQoKX0sYS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51KHQsbihQaCkpLFBoLnJlc3VsdCgpfSxhLmNlbnRyb2lkPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4odWYpKSx1Zi5yZXN1bHQoKX0sYS5wcm9qZWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PWU/KHQ9bnVsbCxfaCk6KHQ9ZSkuc3RyZWFtLGEpOnR9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10PyhlPW51bGwsbmV3IHhmKTpuZXcgbGYoZT10KSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmci5wb2ludFJhZGl1cyhpKSxhKTplfSxhLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KHIucG9pbnRSYWRpdXMoK3QpLCt0KSxhKTppfSxhLnByb2plY3Rpb24odCkuY29udGV4dChlKX1mdW5jdGlvbiBUZih0KXtyZXR1cm57c3RyZWFtOkVmKHQpfX1mdW5jdGlvbiBFZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IENmO2Zvcih2YXIgciBpbiB0KW5bcl09dFtyXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBDZigpe31mdW5jdGlvbiBTZih0LGUsbil7dmFyIHI9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9ciYmdC5jbGlwRXh0ZW50KG51bGwpLG51KG4sdC5zdHJlYW0oUGgpKSxlKFBoLnJlc3VsdCgpKSxudWxsIT1yJiZ0LmNsaXBFeHRlbnQociksdH1mdW5jdGlvbiBBZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPWVbMV1bMF0tZVswXVswXSxpPWVbMV1bMV0tZVswXVsxXSxhPU1hdGgubWluKHIvKG5bMV1bMF0tblswXVswXSksaS8oblsxXVsxXS1uWzBdWzFdKSksbz0rZVswXVswXSsoci1hKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKGktYSooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCphKS50cmFuc2xhdGUoW28sc10pfSksbil9ZnVuY3Rpb24gTWYodCxlLG4pe3JldHVybiBBZih0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiBOZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPStlLGk9ci8oblsxXVswXS1uWzBdWzBdKSxhPShyLWkqKG5bMV1bMF0rblswXVswXSkpLzIsbz0taSpuWzBdWzFdO3Quc2NhbGUoMTUwKmkpLnRyYW5zbGF0ZShbYSxvXSl9KSxuKX1mdW5jdGlvbiBEZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPStlLGk9ci8oblsxXVsxXS1uWzBdWzFdKSxhPS1pKm5bMF1bMF0sbz0oci1pKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKmkpLnRyYW5zbGF0ZShbYSxvXSl9KSxuKX14Zi5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6d2YoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT13Zih0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LENmLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q2YscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIE9mPVBjKDMwKkxjKTtmdW5jdGlvbiBCZih0LGUpe3JldHVybitlP2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihyLGksYSxvLHMsYyx1LGwsaCxmLGQscCx5LGcpe3ZhciBtPXUtcix2PWwtaSxiPW0qbSt2KnY7aWYoYj40KmUmJnktLSl7dmFyIF89bytmLHg9cytkLHc9YytwLGs9SGMoXypfK3gqeCt3KncpLFQ9R2Mody89ayksRT1JYyhJYyh3KS0xKTxTY3x8SWMoYS1oKTxTYz8oYStoKS8yOkZjKHgsXyksQz10KEUsVCksUz1DWzBdLEE9Q1sxXSxNPVMtcixOPUEtaSxEPXYqTS1tKk47KEQqRC9iPmV8fEljKChtKk0rdipOKS9iLS41KT4uM3x8bypmK3MqZCtjKnA8T2YpJiYobihyLGksYSxvLHMsYyxTLEEsRSxfLz1rLHgvPWssdyx5LGcpLGcucG9pbnQoUyxBKSxuKFMsQSxFLF8seCx3LHUsbCxoLGYsZCxwLHksZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHIsaSxhLG8scyxjLHUsbCxoLGYsZCxwLHk9e3BvaW50OmcsbGluZVN0YXJ0Om0sbGluZUVuZDpiLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCkseS5saW5lU3RhcnQ9X30scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLHkubGluZVN0YXJ0PW19fTtmdW5jdGlvbiBnKG4scil7bj10KG4sciksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIG0oKXtsPU5hTix5LnBvaW50PXYsZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB2KHIsaSl7dmFyIGE9bXUoW3IsaV0pLG89dChyLGkpO24obCxoLHUsZixkLHAsbD1vWzBdLGg9b1sxXSx1PXIsZj1hWzBdLGQ9YVsxXSxwPWFbMl0sMTYsZSksZS5wb2ludChsLGgpfWZ1bmN0aW9uIGIoKXt5LnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gXygpe20oKSx5LnBvaW50PXgseS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3Yocj10LGUpLGk9bCxhPWgsbz1mLHM9ZCxjPXAseS5wb2ludD12fWZ1bmN0aW9uIHcoKXtuKGwsaCx1LGYsZCxwLGksYSxyLG8scyxjLDE2LGUpLHkubGluZUVuZD1iLGIoKX1yZXR1cm4geX19KHQsZSk6ZnVuY3Rpb24odCl7cmV0dXJuIEVmKHtwb2ludDpmdW5jdGlvbihlLG4pe2U9dChlLG4pLHRoaXMuc3RyZWFtLnBvaW50KGVbMF0sZVsxXSl9fSl9KHQpfXZhciBMZj1FZih7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0KkxjLGUqTGMpfX0pO2Z1bmN0aW9uIElmKHQsZSxuLHIsaSl7ZnVuY3Rpb24gYShhLG8pe3JldHVybltlK3QqKGEqPXIpLG4tdCoobyo9aSldfXJldHVybiBhLmludmVydD1mdW5jdGlvbihhLG8pe3JldHVyblsoYS1lKS90KnIsKG4tbykvdCppXX0sYX1mdW5jdGlvbiBSZih0LGUsbixyLGksYSl7dmFyIG89UGMoYSkscz1xYyhhKSxjPW8qdCx1PXMqdCxsPW8vdCxoPXMvdCxmPShzKm4tbyplKS90LGQ9KHMqZStvKm4pL3Q7ZnVuY3Rpb24gcCh0LGEpe3JldHVybltjKih0Kj1yKS11KihhKj1pKStlLG4tdSp0LWMqYV19cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3IqKGwqdC1oKmUrZiksaSooZC1oKnQtbCplKV19LHB9ZnVuY3Rpb24gRmYodCl7cmV0dXJuIFBmKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gUGYodCl7dmFyIGUsbixyLGksYSxvLHMsYyx1LGwsaD0xNTAsZj00ODAsZD0yNTAscD0wLHk9MCxnPTAsbT0wLHY9MCxiPTAsXz0xLHg9MSx3PW51bGwsaz1VbCxUPW51bGwsRT1faCxDPS41O2Z1bmN0aW9uIFModCl7cmV0dXJuIGModFswXSpMYyx0WzFdKkxjKX1mdW5jdGlvbiBBKHQpe3JldHVybih0PWMuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpCYyx0WzFdKkJjXX1mdW5jdGlvbiBNKCl7dmFyIHQ9UmYoaCwwLDAsXyx4LGIpLmFwcGx5KG51bGwsZShwLHkpKSxyPShiP1JmOklmKShoLGYtdFswXSxkLXRbMV0sXyx4LGIpO3JldHVybiBuPWtsKGcsbSx2KSxzPXhsKGUsciksYz14bChuLHMpLG89QmYocyxDKSxOKCl9ZnVuY3Rpb24gTigpe3JldHVybiB1PWw9bnVsbCxTfXJldHVybiBTLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gdSYmbD09PXQ/dTp1PUxmKGZ1bmN0aW9uKHQpe3JldHVybiBFZih7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KHJbMF0sclsxXSl9fSl9KG4pKGsobyhFKGw9dCkpKSkpfSxTLnByZWNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9dCx3PXZvaWQgMCxOKCkpOmt9LFMucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9dCxUPXI9aT1hPW51bGwsTigpKTpFfSxTLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0rdD9xbCh3PXQqTGMpOih3PW51bGwsVWwpLE4oKSk6dypCY30sUy5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPW51bGw9PXQ/KFQ9cj1pPWE9bnVsbCxfaCk6V2woVD0rdFswXVswXSxyPSt0WzBdWzFdLGk9K3RbMV1bMF0sYT0rdFsxXVsxXSksTigpKTpudWxsPT1UP251bGw6W1tULHJdLFtpLGFdXX0sUy5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxNKCkpOmh9LFMudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSt0WzBdLGQ9K3RbMV0sTSgpKTpbZixkXX0sUy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9dFswXSUzNjAqTGMseT10WzFdJTM2MCpMYyxNKCkpOltwKkJjLHkqQmNdfSxTLnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10WzBdJTM2MCpMYyxtPXRbMV0lMzYwKkxjLHY9dC5sZW5ndGg+Mj90WzJdJTM2MCpMYzowLE0oKSk6W2cqQmMsbSpCYyx2KkJjXX0sUy5hbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10JTM2MCpMYyxNKCkpOmIqQmN9LFMucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dD8tMToxLE0oKSk6XzwwfSxTLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PXQ/LTE6MSxNKCkpOng8MH0sUy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89QmYocyxDPXQqdCksTigpKTpIYyhDKX0sUy5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQWYoUyx0LGUpfSxTLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWYoUyx0LGUpfSxTLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE5mKFMsdCxlKX0sUy5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGYoUyx0LGUpfSxmdW5jdGlvbigpe3JldHVybiBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLFMuaW52ZXJ0PWUuaW52ZXJ0JiZBLE0oKX19ZnVuY3Rpb24gamYodCl7dmFyIGU9MCxuPU1jLzMscj1QZih0KSxpPXIoZSxuKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cihlPXRbMF0qTGMsbj10WzFdKkxjKTpbZSpCYyxuKkJjXX0saX1mdW5jdGlvbiBZZih0LGUpe3ZhciBuPXFjKHQpLHI9KG4rcWMoZSkpLzI7aWYoSWMocik8U2MpcmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVBjKHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLHFjKG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsR2MobiplKV19LG59KHQpO3ZhciBpPTErbiooMipyLW4pLGE9SGMoaSkvcjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49SGMoaS0yKnIqcWMoZSkpL3I7cmV0dXJuW24qcWModCo9ciksYS1uKlBjKHQpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1hLWUsbz1GYyh0LEljKG4pKSokYyhuKTtyZXR1cm4gbipyPDAmJihvLT1NYyokYyh0KSokYyhuKSksW28vcixHYygoaS0odCp0K24qbikqcipyKS8oMipyKSldfSxvfWZ1bmN0aW9uIHpmKCl7cmV0dXJuIGpmKFlmKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIFVmKCl7cmV0dXJuIHpmKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gcWYoKXt2YXIgdCxlLG4scixpLGEsbz1VZigpLHM9emYoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGM9emYoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksdT17cG9pbnQ6ZnVuY3Rpb24odCxlKXthPVt0LGVdfX07ZnVuY3Rpb24gbCh0KXt2YXIgZT10WzBdLG89dFsxXTtyZXR1cm4gYT1udWxsLG4ucG9pbnQoZSxvKSxhfHwoci5wb2ludChlLG8pLGEpfHwoaS5wb2ludChlLG8pLGEpfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGwsbH1yZXR1cm4gbC5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9by5zY2FsZSgpLG49by50cmFuc2xhdGUoKSxyPSh0WzBdLW5bMF0pL2UsaT0odFsxXS1uWzFdKS9lO3JldHVybihpPj0uMTImJmk8LjIzNCYmcj49LS40MjUmJnI8LS4yMTQ/czppPj0uMTY2JiZpPC4yMzQmJnI+PS0uMjE0JiZyPC0uMTE1P2M6bykuaW52ZXJ0KHQpfSxsLnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDoocj1bby5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxjLnN0cmVhbShuKV0saT1yLmxlbmd0aCx0PXtwb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMTsrK248aTspcltuXS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uRW5kKCl9fSk7dmFyIHIsaX0sbC5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8ucHJlY2lzaW9uKHQpLHMucHJlY2lzaW9uKHQpLGMucHJlY2lzaW9uKHQpLGgoKSk6by5wcmVjaXNpb24oKX0sbC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby5zY2FsZSh0KSxzLnNjYWxlKC4zNSp0KSxjLnNjYWxlKHQpLGwudHJhbnNsYXRlKG8udHJhbnNsYXRlKCkpKTpvLnNjYWxlKCl9LGwudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBvLnRyYW5zbGF0ZSgpO3ZhciBlPW8uc2NhbGUoKSxhPSt0WzBdLGw9K3RbMV07cmV0dXJuIG49by50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW2EtLjQ1NSplLGwtLjIzOCplXSxbYSsuNDU1KmUsbCsuMjM4KmVdXSkuc3RyZWFtKHUpLHI9cy50cmFuc2xhdGUoW2EtLjMwNyplLGwrLjIwMSplXSkuY2xpcEV4dGVudChbW2EtLjQyNSplK1NjLGwrLjEyKmUrU2NdLFthLS4yMTQqZS1TYyxsKy4yMzQqZS1TY11dKS5zdHJlYW0odSksaT1jLnRyYW5zbGF0ZShbYS0uMjA1KmUsbCsuMjEyKmVdKS5jbGlwRXh0ZW50KFtbYS0uMjE0KmUrU2MsbCsuMTY2KmUrU2NdLFthLS4xMTUqZS1TYyxsKy4yMzQqZS1TY11dKS5zdHJlYW0odSksaCgpfSxsLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBBZihsLHQsZSl9LGwuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiBNZihsLHQsZSl9LGwuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTmYobCx0LGUpfSxsLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBEZihsLHQsZSl9LGwuc2NhbGUoMTA3MCl9ZnVuY3Rpb24gJGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9UGMoZSksaT1QYyhuKSxhPXQocippKTtyZXR1cm5bYSppKnFjKGUpLGEqcWMobildfX1mdW5jdGlvbiBIZih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcj1IYyhlKmUrbipuKSxpPXQociksYT1xYyhpKSxvPVBjKGkpO3JldHVybltGYyhlKmEscipvKSxHYyhyJiZuKmEvcildfX12YXIgV2Y9JGYoKGZ1bmN0aW9uKHQpe3JldHVybiBIYygyLygxK3QpKX0pKTtmdW5jdGlvbiBWZigpe3JldHVybiBGZihXZikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9V2YuaW52ZXJ0PUhmKChmdW5jdGlvbih0KXtyZXR1cm4gMipHYyh0LzIpfSkpO3ZhciBHZj0kZigoZnVuY3Rpb24odCl7cmV0dXJuKHQ9VmModCkpJiZ0L3FjKHQpfSkpO2Z1bmN0aW9uIFhmKCl7cmV0dXJuIEZmKEdmKS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9ZnVuY3Rpb24gWmYodCxlKXtyZXR1cm5bdCx6YyhXYygoTmMrZSkvMikpXX1mdW5jdGlvbiBRZigpe3JldHVybiBLZihaZikuc2NhbGUoOTYxL09jKX1mdW5jdGlvbiBLZih0KXt2YXIgZSxuLHIsaT1GZih0KSxhPWkuY2VudGVyLG89aS5zY2FsZSxzPWkudHJhbnNsYXRlLGM9aS5jbGlwRXh0ZW50LHU9bnVsbDtmdW5jdGlvbiBsKCl7dmFyIGE9TWMqbygpLHM9aShTbChpLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gYyhudWxsPT11P1tbc1swXS1hLHNbMV0tYV0sW3NbMF0rYSxzWzFdK2FdXTp0PT09WmY/W1tNYXRoLm1heChzWzBdLWEsdSksZV0sW01hdGgubWluKHNbMF0rYSxuKSxyXV06W1t1LE1hdGgubWF4KHNbMV0tYSxlKV0sW24sTWF0aC5taW4oc1sxXSthLHIpXV0pfXJldHVybiBpLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLGwoKSk6bygpfSxpLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSxsKCkpOnMoKX0saS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEodCksbCgpKTphKCl9LGkuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD91PWU9bj1yPW51bGw6KHU9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLHI9K3RbMV1bMV0pLGwoKSk6bnVsbD09dT9udWxsOltbdSxlXSxbbixyXV19LGwoKX1mdW5jdGlvbiBKZih0KXtyZXR1cm4gV2MoKE5jK3QpLzIpfWZ1bmN0aW9uIHRkKHQsZSl7dmFyIG49UGModCkscj10PT09ZT9xYyh0KTp6YyhuL1BjKGUpKS96YyhKZihlKS9KZih0KSksaT1uKlVjKEpmKHQpLHIpL3I7aWYoIXIpcmV0dXJuIFpmO2Z1bmN0aW9uIGEodCxlKXtpPjA/ZTwtTmMrU2MmJihlPS1OYytTYyk6ZT5OYy1TYyYmKGU9TmMtU2MpO3ZhciBuPWkvVWMoSmYoZSkscik7cmV0dXJuW24qcWMocip0KSxpLW4qUGMocip0KV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49aS1lLGE9JGMocikqSGModCp0K24qbiksbz1GYyh0LEljKG4pKSokYyhuKTtyZXR1cm4gbipyPDAmJihvLT1NYyokYyh0KSokYyhuKSksW28vciwyKlJjKFVjKGkvYSwxL3IpKS1OY119LGF9ZnVuY3Rpb24gZWQoKXtyZXR1cm4gamYodGQpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9ZnVuY3Rpb24gbmQodCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiByZCgpe3JldHVybiBGZihuZCkuc2NhbGUoMTUyLjYzKX1mdW5jdGlvbiBpZCh0LGUpe3ZhciBuPVBjKHQpLHI9dD09PWU/cWModCk6KG4tUGMoZSkpLyhlLXQpLGk9bi9yK3Q7aWYoSWMocik8U2MpcmV0dXJuIG5kO2Z1bmN0aW9uIGEodCxlKXt2YXIgbj1pLWUsYT1yKnQ7cmV0dXJuW24qcWMoYSksaS1uKlBjKGEpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1pLWUsYT1GYyh0LEljKG4pKSokYyhuKTtyZXR1cm4gbipyPDAmJihhLT1NYyokYyh0KSokYyhuKSksW2EvcixpLSRjKHIpKkhjKHQqdCtuKm4pXX0sYX1mdW5jdGlvbiBhZCgpe3JldHVybiBqZihpZCkuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX1HZi5pbnZlcnQ9SGYoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLFpmLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIqUmMoWWMoZSkpLU5jXX0sbmQuaW52ZXJ0PW5kO3ZhciBvZD0xLjM0MDI2NCxzZD0tLjA4MTEwNixjZD04OTNlLTYsdWQ9LjAwMzc5NixsZD1IYygzKS8yO2Z1bmN0aW9uIGhkKHQsZSl7dmFyIG49R2MobGQqcWMoZSkpLHI9bipuLGk9cipyKnI7cmV0dXJuW3QqUGMobikvKGxkKihvZCszKnNkKnIraSooNypjZCs5KnVkKnIpKSksbioob2Qrc2QqcitpKihjZCt1ZCpyKSldfWZ1bmN0aW9uIGZkKCl7cmV0dXJuIEZmKGhkKS5zY2FsZSgxNzcuMTU4KX1mdW5jdGlvbiBkZCh0LGUpe3ZhciBuPVBjKGUpLHI9UGModCkqbjtyZXR1cm5bbipxYyh0KS9yLHFjKGUpL3JdfWZ1bmN0aW9uIHBkKCl7cmV0dXJuIEZmKGRkKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfWZ1bmN0aW9uIHlkKCl7dmFyIHQsZSxuLHIsaSxhLG8scz0xLGM9MCx1PTAsbD0xLGg9MSxmPTAsZD1udWxsLHA9MSx5PTEsZz1FZih7cG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1iKFt0LGVdKTt0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pLG09X2g7ZnVuY3Rpb24gdigpe3JldHVybiBwPXMqbCx5PXMqaCxhPW89bnVsbCxifWZ1bmN0aW9uIGIobil7dmFyIHI9blswXSpwLGk9blsxXSp5O2lmKGYpe3ZhciBhPWkqdC1yKmU7cj1yKnQraSplLGk9YX1yZXR1cm5bcitjLGkrdV19cmV0dXJuIGIuaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciByPW5bMF0tYyxpPW5bMV0tdTtpZihmKXt2YXIgYT1pKnQrciplO3I9cip0LWkqZSxpPWF9cmV0dXJuW3IvcCxpL3ldfSxiLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYSYmbz09PXQ/YTphPWcobShvPXQpKX0sYi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10LGQ9bj1yPWk9bnVsbCx2KCkpOm19LGIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1udWxsPT10PyhkPW49cj1pPW51bGwsX2gpOldsKGQ9K3RbMF1bMF0sbj0rdFswXVsxXSxyPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHYoKSk6bnVsbD09ZD9udWxsOltbZCxuXSxbcixpXV19LGIuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsdigpKTpzfSxiLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdFswXSx1PSt0WzFdLHYoKSk6W2MsdV19LGIuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cWMoZj1uJTM2MCpMYyksdD1QYyhmKSx2KCkpOmYqQmN9LGIucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dD8tMToxLHYoKSk6bDwwfSxiLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQ/LTE6MSx2KCkpOmg8MH0sYi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQWYoYix0LGUpfSxiLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWYoYix0LGUpfSxiLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE5mKGIsdCxlKX0sYi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGYoYix0LGUpfSxifWZ1bmN0aW9uIGdkKHQsZSl7dmFyIG49ZSplLHI9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4rcioociooLjAwMzk3MSpuLS4wMDE1MjkqciktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUrciooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNipyKSkpXX1mdW5jdGlvbiBtZCgpe3JldHVybiBGZihnZCkuc2NhbGUoMTc1LjI5NSl9ZnVuY3Rpb24gdmQodCxlKXtyZXR1cm5bUGMoZSkqcWModCkscWMoZSldfWZ1bmN0aW9uIGJkKCl7cmV0dXJuIEZmKHZkKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9ZnVuY3Rpb24gX2QodCxlKXt2YXIgbj1QYyhlKSxyPTErUGModCkqbjtyZXR1cm5bbipxYyh0KS9yLHFjKGUpL3JdfWZ1bmN0aW9uIHhkKCl7cmV0dXJuIEZmKF9kKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfWZ1bmN0aW9uIHdkKHQsZSl7cmV0dXJuW3pjKFdjKChOYytlKS8yKSksLXRdfWZ1bmN0aW9uIGtkKCl7dmFyIHQ9S2Yod2QpLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfWZ1bmN0aW9uIFRkKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIEVkKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIENkKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBTZCgpe3ZhciB0PVRkLGU9MSxuPTEscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBhLG89MDtpLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKEVkLDApL3QubGVuZ3RofShuKSxlLnk9ZnVuY3Rpb24odCl7cmV0dXJuIDErdC5yZWR1Y2UoQ2QsMCl9KG4pKTooZS54PWE/bys9dChlLGEpOjAsZS55PTAsYT1lKX0pKTt2YXIgcz1mdW5jdGlvbih0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbMF07cmV0dXJuIHR9KGkpLGM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fShpKSx1PXMueC10KHMsYykvMixsPWMueCt0KGMscykvMjtyZXR1cm4gaS5lYWNoQWZ0ZXIocj9mdW5jdGlvbih0KXt0Lng9KHQueC1pLngpKmUsdC55PShpLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC11KS8obC11KSplLHQueT0oMS0oaS55P3QueS9pLnk6MSkpKm59KX1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLGU9K3RbMF0sbj0rdFsxXSxpKTpyP251bGw6W2Usbl19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsZT0rdFswXSxuPSt0WzFdLGkpOnI/W2Usbl06bnVsbH0saX1mdW5jdGlvbiBBZCh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixyPW4mJm4ubGVuZ3RoO2lmKHIpZm9yKDstLXI+PTA7KWUrPW5bcl0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIE1kKHQsZSl7dmFyIG4scixpLGEsbyxzPW5ldyBCZCh0KSxjPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSx1PVtzXTtmb3IobnVsbD09ZSYmKGU9TmQpO249dS5wb3AoKTspaWYoYyYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKGk9ZShuLmRhdGEpKSYmKG89aS5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShvKSxhPW8tMTthPj0wOy0tYSl1LnB1c2gocj1uLmNoaWxkcmVuW2FdPW5ldyBCZChpW2FdKSksci5wYXJlbnQ9bixyLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKE9kKX1mdW5jdGlvbiBOZCh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBEZCh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gT2QodCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBCZCh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH1oZC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4scj1lLGk9cipyLGE9aSppKmksbz0wO288MTImJihhPShpPShyLT1uPShyKihvZCtzZCppK2EqKGNkK3VkKmkpKS1lKS8ob2QrMypzZCppK2EqKDcqY2QrOSp1ZCppKSkpKnIpKmkqaSwhKEljKG4pPEFjKSk7KytvKTtyZXR1cm5bbGQqdCoob2QrMypzZCppK2EqKDcqY2QrOSp1ZCppKSkvUGMociksR2MocWMocikvbGQpXX0sZGQuaW52ZXJ0PUhmKFJjKSxnZC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixyPWUsaT0yNTtkb3t2YXIgYT1yKnIsbz1hKmE7ci09bj0ociooMS4wMDcyMjYrYSooLjAxNTA4NStvKiguMDI4ODc0KmEtLjA0NDQ3NS0uMDA1OTE2Km8pKSktZSkvKDEuMDA3MjI2K2EqKC4wNDUyNTUrbyooLjI1OTg2NiphLS4zMTEzMjUtLjAwNTkxNioxMSpvKSkpfXdoaWxlKEljKG4pPlNjJiYtLWk+MCk7cmV0dXJuW3QvKC44NzA3KyhhPXIqcikqKGEqKGEqYSphKiguMDAzOTcxLS4wMDE1MjkqYSktLjAxMzc5MSktLjEzMTk3OSkpLHJdfSx2ZC5pbnZlcnQ9SGYoR2MpLF9kLmludmVydD1IZigoZnVuY3Rpb24odCl7cmV0dXJuIDIqUmModCl9KSksd2QuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqUmMoWWModCkpLU5jXX0sQmQucHJvdG90eXBlPU1kLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QmQsY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQWQpfSxlYWNoOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLGE9dGhpcyxvPVthXTtkb3tmb3IoZT1vLnJldmVyc2UoKSxvPVtdO2E9ZS5wb3AoKTspaWYodChhKSxuPWEuY2hpbGRyZW4pZm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTsrK3Ipby5wdXNoKG5bcl0pfXdoaWxlKG8ubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHIsaT10aGlzLGE9W2ldLG89W107aT1hLnBvcCgpOylpZihvLnB1c2goaSksZT1pLmNoaWxkcmVuKWZvcihuPTAscj1lLmxlbmd0aDtuPHI7KytuKWEucHVzaChlW25dKTtmb3IoO2k9by5wb3AoKTspdChpKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbixyPXRoaXMsaT1bcl07cj1pLnBvcCgpOylpZih0KHIpLGU9ci5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKWkucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAscj1lLmNoaWxkcmVuLGk9ciYmci5sZW5ndGg7LS1pPj0wOyluKz1yW2ldLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsbj1mdW5jdGlvbih0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCkscj1lLmFuY2VzdG9ycygpLGk9bnVsbDtmb3IodD1uLnBvcCgpLGU9ci5wb3AoKTt0PT09ZTspaT10LHQ9bi5wb3AoKSxlPXIucG9wKCk7cmV0dXJuIGl9KGUsdCkscj1bZV07ZSE9PW47KWU9ZS5wYXJlbnQsci5wdXNoKGUpO2Zvcih2YXIgaT1yLmxlbmd0aDt0IT09bjspci5zcGxpY2UoaSwwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHJ9LGFuY2VzdG9yczpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKG4pe24hPT10JiZlLnB1c2goe3NvdXJjZTpuLnBhcmVudCx0YXJnZXQ6bn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24oKXtyZXR1cm4gTWQodGhpcykuZWFjaEJlZm9yZShEZCl9fTt2YXIgTGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIElkKHQpe2Zvcih2YXIgZSxuLHI9MCxpPSh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHI9dC5sZW5ndGg7cjspbj1NYXRoLnJhbmRvbSgpKnItLXwwLGU9dFtyXSx0W3JdPXRbbl0sdFtuXT1lO3JldHVybiB0fShMZC5jYWxsKHQpKSkubGVuZ3RoLGE9W107cjxpOyllPXRbcl0sbiYmUGQobixlKT8rK3I6KG49WWQoYT1SZChhLGUpKSxyPTApO3JldHVybiBufWZ1bmN0aW9uIFJkKHQsZSl7dmFyIG4scjtpZihqZChlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKEZkKGUsdFtuXSkmJmpkKHpkKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihyPW4rMTtyPHQubGVuZ3RoOysrcilpZihGZCh6ZCh0W25dLHRbcl0pLGUpJiZGZCh6ZCh0W25dLGUpLHRbcl0pJiZGZCh6ZCh0W3JdLGUpLHRbbl0pJiZqZChVZCh0W25dLHRbcl0sZSksdCkpcmV0dXJuW3Rbbl0sdFtyXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gRmQodCxlKXt2YXIgbj10LnItZS5yLHI9ZS54LXQueCxpPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPHIqcitpKml9ZnVuY3Rpb24gUGQodCxlKXt2YXIgbj10LnItZS5yKzFlLTYscj1lLngtdC54LGk9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+cipyK2kqaX1mdW5jdGlvbiBqZCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFQZCh0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFlkKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fSh0WzBdKTtjYXNlIDI6cmV0dXJuIHpkKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBVZCh0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIHpkKHQsZSl7dmFyIG49dC54LHI9dC55LGk9dC5yLGE9ZS54LG89ZS55LHM9ZS5yLGM9YS1uLHU9by1yLGw9cy1pLGg9TWF0aC5zcXJ0KGMqYyt1KnUpO3JldHVybnt4OihuK2ErYy9oKmwpLzIseToocitvK3UvaCpsKS8yLHI6KGgraStzKS8yfX1mdW5jdGlvbiBVZCh0LGUsbil7dmFyIHI9dC54LGk9dC55LGE9dC5yLG89ZS54LHM9ZS55LGM9ZS5yLHU9bi54LGw9bi55LGg9bi5yLGY9ci1vLGQ9ci11LHA9aS1zLHk9aS1sLGc9Yy1hLG09aC1hLHY9cipyK2kqaS1hKmEsYj12LW8qby1zKnMrYypjLF89di11KnUtbCpsK2gqaCx4PWQqcC1mKnksdz0ocCpfLXkqYikvKDIqeCktcixrPSh5KmctcCptKS94LFQ9KGQqYi1mKl8pLygyKngpLWksRT0oZiptLWQqZykveCxDPWsqaytFKkUtMSxTPTIqKGErdyprK1QqRSksQT13KncrVCpULWEqYSxNPS0oQz8oUytNYXRoLnNxcnQoUypTLTQqQypBKSkvKDIqQyk6QS9TKTtyZXR1cm57eDpyK3craypNLHk6aStUK0UqTSxyOk19fWZ1bmN0aW9uIHFkKHQsZSxuKXt2YXIgcixpLGEsbyxzPXQueC1lLngsYz10LnktZS55LHU9cypzK2MqYzt1PyhpPWUucituLnIsaSo9aSxvPXQucituLnIsaT4obyo9byk/KHI9KHUrby1pKS8oMip1KSxhPU1hdGguc3FydChNYXRoLm1heCgwLG8vdS1yKnIpKSxuLng9dC54LXIqcy1hKmMsbi55PXQueS1yKmMrYSpzKToocj0odStpLW8pLygyKnUpLGE9TWF0aC5zcXJ0KE1hdGgubWF4KDAsaS91LXIqcikpLG4ueD1lLngrcipzLWEqYyxuLnk9ZS55K3IqYythKnMpKToobi54PWUueCtuLnIsbi55PWUueSl9ZnVuY3Rpb24gJGQodCxlKXt2YXIgbj10LnIrZS5yLTFlLTYscj1lLngtdC54LGk9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+cipyK2kqaX1mdW5jdGlvbiBIZCh0KXt2YXIgZT10Ll8sbj10Lm5leHQuXyxyPWUucituLnIsaT0oZS54Km4ucituLngqZS5yKS9yLGE9KGUueSpuLnIrbi55KmUucikvcjtyZXR1cm4gaSppK2EqYX1mdW5jdGlvbiBXZCh0KXt0aGlzLl89dCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gVmQodCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm4gMDt2YXIgZSxuLHIsaSxhLG8scyxjLHUsbCxoO2lmKChlPXRbMF0pLng9MCxlLnk9MCwhKGk+MSkpcmV0dXJuIGUucjtpZihuPXRbMV0sZS54PS1uLnIsbi54PWUucixuLnk9MCwhKGk+MikpcmV0dXJuIGUucituLnI7cWQobixlLHI9dFsyXSksZT1uZXcgV2QoZSksbj1uZXcgV2Qobikscj1uZXcgV2QociksZS5uZXh0PXIucHJldmlvdXM9bixuLm5leHQ9ZS5wcmV2aW91cz1yLHIubmV4dD1uLnByZXZpb3VzPWU7dDpmb3Iocz0zO3M8aTsrK3Mpe3FkKGUuXyxuLl8scj10W3NdKSxyPW5ldyBXZChyKSxjPW4ubmV4dCx1PWUucHJldmlvdXMsbD1uLl8ucixoPWUuXy5yO2Rve2lmKGw8PWgpe2lmKCRkKGMuXyxyLl8pKXtuPWMsZS5uZXh0PW4sbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fWwrPWMuXy5yLGM9Yy5uZXh0fWVsc2V7aWYoJGQodS5fLHIuXykpeyhlPXUpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9dS5fLnIsdT11LnByZXZpb3VzfX13aGlsZShjIT09dS5uZXh0KTtmb3Ioci5wcmV2aW91cz1lLHIubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49cixhPUhkKGUpOyhyPXIubmV4dCkhPT1uOykobz1IZChyKSk8YSYmKGU9cixhPW8pO249ZS5uZXh0fWZvcihlPVtuLl9dLHI9bjsocj1yLm5leHQpIT09bjspZS5wdXNoKHIuXyk7Zm9yKHI9SWQoZSkscz0wO3M8aTsrK3MpKGU9dFtzXSkueC09ci54LGUueS09ci55O3JldHVybiByLnJ9ZnVuY3Rpb24gR2QodCl7cmV0dXJuIFZkKHQpLHR9ZnVuY3Rpb24gWGQodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpaZCh0KX1mdW5jdGlvbiBaZCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gUWQoKXtyZXR1cm4gMH1mdW5jdGlvbiBLZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSmQodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiB0cCgpe3ZhciB0PW51bGwsZT0xLG49MSxyPVFkO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIGkueD1lLzIsaS55PW4vMix0P2kuZWFjaEJlZm9yZShlcCh0KSkuZWFjaEFmdGVyKG5wKHIsLjUpKS5lYWNoQmVmb3JlKHJwKDEpKTppLmVhY2hCZWZvcmUoZXAoSmQpKS5lYWNoQWZ0ZXIobnAoUWQsMSkpLmVhY2hBZnRlcihucChyLGkuci9NYXRoLm1pbihlLG4pKSkuZWFjaEJlZm9yZShycChNYXRoLm1pbihlLG4pLygyKmkucikpKSxpfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1YZChlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxpKTpbZSxuXX0saS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGkpOnJ9LGl9ZnVuY3Rpb24gZXAodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fChlLnI9TWF0aC5tYXgoMCwrdChlKXx8MCkpfX1mdW5jdGlvbiBucCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtpZihyPW4uY2hpbGRyZW4pe3ZhciByLGksYSxvPXIubGVuZ3RoLHM9dChuKSplfHwwO2lmKHMpZm9yKGk9MDtpPG87KytpKXJbaV0ucis9cztpZihhPVZkKHIpLHMpZm9yKGk9MDtpPG87KytpKXJbaV0uci09cztuLnI9YStzfX19ZnVuY3Rpb24gcnAodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUucGFyZW50O2Uucio9dCxuJiYoZS54PW4ueCt0KmUueCxlLnk9bi55K3QqZS55KX19ZnVuY3Rpb24gaXAodCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5yb3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEpfWZ1bmN0aW9uIGFwKHQsZSxuLHIsaSl7Zm9yKHZhciBhLG89dC5jaGlsZHJlbixzPS0xLGM9by5sZW5ndGgsdT10LnZhbHVlJiYoci1lKS90LnZhbHVlOysrczxjOykoYT1vW3NdKS55MD1uLGEueTE9aSxhLngwPWUsYS54MT1lKz1hLnZhbHVlKnV9ZnVuY3Rpb24gb3AoKXt2YXIgdD0xLGU9MSxuPTAscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBhPWkuaGVpZ2h0KzE7cmV0dXJuIGkueDA9aS55MD1uLGkueDE9dCxpLnkxPWUvYSxpLmVhY2hCZWZvcmUoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7ci5jaGlsZHJlbiYmYXAocixyLngwLHQqKHIuZGVwdGgrMSkvZSxyLngxLHQqKHIuZGVwdGgrMikvZSk7dmFyIGk9ci54MCxhPXIueTAsbz1yLngxLW4scz1yLnkxLW47bzxpJiYoaT1vPShpK28pLzIpLHM8YSYmKGE9cz0oYStzKS8yKSxyLngwPWksci55MD1hLHIueDE9byxyLnkxPXN9fShlLGEpKSxyJiZpLmVhY2hCZWZvcmUoaXApLGl9cmV0dXJuIGkucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGkpOnJ9LGkuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLGkpOlt0LGVdfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSk6bn0saX12YXIgc3A9e2RlcHRoOi0xfSxjcD17fTtmdW5jdGlvbiB1cCh0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBscCh0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBocCgpe3ZhciB0PXVwLGU9bHA7ZnVuY3Rpb24gbihuKXt2YXIgcixpLGEsbyxzLGMsdSxsPW4ubGVuZ3RoLGg9bmV3IEFycmF5KGwpLGY9e307Zm9yKGk9MDtpPGw7KytpKXI9bltpXSxzPWhbaV09bmV3IEJkKHIpLG51bGwhPShjPXQocixpLG4pKSYmKGMrPSIiKSYmKGZbdT0iJCIrKHMuaWQ9YyldPXUgaW4gZj9jcDpzKTtmb3IoaT0wO2k8bDsrK2kpaWYocz1oW2ldLG51bGwhPShjPWUobltpXSxpLG4pKSYmKGMrPSIiKSl7aWYoIShvPWZbIiQiK2NdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrYyk7aWYobz09PWNwKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2MpO28uY2hpbGRyZW4/by5jaGlsZHJlbi5wdXNoKHMpOm8uY2hpbGRyZW49W3NdLHMucGFyZW50PW99ZWxzZXtpZihhKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTthPXN9aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoYS5wYXJlbnQ9c3AsYS5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS1sfSkpLmVhY2hCZWZvcmUoT2QpLGEucGFyZW50PW51bGwsbD4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gYX1yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1aZChlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVpkKHQpLG4pOmV9LG59ZnVuY3Rpb24gZnAodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gZHAodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lWzBdOnQudH1mdW5jdGlvbiBwcCh0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbZS5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIHlwKHQsZSxuKXt2YXIgcj1uLyhlLmktdC5pKTtlLmMtPXIsZS5zKz1uLHQuYys9cixlLnorPW4sZS5tKz1ufWZ1bmN0aW9uIGdwKHQsZSxuKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpufWZ1bmN0aW9uIG1wKHQsZSl7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPWV9ZnVuY3Rpb24gdnAoKXt2YXIgdD1mcCxlPTEsbj0xLHI9bnVsbDtmdW5jdGlvbiBpKGkpe3ZhciBjPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHIsaSxhLG89bmV3IG1wKHQsMCkscz1bb107ZT1zLnBvcCgpOylpZihyPWUuXy5jaGlsZHJlbilmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkoYT1yLmxlbmd0aCksaT1hLTE7aT49MDstLWkpcy5wdXNoKG49ZS5jaGlsZHJlbltpXT1uZXcgbXAocltpXSxpKSksbi5wYXJlbnQ9ZTtyZXR1cm4oby5wYXJlbnQ9bmV3IG1wKG51bGwsMCkpLmNoaWxkcmVuPVtvXSxvfShpKTtpZihjLmVhY2hBZnRlcihhKSxjLnBhcmVudC5tPS1jLnosYy5lYWNoQmVmb3JlKG8pLHIpaS5lYWNoQmVmb3JlKHMpO2Vsc2V7dmFyIHU9aSxsPWksaD1pO2kuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PHUueCYmKHU9dCksdC54PmwueCYmKGw9dCksdC5kZXB0aD5oLmRlcHRoJiYoaD10KX0pKTt2YXIgZj11PT09bD8xOnQodSxsKS8yLGQ9Zi11LngscD1lLyhsLngrZitkKSx5PW4vKGguZGVwdGh8fDEpO2kuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PSh0LngrZCkqcCx0Lnk9dC5kZXB0aCp5fSkpfXJldHVybiBpfWZ1bmN0aW9uIGEoZSl7dmFyIG49ZS5jaGlsZHJlbixyPWUucGFyZW50LmNoaWxkcmVuLGk9ZS5pP3JbZS5pLTFdOm51bGw7aWYobil7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAscj0wLGk9dC5jaGlsZHJlbixhPWkubGVuZ3RoOy0tYT49MDspKGU9aVthXSkueis9bixlLm0rPW4sbis9ZS5zKyhyKz1lLmMpfShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtpPyhlLno9aS56K3QoZS5fLGkuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIGkmJihlLno9aS56K3QoZS5fLGkuXykpO2UucGFyZW50LkE9ZnVuY3Rpb24oZSxuLHIpe2lmKG4pe2Zvcih2YXIgaSxhPWUsbz1lLHM9bixjPWEucGFyZW50LmNoaWxkcmVuWzBdLHU9YS5tLGw9by5tLGg9cy5tLGY9Yy5tO3M9cHAocyksYT1kcChhKSxzJiZhOyljPWRwKGMpLChvPXBwKG8pKS5hPWUsKGk9cy56K2gtYS56LXUrdChzLl8sYS5fKSk+MCYmKHlwKGdwKHMsZSxyKSxlLGkpLHUrPWksbCs9aSksaCs9cy5tLHUrPWEubSxmKz1jLm0sbCs9by5tO3MmJiFwcChvKSYmKG8udD1zLG8ubSs9aC1sKSxhJiYhZHAoYykmJihjLnQ9YSxjLm0rPXUtZixyPWUpfXJldHVybiByfShlLGksZS5wYXJlbnQuQXx8clswXSl9ZnVuY3Rpb24gbyh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUsdC55PXQuZGVwdGgqbn1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLGU9K3RbMF0sbj0rdFsxXSxpKTpyP251bGw6W2Usbl19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsZT0rdFswXSxuPSt0WzFdLGkpOnI/W2Usbl06bnVsbH0saX1mdW5jdGlvbiBicCh0LGUsbixyLGkpe2Zvcih2YXIgYSxvPXQuY2hpbGRyZW4scz0tMSxjPW8ubGVuZ3RoLHU9dC52YWx1ZSYmKGktbikvdC52YWx1ZTsrK3M8YzspKGE9b1tzXSkueDA9ZSxhLngxPXIsYS55MD1uLGEueTE9bis9YS52YWx1ZSp1fW1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEJkLnByb3RvdHlwZSk7dmFyIF9wPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiB4cCh0LGUsbixyLGksYSl7Zm9yKHZhciBvLHMsYyx1LGwsaCxmLGQscCx5LGcsbT1bXSx2PWUuY2hpbGRyZW4sYj0wLF89MCx4PXYubGVuZ3RoLHc9ZS52YWx1ZTtiPHg7KXtjPWktbix1PWEtcjtkb3tsPXZbXysrXS52YWx1ZX13aGlsZSghbCYmXzx4KTtmb3IoaD1mPWwsZz1sKmwqKHk9TWF0aC5tYXgodS9jLGMvdSkvKHcqdCkpLHA9TWF0aC5tYXgoZi9nLGcvaCk7Xzx4OysrXyl7aWYobCs9cz12W19dLnZhbHVlLHM8aCYmKGg9cykscz5mJiYoZj1zKSxnPWwqbCp5LChkPU1hdGgubWF4KGYvZyxnL2gpKT5wKXtsLT1zO2JyZWFrfXA9ZH1tLnB1c2gobz17dmFsdWU6bCxkaWNlOmM8dSxjaGlsZHJlbjp2LnNsaWNlKGIsXyl9KSxvLmRpY2U/YXAobyxuLHIsaSx3P3IrPXUqbC93OmEpOmJwKG8sbixyLHc/bis9YypsL3c6aSxhKSx3LT1sLGI9X31yZXR1cm4gbX1jb25zdCB3cD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLHIsaSxhKXt4cChlLHQsbixyLGksYSl9cmV0dXJuIG4ucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0sbn0oX3ApO2Z1bmN0aW9uIGtwKCl7dmFyIHQ9d3AsZT0hMSxuPTEscj0xLGk9WzBdLGE9UWQsbz1RZCxzPVFkLGM9UWQsdT1RZDtmdW5jdGlvbiBsKHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1yLHQuZWFjaEJlZm9yZShoKSxpPVswXSxlJiZ0LmVhY2hCZWZvcmUoaXApLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1pW2UuZGVwdGhdLHI9ZS54MCtuLGw9ZS55MCtuLGg9ZS54MS1uLGY9ZS55MS1uO2g8ciYmKHI9aD0ocitoKS8yKSxmPGwmJihsPWY9KGwrZikvMiksZS54MD1yLGUueTA9bCxlLngxPWgsZS55MT1mLGUuY2hpbGRyZW4mJihuPWlbZS5kZXB0aCsxXT1hKGUpLzIscis9dShlKS1uLGwrPW8oZSktbiwoaC09cyhlKS1uKTxyJiYocj1oPShyK2gpLzIpLChmLT1jKGUpLW4pPGwmJihsPWY9KGwrZikvMiksdChlLHIsbCxoLGYpKX1yZXR1cm4gbC5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsbCk6ZX0sbC5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLHI9K3RbMV0sbCk6W24scl19LGwudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1aZChlKSxsKTp0fSxsLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bC5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOmwucGFkZGluZ0lubmVyKCl9LGwucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOmF9LGwucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2wucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTpsLnBhZGRpbmdUb3AoKX0sbC5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOm99LGwucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOnN9LGwucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OktkKCt0KSxsKTpjfSxsLnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOnV9LGx9ZnVuY3Rpb24gVHAodCxlLG4scixpKXt2YXIgYSxvLHM9dC5jaGlsZHJlbixjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMrMSk7Zm9yKHVbMF09bz1hPTA7YTxjOysrYSl1W2ErMV09bys9c1thXS52YWx1ZTshZnVuY3Rpb24gdChlLG4scixpLGEsbyxjKXtpZihlPj1uLTEpe3ZhciBsPXNbZV07cmV0dXJuIGwueDA9aSxsLnkwPWEsbC54MT1vLHZvaWQobC55MT1jKX1mb3IodmFyIGg9dVtlXSxmPXIvMitoLGQ9ZSsxLHA9bi0xO2Q8cDspe3ZhciB5PWQrcD4+PjE7dVt5XTxmP2Q9eSsxOnA9eX1mLXVbZC0xXTx1W2RdLWYmJmUrMTxkJiYtLWQ7dmFyIGc9dVtkXS1oLG09ci1nO2lmKG8taT5jLWEpe3ZhciB2PShpKm0rbypnKS9yO3QoZSxkLGcsaSxhLHYsYyksdChkLG4sbSx2LGEsbyxjKX1lbHNle3ZhciBiPShhKm0rYypnKS9yO3QoZSxkLGcsaSxhLG8sYiksdChkLG4sbSxpLGIsbyxjKX19KDAsYyx0LnZhbHVlLGUsbixyLGkpfWZ1bmN0aW9uIEVwKHQsZSxuLHIsaSl7KDEmdC5kZXB0aD9icDphcCkodCxlLG4scixpKX1jb25zdCBDcD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLHIsaSxhKXtpZigobz10Ll9zcXVhcmlmeSkmJm8ucmF0aW89PT1lKWZvcih2YXIgbyxzLGMsdSxsLGg9LTEsZj1vLmxlbmd0aCxkPXQudmFsdWU7KytoPGY7KXtmb3IoYz0ocz1vW2hdKS5jaGlsZHJlbix1PXMudmFsdWU9MCxsPWMubGVuZ3RoO3U8bDsrK3Upcy52YWx1ZSs9Y1t1XS52YWx1ZTtzLmRpY2U/YXAocyxuLHIsaSxyKz0oYS1yKSpzLnZhbHVlL2QpOmJwKHMsbixyLG4rPShpLW4pKnMudmFsdWUvZCxhKSxkLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9bz14cChlLHQsbixyLGksYSksby5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KF9wKTtmdW5jdGlvbiBTcCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX1mdW5jdGlvbiBBcCh0LGUpe3ZhciBuPWRuKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fWZ1bmN0aW9uIE1wKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLW4pK2Uqbil9fXZhciBOcD1NYXRoLlNRUlQyO2Z1bmN0aW9uIERwKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIE9wKHQsZSl7dmFyIG4scixpPXRbMF0sYT10WzFdLG89dFsyXSxzPWVbMF0sYz1lWzFdLHU9ZVsyXSxsPXMtaSxoPWMtYSxmPWwqbCtoKmg7aWYoZjwxZS0xMilyPU1hdGgubG9nKHUvbykvTnAsbj1mdW5jdGlvbih0KXtyZXR1cm5baSt0KmwsYSt0KmgsbypNYXRoLmV4cChOcCp0KnIpXX07ZWxzZXt2YXIgZD1NYXRoLnNxcnQoZikscD0odSp1LW8qbys0KmYpLygyKm8qMipkKSx5PSh1KnUtbypvLTQqZikvKDIqdSoyKmQpLGc9TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKSxtPU1hdGgubG9nKE1hdGguc3FydCh5KnkrMSkteSk7cj0obS1nKS9OcCxuPWZ1bmN0aW9uKHQpe3ZhciBlLG49dCpyLHM9RHAoZyksYz1vLygyKmQpKihzKihlPU5wKm4rZywoKGU9TWF0aC5leHAoMiplKSktMSkvKGUrMSkpLWZ1bmN0aW9uKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfShnKSk7cmV0dXJuW2krYypsLGErYypoLG8qcy9EcChOcCpuK2cpXX19cmV0dXJuIG4uZHVyYXRpb249MWUzKnIsbn1mdW5jdGlvbiBCcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcj10KChlPWFuKGUpKS5oLChuPWFuKG4pKS5oKSxpPXBuKGUucyxuLnMpLGE9cG4oZS5sLG4ubCksbz1wbihlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1vKHQpLGUrIiJ9fX1jb25zdCBMcD1CcChkbik7dmFyIElwPUJwKHBuKTtmdW5jdGlvbiBScCh0LGUpe3ZhciBuPXBuKCh0PVRhKHQpKS5sLChlPVRhKGUpKS5sKSxyPXBuKHQuYSxlLmEpLGk9cG4odC5iLGUuYiksYT1wbih0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQubD1uKGUpLHQuYT1yKGUpLHQuYj1pKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fWZ1bmN0aW9uIEZwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPXQoKGU9T2EoZSkpLmgsKG49T2EobikpLmgpLGk9cG4oZS5jLG4uYyksYT1wbihlLmwsbi5sKSxvPXBuKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5jPWkodCksZS5sPWEodCksZS5vcGFjaXR5PW8odCksZSsiIn19fWNvbnN0IFBwPUZwKGRuKTt2YXIganA9RnAocG4pO2Z1bmN0aW9uIFlwKHQpe3JldHVybiBmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIHIoZSxyKXt2YXIgaT10KChlPSRhKGUpKS5oLChyPSRhKHIpKS5oKSxhPXBuKGUucyxyLnMpLG89cG4oZS5sLHIubCkscz1wbihlLm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1pKHQpLGUucz1hKHQpLGUubD1vKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLHIuZ2FtbWE9ZSxyfSgxKX1jb25zdCB6cD1ZcChkbik7dmFyIFVwPVlwKHBuKTtmdW5jdGlvbiBxcCh0LGUpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGgtMSxpPWVbMF0sYT1uZXcgQXJyYXkocjwwPzA6cik7bjxyOylhW25dPXQoaSxpPWVbKytuXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5taW4oci0xLE1hdGguZmxvb3IodCo9cikpKTtyZXR1cm4gYVtlXSh0LWUpfX1mdW5jdGlvbiAkcCh0LGUpe2Zvcih2YXIgbj1uZXcgQXJyYXkoZSkscj0wO3I8ZTsrK3IpbltyXT10KHIvKGUtMSkpO3JldHVybiBufWZ1bmN0aW9uIEhwKHQpe2Zvcih2YXIgZSxuPS0xLHI9dC5sZW5ndGgsaT10W3ItMV0sYT0wOysrbjxyOyllPWksaT10W25dLGErPWVbMV0qaVswXS1lWzBdKmlbMV07cmV0dXJuIGEvMn1mdW5jdGlvbiBXcCh0KXtmb3IodmFyIGUsbixyPS0xLGk9dC5sZW5ndGgsYT0wLG89MCxzPXRbaS0xXSxjPTA7KytyPGk7KWU9cyxzPXRbcl0sYys9bj1lWzBdKnNbMV0tc1swXSplWzFdLGErPShlWzBdK3NbMF0pKm4sbys9KGVbMV0rc1sxXSkqbjtyZXR1cm5bYS8oYyo9Myksby9jXX1mdW5jdGlvbiBWcCh0LGUsbil7cmV0dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSktKGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gR3AodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gWHAodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49WzAsMV0scj0yLGk9MjtpPGU7KytpKXtmb3IoO3I+MSYmVnAodFtuW3ItMl1dLHRbbltyLTFdXSx0W2ldKTw9MDspLS1yO25bcisrXT1pfXJldHVybiBuLnNsaWNlKDAscil9ZnVuY3Rpb24gWnAodCl7aWYoKG49dC5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIGUsbixyPW5ldyBBcnJheShuKSxpPW5ldyBBcnJheShuKTtmb3IoZT0wO2U8bjsrK2UpcltlXT1bK3RbZV1bMF0sK3RbZV1bMV0sZV07Zm9yKHIuc29ydChHcCksZT0wO2U8bjsrK2UpaVtlXT1bcltlXVswXSwtcltlXVsxXV07dmFyIGE9WHAociksbz1YcChpKSxzPW9bMF09PT1hWzBdLGM9b1tvLmxlbmd0aC0xXT09PWFbYS5sZW5ndGgtMV0sdT1bXTtmb3IoZT1hLmxlbmd0aC0xO2U+PTA7LS1lKXUucHVzaCh0W3JbYVtlXV1bMl1dKTtmb3IoZT0rcztlPG8ubGVuZ3RoLWM7KytlKXUucHVzaCh0W3Jbb1tlXV1bMl1dKTtyZXR1cm4gdX1mdW5jdGlvbiBRcCh0LGUpe2Zvcih2YXIgbixyLGk9dC5sZW5ndGgsYT10W2ktMV0sbz1lWzBdLHM9ZVsxXSxjPWFbMF0sdT1hWzFdLGw9ITEsaD0wO2g8aTsrK2gpbj0oYT10W2hdKVswXSwocj1hWzFdKT5zIT11PnMmJm88KGMtbikqKHMtcikvKHUtcikrbiYmKGw9IWwpLGM9bix1PXI7cmV0dXJuIGx9ZnVuY3Rpb24gS3AodCl7Zm9yKHZhciBlLG4scj0tMSxpPXQubGVuZ3RoLGE9dFtpLTFdLG89YVswXSxzPWFbMV0sYz0wOysrcjxpOyllPW8sbj1zLGUtPW89KGE9dFtyXSlbMF0sbi09cz1hWzFdLGMrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gY31mdW5jdGlvbiBKcCgpe3JldHVybiBNYXRoLnJhbmRvbSgpfWNvbnN0IHR5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbiwxPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9MCk6bi09dCxmdW5jdGlvbigpe3JldHVybiBlKCkqbit0fX1yZXR1cm4gbi5zb3VyY2U9dCxufShKcCksZXk9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIHIsaTtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgYTtpZihudWxsIT1yKWE9cixyPW51bGw7ZWxzZSBkb3tyPTIqZSgpLTEsYT0yKmUoKS0xLGk9cipyK2EqYX13aGlsZSghaXx8aT4xKTtyZXR1cm4gdCtuKmEqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKGkpL2kpfX1yZXR1cm4gbi5zb3VyY2U9dCxufShKcCksbnk9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKCl7dmFyIHQ9ZXkuc291cmNlKGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19cmV0dXJuIG4uc291cmNlPXQsbn0oSnApLHJ5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49MCxyPTA7cjx0OysrciluKz1lKCk7cmV0dXJuIG59fXJldHVybiBuLnNvdXJjZT10LG59KEpwKSxpeT1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49cnkuc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0oSnApLGF5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2coMS1lKCkpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KEpwKTtmdW5jdGlvbiBveSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBzeSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBjeT1BcnJheS5wcm90b3R5cGUsdXk9Y3kubWFwLGx5PWN5LnNsaWNlLGh5PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIGZ5KCl7dmFyIHQ9bmEoKSxlPVtdLG49W10scj1oeTtmdW5jdGlvbiBpKGkpe3ZhciBhPWkrIiIsbz10LmdldChhKTtpZighbyl7aWYociE9PWh5KXJldHVybiByO3Quc2V0KGEsbz1lLnB1c2goaSkpfXJldHVybiBuWyhvLTEpJW4ubGVuZ3RoXX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9bmEoKTtmb3IodmFyIHIsYSxvPS0xLHM9bi5sZW5ndGg7KytvPHM7KXQuaGFzKGE9KHI9bltvXSkrIiIpfHx0LnNldChhLGUucHVzaChyKSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bHkuY2FsbCh0KSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBmeShlLG4pLnVua25vd24ocil9LG95LmFwcGx5KGksYXJndW1lbnRzKSxpfWZ1bmN0aW9uIGR5KCl7dmFyIHQsZSxuPWZ5KCkudW5rbm93bih2b2lkIDApLHI9bi5kb21haW4saT1uLnJhbmdlLGE9WzAsMV0sbz0hMSxzPTAsYz0wLHU9LjU7ZnVuY3Rpb24gbCgpe3ZhciBuPXIoKS5sZW5ndGgsbD1hWzFdPGFbMF0saD1hW2wtMF0sZj1hWzEtbF07dD0oZi1oKS9NYXRoLm1heCgxLG4tcysyKmMpLG8mJih0PU1hdGguZmxvb3IodCkpLGgrPShmLWgtdCoobi1zKSkqdSxlPXQqKDEtcyksbyYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBkPWsobikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaCt0KmV9KSk7cmV0dXJuIGkobD9kLnJldmVyc2UoKTpkKX1yZXR1cm4gZGVsZXRlIG4udW5rbm93bixuLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxsKCkpOnIoKX0sbi5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1bK3RbMF0sK3RbMV1dLGwoKSk6YS5zbGljZSgpfSxuLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGE9Wyt0WzBdLCt0WzFdXSxvPSEwLGwoKX0sbi5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ISF0LGwoKSk6b30sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsYz0rdCksbCgpKTpzfSxuLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHQpLGwoKSk6c30sbi5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbCgpKTpjfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksbCgpKTp1fSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZHkocigpLGEpLnJvdW5kKG8pLnBhZGRpbmdJbm5lcihzKS5wYWRkaW5nT3V0ZXIoYykuYWxpZ24odSl9LG95LmFwcGx5KGwoKSxhcmd1bWVudHMpfWZ1bmN0aW9uIHB5KHQpe3ZhciBlPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHB5KGUoKSl9LHR9ZnVuY3Rpb24geXkoKXtyZXR1cm4gcHkoZHkuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9ZnVuY3Rpb24gZ3kodCl7cmV0dXJuK3R9dmFyIG15PVswLDFdO2Z1bmN0aW9uIHZ5KHQpe3JldHVybiB0fWZ1bmN0aW9uIGJ5KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9OihuPWlzTmFOKGUpP05hTjouNSxmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIG59ZnVuY3Rpb24gX3kodCl7dmFyIGUsbj10WzBdLHI9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gbj5yJiYoZT1uLG49cixyPWUpLGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKHIsdCkpfX1mdW5jdGlvbiB4eSh0LGUsbil7dmFyIHI9dFswXSxpPXRbMV0sYT1lWzBdLG89ZVsxXTtyZXR1cm4gaTxyPyhyPWJ5KGksciksYT1uKG8sYSkpOihyPWJ5KHIsaSksYT1uKGEsbykpLGZ1bmN0aW9uKHQpe3JldHVybiBhKHIodCkpfX1mdW5jdGlvbiB3eSh0LGUsbil7dmFyIHI9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz0tMTtmb3IodFtyXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytvPHI7KWlbb109YnkodFtvXSx0W28rMV0pLGFbb109bihlW29dLGVbbysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXUodCxlLDEsciktMTtyZXR1cm4gYVtuXShpW25dKGUpKX19ZnVuY3Rpb24ga3kodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gVHkoKXt2YXIgdCxlLG4scixpLGEsbz1teSxzPW15LGM9TW4sdT12eTtmdW5jdGlvbiBsKCl7cmV0dXJuIHI9TWF0aC5taW4oby5sZW5ndGgscy5sZW5ndGgpPjI/d3k6eHksaT1hPW51bGwsaH1mdW5jdGlvbiBoKGUpe3JldHVybiBpc05hTihlPStlKT9uOihpfHwoaT1yKG8ubWFwKHQpLHMsYykpKSh0KHUoZSkpKX1yZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIHUoZSgoYXx8KGE9cihzLG8ubWFwKHQpLFRuKSkpKG4pKSl9LGguZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXV5LmNhbGwodCxneSksdT09PXZ5fHwodT1feShvKSksbCgpKTpvLnNsaWNlKCl9LGgucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bHkuY2FsbCh0KSxsKCkpOnMuc2xpY2UoKX0saC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPWx5LmNhbGwodCksYz1NcCxsKCl9LGguY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dD9feShvKTp2eSxoKTp1IT09dnl9LGguaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxsKCkpOmN9LGgudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGgpOm59LGZ1bmN0aW9uKG4scil7cmV0dXJuIHQ9bixlPXIsbCgpfX1mdW5jdGlvbiBFeSh0LGUpe3JldHVybiBUeSgpKHQsZSl9ZnVuY3Rpb24gQ3kodCxlLG4scil7dmFyIGksYT1NKHQsZSxuKTtzd2l0Y2goKHI9Y2MobnVsbD09cj8iLGYiOnIpKS50eXBlKXtjYXNlInMiOnZhciBvPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9eGMoYSxvKSl8fChyLnByZWNpc2lvbj1pKSx5YyhyLG8pO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPXIucHJlY2lzaW9ufHxpc05hTihpPXdjKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChyLnByZWNpc2lvbj1pLSgiZSI9PT1yLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9X2MoYSkpfHwoci5wcmVjaXNpb249aS0yKigiJSI9PT1yLnR5cGUpKX1yZXR1cm4gcGMocil9ZnVuY3Rpb24gU3kodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiBTKG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKCk7cmV0dXJuIEN5KHJbMF0scltyLmxlbmd0aC0xXSxudWxsPT10PzEwOnQsbil9LHQubmljZT1mdW5jdGlvbihuKXtudWxsPT1uJiYobj0xMCk7dmFyIHIsaT1lKCksYT0wLG89aS5sZW5ndGgtMSxzPWlbYV0sYz1pW29dO3JldHVybiBjPHMmJihyPXMscz1jLGM9cixyPWEsYT1vLG89ciksKHI9QShzLGMsbikpPjA/cj1BKHM9TWF0aC5mbG9vcihzL3IpKnIsYz1NYXRoLmNlaWwoYy9yKSpyLG4pOnI8MCYmKHI9QShzPU1hdGguY2VpbChzKnIpL3IsYz1NYXRoLmZsb29yKGMqcikvcixuKSkscj4wPyhpW2FdPU1hdGguZmxvb3Iocy9yKSpyLGlbb109TWF0aC5jZWlsKGMvcikqcixlKGkpKTpyPDAmJihpW2FdPU1hdGguY2VpbChzKnIpL3IsaVtvXT1NYXRoLmZsb29yKGMqcikvcixlKGkpKSx0fSx0fWZ1bmN0aW9uIEF5KCl7dmFyIHQ9RXkodnksdnkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4ga3kodCxBeSgpKX0sb3kuYXBwbHkodCxhcmd1bWVudHMpLFN5KHQpfWZ1bmN0aW9uIE15KHQpe3ZhciBlO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGlzTmFOKHQ9K3QpP2U6dH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXV5LmNhbGwoZSxneSksbik6dC5zbGljZSgpfSxuLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTXkodCkudW5rbm93bihlKX0sdD1hcmd1bWVudHMubGVuZ3RoP3V5LmNhbGwodCxneSk6WzAsMV0sU3kobil9ZnVuY3Rpb24gTnkodCxlKXt2YXIgbixyPTAsaT0odD10LnNsaWNlKCkpLmxlbmd0aC0xLGE9dFtyXSxvPXRbaV07cmV0dXJuIG88YSYmKG49cixyPWksaT1uLG49YSxhPW8sbz1uKSx0W3JdPWUuZmxvb3IoYSksdFtpXT1lLmNlaWwobyksdH1mdW5jdGlvbiBEeSh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gT3kodCl7cmV0dXJuIE1hdGguZXhwKHQpfWZ1bmN0aW9uIEJ5KHQpe3JldHVybi1NYXRoLmxvZygtdCl9ZnVuY3Rpb24gTHkodCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiBJeSh0KXtyZXR1cm4gaXNGaW5pdGUodCk/KygiMWUiK3QpOnQ8MD8wOnR9ZnVuY3Rpb24gUnkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi10KC1lKX19ZnVuY3Rpb24gRnkodCl7dmFyIGUsbixyPXQoRHksT3kpLGk9ci5kb21haW4sYT0xMDtmdW5jdGlvbiBvKCl7cmV0dXJuIGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvdH0pfShhKSxuPWZ1bmN0aW9uKHQpe3JldHVybiAxMD09PXQ/SXk6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KGEpLGkoKVswXTwwPyhlPVJ5KGUpLG49UnkobiksdChCeSxMeSkpOnQoRHksT3kpLHJ9cmV0dXJuIHIuYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxvKCkpOmF9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLG8oKSk6aSgpfSxyLnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciByLG89aSgpLHM9b1swXSxjPW9bby5sZW5ndGgtMV07KHI9YzxzKSYmKGY9cyxzPWMsYz1mKTt2YXIgdSxsLGgsZj1lKHMpLGQ9ZShjKSxwPW51bGw9PXQ/MTA6K3QseT1bXTtpZighKGElMSkmJmQtZjxwKXtpZihmPU1hdGgucm91bmQoZiktMSxkPU1hdGgucm91bmQoZCkrMSxzPjApe2Zvcig7ZjxkOysrZilmb3IobD0xLHU9bihmKTtsPGE7KytsKWlmKCEoKGg9dSpsKTxzKSl7aWYoaD5jKWJyZWFrO3kucHVzaChoKX19ZWxzZSBmb3IoO2Y8ZDsrK2YpZm9yKGw9YS0xLHU9bihmKTtsPj0xOy0tbClpZighKChoPXUqbCk8cykpe2lmKGg+YylicmVhazt5LnB1c2goaCl9fWVsc2UgeT1TKGYsZCxNYXRoLm1pbihkLWYscCkpLm1hcChuKTtyZXR1cm4gcj95LnJldmVyc2UoKTp5fSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxpKXtpZihudWxsPT1pJiYoaT0xMD09PWE/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmKGk9cGMoaSkpLHQ9PT0xLzApcmV0dXJuIGk7bnVsbD09dCYmKHQ9MTApO3ZhciBvPU1hdGgubWF4KDEsYSp0L3IudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10L24oTWF0aC5yb3VuZChlKHQpKSk7cmV0dXJuIHIqYTxhLS41JiYocio9YSkscjw9bz9pKHQpOiIifX0sci5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGkoTnkoaSgpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmZsb29yKGUodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmNlaWwoZSh0KSkpfX0pKX0scn1mdW5jdGlvbiBQeSgpe3ZhciB0PUZ5KFR5KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4ga3kodCxQeSgpKS5iYXNlKHQuYmFzZSgpKX0sb3kuYXBwbHkodCxhcmd1bWVudHMpLHR9ZnVuY3Rpb24gankodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5sb2cxcChNYXRoLmFicyhlL3QpKX19ZnVuY3Rpb24gWXkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5leHBtMShNYXRoLmFicyhlKSkqdH19ZnVuY3Rpb24genkodCl7dmFyIGU9MSxuPXQoankoZSksWXkoZSkpO3JldHVybiBuLmNvbnN0YW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QoankoZT0rbiksWXkoZSkpOmV9LFN5KG4pfWZ1bmN0aW9uIFV5KCl7dmFyIHQ9enkoVHkoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBreSh0LFV5KCkpLmNvbnN0YW50KHQuY29uc3RhbnQoKSl9LG95LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBxeSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGU8MD8tTWF0aC5wb3coLWUsdCk6TWF0aC5wb3coZSx0KX19ZnVuY3Rpb24gJHkodCl7cmV0dXJuIHQ8MD8tTWF0aC5zcXJ0KC10KTpNYXRoLnNxcnQodCl9ZnVuY3Rpb24gSHkodCl7cmV0dXJuIHQ8MD8tdCp0OnQqdH1mdW5jdGlvbiBXeSh0KXt2YXIgZT10KHZ5LHZ5KSxuPTE7ZnVuY3Rpb24gcigpe3JldHVybiAxPT09bj90KHZ5LHZ5KTouNT09PW4/dCgkeSxIeSk6dChxeShuKSxxeSgxL24pKX1yZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxyKCkpOm59LFN5KGUpfWZ1bmN0aW9uIFZ5KCl7dmFyIHQ9V3koVHkoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBreSh0LFZ5KCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LG95LmFwcGx5KHQsYXJndW1lbnRzKSx0fWZ1bmN0aW9uIEd5KCl7cmV0dXJuIFZ5LmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9ZnVuY3Rpb24gWHkoKXt2YXIgdCxlPVtdLG49W10scj1bXTtmdW5jdGlvbiBhKCl7dmFyIHQ9MCxpPU1hdGgubWF4KDEsbi5sZW5ndGgpO2ZvcihyPW5ldyBBcnJheShpLTEpOysrdDxpOylyW3QtMV09TyhlLHQvaSk7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW3UocixlKV19cmV0dXJuIG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBpPW4uaW5kZXhPZih0KTtyZXR1cm4gaTwwP1tOYU4sTmFOXTpbaT4wP3JbaS0xXTplWzBdLGk8ci5sZW5ndGg/cltpXTplW2UubGVuZ3RoLTFdXX0sby5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2Zvcih2YXIgbixyPTAsbz10Lmxlbmd0aDtyPG87KytyKW51bGw9PShuPXRbcl0pfHxpc05hTihuPStuKXx8ZS5wdXNoKG4pO3JldHVybiBlLnNvcnQoaSksYSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWx5LmNhbGwodCksYSgpKTpuLnNsaWNlKCl9LG8udW5rbm93bj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG8pOnR9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFh5KCkuZG9tYWluKGUpLnJhbmdlKG4pLnVua25vd24odCl9LG95LmFwcGx5KG8sYXJndW1lbnRzKX1mdW5jdGlvbiBaeSgpe3ZhciB0LGU9MCxuPTEscj0xLGk9Wy41XSxhPVswLDFdO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGU8PWU/YVt1KGksZSwwLHIpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3IoaT1uZXcgQXJyYXkocik7Kyt0PHI7KWlbdF09KCh0KzEpKm4tKHQtcikqZSkvKHIrMSk7cmV0dXJuIG99cmV0dXJuIG8uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sby5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0oYT1seS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOmEuc2xpY2UoKX0sby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG89YS5pbmRleE9mKHQpO3JldHVybiBvPDA/W05hTixOYU5dOm88MT9bZSxpWzBdXTpvPj1yP1tpW3ItMV0sbl06W2lbby0xXSxpW29dXX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6b30sby50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFp5KCkuZG9tYWluKFtlLG5dKS5yYW5nZShhKS51bmtub3duKHQpfSxveS5hcHBseShTeShvKSxhcmd1bWVudHMpfWZ1bmN0aW9uIFF5KCl7dmFyIHQsZT1bLjVdLG49WzAsMV0scj0xO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIGk8PWk/blt1KGUsaSwwLHIpXTp0fXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1seS5jYWxsKHQpLHI9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSksaSk6ZS5zbGljZSgpfSxpLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWx5LmNhbGwodCkscj1NYXRoLm1pbihlLmxlbmd0aCxuLmxlbmd0aC0xKSxpKTpuLnNsaWNlKCl9LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciByPW4uaW5kZXhPZih0KTtyZXR1cm5bZVtyLTFdLGVbcl1dfSxpLnVua25vd249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxpKTp0fSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUXkoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sb3kuYXBwbHkoaSxhcmd1bWVudHMpfXZhciBLeT1uZXcgRGF0ZSxKeT1uZXcgRGF0ZTtmdW5jdGlvbiB0Zyh0LGUsbixyKXtmdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxpLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxpLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj1pLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxpLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxpLnJhbmdlPWZ1bmN0aW9uKG4scixhKXt2YXIgbyxzPVtdO2lmKG49aS5jZWlsKG4pLGE9bnVsbD09YT8xOk1hdGguZmxvb3IoYSksIShuPHImJmE+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKG89bmV3IERhdGUoK24pKSxlKG4sYSksdChuKX13aGlsZShvPG4mJm48cik7cmV0dXJuIHN9LGkuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiB0ZygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQscil7aWYodD49dClpZihyPDApZm9yKDsrK3I8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLXI+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoaS5jb3VudD1mdW5jdGlvbihlLHIpe3JldHVybiBLeS5zZXRUaW1lKCtlKSxKeS5zZXRUaW1lKCtyKSx0KEt5KSx0KEp5KSxNYXRoLmZsb29yKG4oS3ksSnkpKX0saS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2kuZmlsdGVyKHI/ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY291bnQoMCxlKSV0PT0wfSk6aTpudWxsfSksaX12YXIgZWc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO2VnLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dGcoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IG5nPWVnO3ZhciByZz1lZy5yYW5nZSxpZz10ZygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpO2NvbnN0IGFnPWlnO3ZhciBvZz1pZy5yYW5nZSxzZz0xZTMsY2c9NmU0LHVnPTM2ZTUsbGc9ODY0ZTUsaGc9NjA0OGU1O2Z1bmN0aW9uIGZnKHQpe3JldHVybiB0ZygoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqY2cpL2hnfSkpfXZhciBkZz1mZygwKSxwZz1mZygxKSx5Zz1mZygyKSxnZz1mZygzKSxtZz1mZyg0KSx2Zz1mZyg1KSxiZz1mZyg2KSxfZz1kZy5yYW5nZSx4Zz1wZy5yYW5nZSx3Zz15Zy5yYW5nZSxrZz1nZy5yYW5nZSxUZz1tZy5yYW5nZSxFZz12Zy5yYW5nZSxDZz1iZy5yYW5nZSxTZz10ZygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmNnKS9sZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtjb25zdCBBZz1TZzt2YXIgTWc9U2cucmFuZ2UsTmc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqc2ctdC5nZXRNaW51dGVzKCkqY2cpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdWcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdWd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKTtjb25zdCBEZz1OZzt2YXIgT2c9TmcucmFuZ2UsQmc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqc2cpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqY2cpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvY2d9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpO2NvbnN0IExnPUJnO3ZhciBJZz1CZy5yYW5nZSxSZz10ZygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpzZyl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9zZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSk7Y29uc3QgRmc9Umc7dmFyIFBnPVJnLnJhbmdlLGpnPXRnKChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7amcuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT90ZygoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpqZzpudWxsfTtjb25zdCBZZz1qZzt2YXIgemc9amcucmFuZ2U7ZnVuY3Rpb24gVWcodCl7cmV0dXJuIHRnKChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9oZ30pKX12YXIgcWc9VWcoMCksJGc9VWcoMSksSGc9VWcoMiksV2c9VWcoMyksVmc9VWcoNCksR2c9VWcoNSksWGc9VWcoNiksWmc9cWcucmFuZ2UsUWc9JGcucmFuZ2UsS2c9SGcucmFuZ2UsSmc9V2cucmFuZ2UsdG09VmcucmFuZ2UsZW09R2cucmFuZ2Usbm09WGcucmFuZ2Uscm09dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9sZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKTtjb25zdCBpbT1ybTt2YXIgYW09cm0ucmFuZ2Usb209dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO29tLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dGcoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IHNtPW9tO3ZhciBjbT1vbS5yYW5nZTtmdW5jdGlvbiB1bSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gbG0odCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gaG0odCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIGZtKHQpe3ZhciBlPXQuZGF0ZVRpbWUsbj10LmRhdGUscj10LnRpbWUsaT10LnBlcmlvZHMsYT10LmRheXMsbz10LnNob3J0RGF5cyxzPXQubW9udGhzLGM9dC5zaG9ydE1vbnRocyx1PVRtKGkpLGw9RW0oaSksaD1UbShhKSxmPUVtKGEpLGQ9VG0obykscD1FbShvKSx5PVRtKHMpLGc9RW0ocyksbT1UbShjKSx2PUVtKGMpLGI9e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDpXbSxlOldtLGY6UW0sZzpjdixHOmx2LEg6Vm0sSTpHbSxqOlhtLEw6Wm0sbTpLbSxNOkptLHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRNb250aCgpLzMpfSxROkJ2LHM6THYsUzp0dix1OmV2LFU6bnYsVjppdix3OmF2LFc6b3YseDpudWxsLFg6bnVsbCx5OnN2LFk6dXYsWjpodiwiJSI6T3Z9LF89e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRVVENNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpmdixlOmZ2LGY6bXYsZzpBdixHOk52LEg6ZHYsSTpwdixqOnl2LEw6Z3YsbTp2dixNOmJ2LHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROkJ2LHM6THYsUzpfdix1Onh2LFU6d3YsVjpUdix3OkV2LFc6Q3YseDpudWxsLFg6bnVsbCx5OlN2LFk6TXYsWjpEdiwiJSI6T3Z9LHg9e2E6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC53PXBbclswXS50b0xvd2VyQ2FzZSgpXSxuK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LGUsbil7dmFyIHI9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9ZltyWzBdLnRvTG93ZXJDYXNlKCldLG4rclswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQubT12W3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXkuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5tPWdbclswXS50b0xvd2VyQ2FzZSgpXSxuK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LG4scil7cmV0dXJuIFQodCxlLG4scil9LGQ6Um0sZTpSbSxmOlVtLGc6T20sRzpEbSxIOlBtLEk6UG0sajpGbSxMOnptLG06SW0sTTpqbSxwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj11LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQucD1sW3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LHE6TG0sUTokbSxzOkhtLFM6WW0sdTpTbSxVOkFtLFY6TW0sdzpDbSxXOk5tLHg6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBUKHQsbixlLHIpfSxYOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gVCh0LHIsZSxuKX0seTpPbSxZOkRtLFo6Qm0sIiUiOnFtfTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYSxvPVtdLHM9LTEsYz0wLHU9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczx1OykzNz09PXQuY2hhckNvZGVBdChzKSYmKG8ucHVzaCh0LnNsaWNlKGMscykpLG51bGwhPShpPXZtW3I9dC5jaGFyQXQoKytzKV0pP3I9dC5jaGFyQXQoKytzKTppPSJlIj09PXI/IiAiOiIwIiwoYT1lW3JdKSYmKHI9YShuLGkpKSxvLnB1c2gociksYz1zKzEpO3JldHVybiBvLnB1c2godC5zbGljZShjLHMpKSxvLmpvaW4oIiIpfX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYT1obSgxOTAwLHZvaWQgMCwxKTtpZihUKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0ocj1sbShobShhLnksMCwxKSkpLmdldFVUQ0RheSgpLHI9aT40fHwwPT09aT8kZy5jZWlsKHIpOiRnKHIpLHI9aW0ub2Zmc2V0KHIsNyooYS5WLTEpKSxhLnk9ci5nZXRVVENGdWxsWWVhcigpLGEubT1yLmdldFVUQ01vbnRoKCksYS5kPXIuZ2V0VVRDRGF0ZSgpKyhhLncrNiklNyk6KGk9KHI9dW0oaG0oYS55LDAsMSkpKS5nZXREYXkoKSxyPWk+NHx8MD09PWk/cGcuY2VpbChyKTpwZyhyKSxyPUFnLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0RnVsbFllYXIoKSxhLm09ci5nZXRNb250aCgpLGEuZD1yLmdldERhdGUoKSsoYS53KzYpJTcpfWVsc2UoIlciaW4gYXx8IlUiaW4gYSkmJigidyJpbiBhfHwoYS53PSJ1ImluIGE/YS51JTc6IlciaW4gYT8xOjApLGk9IloiaW4gYT9sbShobShhLnksMCwxKSkuZ2V0VVRDRGF5KCk6dW0oaG0oYS55LDAsMSkpLmdldERheSgpLGEubT0wLGEuZD0iVyJpbiBhPyhhLncrNiklNys3KmEuVy0oaSs1KSU3OmEudys3KmEuVS0oaSs2KSU3KTtyZXR1cm4iWiJpbiBhPyhhLkgrPWEuWi8xMDB8MCxhLk0rPWEuWiUxMDAsbG0oYSkpOnVtKGEpfX1mdW5jdGlvbiBUKHQsZSxuLHIpe2Zvcih2YXIgaSxhLG89MCxzPWUubGVuZ3RoLGM9bi5sZW5ndGg7bzxzOyl7aWYocj49YylyZXR1cm4tMTtpZigzNz09PShpPWUuY2hhckNvZGVBdChvKyspKSl7aWYoaT1lLmNoYXJBdChvKyspLCEoYT14W2kgaW4gdm0/ZS5jaGFyQXQobysrKTppXSl8fChyPWEodCxuLHIpKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9bi5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9cmV0dXJuIGIueD13KG4sYiksYi5YPXcocixiKSxiLmM9dyhlLGIpLF8ueD13KG4sXyksXy5YPXcocixfKSxfLmM9dyhlLF8pLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixiKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixfKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19dmFyIGRtLHBtLHltLGdtLG1tLHZtPXsiLSI6IiIsXzoiICIsMDoiMCJ9LGJtPS9eXHMqXGQrLyxfbT0vXiUvLHhtPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB3bSh0LGUsbil7dmFyIHI9dDwwPyItIjoiIixpPShyPy10OnQpKyIiLGE9aS5sZW5ndGg7cmV0dXJuIHIrKGE8bj9uZXcgQXJyYXkobi1hKzEpLmpvaW4oZSkraTppKX1mdW5jdGlvbiBrbSh0KXtyZXR1cm4gdC5yZXBsYWNlKHhtLCJcXCQmIil9ZnVuY3Rpb24gVG0odCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGttKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gRW0odCl7Zm9yKHZhciBlPXt9LG49LTEscj10Lmxlbmd0aDsrK248cjspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gQ20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0LnU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQW0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTW0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlY9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTm0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Llc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRG0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiByPyh0Lnk9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gT20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCbSh0LGUsbil7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIExtKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC5xPTMqclswXS0zLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEltKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBZbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB6bSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KHQuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBxbSh0LGUsbil7dmFyIHI9X20uZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/bityWzBdLmxlbmd0aDotMX1mdW5jdGlvbiAkbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5RPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEhtKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LnM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gV20odCxlKXtyZXR1cm4gd20odC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBWbSh0LGUpe3JldHVybiB3bSh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBHbSh0LGUpe3JldHVybiB3bSh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gWG0odCxlKXtyZXR1cm4gd20oMStBZy5jb3VudChuZyh0KSx0KSxlLDMpfWZ1bmN0aW9uIFptKHQsZSl7cmV0dXJuIHdtKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBRbSh0LGUpe3JldHVybiBabSh0LGUpKyIwMDAifWZ1bmN0aW9uIEttKHQsZSl7cmV0dXJuIHdtKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gSm0odCxlKXtyZXR1cm4gd20odC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiB0dih0LGUpe3JldHVybiB3bSh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIGV2KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBudih0LGUpe3JldHVybiB3bShkZy5jb3VudChuZyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gcnYodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/bWcodCk6bWcuY2VpbCh0KX1mdW5jdGlvbiBpdih0LGUpe3JldHVybiB0PXJ2KHQpLHdtKG1nLmNvdW50KG5nKHQpLHQpKyg0PT09bmcodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gYXYodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gb3YodCxlKXtyZXR1cm4gd20ocGcuY291bnQobmcodCktMSx0KSxlLDIpfWZ1bmN0aW9uIHN2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBjdih0LGUpe3JldHVybiB3bSgodD1ydih0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB1dih0LGUpe3JldHVybiB3bSh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gbHYodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB3bSgodD1uPj00fHwwPT09bj9tZyh0KTptZy5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGh2KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrd20oZS82MHwwLCIwIiwyKSt3bShlJTYwLCIwIiwyKX1mdW5jdGlvbiBmdih0LGUpe3JldHVybiB3bSh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIGR2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIHB2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiB5dih0LGUpe3JldHVybiB3bSgxK2ltLmNvdW50KHNtKHQpLHQpLGUsMyl9ZnVuY3Rpb24gZ3YodCxlKXtyZXR1cm4gd20odC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIG12KHQsZSl7cmV0dXJuIGd2KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gdnYodCxlKXtyZXR1cm4gd20odC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBidih0LGUpe3JldHVybiB3bSh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIF92KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24geHYodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIHd2KHQsZSl7cmV0dXJuIHdtKHFnLmNvdW50KHNtKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBrdih0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9WZyh0KTpWZy5jZWlsKHQpfWZ1bmN0aW9uIFR2KHQsZSl7cmV0dXJuIHQ9a3YodCksd20oVmcuY291bnQoc20odCksdCkrKDQ9PT1zbSh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBFdih0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBDdih0LGUpe3JldHVybiB3bSgkZy5jb3VudChzbSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gU3YodCxlKXtyZXR1cm4gd20odC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEF2KHQsZSl7cmV0dXJuIHdtKCh0PWt2KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIE12KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBOdih0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHdtKCh0PW4+PTR8fDA9PT1uP1ZnKHQpOlZnLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gRHYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIE92KCl7cmV0dXJuIiUifWZ1bmN0aW9uIEJ2KHQpe3JldHVybit0fWZ1bmN0aW9uIEx2KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9ZnVuY3Rpb24gSXYodCl7cmV0dXJuIGRtPWZtKHQpLHBtPWRtLmZvcm1hdCx5bT1kbS5wYXJzZSxnbT1kbS51dGNGb3JtYXQsbW09ZG0udXRjUGFyc2UsZG19SXYoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgUnY9MzE1MzZlNjtmdW5jdGlvbiBGdih0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gUHYodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24ganYodCxlLG4scixpLG8scyxjLHUpe3ZhciBsPUV5KHZ5LHZ5KSxoPWwuaW52ZXJ0LGY9bC5kb21haW4sZD11KCIuJUwiKSxwPXUoIjolUyIpLHk9dSgiJUk6JU0iKSxnPXUoIiVJICVwIiksbT11KCIlYSAlZCIpLHY9dSgiJWIgJWQiKSxiPXUoIiVCIiksXz11KCIlWSIpLHg9W1tzLDEsMWUzXSxbcyw1LDVlM10sW3MsMTUsMTVlM10sW3MsMzAsM2U0XSxbbywxLDZlNF0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW2ksMSwzNmU1XSxbaSwzLDEwOGU1XSxbaSw2LDIxNmU1XSxbaSwxMiw0MzJlNV0sW3IsMSw4NjRlNV0sW3IsMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsUnZdXTtmdW5jdGlvbiB3KGEpe3JldHVybihzKGEpPGE/ZDpvKGEpPGE/cDppKGEpPGE/eTpyKGEpPGE/ZzplKGEpPGE/bihhKTxhP206djp0KGEpPGE/YjpfKShhKX1mdW5jdGlvbiBrKGUsbixyLGkpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKHItbikvZSxzPWEoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KHgsbyk7cz09PXgubGVuZ3RoPyhpPU0obi9SdixyL1J2LGUpLGU9dCk6cz8oaT0ocz14W28veFtzLTFdWzJdPHhbc11bMl0vbz9zLTE6c10pWzFdLGU9c1swXSk6KGk9TWF0aC5tYXgoTShuLHIsZSksMSksZT1jKX1yZXR1cm4gbnVsbD09aT9lOmUuZXZlcnkoaSl9cmV0dXJuIGwuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShoKHQpKX0sbC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/Zih1eS5jYWxsKHQsUHYpKTpmKCkubWFwKEZ2KX0sbC50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLHI9ZigpLGk9clswXSxhPXJbci5sZW5ndGgtMV0sbz1hPGk7cmV0dXJuIG8mJihuPWksaT1hLGE9biksbj0obj1rKHQsaSxhLGUpKT9uLnJhbmdlKGksYSsxKTpbXSxvP24ucmV2ZXJzZSgpOm59LGwudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3c6dShlKX0sbC5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZigpO3JldHVybih0PWsodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2YoTnkobix0KSk6bH0sbC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGt5KGwsanYodCxlLG4scixpLG8scyxjLHUpKX0sbH1mdW5jdGlvbiBZdigpe3JldHVybiBveS5hcHBseShqdihuZyxhZyxkZyxBZyxEZyxMZyxGZyxZZyxwbSkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9dmFyIHp2PXRnKChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSk7Y29uc3QgVXY9enY7dmFyIHF2PXp2LnJhbmdlLCR2PXRnKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdWcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdWd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKTtjb25zdCBIdj0kdjt2YXIgV3Y9JHYucmFuZ2UsVnY9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqY2cpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvY2d9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpO2NvbnN0IEd2PVZ2O3ZhciBYdj1Wdi5yYW5nZTtmdW5jdGlvbiBadigpe3JldHVybiBveS5hcHBseShqdihzbSxVdixxZyxpbSxIdixHdixGZyxZZyxnbSkuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUXYoKXt2YXIgdCxlLG4scixpLGE9MCxvPTEscz12eSxjPSExO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP2k6cygwPT09bj8uNTooZT0ocihlKS10KSpuLGM/TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKTplKSl9cmV0dXJuIHUuZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXIoYT0raVswXSksZT1yKG89K2lbMV0pLG49dD09PWU/MDoxLyhlLXQpLHUpOlthLG9dfSx1LmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSEhdCx1KTpjfSx1LmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LHUpOnN9LHUudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHUpOml9LGZ1bmN0aW9uKGkpe3JldHVybiByPWksdD1pKGEpLGU9aShvKSxuPXQ9PT1lPzA6MS8oZS10KSx1fX1mdW5jdGlvbiBLdih0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5pbnRlcnBvbGF0b3IodC5pbnRlcnBvbGF0b3IoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBKdigpe3ZhciB0PVN5KFF2KCkodnkpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEt2KHQsSnYoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiB0Yigpe3ZhciB0PUZ5KFF2KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCx0YigpKS5iYXNlKHQuYmFzZSgpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIGViKCl7dmFyIHQ9enkoUXYoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LGViKCkpLmNvbnN0YW50KHQuY29uc3RhbnQoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBuYigpe3ZhciB0PVd5KFF2KCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCxuYigpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxzeS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmIoKXtyZXR1cm4gbmIuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX1mdW5jdGlvbiBpYigpe3ZhciB0PVtdLGU9dnk7ZnVuY3Rpb24gbihuKXtpZighaXNOYU4obj0rbikpcmV0dXJuIGUoKHUodCxuKS0xKS8odC5sZW5ndGgtMSkpfXJldHVybiBuLmRvbWFpbj1mdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W107Zm9yKHZhciByLGE9MCxvPWUubGVuZ3RoO2E8bzsrK2EpbnVsbD09KHI9ZVthXSl8fGlzTmFOKHI9K3IpfHx0LnB1c2gocik7cmV0dXJuIHQuc29ydChpKSxufSxuLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBpYihlKS5kb21haW4odCl9LHN5LmFwcGx5KG4sYXJndW1lbnRzKX1mdW5jdGlvbiBhYigpe3ZhciB0LGUsbixyLGksYSxvLHM9MCxjPS41LHU9MSxsPXZ5LGg9ITE7ZnVuY3Rpb24gZih0KXtyZXR1cm4gaXNOYU4odD0rdCk/bzoodD0uNSsoKHQ9K2EodCkpLWUpKih0PGU/cjppKSxsKGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9cmV0dXJuIGYuZG9tYWluPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWEocz0rb1swXSksZT1hKGM9K29bMV0pLG49YSh1PStvWzJdKSxyPXQ9PT1lPzA6LjUvKGUtdCksaT1lPT09bj8wOi41LyhuLWUpLGYpOltzLGMsdV19LGYuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ISF0LGYpOmh9LGYuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsZik6bH0sZi51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsZik6b30sZnVuY3Rpb24obyl7cmV0dXJuIGE9byx0PW8ocyksZT1vKGMpLG49byh1KSxyPXQ9PT1lPzA6LjUvKGUtdCksaT1lPT09bj8wOi41LyhuLWUpLGZ9fWZ1bmN0aW9uIG9iKCl7dmFyIHQ9U3koYWIoKSh2eSkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCxvYigpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIHNiKCl7dmFyIHQ9RnkoYWIoKSkuZG9tYWluKFsuMSwxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LHNiKCkpLmJhc2UodC5iYXNlKCkpfSxzeS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gY2IoKXt2YXIgdD16eShhYigpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEt2KHQsY2IoKSkuY29uc3RhbnQodC5jb25zdGFudCgpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIHViKCl7dmFyIHQ9V3koYWIoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LHViKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBsYigpe3JldHVybiB1Yi5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIGhiKHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAsbj1uZXcgQXJyYXkoZSkscj0wO3I8ZTspbltyXT0iIyIrdC5zbGljZSg2KnIsNiorK3IpO3JldHVybiBufWNvbnN0IGZiPWhiKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxkYj1oYigiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IikscGI9aGIoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLHliPWhiKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxnYj1oYigiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksbWI9aGIoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLHZiPWhiKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxiYj1oYigiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksX2I9aGIoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLHhiPWhiKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKTtmdW5jdGlvbiB3Yih0KXtyZXR1cm4gbW4odFt0Lmxlbmd0aC0xXSl9dmFyIGtiPW5ldyBBcnJheSgzKS5jb25jYXQoImQ4YjM2NWY1ZjVmNTVhYjRhYyIsImE2NjExYWRmYzI3ZDgwY2RjMTAxODU3MSIsImE2NjExYWRmYzI3ZGY1ZjVmNTgwY2RjMTAxODU3MSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2M3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2Y1ZjVmNWM3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIpLm1hcChoYik7Y29uc3QgVGI9d2Ioa2IpO3ZhciBFYj1uZXcgQXJyYXkoMykuY29uY2F0KCJhZjhkYzNmN2Y3Zjc3ZmJmN2IiLCI3YjMyOTRjMmE1Y2ZhNmRiYTAwMDg4MzciLCI3YjMyOTRjMmE1Y2ZmN2Y3ZjdhNmRiYTAwMDg4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThmN2Y3ZjdkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiKS5tYXAoaGIpO2NvbnN0IENiPXdiKEViKTt2YXIgU2I9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKGhiKTtjb25zdCBBYj13YihTYik7dmFyIE1iPW5ldyBBcnJheSgzKS5jb25jYXQoIjk5OGVjM2Y3ZjdmN2YxYTM0MCIsIjVlM2M5OWIyYWJkMmZkYjg2M2U2NjEwMSIsIjVlM2M5OWIyYWJkMmY3ZjdmN2ZkYjg2M2U2NjEwMSIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmY3ZjdmN2ZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIpLm1hcChoYik7Y29uc3QgTmI9d2IoTWIpO3ZhciBEYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlZjhhNjJmN2Y3Zjc2N2E5Y2YiLCJjYTAwMjBmNGE1ODI5MmM1ZGUwNTcxYjAiLCJjYTAwMjBmNGE1ODJmN2Y3Zjc5MmM1ZGUwNTcxYjAiLCJiMjE4MmJlZjhhNjJmZGRiYzdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJlZjhhNjJmZGRiYzdmN2Y3ZjdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiKS5tYXAoaGIpO2NvbnN0IE9iPXdiKERiKTt2YXIgQmI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKGhiKTtjb25zdCBMYj13YihCYik7dmFyIEliPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxYmZkYiIsImQ3MTkxY2ZkYWU2MWFiZDllOTJjN2JiNiIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZDllOTJjN2JiNiIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGZmZmZiZmUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIpLm1hcChoYik7Y29uc3QgUmI9d2IoSWIpO3ZhciBGYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5MWNmNjAiLCJkNzE5MWNmZGFlNjFhNmQ5NmExYTk2NDEiLCJkNzE5MWNmZGFlNjFmZmZmYmZhNmQ5NmExYTk2NDEiLCJkNzMwMjdmYzhkNTlmZWUwOGJkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmYzhkNTlmZWUwOGJmZmZmYmZkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciKS5tYXAoaGIpO2NvbnN0IFBiPXdiKEZiKTt2YXIgamI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKGhiKTtjb25zdCBZYj13YihqYik7dmFyIHpiPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVmOTk5ZDhjOTJjYTI1ZiIsImVkZjhmYmIyZTJlMjY2YzJhNDIzOGI0NSIsImVkZjhmYmIyZTJlMjY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChoYik7Y29uc3QgVWI9d2IoemIpO3ZhciBxYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlMGVjZjQ5ZWJjZGE4ODU2YTciLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODQxOWQiLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ4MTBmN2M0ZDAwNGIiKS5tYXAoaGIpO2NvbnN0ICRiPXdiKHFiKTt2YXIgSGI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKGhiKTtjb25zdCBXYj13YihIYik7dmFyIFZiPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZThjOGZkYmI4NGUzNGEzMyIsImZlZjBkOWZkY2M4YWZjOGQ1OWQ3MzAxZiIsImZlZjBkOWZkY2M4YWZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZmIzMDAwMDdmMDAwMCIpLm1hcChoYik7Y29uc3QgR2I9d2IoVmIpO3ZhciBYYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlY2UyZjBhNmJkZGIxYzkwOTkiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YwMjgxOGEiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTZjNTkwMTQ2MzYiKS5tYXAoaGIpO2NvbnN0IFpiPXdiKFhiKTt2YXIgUWI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKGhiKTtjb25zdCBLYj13YihRYik7dmFyIEpiPW5ldyBBcnJheSgzKS5jb25jYXQoImU3ZTFlZmM5OTRjN2RkMWM3NyIsImYxZWVmNmQ3YjVkOGRmNjViMGNlMTI1NiIsImYxZWVmNmQ3YjVkOGRmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1Njk4MDA0MzY3MDAxZiIpLm1hcChoYik7Y29uc3QgdF89d2IoSmIpO3ZhciBlXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZGUwZGRmYTlmYjVjNTFiOGEiLCJmZWViZTJmYmI0YjlmNzY4YTFhZTAxN2UiLCJmZWViZTJmYmI0YjlmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzc0OTAwNmEiKS5tYXAoaGIpO2NvbnN0IG5fPXdiKGVfKTt2YXIgcl89bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKGhiKTtjb25zdCBpXz13YihyXyk7dmFyIGFfPW5ldyBBcnJheSgzKS5jb25jYXQoImY3ZmNiOWFkZGQ4ZTMxYTM1NCIsImZmZmZjY2MyZTY5OTc4YzY3OTIzODQ0MyIsImZmZmZjY2MyZTY5OTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNjgzNzAwNDUyOSIpLm1hcChoYik7Y29uc3Qgb189d2IoYV8pO3ZhciBzXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZmY3YmNmZWM0NGZkOTVmMGUiLCJmZmZmZDRmZWQ5OGVmZTk5MjljYzRjMDIiLCJmZmZmZDRmZWQ5OGVmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI5OTM0MDQ2NjI1MDYiKS5tYXAoaGIpO2NvbnN0IGNfPXdiKHNfKTt2YXIgdV89bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKGhiKTtjb25zdCBsXz13Yih1Xyk7dmFyIGhfPW5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChoYik7Y29uc3QgZl89d2IoaF8pO3ZhciBkXz1uZXcgQXJyYXkoMykuY29uY2F0KCJlNWY1ZTBhMWQ5OWIzMWEzNTQiLCJlZGY4ZTliYWU0YjM3NGM0NzYyMzhiNDUiLCJlZGY4ZTliYWU0YjM3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDZkMmMwMDQ0MWIiKS5tYXAoaGIpO2NvbnN0IHBfPXdiKGRfKTt2YXIgeV89bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKGhiKTtjb25zdCBnXz13Yih5Xyk7dmFyIG1fPW5ldyBBcnJheSgzKS5jb25jYXQoImVmZWRmNWJjYmRkYzc1NmJiMSIsImYyZjBmN2NiYzllMjllOWFjODZhNTFhMyIsImYyZjBmN2NiYzllMjllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzU0Mjc4ZjNmMDA3ZCIpLm1hcChoYik7Y29uc3Qgdl89d2IobV8pO3ZhciBiXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWUwZDJmYzkyNzJkZTJkMjYiLCJmZWU1ZDlmY2FlOTFmYjZhNGFjYjE4MWQiLCJmZWU1ZDlmY2FlOTFmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWRhNTBmMTU2NzAwMGQiKS5tYXAoaGIpO2NvbnN0IF9fPXdiKGJfKTt2YXIgeF89bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKGhiKTtjb25zdCB3Xz13Yih4Xyk7ZnVuY3Rpb24ga18odCl7cmV0dXJuIHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSwicmdiKCIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgtNC41NC10KigzNS4zNC10KigyMzgxLjczLXQqKDY0MDIuNy10Kig3MDI0LjcyLTI3MTAuNTcqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDMyLjQ5K3QqKDE3MC43Myt0Kig1Mi44Mi10KigxMzEuNDYtdCooMTc2LjU4LTY3LjM3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCg4MS4yNCt0Kig0NDIuMzYtdCooMjQ4Mi40My10Kig2MTY3LjI0LXQqKDY2MTQuOTQtMjQ3NS42Nyp0KSkpKSkpKSsiKSJ9Y29uc3QgVF89VXAoJGEoMzAwLC41LDApLCRhKC0yNDAsLjUsMSkpO3ZhciBFXz1VcCgkYSgtMTAwLC43NSwuMzUpLCRhKDgwLDEuNSwuOCkpLENfPVVwKCRhKDI2MCwuNzUsLjM1KSwkYSg4MCwxLjUsLjgpKSxTXz0kYSgpO2Z1bmN0aW9uIEFfKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gU18uaD0zNjAqdC0xMDAsU18ucz0xLjUtMS41KmUsU18ubD0uOC0uOSplLFNfKyIifXZhciBNXz1RZSgpLE5fPU1hdGguUEkvMyxEXz0yKk1hdGguUEkvMztmdW5jdGlvbiBPXyh0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxNXy5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxNXy5nPTI1NSooZT1NYXRoLnNpbih0K05fKSkqZSxNXy5iPTI1NSooZT1NYXRoLnNpbih0K0RfKSkqZSxNXysiIn1mdW5jdGlvbiBCXyh0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifWZ1bmN0aW9uIExfKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fWNvbnN0IElfPUxfKGhiKCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSk7dmFyIFJfPUxfKGhiKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksRl89TF8oaGIoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxQXz1MXyhoYigiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIGpfKHQpe3JldHVybiBUZShpZSh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfXZhciBZXz0wO2Z1bmN0aW9uIHpfKCl7cmV0dXJuIG5ldyBVX31mdW5jdGlvbiBVXygpe3RoaXMuXz0iQCIrKCsrWV8pLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBxXyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHhlKFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHhlKFtudWxsPT10P1tdOnRdLF9lKX1mdW5jdGlvbiAkXyh0LGUpe251bGw9PWUmJihlPU5uKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAscj1lP2UubGVuZ3RoOjAsaT1uZXcgQXJyYXkocik7bjxyOysrbilpW25dPURuKHQsZVtuXSk7cmV0dXJuIGl9ZnVuY3Rpb24gSF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fVVfLnByb3RvdHlwZT16Xy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVfLGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBXXz1NYXRoLmFicyxWXz1NYXRoLmF0YW4yLEdfPU1hdGguY29zLFhfPU1hdGgubWF4LFpfPU1hdGgubWluLFFfPU1hdGguc2luLEtfPU1hdGguc3FydCxKXz0xZS0xMix0eD1NYXRoLlBJLGV4PXR4LzIsbng9Mip0eDtmdW5jdGlvbiByeCh0KXtyZXR1cm4gdD4xPzA6dDwtMT90eDpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gaXgodCl7cmV0dXJuIHQ+PTE/ZXg6dDw9LTE/LWV4Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBheCh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBveCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBzeCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIGN4KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIHV4KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIGx4KHQsZSxuLHIsaSxhLG8scyl7dmFyIGM9bi10LHU9ci1lLGw9by1pLGg9cy1hLGY9aCpjLWwqdTtpZighKGYqZjxKXykpcmV0dXJuW3QrKGY9KGwqKGUtYSktaCoodC1pKSkvZikqYyxlK2YqdV19ZnVuY3Rpb24gaHgodCxlLG4scixpLGEsbyl7dmFyIHM9dC1uLGM9ZS1yLHU9KG8/YTotYSkvS18ocypzK2MqYyksbD11KmMsaD0tdSpzLGY9dCtsLGQ9ZStoLHA9bitsLHk9citoLGc9KGYrcCkvMixtPShkK3kpLzIsdj1wLWYsYj15LWQsXz12KnYrYipiLHg9aS1hLHc9Zip5LXAqZCxrPShiPDA/LTE6MSkqS18oWF8oMCx4KngqXy13KncpKSxUPSh3KmItdiprKS9fLEU9KC13KnYtYiprKS9fLEM9KHcqYit2KmspL18sUz0oLXcqditiKmspL18sQT1ULWcsTT1FLW0sTj1DLWcsRD1TLW07cmV0dXJuIEEqQStNKk0+TipOK0QqRCYmKFQ9QyxFPVMpLHtjeDpULGN5OkUseDAxOi1sLHkwMTotaCx4MTE6VCooaS94LTEpLHkxMTpFKihpL3gtMSl9fWZ1bmN0aW9uIGZ4KCl7dmFyIHQ9YXgsZT1veCxuPUhfKDApLHI9bnVsbCxpPXN4LGE9Y3gsbz11eCxzPW51bGw7ZnVuY3Rpb24gYygpe3ZhciBjLHUsbD0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaD0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1leCxkPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLWV4LHA9V18oZC1mKSx5PWQ+ZjtpZihzfHwocz1jPVdpKCkpLGg8bCYmKHU9aCxoPWwsbD11KSxoPkpfKWlmKHA+bngtSl8pcy5tb3ZlVG8oaCpHXyhmKSxoKlFfKGYpKSxzLmFyYygwLDAsaCxmLGQsIXkpLGw+Sl8mJihzLm1vdmVUbyhsKkdfKGQpLGwqUV8oZCkpLHMuYXJjKDAsMCxsLGQsZix5KSk7ZWxzZXt2YXIgZyxtLHY9ZixiPWQsXz1mLHg9ZCx3PXAsaz1wLFQ9by5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixFPVQ+Sl8mJihyPytyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpLXyhsKmwraCpoKSksQz1aXyhXXyhoLWwpLzIsK24uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxTPUMsQT1DO2lmKEU+Sl8pe3ZhciBNPWl4KEUvbCpRXyhUKSksTj1peChFL2gqUV8oVCkpOyh3LT0yKk0pPkpfPyhfKz1NKj15PzE6LTEseC09TSk6KHc9MCxfPXg9KGYrZCkvMiksKGstPTIqTik+Sl8/KHYrPU4qPXk/MTotMSxiLT1OKTooaz0wLHY9Yj0oZitkKS8yKX12YXIgRD1oKkdfKHYpLE89aCpRXyh2KSxCPWwqR18oeCksTD1sKlFfKHgpO2lmKEM+Sl8pe3ZhciBJLFI9aCpHXyhiKSxGPWgqUV8oYiksUD1sKkdfKF8pLGo9bCpRXyhfKTtpZihwPHR4JiYoST1seChELE8sUCxqLFIsRixCLEwpKSl7dmFyIFk9RC1JWzBdLHo9Ty1JWzFdLFU9Ui1JWzBdLHE9Ri1JWzFdLCQ9MS9RXyhyeCgoWSpVK3oqcSkvKEtfKFkqWSt6KnopKktfKFUqVStxKnEpKSkvMiksSD1LXyhJWzBdKklbMF0rSVsxXSpJWzFdKTtTPVpfKEMsKGwtSCkvKCQtMSkpLEE9Wl8oQywoaC1IKS8oJCsxKSl9fWs+Sl8/QT5KXz8oZz1oeChQLGosRCxPLGgsQSx5KSxtPWh4KFIsRixCLEwsaCxBLHkpLHMubW92ZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksQTxDP3MuYXJjKGcuY3gsZy5jeSxBLFZfKGcueTAxLGcueDAxKSxWXyhtLnkwMSxtLngwMSksIXkpOihzLmFyYyhnLmN4LGcuY3ksQSxWXyhnLnkwMSxnLngwMSksVl8oZy55MTEsZy54MTEpLCF5KSxzLmFyYygwLDAsaCxWXyhnLmN5K2cueTExLGcuY3grZy54MTEpLFZfKG0uY3krbS55MTEsbS5jeCttLngxMSksIXkpLHMuYXJjKG0uY3gsbS5jeSxBLFZfKG0ueTExLG0ueDExKSxWXyhtLnkwMSxtLngwMSksIXkpKSk6KHMubW92ZVRvKEQsTykscy5hcmMoMCwwLGgsdixiLCF5KSk6cy5tb3ZlVG8oRCxPKSxsPkpfJiZ3PkpfP1M+Sl8/KGc9aHgoQixMLFIsRixsLC1TLHkpLG09aHgoRCxPLFAsaixsLC1TLHkpLHMubGluZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksUzxDP3MuYXJjKGcuY3gsZy5jeSxTLFZfKGcueTAxLGcueDAxKSxWXyhtLnkwMSxtLngwMSksIXkpOihzLmFyYyhnLmN4LGcuY3ksUyxWXyhnLnkwMSxnLngwMSksVl8oZy55MTEsZy54MTEpLCF5KSxzLmFyYygwLDAsbCxWXyhnLmN5K2cueTExLGcuY3grZy54MTEpLFZfKG0uY3krbS55MTEsbS5jeCttLngxMSkseSkscy5hcmMobS5jeCxtLmN5LFMsVl8obS55MTEsbS54MTEpLFZfKG0ueTAxLG0ueDAxKSwheSkpKTpzLmFyYygwLDAsbCx4LF8seSk6cy5saW5lVG8oQixMKX1lbHNlIHMubW92ZVRvKDAsMCk7aWYocy5jbG9zZVBhdGgoKSxjKXJldHVybiBzPW51bGwsYysiInx8bnVsbH1yZXR1cm4gYy5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBuPSgrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixyPSgraS5hcHBseSh0aGlzLGFyZ3VtZW50cykrICthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi10eC8yO3JldHVybltHXyhyKSpuLFFfKHIpKm5dfSxjLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SF8oK2UpLGMpOnR9LGMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksYyk6ZX0sYy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksYyk6bn0sYy5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLGMpOnJ9LGMuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCt0KSxjKTppfSxjLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLGMpOmF9LGMucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksYyk6b30sYy5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW51bGw9PXQ/bnVsbDp0LGMpOnN9LGN9ZnVuY3Rpb24gZHgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHB4KHQpe3JldHVybiBuZXcgZHgodCl9ZnVuY3Rpb24geXgodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gZ3godCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gbXgoKXt2YXIgdD15eCxlPWd4LG49SF8oITApLHI9bnVsbCxpPXB4LGE9bnVsbDtmdW5jdGlvbiBvKG8pe3ZhciBzLGMsdSxsPW8ubGVuZ3RoLGg9ITE7Zm9yKG51bGw9PXImJihhPWkodT1XaSgpKSkscz0wO3M8PWw7KytzKSEoczxsJiZuKGM9b1tzXSxzLG8pKT09PWgmJigoaD0haCk/YS5saW5lU3RhcnQoKTphLmxpbmVFbmQoKSksaCYmYS5wb2ludCgrdChjLHMsbyksK2UoYyxzLG8pKTtpZih1KXJldHVybiBhPW51bGwsdSsiInx8bnVsbH1yZXR1cm4gby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SF8oK2UpLG8pOnR9LG8ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCt0KSxvKTplfSxvLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXyghIXQpLG8pOm59LG8uY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxudWxsIT1yJiYoYT1pKHIpKSxvKTppfSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cj1hPW51bGw6YT1pKHI9dCksbyk6cn0sb31mdW5jdGlvbiB2eCgpe3ZhciB0PXl4LGU9bnVsbCxuPUhfKDApLHI9Z3gsaT1IXyghMCksYT1udWxsLG89cHgscz1udWxsO2Z1bmN0aW9uIGMoYyl7dmFyIHUsbCxoLGYsZCxwPWMubGVuZ3RoLHk9ITEsZz1uZXcgQXJyYXkocCksbT1uZXcgQXJyYXkocCk7Zm9yKG51bGw9PWEmJihzPW8oZD1XaSgpKSksdT0wO3U8PXA7Kyt1KXtpZighKHU8cCYmaShmPWNbdV0sdSxjKSk9PT15KWlmKHk9IXkpbD11LHMuYXJlYVN0YXJ0KCkscy5saW5lU3RhcnQoKTtlbHNle2ZvcihzLmxpbmVFbmQoKSxzLmxpbmVTdGFydCgpLGg9dS0xO2g+PWw7LS1oKXMucG9pbnQoZ1toXSxtW2hdKTtzLmxpbmVFbmQoKSxzLmFyZWFFbmQoKX15JiYoZ1t1XT0rdChmLHUsYyksbVt1XT0rbihmLHUsYykscy5wb2ludChlPytlKGYsdSxjKTpnW3VdLHI/K3IoZix1LGMpOm1bdV0pKX1pZihkKXJldHVybiBzPW51bGwsZCsiInx8bnVsbH1mdW5jdGlvbiB1KCl7cmV0dXJuIG14KCkuZGVmaW5lZChpKS5jdXJ2ZShvKS5jb250ZXh0KGEpfXJldHVybiBjLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpIXygrbiksZT1udWxsLGMpOnR9LGMueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpIXygrZSksYyk6dH0sYy54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksYyk6ZX0sYy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLHI9bnVsbCxjKTpufSxjLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLGMpOm59LGMueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLGMpOnJ9LGMubGluZVgwPWMubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkobil9LGMubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkocil9LGMubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KGUpLnkobil9LGMuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCEhdCksYyk6aX0sYy5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG51bGwhPWEmJihzPW8oYSkpLGMpOm99LGMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9hPXM9bnVsbDpzPW8oYT10KSxjKTphfSxjfWZ1bmN0aW9uIGJ4KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIF94KHQpe3JldHVybiB0fWZ1bmN0aW9uIHh4KCl7dmFyIHQ9X3gsZT1ieCxuPW51bGwscj1IXygwKSxpPUhfKG54KSxhPUhfKDApO2Z1bmN0aW9uIG8obyl7dmFyIHMsYyx1LGwsaCxmPW8ubGVuZ3RoLGQ9MCxwPW5ldyBBcnJheShmKSx5PW5ldyBBcnJheShmKSxnPStyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxtPU1hdGgubWluKG54LE1hdGgubWF4KC1ueCxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSksdj1NYXRoLm1pbihNYXRoLmFicyhtKS9mLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxiPXYqKG08MD8tMToxKTtmb3Iocz0wO3M8ZjsrK3MpKGg9eVtwW3NdPXNdPSt0KG9bc10scyxvKSk+MCYmKGQrPWgpO2ZvcihudWxsIT1lP3Auc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh5W3RdLHlbbl0pfSkpOm51bGwhPW4mJnAuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihvW3RdLG9bZV0pfSkpLHM9MCx1PWQ/KG0tZipiKS9kOjA7czxmOysrcyxnPWwpYz1wW3NdLGw9ZysoKGg9eVtjXSk+MD9oKnU6MCkrYix5W2NdPXtkYXRhOm9bY10saW5kZXg6cyx2YWx1ZTpoLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTpsLHBhZEFuZ2xlOnZ9O3JldHVybiB5fXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SF8oK2UpLG8pOnR9LG8uc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxvKTplfSxvLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsbyk6bn0sby5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLG8pOnJ9LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksbyk6aX0sby5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCt0KSxvKTphfSxvfWR4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19O3ZhciB3eD1UeChweCk7ZnVuY3Rpb24ga3godCl7dGhpcy5fY3VydmU9dH1mdW5jdGlvbiBUeCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBuZXcga3godChlKSl9cmV0dXJuIGUuX2N1cnZlPXQsZX1mdW5jdGlvbiBFeCh0KXt2YXIgZT10LmN1cnZlO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShUeCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBDeCgpe3JldHVybiBFeChteCgpLmN1cnZlKHd4KSl9ZnVuY3Rpb24gU3goKXt2YXIgdD12eCgpLmN1cnZlKHd4KSxlPXQuY3VydmUsbj10LmxpbmVYMCxyPXQubGluZVgxLGk9dC5saW5lWTAsYT10LmxpbmVZMTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnN0YXJ0QW5nbGU9dC54MCxkZWxldGUgdC54MCx0LmVuZEFuZ2xlPXQueDEsZGVsZXRlIHQueDEsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5pbm5lclJhZGl1cz10LnkwLGRlbGV0ZSB0LnkwLHQub3V0ZXJSYWRpdXM9dC55MSxkZWxldGUgdC55MSx0LmxpbmVTdGFydEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEV4KG4oKSl9LGRlbGV0ZSB0LmxpbmVYMCx0LmxpbmVFbmRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBFeChyKCkpfSxkZWxldGUgdC5saW5lWDEsdC5saW5lSW5uZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gRXgoaSgpKX0sZGVsZXRlIHQubGluZVkwLHQubGluZU91dGVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIEV4KGEoKSl9LGRlbGV0ZSB0LmxpbmVZMSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoVHgodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gQXgodCxlKXtyZXR1cm5bKGU9K2UpKk1hdGguY29zKHQtPU1hdGguUEkvMiksZSpNYXRoLnNpbih0KV19a3gucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VydmUucG9pbnQoZSpNYXRoLnNpbih0KSxlKi1NYXRoLmNvcyh0KSl9fTt2YXIgTXg9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIE54KHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBEeCh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gT3godCl7dmFyIGU9Tngsbj1EeCxyPXl4LGk9Z3gsYT1udWxsO2Z1bmN0aW9uIG8oKXt2YXIgbyxzPU14LmNhbGwoYXJndW1lbnRzKSxjPWUuYXBwbHkodGhpcyxzKSx1PW4uYXBwbHkodGhpcyxzKTtpZihhfHwoYT1vPVdpKCkpLHQoYSwrci5hcHBseSh0aGlzLChzWzBdPWMscykpLCtpLmFwcGx5KHRoaXMscyksK3IuYXBwbHkodGhpcywoc1swXT11LHMpKSwraS5hcHBseSh0aGlzLHMpKSxvKXJldHVybiBhPW51bGwsbysiInx8bnVsbH1yZXR1cm4gby5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LG8pOm59LG8ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCt0KSxvKTpyfSxvLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIXygrdCksbyk6aX0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW51bGw9PXQ/bnVsbDp0LG8pOmF9LG99ZnVuY3Rpb24gQngodCxlLG4scixpKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlPShlK3IpLzIsbixlLGkscixpKX1mdW5jdGlvbiBMeCh0LGUsbixyLGkpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGUsbj0obitpKS8yLHIsbixyLGkpfWZ1bmN0aW9uIEl4KHQsZSxuLHIsaSl7dmFyIGE9QXgoZSxuKSxvPUF4KGUsbj0obitpKS8yKSxzPUF4KHIsbiksYz1BeChyLGkpO3QubW92ZVRvKGFbMF0sYVsxXSksdC5iZXppZXJDdXJ2ZVRvKG9bMF0sb1sxXSxzWzBdLHNbMV0sY1swXSxjWzFdKX1mdW5jdGlvbiBSeCgpe3JldHVybiBPeChCeCl9ZnVuY3Rpb24gRngoKXtyZXR1cm4gT3goTHgpfWZ1bmN0aW9uIFB4KCl7dmFyIHQ9T3goSXgpO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHR9Y29uc3Qgang9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS90eCk7dC5tb3ZlVG8obiwwKSx0LmFyYygwLDAsbiwwLG54KX19LFl4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvNSkvMjt0Lm1vdmVUbygtMypuLC1uKSx0LmxpbmVUbygtbiwtbiksdC5saW5lVG8oLW4sLTMqbiksdC5saW5lVG8obiwtMypuKSx0LmxpbmVUbyhuLC1uKSx0LmxpbmVUbygzKm4sLW4pLHQubGluZVRvKDMqbixuKSx0LmxpbmVUbyhuLG4pLHQubGluZVRvKG4sMypuKSx0LmxpbmVUbygtbiwzKm4pLHQubGluZVRvKC1uLG4pLHQubGluZVRvKC0zKm4sbiksdC5jbG9zZVBhdGgoKX19O3ZhciB6eD1NYXRoLnNxcnQoMS8zKSxVeD0yKnp4O2NvbnN0IHF4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvVXgpLHI9bip6eDt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhyLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLXIsMCksdC5jbG9zZVBhdGgoKX19O3ZhciAkeD1NYXRoLnNpbih0eC8xMCkvTWF0aC5zaW4oNyp0eC8xMCksSHg9TWF0aC5zaW4obngvMTApKiR4LFd4PS1NYXRoLmNvcyhueC8xMCkqJHg7Y29uc3QgVng9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSkscj1IeCpuLGk9V3gqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhyLGkpO2Zvcih2YXIgYT0xO2E8NTsrK2Epe3ZhciBvPW54KmEvNSxzPU1hdGguY29zKG8pLGM9TWF0aC5zaW4obyk7dC5saW5lVG8oYypuLC1zKm4pLHQubGluZVRvKHMqci1jKmksYypyK3MqaSl9dC5jbG9zZVBhdGgoKX19LEd4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLHI9LW4vMjt0LnJlY3QocixyLG4sbil9fTt2YXIgWHg9TWF0aC5zcXJ0KDMpO2NvbnN0IFp4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49LU1hdGguc3FydChlLygzKlh4KSk7dC5tb3ZlVG8oMCwyKm4pLHQubGluZVRvKC1YeCpuLC1uKSx0LmxpbmVUbyhYeCpuLC1uKSx0LmNsb3NlUGF0aCgpfX07dmFyIFF4PS0uNSxLeD1NYXRoLnNxcnQoMykvMixKeD0xL01hdGguc3FydCgxMiksdHc9MyooSngvMisxKTtjb25zdCBldz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3R3KSxyPW4vMixpPW4qSngsYT1yLG89bipKeCtuLHM9LWEsYz1vO3QubW92ZVRvKHIsaSksdC5saW5lVG8oYSxvKSx0LmxpbmVUbyhzLGMpLHQubGluZVRvKFF4KnItS3gqaSxLeCpyK1F4KmkpLHQubGluZVRvKFF4KmEtS3gqbyxLeCphK1F4Km8pLHQubGluZVRvKFF4KnMtS3gqYyxLeCpzK1F4KmMpLHQubGluZVRvKFF4KnIrS3gqaSxReCppLUt4KnIpLHQubGluZVRvKFF4KmErS3gqbyxReCpvLUt4KmEpLHQubGluZVRvKFF4KnMrS3gqYyxReCpjLUt4KnMpLHQuY2xvc2VQYXRoKCl9fTt2YXIgbnc9W2p4LFl4LHF4LEd4LFZ4LFp4LGV3XTtmdW5jdGlvbiBydygpe3ZhciB0PUhfKGp4KSxlPUhfKDY0KSxuPW51bGw7ZnVuY3Rpb24gcigpe3ZhciByO2lmKG58fChuPXI9V2koKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscilyZXR1cm4gbj1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIHIudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkhfKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKCt0KSxyKTplfSxyLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQscik6bn0scn1mdW5jdGlvbiBpdygpe31mdW5jdGlvbiBhdyh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24gb3codCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHN3KHQpe3JldHVybiBuZXcgb3codCl9ZnVuY3Rpb24gY3codCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHV3KHQpe3JldHVybiBuZXcgY3codCl9ZnVuY3Rpb24gbHcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGh3KHQpe3JldHVybiBuZXcgbHcodCl9ZnVuY3Rpb24gZncodCxlKXt0aGlzLl9iYXNpcz1uZXcgb3codCksdGhpcy5fYmV0YT1lfW93LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6YXcodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6YXcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LGN3LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95MysyKnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0OmF3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxsdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgbj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LHI9KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKG4scik6dGhpcy5fY29udGV4dC5tb3ZlVG8obixyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmF3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxmdy5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGgtMTtpZihuPjApZm9yKHZhciByLGk9dFswXSxhPWVbMF0sbz10W25dLWkscz1lW25dLWEsYz0tMTsrK2M8PW47KXI9Yy9uLHRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtjXSsoMS10aGlzLl9iZXRhKSooaStyKm8pLHRoaXMuX2JldGEqZVtjXSsoMS10aGlzLl9iZXRhKSooYStyKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX07Y29uc3QgZHc9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxPT09ZT9uZXcgb3codCk6bmV3IGZ3KHQsZSl9cmV0dXJuIG4uYmV0YT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KC44NSk7ZnVuY3Rpb24gcHcodCxlLG4pe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLWUpLHQuX3kyK3QuX2sqKHQuX3kxLW4pLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiB5dyh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9eXcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnB3KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpwdyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3QgZ3c9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgeXcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0oMCk7ZnVuY3Rpb24gbXcodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fW13LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpwdyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3Qgdnc9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgbXcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0oMCk7ZnVuY3Rpb24gYncodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWJ3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OnB3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBfdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBidyh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSgwKTtmdW5jdGlvbiB4dyh0LGUsbil7dmFyIHI9dC5feDEsaT10Ll95MSxhPXQuX3gyLG89dC5feTI7aWYodC5fbDAxX2E+Sl8pe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGM9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO3I9KHIqcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9jLGk9KGkqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9jfWlmKHQuX2wyM19hPkpfKXt2YXIgdT0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTthPShhKnUrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS9sLG89KG8qdSt0Ll95MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL2x9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIsaSxhLG8sdC5feDIsdC5feTIpfWZ1bmN0aW9uIHd3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9d3cucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDp4dyh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O2NvbnN0IGt3PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgd3codCxlKTpuZXcgeXcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KC41KTtmdW5jdGlvbiBUdyh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfVR3LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6eHcodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBFdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IFR3KHQsZSk6bmV3IG13KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSguNSk7ZnVuY3Rpb24gQ3codCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1Ddy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6eHcodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBTdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IEN3KHQsZSk6bmV3IGJ3KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSguNSk7ZnVuY3Rpb24gQXcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE13KHQpe3JldHVybiBuZXcgQXcodCl9ZnVuY3Rpb24gTncodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIER3KHQsZSxuKXt2YXIgcj10Ll94MS10Ll94MCxpPWUtdC5feDEsYT0odC5feTEtdC5feTApLyhyfHxpPDAmJi0wKSxvPShuLXQuX3kxKS8oaXx8cjwwJiYtMCkscz0oYSppK28qcikvKHIraSk7cmV0dXJuKE53KGEpK053KG8pKSpNYXRoLm1pbihNYXRoLmFicyhhKSxNYXRoLmFicyhvKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gT3codCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIEJ3KHQsZSxuKXt2YXIgcj10Ll94MCxpPXQuX3kwLGE9dC5feDEsbz10Ll95MSxzPShhLXIpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIrcyxpK3MqZSxhLXMsby1zKm4sYSxvKX1mdW5jdGlvbiBMdyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gSXcodCl7dGhpcy5fY29udGV4dD1uZXcgUncodCl9ZnVuY3Rpb24gUncodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEZ3KHQpe3JldHVybiBuZXcgTHcodCl9ZnVuY3Rpb24gUHcodCl7cmV0dXJuIG5ldyBJdyh0KX1mdW5jdGlvbiBqdyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWXcodCl7dmFyIGUsbixyPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxhWzBdPTIsb1swXT10WzBdKzIqdFsxXSxlPTE7ZTxyLTE7KytlKWlbZV09MSxhW2VdPTQsb1tlXT00KnRbZV0rMip0W2UrMV07Zm9yKGlbci0xXT0yLGFbci0xXT03LG9bci0xXT04KnRbci0xXSt0W3JdLGU9MTtlPHI7KytlKW49aVtlXS9hW2UtMV0sYVtlXS09bixvW2VdLT1uKm9bZS0xXTtmb3IoaVtyLTFdPW9bci0xXS9hW3ItMV0sZT1yLTI7ZT49MDstLWUpaVtlXT0ob1tlXS1pW2UrMV0pL2FbZV07Zm9yKGFbci0xXT0odFtyXStpW3ItMV0pLzIsZT0wO2U8ci0xOysrZSlhW2VdPTIqdFtlKzFdLWlbZSsxXTtyZXR1cm5baSxhXX1mdW5jdGlvbiB6dyh0KXtyZXR1cm4gbmV3IGp3KHQpfWZ1bmN0aW9uIFV3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBxdyh0KXtyZXR1cm4gbmV3IFV3KHQsLjUpfWZ1bmN0aW9uICR3KHQpe3JldHVybiBuZXcgVXcodCwwKX1mdW5jdGlvbiBIdyh0KXtyZXR1cm4gbmV3IFV3KHQsMSl9ZnVuY3Rpb24gV3codCxlKXtpZigoaT10Lmxlbmd0aCk+MSlmb3IodmFyIG4scixpLGE9MSxvPXRbZVswXV0scz1vLmxlbmd0aDthPGk7KythKWZvcihyPW8sbz10W2VbYV1dLG49MDtuPHM7KytuKW9bbl1bMV0rPW9bbl1bMF09aXNOYU4ocltuXVsxXSk/cltuXVswXTpyW25dWzFdfWZ1bmN0aW9uIFZ3KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTstLWU+PTA7KW5bZV09ZTtyZXR1cm4gbn1mdW5jdGlvbiBHdyh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIFh3KCl7dmFyIHQ9SF8oW10pLGU9Vncsbj1XdyxyPUd3O2Z1bmN0aW9uIGkoaSl7dmFyIGEsbyxzPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGM9aS5sZW5ndGgsdT1zLmxlbmd0aCxsPW5ldyBBcnJheSh1KTtmb3IoYT0wO2E8dTsrK2Epe2Zvcih2YXIgaCxmPXNbYV0sZD1sW2FdPW5ldyBBcnJheShjKSxwPTA7cDxjOysrcClkW3BdPWg9WzAsK3IoaVtwXSxmLHAsaSldLGguZGF0YT1pW3BdO2Qua2V5PWZ9Zm9yKGE9MCxvPWUobCk7YTx1OysrYSlsW29bYV1dLmluZGV4PWE7cmV0dXJuIG4obCxvKSxsfXJldHVybiBpLmtleXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpIXyhNeC5jYWxsKGUpKSxpKTp0fSxpLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SF8oK3QpLGkpOnJ9LGkub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9WdzoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkhfKE14LmNhbGwodCkpLGkpOmV9LGkub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/V3c6dCxpKTpufSxpfWZ1bmN0aW9uIFp3KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixyLGksYT0wLG89dFswXS5sZW5ndGg7YTxvOysrYSl7Zm9yKGk9bj0wO248cjsrK24paSs9dFtuXVthXVsxXXx8MDtpZihpKWZvcihuPTA7bjxyOysrbil0W25dW2FdWzFdLz1pfVd3KHQsZSl9fWZ1bmN0aW9uIFF3KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLHIsaSxhLG8scyxjPTAsdT10W2VbMF1dLmxlbmd0aDtjPHU7KytjKWZvcihhPW89MCxuPTA7bjxzOysrbikoaT0ocj10W2Vbbl1dW2NdKVsxXS1yWzBdKT4wPyhyWzBdPWEsclsxXT1hKz1pKTppPDA/KHJbMV09byxyWzBdPW8rPWkpOihyWzBdPTAsclsxXT1pKX1mdW5jdGlvbiBLdyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4scj0wLGk9dFtlWzBdXSxhPWkubGVuZ3RoO3I8YTsrK3Ipe2Zvcih2YXIgbz0wLHM9MDtvPG47KytvKXMrPXRbb11bcl1bMV18fDA7aVtyXVsxXSs9aVtyXVswXT0tcy8yfVd3KHQsZSl9fWZ1bmN0aW9uIEp3KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjAmJihyPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLHIsaSxhPTAsbz0xO288cjsrK28pe2Zvcih2YXIgcz0wLGM9MCx1PTA7czxpOysrcyl7Zm9yKHZhciBsPXRbZVtzXV0saD1sW29dWzFdfHwwLGY9KGgtKGxbby0xXVsxXXx8MCkpLzIsZD0wO2Q8czsrK2Qpe3ZhciBwPXRbZVtkXV07Zis9KHBbb11bMV18fDApLShwW28tMV1bMV18fDApfWMrPWgsdSs9ZipofW5bby0xXVsxXSs9bltvLTFdWzBdPWEsYyYmKGEtPXUvYyl9bltvLTFdWzFdKz1uW28tMV1bMF09YSxXdyh0LGUpfX1mdW5jdGlvbiB0ayh0KXt2YXIgZT10Lm1hcChlayk7cmV0dXJuIFZ3KHQpLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF0tZVtuXX0pKX1mdW5jdGlvbiBlayh0KXtmb3IodmFyIGUsbj0tMSxyPTAsaT10Lmxlbmd0aCxhPS0xLzA7KytuPGk7KShlPSt0W25dWzFdKT5hJiYoYT1lLHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gbmsodCl7dmFyIGU9dC5tYXAocmspO3JldHVybiBWdyh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gcmsodCl7Zm9yKHZhciBlLG49MCxyPS0xLGk9dC5sZW5ndGg7KytyPGk7KShlPSt0W3JdWzFdKSYmKG4rPWUpO3JldHVybiBufWZ1bmN0aW9uIGlrKHQpe3JldHVybiBuayh0KS5yZXZlcnNlKCl9ZnVuY3Rpb24gYWsodCl7dmFyIGUsbixyPXQubGVuZ3RoLGk9dC5tYXAocmspLGE9dGsodCksbz0wLHM9MCxjPVtdLHU9W107Zm9yKGU9MDtlPHI7KytlKW49YVtlXSxvPHM/KG8rPWlbbl0sYy5wdXNoKG4pKToocys9aVtuXSx1LnB1c2gobikpO3JldHVybiB1LnJldmVyc2UoKS5jb25jYXQoYyl9ZnVuY3Rpb24gb2sodCl7cmV0dXJuIFZ3KHQpLnJldmVyc2UoKX1Bdy5wcm90b3R5cGU9e2FyZWFTdGFydDppdyxhcmVhRW5kOml3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LEx3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpCdyh0aGlzLHRoaXMuX3QwLE93KHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxCdyh0aGlzLE93KHRoaXMsbj1Edyh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6QncodGhpcyx0aGlzLl90MCxuPUR3KHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKEl3LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEx3LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7THcucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxSdy5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQscixuLGEsaSl9fSxqdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgcj1Zdyh0KSxpPVl3KGUpLGE9MCxvPTE7bzxuOysrYSwrK28pdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHJbMF1bYV0saVswXVthXSxyWzFdW2FdLGlbMV1bYV0sdFtvXSxlW29dKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxVdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgc2s9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIsY2s9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX06Z20oc2spO2NvbnN0IHVrPWNrO3ZhciBsaz0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihlKT9udWxsOmV9Om1tKHNrKTtjb25zdCBoaz1saztmdW5jdGlvbiBmayh0LGUsbil7dmFyIHI9bmV3IFduLGk9ZTtyZXR1cm4gbnVsbD09ZT8oci5yZXN0YXJ0KHQsZSxuKSxyKTooZT0rZSxuPW51bGw9PW4/JG4oKTorbixyLnJlc3RhcnQoKGZ1bmN0aW9uIGEobyl7bys9aSxyLnJlc3RhcnQoYSxpKz1lLG4pLHQobyl9KSxlLG4pLHIpfWZ1bmN0aW9uIGRrKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBwayh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiB5ayh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBnaygpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIG1rKHQpe3QuVT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gdmsodCxlKXt2YXIgbj1lLHI9ZS5SLGk9bi5VO2k/aS5MPT09bj9pLkw9cjppLlI9cjp0Ll89cixyLlU9aSxuLlU9cixuLlI9ci5MLG4uUiYmKG4uUi5VPW4pLHIuTD1ufWZ1bmN0aW9uIGJrKHQsZSl7dmFyIG49ZSxyPWUuTCxpPW4uVTtpP2kuTD09PW4/aS5MPXI6aS5SPXI6dC5fPXIsci5VPWksbi5VPXIsbi5MPXIuUixuLkwmJihuLkwuVT1uKSxyLlI9bn1mdW5jdGlvbiBfayh0KXtmb3IoO3QuTDspdD10Lkw7cmV0dXJuIHR9Z2sucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpnayxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PV9rKHRoaXMuXyksZS5QPW51bGwsZS5OPXQsdC5QPXQuTD1lLG49dCk6KGUuUD1lLk49bnVsbCx0aGlzLl89ZSxuPW51bGwpO2ZvcihlLkw9ZS5SPW51bGwsZS5VPW4sZS5DPSEwLHQ9ZTtuJiZuLkM7KW49PT0ocj1uLlUpLkw/KGk9ci5SKSYmaS5DPyhuLkM9aS5DPSExLHIuQz0hMCx0PXIpOih0PT09bi5SJiYodmsodGhpcyxuKSxuPSh0PW4pLlUpLG4uQz0hMSxyLkM9ITAsYmsodGhpcyxyKSk6KGk9ci5MKSYmaS5DPyhuLkM9aS5DPSExLHIuQz0hMCx0PXIpOih0PT09bi5MJiYoYmsodGhpcyxuKSxuPSh0PW4pLlUpLG4uQz0hMSxyLkM9ITAsdmsodGhpcyxyKSksbj10LlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbih0KXt0Lk4mJih0Lk4uUD10LlApLHQuUCYmKHQuUC5OPXQuTiksdC5OPXQuUD1udWxsO3ZhciBlLG4scixpPXQuVSxhPXQuTCxvPXQuUjtpZihuPWE/bz9fayhvKTphOm8saT9pLkw9PT10P2kuTD1uOmkuUj1uOnRoaXMuXz1uLGEmJm8/KHI9bi5DLG4uQz10LkMsbi5MPWEsYS5VPW4sbiE9PW8/KGk9bi5VLG4uVT10LlUsdD1uLlIsaS5MPXQsbi5SPW8sby5VPW4pOihuLlU9aSxpPW4sdD1uLlIpKToocj10LkMsdD1uKSx0JiYodC5VPWkpLCFyKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1pLkwpe2lmKChlPWkuUikuQyYmKGUuQz0hMSxpLkM9ITAsdmsodGhpcyxpKSxlPWkuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxiayh0aGlzLGUpLGU9aS5SKSxlLkM9aS5DLGkuQz1lLlIuQz0hMSx2ayh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPWkuTCkuQyYmKGUuQz0hMSxpLkM9ITAsYmsodGhpcyxpKSxlPWkuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCx2ayh0aGlzLGUpLGU9aS5MKSxlLkM9aS5DLGkuQz1lLkwuQz0hMSxiayh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PWksaT1pLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07Y29uc3QgeGs9Z2s7ZnVuY3Rpb24gd2sodCxlLG4scil7dmFyIGk9W251bGwsbnVsbF0sYT1Xay5wdXNoKGkpLTE7cmV0dXJuIGkubGVmdD10LGkucmlnaHQ9ZSxuJiZUayhpLHQsZSxuKSxyJiZUayhpLGUsdCxyKSwka1t0LmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSwka1tlLmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSxpfWZ1bmN0aW9uIGtrKHQsZSxuKXt2YXIgcj1bZSxuXTtyZXR1cm4gci5sZWZ0PXQscn1mdW5jdGlvbiBUayh0LGUsbixyKXt0WzBdfHx0WzFdP3QubGVmdD09PW4/dFsxXT1yOnRbMF09cjoodFswXT1yLHQubGVmdD1lLHQucmlnaHQ9bil9ZnVuY3Rpb24gRWsodCxlLG4scixpKXt2YXIgYSxvPXRbMF0scz10WzFdLGM9b1swXSx1PW9bMV0sbD0wLGg9MSxmPXNbMF0tYyxkPXNbMV0tdTtpZihhPWUtYyxmfHwhKGE+MCkpe2lmKGEvPWYsZjwwKXtpZihhPGwpcmV0dXJuO2E8aCYmKGg9YSl9ZWxzZSBpZihmPjApe2lmKGE+aClyZXR1cm47YT5sJiYobD1hKX1pZihhPXItYyxmfHwhKGE8MCkpe2lmKGEvPWYsZjwwKXtpZihhPmgpcmV0dXJuO2E+bCYmKGw9YSl9ZWxzZSBpZihmPjApe2lmKGE8bClyZXR1cm47YTxoJiYoaD1hKX1pZihhPW4tdSxkfHwhKGE+MCkpe2lmKGEvPWQsZDwwKXtpZihhPGwpcmV0dXJuO2E8aCYmKGg9YSl9ZWxzZSBpZihkPjApe2lmKGE+aClyZXR1cm47YT5sJiYobD1hKX1pZihhPWktdSxkfHwhKGE8MCkpe2lmKGEvPWQsZDwwKXtpZihhPmgpcmV0dXJuO2E+bCYmKGw9YSl9ZWxzZSBpZihkPjApe2lmKGE8bClyZXR1cm47YTxoJiYoaD1hKX1yZXR1cm4hKGw+MHx8aDwxKXx8KGw+MCYmKHRbMF09W2MrbCpmLHUrbCpkXSksaDwxJiYodFsxXT1bYytoKmYsdStoKmRdKSwhMCl9fX19fWZ1bmN0aW9uIENrKHQsZSxuLHIsaSl7dmFyIGE9dFsxXTtpZihhKXJldHVybiEwO3ZhciBvLHMsYz10WzBdLHU9dC5sZWZ0LGw9dC5yaWdodCxoPXVbMF0sZj11WzFdLGQ9bFswXSxwPWxbMV0seT0oaCtkKS8yLGc9KGYrcCkvMjtpZihwPT09Zil7aWYoeTxlfHx5Pj1yKXJldHVybjtpZihoPmQpe2lmKGMpe2lmKGNbMV0+PWkpcmV0dXJufWVsc2UgYz1beSxuXTthPVt5LGldfWVsc2V7aWYoYyl7aWYoY1sxXTxuKXJldHVybn1lbHNlIGM9W3ksaV07YT1beSxuXX19ZWxzZSBpZihzPWctKG89KGgtZCkvKHAtZikpKnksbzwtMXx8bz4xKWlmKGg+ZCl7aWYoYyl7aWYoY1sxXT49aSlyZXR1cm59ZWxzZSBjPVsobi1zKS9vLG5dO2E9WyhpLXMpL28saV19ZWxzZXtpZihjKXtpZihjWzFdPG4pcmV0dXJufWVsc2UgYz1bKGktcykvbyxpXTthPVsobi1zKS9vLG5dfWVsc2UgaWYoZjxwKXtpZihjKXtpZihjWzBdPj1yKXJldHVybn1lbHNlIGM9W2UsbyplK3NdO2E9W3IsbypyK3NdfWVsc2V7aWYoYyl7aWYoY1swXTxlKXJldHVybn1lbHNlIGM9W3IsbypyK3NdO2E9W2UsbyplK3NdfXJldHVybiB0WzBdPWMsdFsxXT1hLCEwfWZ1bmN0aW9uIFNrKHQsZSl7dmFyIG49dC5zaXRlLHI9ZS5sZWZ0LGk9ZS5yaWdodDtyZXR1cm4gbj09PWkmJihpPXIscj1uKSxpP01hdGguYXRhbjIoaVsxXS1yWzFdLGlbMF0tclswXSk6KG49PT1yPyhyPWVbMV0saT1lWzBdKToocj1lWzBdLGk9ZVsxXSksTWF0aC5hdGFuMihyWzBdLWlbMF0saVsxXS1yWzFdKSl9ZnVuY3Rpb24gQWsodCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIE1rKHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQ9PT10LnNpdGUpXX12YXIgTmssRGs9W107ZnVuY3Rpb24gT2soKXttayh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gQmsodCl7dmFyIGU9dC5QLG49dC5OO2lmKGUmJm4pe3ZhciByPWUuc2l0ZSxpPXQuc2l0ZSxhPW4uc2l0ZTtpZihyIT09YSl7dmFyIG89aVswXSxzPWlbMV0sYz1yWzBdLW8sdT1yWzFdLXMsbD1hWzBdLW8saD1hWzFdLXMsZj0yKihjKmgtdSpsKTtpZighKGY+PS1Haykpe3ZhciBkPWMqYyt1KnUscD1sKmwraCpoLHk9KGgqZC11KnApL2YsZz0oYypwLWwqZCkvZixtPURrLnBvcCgpfHxuZXcgT2s7bS5hcmM9dCxtLnNpdGU9aSxtLng9eStvLG0ueT0obS5jeT1nK3MpK01hdGguc3FydCh5KnkrZypnKSx0LmNpcmNsZT1tO2Zvcih2YXIgdj1udWxsLGI9SGsuXztiOylpZihtLnk8Yi55fHxtLnk9PT1iLnkmJm0ueDw9Yi54KXtpZighYi5MKXt2PWIuUDticmVha31iPWIuTH1lbHNle2lmKCFiLlIpe3Y9YjticmVha31iPWIuUn1Iay5pbnNlcnQodixtKSx2fHwoTms9bSl9fX19ZnVuY3Rpb24gTGsodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KE5rPWUuTiksSGsucmVtb3ZlKGUpLERrLnB1c2goZSksbWsoZSksdC5jaXJjbGU9bnVsbCl9dmFyIElrPVtdO2Z1bmN0aW9uIFJrKCl7bWsodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIEZrKHQpe3ZhciBlPUlrLnBvcCgpfHxuZXcgUms7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gUGsodCl7TGsodCkscWsucmVtb3ZlKHQpLElrLnB1c2godCksbWsodCl9ZnVuY3Rpb24gamsodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngscj1lLmN5LGk9W24scl0sYT10LlAsbz10Lk4scz1bdF07UGsodCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8VmsmJk1hdGguYWJzKHItYy5jaXJjbGUuY3kpPFZrOylhPWMuUCxzLnVuc2hpZnQoYyksUGsoYyksYz1hO3MudW5zaGlmdChjKSxMayhjKTtmb3IodmFyIHU9bzt1LmNpcmNsZSYmTWF0aC5hYnMobi11LmNpcmNsZS54KTxWayYmTWF0aC5hYnMoci11LmNpcmNsZS5jeSk8Vms7KW89dS5OLHMucHVzaCh1KSxQayh1KSx1PW87cy5wdXNoKHUpLExrKHUpO3ZhciBsLGg9cy5sZW5ndGg7Zm9yKGw9MTtsPGg7KytsKXU9c1tsXSxjPXNbbC0xXSxUayh1LmVkZ2UsYy5zaXRlLHUuc2l0ZSxpKTtjPXNbMF0sKHU9c1toLTFdKS5lZGdlPXdrKGMuc2l0ZSx1LnNpdGUsbnVsbCxpKSxCayhjKSxCayh1KX1mdW5jdGlvbiBZayh0KXtmb3IodmFyIGUsbixyLGksYT10WzBdLG89dFsxXSxzPXFrLl87czspaWYoKHI9emsocyxvKS1hKT5WaylzPXMuTDtlbHNle2lmKCEoKGk9YS1VayhzLG8pKT5Waykpe3I+LVZrPyhlPXMuUCxuPXMpOmk+LVZrPyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hZnVuY3Rpb24odCl7JGtbdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fSh0KTt2YXIgYz1Gayh0KTtpZihxay5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gTGsoZSksbj1GayhlLnNpdGUpLHFrLmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9d2soZS5zaXRlLGMuc2l0ZSksQmsoZSksdm9pZCBCayhuKTtpZihuKXtMayhlKSxMayhuKTt2YXIgdT1lLnNpdGUsbD11WzBdLGg9dVsxXSxmPXRbMF0tbCxkPXRbMV0taCxwPW4uc2l0ZSx5PXBbMF0tbCxnPXBbMV0taCxtPTIqKGYqZy1kKnkpLHY9ZipmK2QqZCxiPXkqeStnKmcsXz1bKGcqdi1kKmIpL20rbCwoZipiLXkqdikvbStoXTtUayhuLmVkZ2UsdSxwLF8pLGMuZWRnZT13ayh1LHQsbnVsbCxfKSxuLmVkZ2U9d2sodCxwLG51bGwsXyksQmsoZSksQmsobil9ZWxzZSBjLmVkZ2U9d2soZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIHprKHQsZSl7dmFyIG49dC5zaXRlLHI9blswXSxpPW5bMV0sYT1pLWU7aWYoIWEpcmV0dXJuIHI7dmFyIG89dC5QO2lmKCFvKXJldHVybi0xLzA7dmFyIHM9KG49by5zaXRlKVswXSxjPW5bMV0sdT1jLWU7aWYoIXUpcmV0dXJuIHM7dmFyIGw9cy1yLGg9MS9hLTEvdSxmPWwvdTtyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKGwqbC8oLTIqdSktYyt1LzIraS1hLzIpKSkvaCtyOihyK3MpLzJ9ZnVuY3Rpb24gVWsodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gemsobixlKTt2YXIgcj10LnNpdGU7cmV0dXJuIHJbMV09PT1lP3JbMF06MS8wfXZhciBxaywkayxIayxXayxWaz0xZS02LEdrPTFlLTEyO2Z1bmN0aW9uIFhrKHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBaayh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiBRayh0LGUpe3ZhciBuLHIsaSxhPXQuc29ydChaaykucG9wKCk7Zm9yKFdrPVtdLCRrPW5ldyBBcnJheSh0Lmxlbmd0aCkscWs9bmV3IHhrLEhrPW5ldyB4azs7KWlmKGk9TmssYSYmKCFpfHxhWzFdPGkueXx8YVsxXT09PWkueSYmYVswXTxpLngpKWFbMF09PT1uJiZhWzFdPT09cnx8KFlrKGEpLG49YVswXSxyPWFbMV0pLGE9dC5wb3AoKTtlbHNle2lmKCFpKWJyZWFrO2prKGkuYXJjKX1pZihmdW5jdGlvbigpe2Zvcih2YXIgdCxlLG4scixpPTAsYT0kay5sZW5ndGg7aTxhOysraSlpZigodD0ka1tpXSkmJihyPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgbz1uZXcgQXJyYXkocikscz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPHI7KytuKW9bbl09bixzW25dPVNrKHQsV2tbZVtuXV0pO2ZvcihvLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxyOysrbilzW25dPWVbb1tuXV07Zm9yKG49MDtuPHI7KytuKWVbbl09c1tuXX19KCksZSl7dmFyIG89K2VbMF1bMF0scz0rZVswXVsxXSxjPStlWzFdWzBdLHU9K2VbMV1bMV07IWZ1bmN0aW9uKHQsZSxuLHIpe2Zvcih2YXIgaSxhPVdrLmxlbmd0aDthLS07KUNrKGk9V2tbYV0sdCxlLG4scikmJkVrKGksdCxlLG4scikmJihNYXRoLmFicyhpWzBdWzBdLWlbMV1bMF0pPlZrfHxNYXRoLmFicyhpWzBdWzFdLWlbMV1bMV0pPlZrKXx8ZGVsZXRlIFdrW2FdfShvLHMsYyx1KSxmdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLG8scyxjLHUsbCxoLGYsZCxwLHksZz0kay5sZW5ndGgsbT0hMDtmb3IoaT0wO2k8ZzsrK2kpaWYoYT0ka1tpXSl7Zm9yKG89YS5zaXRlLHM9KGM9YS5oYWxmZWRnZXMpLmxlbmd0aDtzLS07KVdrW2Nbc11dfHxjLnNwbGljZShzLDEpO2ZvcihzPTAsdT1jLmxlbmd0aDtzPHU7KXA9KGQ9TWsoYSxXa1tjW3NdXSkpWzBdLHk9ZFsxXSxoPShsPUFrKGEsV2tbY1srK3MldV1dKSlbMF0sZj1sWzFdLChNYXRoLmFicyhwLWgpPlZrfHxNYXRoLmFicyh5LWYpPlZrKSYmKGMuc3BsaWNlKHMsMCxXay5wdXNoKGtrKG8sZCxNYXRoLmFicyhwLXQpPFZrJiZyLXk+Vms/W3QsTWF0aC5hYnMoaC10KTxWaz9mOnJdOk1hdGguYWJzKHktcik8VmsmJm4tcD5Waz9bTWF0aC5hYnMoZi1yKTxWaz9oOm4scl06TWF0aC5hYnMocC1uKTxWayYmeS1lPlZrP1tuLE1hdGguYWJzKGgtbik8Vms/ZjplXTpNYXRoLmFicyh5LWUpPFZrJiZwLXQ+Vms/W01hdGguYWJzKGYtZSk8Vms/aDp0LGVdOm51bGwpKS0xKSwrK3UpO3UmJihtPSExKX1pZihtKXt2YXIgdixiLF8seD0xLzA7Zm9yKGk9MCxtPW51bGw7aTxnOysraSkoYT0ka1tpXSkmJihfPSh2PShvPWEuc2l0ZSlbMF0tdCkqdisoYj1vWzFdLWUpKmIpPHgmJih4PV8sbT1hKTtpZihtKXt2YXIgdz1bdCxlXSxrPVt0LHJdLFQ9W24scl0sRT1bbixlXTttLmhhbGZlZGdlcy5wdXNoKFdrLnB1c2goa2sobz1tLnNpdGUsdyxrKSktMSxXay5wdXNoKGtrKG8sayxUKSktMSxXay5wdXNoKGtrKG8sVCxFKSktMSxXay5wdXNoKGtrKG8sRSx3KSktMSl9fWZvcihpPTA7aTxnOysraSkoYT0ka1tpXSkmJihhLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSAka1tpXSl9KG8scyxjLHUpfXRoaXMuZWRnZXM9V2ssdGhpcy5jZWxscz0kayxxaz1Iaz1Xaz0kaz1udWxsfWZ1bmN0aW9uIEtrKCl7dmFyIHQ9cGssZT15ayxuPW51bGw7ZnVuY3Rpb24gcihyKXtyZXR1cm4gbmV3IFFrKHIubWFwKChmdW5jdGlvbihuLGkpe3ZhciBhPVtNYXRoLnJvdW5kKHQobixpLHIpL1ZrKSpWayxNYXRoLnJvdW5kKGUobixpLHIpL1ZrKSpWa107cmV0dXJuIGEuaW5kZXg9aSxhLmRhdGE9bixhfSkpLG4pfXJldHVybiByLnBvbHlnb25zPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpLnBvbHlnb25zKCl9LHIubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkubGlua3MoKX0sci50cmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkudHJpYW5nbGVzKCl9LHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRrKCtlKSxyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkaygrdCkscik6ZX0sci5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLHIpOm4mJltbblswXVswXSxuWzBdWzFdXSxbblsxXVswXSxuWzFdWzFdXV19LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLHIpOm4mJltuWzFdWzBdLW5bMF1bMF0sblsxXVsxXS1uWzBdWzFdXX0scn1mdW5jdGlvbiBKayh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdFQodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy50cmFuc2Zvcm09bn1mdW5jdGlvbiBlVCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59UWsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpRayxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lLmhhbGZlZGdlcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBBayhlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4scil7aWYoYT0oaT1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgaSxhLG8scz1uLnNpdGUsYz0tMSx1PWVbaVthLTFdXSxsPXUubGVmdD09PXM/dS5yaWdodDp1LmxlZnQ7KytjPGE7KW89bCxsPSh1PWVbaVtjXV0pLmxlZnQ9PT1zP3UucmlnaHQ6dS5sZWZ0LG8mJmwmJnI8by5pbmRleCYmcjxsLmluZGV4JiZYayhzLG8sbCk8MCYmdC5wdXNoKFtzLmRhdGEsby5kYXRhLGwuZGF0YV0pfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KSl9LGZpbmQ6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcixpLGE9dGhpcyxvPWEuX2ZvdW5kfHwwLHM9YS5jZWxscy5sZW5ndGg7IShpPWEuY2VsbHNbb10pOylpZigrK28+PXMpcmV0dXJuIG51bGw7dmFyIGM9dC1pLnNpdGVbMF0sdT1lLWkuc2l0ZVsxXSxsPWMqYyt1KnU7ZG97aT1hLmNlbGxzW3I9b10sbz1udWxsLGkuaGFsZmVkZ2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWEuZWRnZXNbbl0scz1yLmxlZnQ7aWYocyE9PWkuc2l0ZSYmc3x8KHM9ci5yaWdodCkpe3ZhciBjPXQtc1swXSx1PWUtc1sxXSxoPWMqYyt1KnU7aDxsJiYobD1oLG89cy5pbmRleCl9fSkpfXdoaWxlKG51bGwhPT1vKTtyZXR1cm4gYS5fZm91bmQ9cixudWxsPT1ufHxsPD1uKm4/aS5zaXRlOm51bGx9fSxlVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmVULHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyBlVCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IGVUKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIG5UPW5ldyBlVCgxLDAsMCk7ZnVuY3Rpb24gclQodCl7Zm9yKDshdC5fX3pvb207KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBuVDtyZXR1cm4gdC5fX3pvb219ZnVuY3Rpb24gaVQoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBhVCgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gb1QoKXtyZXR1cm4hbGUuY3RybEtleSYmIWxlLmJ1dHRvbn1mdW5jdGlvbiBzVCgpe3ZhciB0PXRoaXM7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PXQub3duZXJTVkdFbGVtZW50fHx0KS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW3QuY2xpZW50V2lkdGgsdC5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBjVCgpe3JldHVybiB0aGlzLl9fem9vbXx8blR9ZnVuY3Rpb24gdVQoKXtyZXR1cm4tbGUuZGVsdGFZKigxPT09bGUuZGVsdGFNb2RlPy4wNTpsZS5kZWx0YU1vZGU/MTouMDAyKX1mdW5jdGlvbiBsVCgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBoVCh0LGUsbil7dmFyIHI9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0saT10LmludmVydFgoZVsxXVswXSktblsxXVswXSxhPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLG89dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKGk+cj8ocitpKS8yOk1hdGgubWluKDAscil8fE1hdGgubWF4KDAsaSksbz5hPyhhK28pLzI6TWF0aC5taW4oMCxhKXx8TWF0aC5tYXgoMCxvKSl9ZnVuY3Rpb24gZlQoKXt2YXIgdCxlLG49b1Qscj1zVCxpPWhULGE9dVQsbz1sVCxzPVswLDEvMF0sYz1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSx1PTI1MCxsPU9wLGg9ZnQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLGY9NTAwLGQ9MDtmdW5jdGlvbiBwKHQpe3QucHJvcGVydHkoIl9fem9vbSIsY1QpLm9uKCJ3aGVlbC56b29tIix4KS5vbigibW91c2Vkb3duLnpvb20iLHcpLm9uKCJkYmxjbGljay56b29tIixrKS5maWx0ZXIobykub24oInRvdWNoc3RhcnQuem9vbSIsVCkub24oInRvdWNobW92ZS56b29tIixFKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixDKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24geSh0LGUpe3JldHVybihlPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlKSkpPT09dC5rP3Q6bmV3IGVUKGUsdC54LHQueSl9ZnVuY3Rpb24gZyh0LGUsbil7dmFyIHI9ZVswXS1uWzBdKnQuayxpPWVbMV0tblsxXSp0Lms7cmV0dXJuIHI9PT10LngmJmk9PT10Lnk/dDpuZXcgZVQodC5rLHIsaSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB2KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1hcmd1bWVudHMsYT1iKHQsaSksbz1yLmFwcGx5KHQsaSkscz1udWxsPT1uP20obyk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LGkpOm4sYz1NYXRoLm1heChvWzFdWzBdLW9bMF1bMF0sb1sxXVsxXS1vWzBdWzFdKSx1PXQuX196b29tLGg9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LGkpOmUsZj1sKHUuaW52ZXJ0KHMpLmNvbmNhdChjL3UuayksaC5pbnZlcnQocykuY29uY2F0KGMvaC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9aDtlbHNle3ZhciBlPWYodCksbj1jL2VbMl07dD1uZXcgZVQobixzWzBdLWVbMF0qbixzWzFdLWVbMV0qbil9YS56b29tKG51bGwsdCl9fSkpfWZ1bmN0aW9uIGIodCxlLG4pe3JldHVybiFuJiZ0Ll9fem9vbWluZ3x8bmV3IF8odCxlKX1mdW5jdGlvbiBfKHQsZSl7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD1yLmFwcGx5KHQsZSksdGhpcy50YXBzPTB9ZnVuY3Rpb24geCgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxlPXRoaXMuX196b29tLHI9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUuaypNYXRoLnBvdygyLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLG89Qm4odGhpcyk7aWYodC53aGVlbCl0Lm1vdXNlWzBdWzBdPT09b1swXSYmdC5tb3VzZVswXVsxXT09PW9bMV18fCh0Lm1vdXNlWzFdPWUuaW52ZXJ0KHQubW91c2VbMF09bykpLGNsZWFyVGltZW91dCh0LndoZWVsKTtlbHNle2lmKGUuaz09PXIpcmV0dXJuO3QubW91c2U9W28sZS5pbnZlcnQobyldLGFyKHRoaXMpLHQuc3RhcnQoKX1hVCgpLHQud2hlZWw9c2V0VGltZW91dCh1LDE1MCksdC56b29tKCJtb3VzZSIsaShnKHkoZSxyKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGMpKX1mdW5jdGlvbiB1KCl7dC53aGVlbD1udWxsLHQuZW5kKCl9fWZ1bmN0aW9uIHcoKXtpZighZSYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PWIodGhpcyxhcmd1bWVudHMsITApLHI9VGUobGUudmlldykub24oIm1vdXNlbW92ZS56b29tIix1LCEwKS5vbigibW91c2V1cC56b29tIixsLCEwKSxhPUJuKHRoaXMpLG89bGUuY2xpZW50WCxzPWxlLmNsaWVudFk7U2UobGUudmlldyksaVQoKSx0Lm1vdXNlPVthLHRoaXMuX196b29tLmludmVydChhKV0sYXIodGhpcyksdC5zdGFydCgpfWZ1bmN0aW9uIHUoKXtpZihhVCgpLCF0Lm1vdmVkKXt2YXIgZT1sZS5jbGllbnRYLW8sbj1sZS5jbGllbnRZLXM7dC5tb3ZlZD1lKmUrbipuPmR9dC56b29tKCJtb3VzZSIsaShnKHQudGhhdC5fX3pvb20sdC5tb3VzZVswXT1Cbih0LnRoYXQpLHQubW91c2VbMV0pLHQuZXh0ZW50LGMpKX1mdW5jdGlvbiBsKCl7ci5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxBZShsZS52aWV3LHQubW92ZWQpLGFUKCksdC5lbmQoKX19ZnVuY3Rpb24gaygpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD10aGlzLl9fem9vbSxlPUJuKHRoaXMpLGE9dC5pbnZlcnQoZSksbz10LmsqKGxlLnNoaWZ0S2V5Py41OjIpLHM9aShnKHkodCxvKSxlLGEpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMpO2FUKCksdT4wP1RlKHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbih1KS5jYWxsKHYscyxlKTpUZSh0aGlzKS5jYWxsKHAudHJhbnNmb3JtLHMpfX1mdW5jdGlvbiBUKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLHIsaSxhLG89bGUudG91Y2hlcyxzPW8ubGVuZ3RoLGM9Yih0aGlzLGFyZ3VtZW50cyxsZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1zKTtmb3IoaVQoKSxyPTA7cjxzOysrcilhPVthPU9uKHRoaXMsbywoaT1vW3JdKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQoYSksaS5pZGVudGlmaWVyXSxjLnRvdWNoMD9jLnRvdWNoMXx8Yy50b3VjaDBbMl09PT1hWzJdfHwoYy50b3VjaDE9YSxjLnRhcHM9MCk6KGMudG91Y2gwPWEsZT0hMCxjLnRhcHM9MSshIXQpO3QmJih0PWNsZWFyVGltZW91dCh0KSksZSYmKGMudGFwczwyJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Q9bnVsbH0pLGYpKSxhcih0aGlzKSxjLnN0YXJ0KCkpfX1mdW5jdGlvbiBFKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciBlLG4scixhLG89Yih0aGlzLGFyZ3VtZW50cykscz1sZS5jaGFuZ2VkVG91Y2hlcyx1PXMubGVuZ3RoO2ZvcihhVCgpLHQmJih0PWNsZWFyVGltZW91dCh0KSksby50YXBzPTAsZT0wO2U8dTsrK2Upcj1Pbih0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksby50b3VjaDAmJm8udG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP28udG91Y2gwWzBdPXI6by50b3VjaDEmJm8udG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoby50b3VjaDFbMF09cik7aWYobj1vLnRoYXQuX196b29tLG8udG91Y2gxKXt2YXIgbD1vLnRvdWNoMFswXSxoPW8udG91Y2gwWzFdLGY9by50b3VjaDFbMF0sZD1vLnRvdWNoMVsxXSxwPShwPWZbMF0tbFswXSkqcCsocD1mWzFdLWxbMV0pKnAsbT0obT1kWzBdLWhbMF0pKm0rKG09ZFsxXS1oWzFdKSptO249eShuLE1hdGguc3FydChwL20pKSxyPVsobFswXStmWzBdKS8yLChsWzFdK2ZbMV0pLzJdLGE9WyhoWzBdK2RbMF0pLzIsKGhbMV0rZFsxXSkvMl19ZWxzZXtpZighby50b3VjaDApcmV0dXJuO3I9by50b3VjaDBbMF0sYT1vLnRvdWNoMFsxXX1vLnpvb20oInRvdWNoIixpKGcobixyLGEpLG8uZXh0ZW50LGMpKX19ZnVuY3Rpb24gQygpe2lmKHRoaXMuX196b29taW5nKXt2YXIgdCxuLHI9Yih0aGlzLGFyZ3VtZW50cyksaT1sZS5jaGFuZ2VkVG91Y2hlcyxhPWkubGVuZ3RoO2ZvcihpVCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSksZiksdD0wO3Q8YTsrK3Qpbj1pW3RdLHIudG91Y2gwJiZyLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgci50b3VjaDA6ci50b3VjaDEmJnIudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgci50b3VjaDE7aWYoci50b3VjaDEmJiFyLnRvdWNoMCYmKHIudG91Y2gwPXIudG91Y2gxLGRlbGV0ZSByLnRvdWNoMSksci50b3VjaDApci50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KHIudG91Y2gwWzBdKTtlbHNlIGlmKHIuZW5kKCksMj09PXIudGFwcyl7dmFyIG89VGUodGhpcykub24oImRibGNsaWNrLnpvb20iKTtvJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBwLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O3IucHJvcGVydHkoIl9fem9vbSIsY1QpLHQhPT1yP3YodCxlLG4pOnIuaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0scC5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSxuKXtwLnNjYWxlVG8odCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSksbil9LHAuc2NhbGVUbz1mdW5jdGlvbih0LGUsbil7cC50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXRoaXMuX196b29tLG89bnVsbD09bj9tKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4scz1hLmludmVydChvKSx1PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIGkoZyh5KGEsdSksbyxzKSx0LGMpfSksbil9LHAudHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe3AudHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYyl9KSl9LHAudHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4sYSl7cC50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXRoaXMuX196b29tLHM9bnVsbD09YT9tKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE7cmV0dXJuIGkoblQudHJhbnNsYXRlKHNbMF0sc1sxXSkuc2NhbGUoby5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/LWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1lLCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiksdCxjKX0pLGEpfSxfLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtnZShuZXcgdFQocCx0LHRoaXMudGhhdC5fX3pvb20pLGguYXBwbHksaCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxwLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKaygrdCkscCk6YX0scC5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKayghIXQpLHApOm59LHAudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmsoISF0KSxwKTpvfSxwLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkprKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxwKTpyfSxwLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzWzBdPSt0WzBdLHNbMV09K3RbMV0scCk6W3NbMF0sc1sxXV19LHAudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjWzBdWzBdPSt0WzBdWzBdLGNbMV1bMF09K3RbMV1bMF0sY1swXVsxXT0rdFswXVsxXSxjWzFdWzFdPSt0WzFdWzFdLHApOltbY1swXVswXSxjWzBdWzFdXSxbY1sxXVswXSxjWzFdWzFdXV19LHAuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQscCk6aX0scC5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxwKTp1fSxwLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQscCk6bH0scC5vbj1mdW5jdGlvbigpe3ZhciB0PWgub24uYXBwbHkoaCxhcmd1bWVudHMpO3JldHVybiB0PT09aD9wOnR9LHAuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0odD0rdCkqdCxwKTpNYXRoLnNxcnQoZCl9LHB9clQucHJvdG90eXBlPWVULnByb3RvdHlwZX0sNjgxOih0LGUsbik9Pnt0LmV4cG9ydHM9e2dyYXBobGliOm4oNTc0KSxsYXlvdXQ6big4MTIzKSxkZWJ1ZzpuKDc1NzApLHV0aWw6e3RpbWU6bigxMTM4KS50aW1lLG5vdGltZTpuKDExMzgpLm5vdGltZX0sdmVyc2lvbjpuKDgxNzcpfX0sMjE4ODoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNiksaT1uKDQwNzkpO3QuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJncmVlZHkiPT09dC5ncmFwaCgpLmFjeWNsaWNlcj9pKHQsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkud2VpZ2h0fX0odCkpOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49e30saT17fTtyZXR1cm4gci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24gYShvKXtyLmhhcyhpLG8pfHwoaVtvXT0hMCxuW29dPSEwLHIuZm9yRWFjaCh0Lm91dEVkZ2VzKG8pLChmdW5jdGlvbih0KXtyLmhhcyhuLHQudyk/ZS5wdXNoKHQpOmEodC53KX0pKSxkZWxldGUgbltvXSl9KSksZX0odCk7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTt0LnJlbW92ZUVkZ2UoZSksbi5mb3J3YXJkTmFtZT1lLm5hbWUsbi5yZXZlcnNlZD0hMCx0LnNldEVkZ2UoZS53LGUudixuLHIudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciByPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixyKX19KSl9fX0sMTEzMzoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbixyLGEsbyl7dmFyIHM9e3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6ZX0sYz1hW2VdW28tMV0sdT1pLmFkZER1bW15Tm9kZSh0LCJib3JkZXIiLHMsbik7YVtlXVtvXT11LHQuc2V0UGFyZW50KHUsciksYyYmdC5zZXRFZGdlKGMsdSx7d2VpZ2h0OjF9KX10LmV4cG9ydHM9ZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24gZShuKXt2YXIgaT10LmNoaWxkcmVuKG4pLG89dC5ub2RlKG4pO2lmKGkubGVuZ3RoJiZyLmZvckVhY2goaSxlKSxyLmhhcyhvLCJtaW5SYW5rIikpe28uYm9yZGVyTGVmdD1bXSxvLmJvcmRlclJpZ2h0PVtdO2Zvcih2YXIgcz1vLm1pblJhbmssYz1vLm1heFJhbmsrMTtzPGM7KytzKWEodCwiYm9yZGVyTGVmdCIsIl9ibCIsbixvLHMpLGEodCwiYm9yZGVyUmlnaHQiLCJfYnIiLG4sbyxzKX19KSl9fSwzMjU4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTtmdW5jdGlvbiBpKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe2EodC5ub2RlKGUpKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXthKHQuZWRnZShlKSl9KSl9ZnVuY3Rpb24gYSh0KXt2YXIgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQsdC5oZWlnaHQ9ZX1mdW5jdGlvbiBvKHQpe3QueT0tdC55fWZ1bmN0aW9uIHModCl7dmFyIGU9dC54O3QueD10LnksdC55PWV9dC5leHBvcnRzPXthZGp1c3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTsibHIiIT09ZSYmInJsIiE9PWV8fGkodCl9LHVuZG86ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTsiYnQiIT09ZSYmInJsIiE9PWV8fGZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe28odC5ub2RlKGUpKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7ci5mb3JFYWNoKG4ucG9pbnRzLG8pLHIuaGFzKG4sInkiKSYmbyhuKX0pKX0odCksImxyIiE9PWUmJiJybCIhPT1lfHwoZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cyh0Lm5vZGUoZSkpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtyLmZvckVhY2gobi5wb2ludHMscyksci5oYXMobiwieCIpJiZzKG4pfSkpfSh0KSxpKHQpKX19fSw3ODIyOnQ9PntmdW5jdGlvbiBlKCl7dmFyIHQ9e307dC5fbmV4dD10Ll9wcmV2PXQsdGhpcy5fc2VudGluZWw9dH1mdW5jdGlvbiBuKHQpe3QuX3ByZXYuX25leHQ9dC5fbmV4dCx0Ll9uZXh0Ll9wcmV2PXQuX3ByZXYsZGVsZXRlIHQuX25leHQsZGVsZXRlIHQuX3ByZXZ9ZnVuY3Rpb24gcih0LGUpe2lmKCJfbmV4dCIhPT10JiYiX3ByZXYiIT09dClyZXR1cm4gZX10LmV4cG9ydHM9ZSxlLnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VudGluZWwsZT10Ll9wcmV2O2lmKGUhPT10KXJldHVybiBuKGUpLGV9LGUucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2VudGluZWw7dC5fcHJldiYmdC5fbmV4dCYmbih0KSx0Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj10LGUuX25leHQ9dCx0Ll9wcmV2PWV9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5fc2VudGluZWwsbj1lLl9wcmV2O24hPT1lOyl0LnB1c2goSlNPTi5zdHJpbmdpZnkobixyKSksbj1uLl9wcmV2O3JldHVybiJbIit0LmpvaW4oIiwgIikrIl0ifX0sNzU3MDoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCksYT1uKDU3NCkuR3JhcGg7dC5leHBvcnRzPXtkZWJ1Z09yZGVyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPWkuYnVpbGRMYXllck1hdHJpeCh0KSxuPW5ldyBhKHtjb21wb3VuZDohMCxtdWx0aWdyYXBoOiEwfSkuc2V0R3JhcGgoe30pO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtuLnNldE5vZGUoZSx7bGFiZWw6ZX0pLG4uc2V0UGFyZW50KGUsImxheWVyIit0Lm5vZGUoZSkucmFuayl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24odCl7bi5zZXRFZGdlKHQudix0Lncse30sdC5uYW1lKX0pKSxyLmZvckVhY2goZSwoZnVuY3Rpb24odCxlKXt2YXIgaT0ibGF5ZXIiK2U7bi5zZXROb2RlKGkse3Jhbms6InNhbWUifSksci5yZWR1Y2UodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZXRFZGdlKHQsZSx7c3R5bGU6ImludmlzIn0pLGV9KSl9KSksbn19fSw1NzQ6KHQsZSxuKT0+e3ZhciByO3RyeXtyPW4oODI4Mil9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5ncmFwaGxpYiksdC5leHBvcnRzPXJ9LDQwNzk6KHQsZSxuKT0+e3ZhciByPW4oODQzNiksaT1uKDU3NCkuR3JhcGgsYT1uKDc4MjIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQubm9kZUNvdW50KCk8PTEpcmV0dXJuW107dmFyIG49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgaSxvPTAscz0wO3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe24uc2V0Tm9kZSh0LHt2OnQsaW46MCxvdXQ6MH0pfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKHQpe3ZhciByPW4uZWRnZSh0LnYsdC53KXx8MCxpPWUodCksYT1yK2k7bi5zZXRFZGdlKHQudix0LncsYSkscz1NYXRoLm1heChzLG4ubm9kZSh0LnYpLm91dCs9aSksbz1NYXRoLm1heChvLG4ubm9kZSh0LncpLmluKz1pKX0pKTt2YXIgdT1yLnJhbmdlKHMrbyszKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhfSkpLGw9bysxO3JldHVybiByLmZvckVhY2gobi5ub2RlcygpLChmdW5jdGlvbih0KXtjKHUsbCxuLm5vZGUodCkpfSkpLHtncmFwaDpuLGJ1Y2tldHM6dSx6ZXJvSWR4Omx9fSh0LGV8fG8pLHU9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcixpPVtdLGE9ZVtlLmxlbmd0aC0xXSxvPWVbMF07dC5ub2RlQ291bnQoKTspe2Zvcig7cj1vLmRlcXVldWUoKTspcyh0LGUsbixyKTtmb3IoO3I9YS5kZXF1ZXVlKCk7KXModCxlLG4scik7aWYodC5ub2RlQ291bnQoKSlmb3IodmFyIGM9ZS5sZW5ndGgtMjtjPjA7LS1jKWlmKHI9ZVtjXS5kZXF1ZXVlKCkpe2k9aS5jb25jYXQocyh0LGUsbixyLCEwKSk7YnJlYWt9fXJldHVybiBpfShuLmdyYXBoLG4uYnVja2V0cyxuLnplcm9JZHgpO3JldHVybiByLmZsYXR0ZW4oci5tYXAodSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZS52LGUudyl9KSksITApfTt2YXIgbz1yLmNvbnN0YW50KDEpO2Z1bmN0aW9uIHModCxlLG4saSxhKXt2YXIgbz1hP1tdOnZvaWQgMDtyZXR1cm4gci5mb3JFYWNoKHQuaW5FZGdlcyhpLnYpLChmdW5jdGlvbihyKXt2YXIgaT10LmVkZ2Uocikscz10Lm5vZGUoci52KTthJiZvLnB1c2goe3Y6ci52LHc6ci53fSkscy5vdXQtPWksYyhlLG4scyl9KSksci5mb3JFYWNoKHQub3V0RWRnZXMoaS52KSwoZnVuY3Rpb24ocil7dmFyIGk9dC5lZGdlKHIpLGE9ci53LG89dC5ub2RlKGEpO28uaW4tPWksYyhlLG4sbyl9KSksdC5yZW1vdmVOb2RlKGkudiksb31mdW5jdGlvbiBjKHQsZSxuKXtuLm91dD9uLmluP3Rbbi5vdXQtbi5pbitlXS5lbnF1ZXVlKG4pOnRbdC5sZW5ndGgtMV0uZW5xdWV1ZShuKTp0WzBdLmVucXVldWUobil9fSw4MTIzOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMjE4OCksYT1uKDU5OTUpLG89big4MDkzKSxzPW4oMTEzOCkubm9ybWFsaXplUmFua3MsYz1uKDQyMTkpLHU9bigxMTM4KS5yZW1vdmVFbXB0eVJhbmtzLGw9bigyOTgxKSxoPW4oMTEzMyksZj1uKDMyNTgpLGQ9bigzNDA4KSxwPW4oNzg3MykseT1uKDExMzgpLGc9big1NzQpLkdyYXBoO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWUmJmUuZGVidWdUaW1pbmc/eS50aW1lOnkubm90aW1lO24oImxheW91dCIsKGZ1bmN0aW9uKCl7dmFyIGU9bigiICBidWlsZExheW91dEdyYXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bmV3IGcoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPUModC5ncmFwaCgpKTtyZXR1cm4gZS5zZXRHcmFwaChyLm1lcmdlKHt9LHYsRShuLG0pLHIucGljayhuLGIpKSksci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9Qyh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLHIuZGVmYXVsdHMoRShpLF8pLHgpKSxlLnNldFBhcmVudChuLHQucGFyZW50KG4pKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXt2YXIgaT1DKHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sci5tZXJnZSh7fSxrLEUoaSx3KSxyLnBpY2soaSxUKSkpfSkpLGV9KHQpfSkpO24oIiAgcnVuTGF5b3V0IiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXtlKCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ3JhcGgoKTtlLnJhbmtzZXAvPTIsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIHI9dC5lZGdlKG4pO3IubWlubGVuKj0yLCJjIiE9PXIubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1lLnJhbmtkaXJ8fCJCVCI9PT1lLnJhbmtkaXI/ci53aWR0aCs9ci5sYWJlbG9mZnNldDpyLmhlaWdodCs9ci5sYWJlbG9mZnNldCl9KSl9KHQpfSkpLGUoIiAgICByZW1vdmVTZWxmRWRnZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXtpZihlLnY9PT1lLncpe3ZhciBuPXQubm9kZShlLnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2UsbGFiZWw6dC5lZGdlKGUpfSksdC5yZW1vdmVFZGdlKGUpfX0pKX0odCl9KSksZSgiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe2kucnVuKHQpfSkpLGUoIiAgICBuZXN0aW5nR3JhcGgucnVuIiwoZnVuY3Rpb24oKXtsLnJ1bih0KX0pKSxlKCIgICAgcmFuayIsKGZ1bmN0aW9uKCl7byh5LmFzTm9uQ29tcG91bmRHcmFwaCh0KSl9KSksZSgiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi53aWR0aCYmbi5oZWlnaHQpe3ZhciByPXQubm9kZShlLnYpLGk9e3Jhbms6KHQubm9kZShlLncpLnJhbmstci5yYW5rKS8yK3IucmFuayxlfTt5LmFkZER1bW15Tm9kZSh0LCJlZGdlLXByb3h5IixpLCJfZXAiKX19KSl9KHQpfSkpLGUoIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXt1KHQpfSkpLGUoIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cCIsKGZ1bmN0aW9uKCl7bC5jbGVhbnVwKHQpfSkpLGUoIiAgICBub3JtYWxpemVSYW5rcyIsKGZ1bmN0aW9uKCl7cyh0KX0pKSxlKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPTA7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pO2kuYm9yZGVyVG9wJiYoaS5taW5SYW5rPXQubm9kZShpLmJvcmRlclRvcCkucmFuayxpLm1heFJhbms9dC5ub2RlKGkuYm9yZGVyQm90dG9tKS5yYW5rLGU9ci5tYXgoZSxpLm1heFJhbmspKX0pKSx0LmdyYXBoKCkubWF4UmFuaz1lfSh0KX0pKSxlKCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTsiZWRnZS1wcm94eSI9PT1uLmR1bW15JiYodC5lZGdlKG4uZSkubGFiZWxSYW5rPW4ucmFuayx0LnJlbW92ZU5vZGUoZSkpfSkpfSh0KX0pKSxlKCIgICAgbm9ybWFsaXplLnJ1biIsKGZ1bmN0aW9uKCl7YS5ydW4odCl9KSksZSgiICAgIHBhcmVudER1bW15Q2hhaW5zIiwoZnVuY3Rpb24oKXtjKHQpfSkpLGUoIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7aCh0KX0pKSxlKCIgICAgb3JkZXIiLChmdW5jdGlvbigpe2QodCl9KSksZSgiICAgIGluc2VydFNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPXkuYnVpbGRMYXllck1hdHJpeCh0KTtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIG49MDtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSxpKXt2YXIgYT10Lm5vZGUoZSk7YS5vcmRlcj1pK24sci5mb3JFYWNoKGEuc2VsZkVkZ2VzLChmdW5jdGlvbihlKXt5LmFkZER1bW15Tm9kZSh0LCJzZWxmZWRnZSIse3dpZHRoOmUubGFiZWwud2lkdGgsaGVpZ2h0OmUubGFiZWwuaGVpZ2h0LHJhbms6YS5yYW5rLG9yZGVyOmkrICsrbixlOmUuZSxsYWJlbDplLmxhYmVsfSwiX3NlIil9KSksZGVsZXRlIGEuc2VsZkVkZ2VzfSkpfSkpfSh0KX0pKSxlKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7Zi5hZGp1c3QodCl9KSksZSgiICAgIHBvc2l0aW9uIiwoZnVuY3Rpb24oKXtwKHQpfSkpLGUoIiAgICBwb3NpdGlvblNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIHI9dC5ub2RlKG4uZS52KSxpPXIueCtyLndpZHRoLzIsYT1yLnksbz1uLngtaSxzPXIuaGVpZ2h0LzI7dC5zZXRFZGdlKG4uZSxuLmxhYmVsKSx0LnJlbW92ZU5vZGUoZSksbi5sYWJlbC5wb2ludHM9W3t4OmkrMipvLzMseTphLXN9LHt4OmkrNSpvLzYseTphLXN9LHt4Omkrbyx5OmF9LHt4OmkrNSpvLzYseTphK3N9LHt4OmkrMipvLzMseTphK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSh0KX0pKSxlKCIgICAgcmVtb3ZlQm9yZGVyTm9kZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtpZih0LmNoaWxkcmVuKGUpLmxlbmd0aCl7dmFyIG49dC5ub2RlKGUpLGk9dC5ub2RlKG4uYm9yZGVyVG9wKSxhPXQubm9kZShuLmJvcmRlckJvdHRvbSksbz10Lm5vZGUoci5sYXN0KG4uYm9yZGVyTGVmdCkpLHM9dC5ub2RlKHIubGFzdChuLmJvcmRlclJpZ2h0KSk7bi53aWR0aD1NYXRoLmFicyhzLngtby54KSxuLmhlaWdodD1NYXRoLmFicyhhLnktaS55KSxuLng9by54K24ud2lkdGgvMixuLnk9aS55K24uaGVpZ2h0LzJ9fSkpLHIuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpeyJib3JkZXIiPT09dC5ub2RlKGUpLmR1bW15JiZ0LnJlbW92ZU5vZGUoZSl9KSl9KHQpfSkpLGUoIiAgICBub3JtYWxpemUudW5kbyIsKGZ1bmN0aW9uKCl7YS51bmRvKHQpfSkpLGUoIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtpZihyLmhhcyhuLCJ4Iikpc3dpdGNoKCJsIiE9PW4ubGFiZWxwb3MmJiJyIiE9PW4ubGFiZWxwb3N8fChuLndpZHRoLT1uLmxhYmVsb2Zmc2V0KSxuLmxhYmVscG9zKXtjYXNlImwiOm4ueC09bi53aWR0aC8yK24ubGFiZWxvZmZzZXQ7YnJlYWs7Y2FzZSJyIjpuLngrPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0fX0pKX0odCl9KSksZSgiICAgIHVuZG9Db29yZGluYXRlU3lzdGVtIiwoZnVuY3Rpb24oKXtmLnVuZG8odCl9KSksZSgiICAgIHRyYW5zbGF0ZUdyYXBoIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7dmFyIGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG49MCxpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhPTAsbz10LmdyYXBoKCkscz1vLm1hcmdpbnh8fDAsYz1vLm1hcmdpbnl8fDA7ZnVuY3Rpb24gdSh0KXt2YXIgcj10Lngsbz10Lnkscz10LndpZHRoLGM9dC5oZWlnaHQ7ZT1NYXRoLm1pbihlLHItcy8yKSxuPU1hdGgubWF4KG4scitzLzIpLGk9TWF0aC5taW4oaSxvLWMvMiksYT1NYXRoLm1heChhLG8rYy8yKX1yLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt1KHQubm9kZShlKSl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO3IuaGFzKG4sIngiKSYmdShuKX0pKSxlLT1zLGktPWMsci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIHI9dC5ub2RlKG4pO3IueC09ZSxyLnktPWl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGE9dC5lZGdlKG4pO3IuZm9yRWFjaChhLnBvaW50cywoZnVuY3Rpb24odCl7dC54LT1lLHQueS09aX0pKSxyLmhhcyhhLCJ4IikmJihhLngtPWUpLHIuaGFzKGEsInkiKSYmKGEueS09aSl9KSksby53aWR0aD1uLWUrcyxvLmhlaWdodD1hLWkrY30odCl9KSksZSgiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG4scixpPXQuZWRnZShlKSxhPXQubm9kZShlLnYpLG89dC5ub2RlKGUudyk7aS5wb2ludHM/KG49aS5wb2ludHNbMF0scj1pLnBvaW50c1tpLnBvaW50cy5sZW5ndGgtMV0pOihpLnBvaW50cz1bXSxuPW8scj1hKSxpLnBvaW50cy51bnNoaWZ0KHkuaW50ZXJzZWN0UmVjdChhLG4pKSxpLnBvaW50cy5wdXNoKHkuaW50ZXJzZWN0UmVjdChvLHIpKX0pKX0odCl9KSksZSgiICAgIHJldmVyc2VQb2ludHMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7bi5yZXZlcnNlZCYmbi5wb2ludHMucmV2ZXJzZSgpfSkpfSh0KX0pKSxlKCIgICAgYWN5Y2xpYy51bmRvIiwoZnVuY3Rpb24oKXtpLnVuZG8odCl9KSl9KGUsbil9KSksbigiICB1cGRhdGVJbnB1dEdyYXBoIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgcj10Lm5vZGUobiksaT1lLm5vZGUobik7ciYmKHIueD1pLngsci55PWkueSxlLmNoaWxkcmVuKG4pLmxlbmd0aCYmKHIud2lkdGg9aS53aWR0aCxyLmhlaWdodD1pLmhlaWdodCkpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQuZWRnZShuKSxhPWUuZWRnZShuKTtpLnBvaW50cz1hLnBvaW50cyxyLmhhcyhhLCJ4IikmJihpLng9YS54LGkueT1hLnkpfSkpLHQuZ3JhcGgoKS53aWR0aD1lLmdyYXBoKCkud2lkdGgsdC5ncmFwaCgpLmhlaWdodD1lLmdyYXBoKCkuaGVpZ2h0fSh0LGUpfSkpfSkpfTt2YXIgbT1bIm5vZGVzZXAiLCJlZGdlc2VwIiwicmFua3NlcCIsIm1hcmdpbngiLCJtYXJnaW55Il0sdj17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxiPVsiYWN5Y2xpY2VyIiwicmFua2VyIiwicmFua2RpciIsImFsaWduIl0sXz1bIndpZHRoIiwiaGVpZ2h0Il0seD17d2lkdGg6MCxoZWlnaHQ6MH0sdz1bIm1pbmxlbiIsIndlaWdodCIsIndpZHRoIiwiaGVpZ2h0IiwibGFiZWxvZmZzZXQiXSxrPXttaW5sZW46MSx3ZWlnaHQ6MSx3aWR0aDowLGhlaWdodDowLGxhYmVsb2Zmc2V0OjEwLGxhYmVscG9zOiJyIn0sVD1bImxhYmVscG9zIl07ZnVuY3Rpb24gRSh0LGUpe3JldHVybiByLm1hcFZhbHVlcyhyLnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uIEModCl7dmFyIGU9e307cmV0dXJuIHIuZm9yRWFjaCh0LChmdW5jdGlvbih0LG4pe2Vbbi50b0xvd2VyQ2FzZSgpXT10fSkpLGV9fSw4NDM2Oih0LGUsbik9Pnt2YXIgcjt0cnl7cj17Y2xvbmVEZWVwOm4oMzYxKSxjb25zdGFudDpuKDU3MDMpLGRlZmF1bHRzOm4oMTc0NyksZWFjaDpuKDYwNzMpLGZpbHRlcjpuKDMxMDUpLGZpbmQ6bigzMzExKSxmbGF0dGVuOm4oNTU2NCksZm9yRWFjaDpuKDQ0ODYpLGZvckluOm4oMjYyMCksaGFzOm4oODcyMSksaXNVbmRlZmluZWQ6bigyMzUzKSxsYXN0Om4oOTI4KSxtYXA6big1MTYxKSxtYXBWYWx1ZXM6big2NjA0KSxtYXg6big2MTYyKSxtZXJnZTpuKDM4NTcpLG1pbjpuKDM2MzIpLG1pbkJ5Om4oMjc2Miksbm93Om4oNzc3MSkscGljazpuKDk3MjIpLHJhbmdlOm4oNjAyNikscmVkdWNlOm4oNDA2MSksc29ydEJ5Om4oOTczNCksdW5pcXVlSWQ6bigzOTU1KSx2YWx1ZXM6bigyNjI4KSx6aXBPYmplY3Q6big3Mjg3KX19Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5fKSx0LmV4cG9ydHM9cn0sMjk4MToodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbixvLHMsYyx1KXt2YXIgbD10LmNoaWxkcmVuKHUpO2lmKGwubGVuZ3RoKXt2YXIgaD1pLmFkZEJvcmRlck5vZGUodCwiX2J0IiksZj1pLmFkZEJvcmRlck5vZGUodCwiX2JiIiksZD10Lm5vZGUodSk7dC5zZXRQYXJlbnQoaCx1KSxkLmJvcmRlclRvcD1oLHQuc2V0UGFyZW50KGYsdSksZC5ib3JkZXJCb3R0b209ZixyLmZvckVhY2gobCwoZnVuY3Rpb24ocil7YSh0LGUsbixvLHMsYyxyKTt2YXIgaT10Lm5vZGUociksbD1pLmJvcmRlclRvcD9pLmJvcmRlclRvcDpyLGQ9aS5ib3JkZXJCb3R0b20/aS5ib3JkZXJCb3R0b206cixwPWkuYm9yZGVyVG9wP286MipvLHk9bCE9PWQ/MTpzLWNbdV0rMTt0LnNldEVkZ2UoaCxsLHt3ZWlnaHQ6cCxtaW5sZW46eSxuZXN0aW5nRWRnZTohMH0pLHQuc2V0RWRnZShkLGYse3dlaWdodDpwLG1pbmxlbjp5LG5lc3RpbmdFZGdlOiEwfSl9KSksdC5wYXJlbnQodSl8fHQuc2V0RWRnZShlLGgse3dlaWdodDowLG1pbmxlbjpzK2NbdV19KX1lbHNlIHUhPT1lJiZ0LnNldEVkZ2UoZSx1LHt3ZWlnaHQ6MCxtaW5sZW46bn0pfXQuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3ZhciBlPWkuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLGEpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJnIuZm9yRWFjaChvLChmdW5jdGlvbih0KXtuKHQsYSsxKX0pKSxlW2ldPWF9cmV0dXJuIHIuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uKHQpe24odCwxKX0pKSxlfSh0KSxvPXIubWF4KHIudmFsdWVzKG4pKS0xLHM9MipvKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm1pbmxlbio9c30pKTt2YXIgYz1mdW5jdGlvbih0KXtyZXR1cm4gci5yZWR1Y2UodC5lZGdlcygpLChmdW5jdGlvbihlLG4pe3JldHVybiBlK3QuZWRnZShuKS53ZWlnaHR9KSwwKX0odCkrMTtyLmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbihyKXthKHQsZSxzLGMsbyxuLHIpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1zfSxjbGVhbnVwOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ3JhcGgoKTt0LnJlbW92ZU5vZGUoZS5uZXN0aW5nUm9vdCksZGVsZXRlIGUubmVzdGluZ1Jvb3Qsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm5lc3RpbmdFZGdlJiZ0LnJlbW92ZUVkZ2UoZSl9KSl9fX0sNTk5NToodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNiksaT1uKDExMzgpO3QuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3QuZ3JhcGgoKS5kdW1teUNoYWlucz1bXSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXshZnVuY3Rpb24odCxlKXt2YXIgbixyLGEsbz1lLnYscz10Lm5vZGUobykucmFuayxjPWUudyx1PXQubm9kZShjKS5yYW5rLGw9ZS5uYW1lLGg9dC5lZGdlKGUpLGY9aC5sYWJlbFJhbms7aWYodSE9PXMrMSl7Zm9yKHQucmVtb3ZlRWRnZShlKSxhPTAsKytzO3M8dTsrK2EsKytzKWgucG9pbnRzPVtdLHI9e3dpZHRoOjAsaGVpZ2h0OjAsZWRnZUxhYmVsOmgsZWRnZU9iajplLHJhbms6c30sbj1pLmFkZER1bW15Tm9kZSh0LCJlZGdlIixyLCJfZCIpLHM9PT1mJiYoci53aWR0aD1oLndpZHRoLHIuaGVpZ2h0PWguaGVpZ2h0LHIuZHVtbXk9ImVkZ2UtbGFiZWwiLHIubGFiZWxwb3M9aC5sYWJlbHBvcyksdC5zZXRFZGdlKG8sbix7d2VpZ2h0Omgud2VpZ2h0fSxsKSwwPT09YSYmdC5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2gobiksbz1uO3Quc2V0RWRnZShvLGMse3dlaWdodDpoLndlaWdodH0sbCl9fSh0LGUpfSkpfSx1bmRvOmZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0LmdyYXBoKCkuZHVtbXlDaGFpbnMsKGZ1bmN0aW9uKGUpe3ZhciBuLHI9dC5ub2RlKGUpLGk9ci5lZGdlTGFiZWw7Zm9yKHQuc2V0RWRnZShyLmVkZ2VPYmosaSk7ci5kdW1teTspbj10LnN1Y2Nlc3NvcnMoZSlbMF0sdC5yZW1vdmVOb2RlKGUpLGkucG9pbnRzLnB1c2goe3g6ci54LHk6ci55fSksImVkZ2UtbGFiZWwiPT09ci5kdW1teSYmKGkueD1yLngsaS55PXIueSxpLndpZHRoPXIud2lkdGgsaS5oZWlnaHQ9ci5oZWlnaHQpLGU9bixyPXQubm9kZShlKX0pKX19fSw1MDkzOih0LGUsbik9Pnt2YXIgcj1uKDg0MzYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGksYT17fTtyLmZvckVhY2gobiwoZnVuY3Rpb24obil7Zm9yKHZhciByLG8scz10LnBhcmVudChuKTtzOyl7aWYoKHI9dC5wYXJlbnQocykpPyhvPWFbcl0sYVtyXT1zKToobz1pLGk9cyksbyYmbyE9PXMpcmV0dXJuIHZvaWQgZS5zZXRFZGdlKG8scyk7cz1yfX0pKX19LDU0Mzk6KHQsZSxuKT0+e3ZhciByPW4oODQzNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIubWFwKGUsKGZ1bmN0aW9uKGUpe3ZhciBuPXQuaW5FZGdlcyhlKTtpZihuLmxlbmd0aCl7dmFyIGk9ci5yZWR1Y2UobiwoZnVuY3Rpb24oZSxuKXt2YXIgcj10LmVkZ2UobiksaT10Lm5vZGUobi52KTtyZXR1cm57c3VtOmUuc3VtK3Iud2VpZ2h0Kmkub3JkZXIsd2VpZ2h0OmUud2VpZ2h0K3Iud2VpZ2h0fX0pLHtzdW06MCx3ZWlnaHQ6MH0pO3JldHVybnt2OmUsYmFyeWNlbnRlcjppLnN1bS9pLndlaWdodCx3ZWlnaHQ6aS53ZWlnaHR9fXJldHVybnt2OmV9fSkpfX0sMzEyODoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oNTc0KS5HcmFwaDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZTt0Lmhhc05vZGUoZT1yLnVuaXF1ZUlkKCJfcm9vdCIpKTspO3JldHVybiBlfSh0KSxvPW5ldyBpKHtjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyb290OmF9KS5zZXREZWZhdWx0Tm9kZUxhYmVsKChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpfSkpO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihpKXt2YXIgcz10Lm5vZGUoaSksYz10LnBhcmVudChpKTsocy5yYW5rPT09ZXx8cy5taW5SYW5rPD1lJiZlPD1zLm1heFJhbmspJiYoby5zZXROb2RlKGkpLG8uc2V0UGFyZW50KGksY3x8YSksci5mb3JFYWNoKHRbbl0oaSksKGZ1bmN0aW9uKGUpe3ZhciBuPWUudj09PWk/ZS53OmUudixhPW8uZWRnZShuLGkpLHM9ci5pc1VuZGVmaW5lZChhKT8wOmEud2VpZ2h0O28uc2V0RWRnZShuLGkse3dlaWdodDp0LmVkZ2UoZSkud2VpZ2h0K3N9KX0pKSxyLmhhcyhzLCJtaW5SYW5rIikmJm8uc2V0Tm9kZShpLHtib3JkZXJMZWZ0OnMuYm9yZGVyTGVmdFtlXSxib3JkZXJSaWdodDpzLmJvcmRlclJpZ2h0W2VdfSkpfSkpLG99fSw2NjMwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTtmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9ci56aXBPYmplY3QobixyLm1hcChuLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpKSxhPXIuZmxhdHRlbihyLm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gci5zb3J0Qnkoci5tYXAodC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJue3BvczppW2Uud10sd2VpZ2h0OnQuZWRnZShlKS53ZWlnaHR9fSkpLCJwb3MiKX0pKSwhMCksbz0xO288bi5sZW5ndGg7KW88PD0xO3ZhciBzPTIqby0xO28tPTE7dmFyIGM9ci5tYXAobmV3IEFycmF5KHMpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLHU9MDtyZXR1cm4gci5mb3JFYWNoKGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5wb3MrbztjW2VdKz10LndlaWdodDtmb3IodmFyIG49MDtlPjA7KWUlMiYmKG4rPWNbZSsxXSksY1tlPWUtMT4+MV0rPXQud2VpZ2h0O3UrPXQud2VpZ2h0Km59KSkpLHV9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAscj0xO3I8ZS5sZW5ndGg7KytyKW4rPWkodCxlW3ItMV0sZVtyXSk7cmV0dXJuIG59fSwzNDA4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMjU4OCksYT1uKDY2MzApLG89bigxMDI2KSxzPW4oMzEyOCksYz1uKDUwOTMpLHU9big1NzQpLkdyYXBoLGw9bigxMTM4KTtmdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gci5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHModCxlLG4pfSkpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbj1uZXcgdTtyLmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIGk9dC5ncmFwaCgpLnJvb3QsYT1vKHQsaSxuLGUpO3IuZm9yRWFjaChhLnZzLChmdW5jdGlvbihlLG4pe3Qubm9kZShlKS5vcmRlcj1ufSkpLGModCxuLGEudnMpfSkpfWZ1bmN0aW9uIGQodCxlKXtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSl9KSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWwubWF4UmFuayh0KSxuPWgodCxyLnJhbmdlKDEsZSsxKSwiaW5FZGdlcyIpLG89aCh0LHIucmFuZ2UoZS0xLC0xLC0xKSwib3V0RWRnZXMiKSxzPWkodCk7ZCh0LHMpO2Zvcih2YXIgYyx1PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwPTAseT0wO3k8NDsrK3AsKyt5KXtmKHAlMj9uOm8scCU0Pj0yKSxzPWwuYnVpbGRMYXllck1hdHJpeCh0KTt2YXIgZz1hKHQscyk7Zzx1JiYoeT0wLGM9ci5jbG9uZURlZXAocyksdT1nKX1kKHQsYyl9fSwyNTg4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9e30sbj1yLmZpbHRlcih0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiF0LmNoaWxkcmVuKGUpLmxlbmd0aH0pKSxpPXIubWF4KHIubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksYT1yLm1hcChyLnJhbmdlKGkrMSksKGZ1bmN0aW9uKCl7cmV0dXJuW119KSksbz1yLnNvcnRCeShuLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLnJhbmt9KSk7cmV0dXJuIHIuZm9yRWFjaChvLChmdW5jdGlvbiBuKGkpe2lmKCFyLmhhcyhlLGkpKXtlW2ldPSEwO3ZhciBvPXQubm9kZShpKTthW28ucmFua10ucHVzaChpKSxyLmZvckVhY2godC5zdWNjZXNzb3JzKGkpLG4pfX0pKSxhfX0sOTU2NzoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49e307cmV0dXJuIHIuZm9yRWFjaCh0LChmdW5jdGlvbih0LGUpe3ZhciBpPW5bdC52XT17aW5kZWdyZWU6MCxpbjpbXSxvdXQ6W10sdnM6W3Qudl0saTplfTtyLmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fChpLmJhcnljZW50ZXI9dC5iYXJ5Y2VudGVyLGkud2VpZ2h0PXQud2VpZ2h0KX0pKSxyLmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgZT1uW3Qudl0saT1uW3Qud107ci5pc1VuZGVmaW5lZChlKXx8ci5pc1VuZGVmaW5lZChpKXx8KGkuaW5kZWdyZWUrKyxlLm91dC5wdXNoKG5bdC53XSkpfSkpLGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGksYSxvO2UubWVyZ2VkfHwoci5pc1VuZGVmaW5lZChlLmJhcnljZW50ZXIpfHxyLmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fGUuYmFyeWNlbnRlcj49dC5iYXJ5Y2VudGVyKSYmKGk9ZSxhPTAsbz0wLChuPXQpLndlaWdodCYmKGErPW4uYmFyeWNlbnRlcipuLndlaWdodCxvKz1uLndlaWdodCksaS53ZWlnaHQmJihhKz1pLmJhcnljZW50ZXIqaS53ZWlnaHQsbys9aS53ZWlnaHQpLG4udnM9aS52cy5jb25jYXQobi52cyksbi5iYXJ5Y2VudGVyPWEvbyxuLndlaWdodD1vLG4uaT1NYXRoLm1pbihpLmksbi5pKSxpLm1lcmdlZD0hMCl9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uaW4ucHVzaChlKSwwPT0tLW4uaW5kZWdyZWUmJnQucHVzaChuKX19Zm9yKDt0Lmxlbmd0aDspe3ZhciBhPXQucG9wKCk7ZS5wdXNoKGEpLHIuZm9yRWFjaChhLmluLnJldmVyc2UoKSxuKGEpKSxyLmZvckVhY2goYS5vdXQsaShhKSl9cmV0dXJuIHIubWFwKHIuZmlsdGVyKGUsKGZ1bmN0aW9uKHQpe3JldHVybiF0Lm1lcmdlZH0pKSwoZnVuY3Rpb24odCl7cmV0dXJuIHIucGljayh0LFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pKX0oci5maWx0ZXIobiwoZnVuY3Rpb24odCl7cmV0dXJuIXQuaW5kZWdyZWV9KSkpfX0sMTAyNjoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oNTQzOSksYT1uKDk1NjcpLG89big3MzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24gdChlLG4scyxjKXt2YXIgdT1lLmNoaWxkcmVuKG4pLGw9ZS5ub2RlKG4pLGg9bD9sLmJvcmRlckxlZnQ6dm9pZCAwLGY9bD9sLmJvcmRlclJpZ2h0OnZvaWQgMCxkPXt9O2gmJih1PXIuZmlsdGVyKHUsKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09aCYmdCE9PWZ9KSkpO3ZhciBwPWkoZSx1KTtyLmZvckVhY2gocCwoZnVuY3Rpb24obil7aWYoZS5jaGlsZHJlbihuLnYpLmxlbmd0aCl7dmFyIGk9dChlLG4udixzLGMpO2Rbbi52XT1pLHIuaGFzKGksImJhcnljZW50ZXIiKSYmKGE9bixvPWksci5pc1VuZGVmaW5lZChhLmJhcnljZW50ZXIpPyhhLmJhcnljZW50ZXI9by5iYXJ5Y2VudGVyLGEud2VpZ2h0PW8ud2VpZ2h0KTooYS5iYXJ5Y2VudGVyPShhLmJhcnljZW50ZXIqYS53ZWlnaHQrby5iYXJ5Y2VudGVyKm8ud2VpZ2h0KS8oYS53ZWlnaHQrby53ZWlnaHQpLGEud2VpZ2h0Kz1vLndlaWdodCkpfXZhciBhLG99KSk7dmFyIHk9YShwLHMpOyFmdW5jdGlvbih0LGUpe3IuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt0LnZzPXIuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0oeSxkKTt2YXIgZz1vKHksYyk7aWYoaCYmKGcudnM9ci5mbGF0dGVuKFtoLGcudnMsZl0sITApLGUucHJlZGVjZXNzb3JzKGgpLmxlbmd0aCkpe3ZhciBtPWUubm9kZShlLnByZWRlY2Vzc29ycyhoKVswXSksdj1lLm5vZGUoZS5wcmVkZWNlc3NvcnMoZilbMF0pO3IuaGFzKGcsImJhcnljZW50ZXIiKXx8KGcuYmFyeWNlbnRlcj0wLGcud2VpZ2h0PTApLGcuYmFyeWNlbnRlcj0oZy5iYXJ5Y2VudGVyKmcud2VpZ2h0K20ub3JkZXIrdi5vcmRlcikvKGcud2VpZ2h0KzIpLGcud2VpZ2h0Kz0yfXJldHVybiBnfX0sNzMwNDoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbil7Zm9yKHZhciBpO2UubGVuZ3RoJiYoaT1yLmxhc3QoZSkpLmk8PW47KWUucG9wKCksdC5wdXNoKGkudnMpLG4rKztyZXR1cm4gbn10LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixvPWkucGFydGl0aW9uKHQsKGZ1bmN0aW9uKHQpe3JldHVybiByLmhhcyh0LCJiYXJ5Y2VudGVyIil9KSkscz1vLmxocyxjPXIuc29ydEJ5KG8ucmhzLChmdW5jdGlvbih0KXtyZXR1cm4tdC5pfSkpLHU9W10sbD0wLGg9MCxmPTA7cy5zb3J0KChuPSEhZSxmdW5jdGlvbih0LGUpe3JldHVybiB0LmJhcnljZW50ZXI8ZS5iYXJ5Y2VudGVyPy0xOnQuYmFyeWNlbnRlcj5lLmJhcnljZW50ZXI/MTpuP2UuaS10Lmk6dC5pLWUuaX0pKSxmPWEodSxjLGYpLHIuZm9yRWFjaChzLChmdW5jdGlvbih0KXtmKz10LnZzLmxlbmd0aCx1LnB1c2godC52cyksbCs9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LGgrPXQud2VpZ2h0LGY9YSh1LGMsZil9KSk7dmFyIGQ9e3ZzOnIuZmxhdHRlbih1LCEwKX07cmV0dXJuIGgmJihkLmJhcnljZW50ZXI9bC9oLGQud2VpZ2h0PWgpLGR9fSw0MjE5Oih0LGUsbik9Pnt2YXIgcj1uKDg0MzYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT17fSxuPTA7cmV0dXJuIHIuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uIGkoYSl7dmFyIG89bjtyLmZvckVhY2godC5jaGlsZHJlbihhKSxpKSxlW2FdPXtsb3c6byxsaW06bisrfX0pKSxlfSh0KTtyLmZvckVhY2godC5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbihuKXtmb3IodmFyIHI9dC5ub2RlKG4pLGk9ci5lZGdlT2JqLGE9ZnVuY3Rpb24odCxlLG4scil7dmFyIGksYSxvPVtdLHM9W10sYz1NYXRoLm1pbihlW25dLmxvdyxlW3JdLmxvdyksdT1NYXRoLm1heChlW25dLmxpbSxlW3JdLmxpbSk7aT1uO2Rve2k9dC5wYXJlbnQoaSksby5wdXNoKGkpfXdoaWxlKGkmJihlW2ldLmxvdz5jfHx1PmVbaV0ubGltKSk7Zm9yKGE9aSxpPXI7KGk9dC5wYXJlbnQoaSkpIT09YTspcy5wdXNoKGkpO3JldHVybntwYXRoOm8uY29uY2F0KHMucmV2ZXJzZSgpKSxsY2E6YX19KHQsZSxpLnYsaS53KSxvPWEucGF0aCxzPWEubGNhLGM9MCx1PW9bY10sbD0hMDtuIT09aS53Oyl7aWYocj10Lm5vZGUobiksbCl7Zm9yKDsodT1vW2NdKSE9PXMmJnQubm9kZSh1KS5tYXhSYW5rPHIucmFuazspYysrO3U9PT1zJiYobD0hMSl9aWYoIWwpe2Zvcig7YzxvLmxlbmd0aC0xJiZ0Lm5vZGUodT1vW2MrMV0pLm1pblJhbms8PXIucmFuazspYysrO3U9b1tjXX10LnNldFBhcmVudChuLHUpLG49dC5zdWNjZXNzb3JzKG4pWzBdfX0pKX19LDM1NzM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg0MzYpLGk9big1NzQpLkdyYXBoLGE9bigxMTM4KTtmdW5jdGlvbiBvKHQsZSl7dmFyIG49e307cmV0dXJuIHIucmVkdWNlKGUsKGZ1bmN0aW9uKGUsaSl7dmFyIGE9MCxvPTAscz1lLmxlbmd0aCx1PXIubGFzdChpKTtyZXR1cm4gci5mb3JFYWNoKGksKGZ1bmN0aW9uKGUsbCl7dmFyIGg9ZnVuY3Rpb24odCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIHIuZmluZCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5kdW1teX0pKX0odCxlKSxmPWg/dC5ub2RlKGgpLm9yZGVyOnM7KGh8fGU9PT11KSYmKHIuZm9yRWFjaChpLnNsaWNlKG8sbCsxKSwoZnVuY3Rpb24oZSl7ci5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihyKXt2YXIgaT10Lm5vZGUociksbz1pLm9yZGVyOyEobzxhfHxmPG8pfHxpLmR1bW15JiZ0Lm5vZGUoZSkuZHVtbXl8fGMobixyLGUpfSkpfSkpLG89bCsxLGE9Zil9KSksaX0pKSxufWZ1bmN0aW9uIHModCxlKXt2YXIgbj17fTtmdW5jdGlvbiBpKGUsaSxhLG8scyl7dmFyIHU7ci5mb3JFYWNoKHIucmFuZ2UoaSxhKSwoZnVuY3Rpb24oaSl7dT1lW2ldLHQubm9kZSh1KS5kdW1teSYmci5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHUpLChmdW5jdGlvbihlKXt2YXIgcj10Lm5vZGUoZSk7ci5kdW1teSYmKHIub3JkZXI8b3x8ci5vcmRlcj5zKSYmYyhuLGUsdSl9KSl9KSl9cmV0dXJuIHIucmVkdWNlKGUsKGZ1bmN0aW9uKGUsbil7dmFyIGEsbz0tMSxzPTA7cmV0dXJuIHIuZm9yRWFjaChuLChmdW5jdGlvbihyLGMpe2lmKCJib3JkZXIiPT09dC5ub2RlKHIpLmR1bW15KXt2YXIgdT10LnByZWRlY2Vzc29ycyhyKTt1Lmxlbmd0aCYmKGE9dC5ub2RlKHVbMF0pLm9yZGVyLGkobixzLGMsbyxhKSxzPWMsbz1hKX1pKG4scyxuLmxlbmd0aCxhLGUubGVuZ3RoKX0pKSxufSkpLG59ZnVuY3Rpb24gYyh0LGUsbil7aWYoZT5uKXt2YXIgcj1lO2U9bixuPXJ9dmFyIGk9dFtlXTtpfHwodFtlXT1pPXt9KSxpW25dPSEwfWZ1bmN0aW9uIHUodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiByLmhhcyh0W2VdLG4pfWZ1bmN0aW9uIGwodCxlLG4saSl7dmFyIGE9e30sbz17fSxzPXt9O3JldHVybiByLmZvckVhY2goZSwoZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7YVt0XT10LG9bdF09dCxzW3RdPWV9KSl9KSksci5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQpe3ZhciBlPS0xO3IuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt2YXIgYz1pKHQpO2lmKGMubGVuZ3RoKXtjPXIuc29ydEJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBzW3RdfSkpO2Zvcih2YXIgbD0oYy5sZW5ndGgtMSkvMixoPU1hdGguZmxvb3IobCksZj1NYXRoLmNlaWwobCk7aDw9ZjsrK2gpe3ZhciBkPWNbaF07b1t0XT09PXQmJmU8c1tkXSYmIXUobix0LGQpJiYob1tkXT10LG9bdF09YVt0XT1hW2RdLGU9c1tkXSl9fX0pKX0pKSx7cm9vdDphLGFsaWduOm99fWZ1bmN0aW9uIGgodCxlLG4sYSxvKXt2YXIgcz17fSxjPWZ1bmN0aW9uKHQsZSxuLGEpe3ZhciBvPW5ldyBpLHM9dC5ncmFwaCgpLGM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbihpLGEsbyl7dmFyIHMsYz1pLm5vZGUoYSksdT1pLm5vZGUobyksbD0wO2lmKGwrPWMud2lkdGgvMixyLmhhcyhjLCJsYWJlbHBvcyIpKXN3aXRjaChjLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6cz0tYy53aWR0aC8yO2JyZWFrO2Nhc2UiciI6cz1jLndpZHRoLzJ9aWYocyYmKGwrPW4/czotcykscz0wLGwrPShjLmR1bW15P2U6dCkvMixsKz0odS5kdW1teT9lOnQpLzIsbCs9dS53aWR0aC8yLHIuaGFzKHUsImxhYmVscG9zIikpc3dpdGNoKHUubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjpzPXUud2lkdGgvMjticmVhaztjYXNlInIiOnM9LXUud2lkdGgvMn1yZXR1cm4gcyYmKGwrPW4/czotcykscz0wLGx9fShzLm5vZGVzZXAscy5lZGdlc2VwLGEpO3JldHVybiByLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGk7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciByPW5bZV07aWYoby5zZXROb2RlKHIpLGkpe3ZhciBhPW5baV0scz1vLmVkZ2UoYSxyKTtvLnNldEVkZ2UoYSxyLE1hdGgubWF4KGModCxlLGkpLHN8fDApKX1pPWV9KSl9KSksb30odCxlLG4sbyksdT1vPyJib3JkZXJMZWZ0IjoiYm9yZGVyUmlnaHQiO2Z1bmN0aW9uIGwodCxlKXtmb3IodmFyIG49Yy5ub2RlcygpLHI9bi5wb3AoKSxpPXt9O3I7KWlbcl0/dChyKTooaVtyXT0hMCxuLnB1c2gociksbj1uLmNvbmNhdChlKHIpKSkscj1uLnBvcCgpfXJldHVybiBsKChmdW5jdGlvbih0KXtzW3RdPWMuaW5FZGdlcyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsc1tlLnZdK2MuZWRnZShlKSl9KSwwKX0pLGMucHJlZGVjZXNzb3JzLmJpbmQoYykpLGwoKGZ1bmN0aW9uKGUpe3ZhciBuPWMub3V0RWRnZXMoZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LHNbZS53XS1jLmVkZ2UoZSkpfSksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxyPXQubm9kZShlKTtuIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZJiZyLmJvcmRlclR5cGUhPT11JiYoc1tlXT1NYXRoLm1heChzW2VdLG4pKX0pLGMuc3VjY2Vzc29ycy5iaW5kKGMpKSxyLmZvckVhY2goYSwoZnVuY3Rpb24odCl7c1t0XT1zW25bdF1dfSkpLHN9ZnVuY3Rpb24gZih0LGUpe3JldHVybiByLm1pbkJ5KHIudmFsdWVzKGUpLChmdW5jdGlvbihlKXt2YXIgbj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksaT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIHIuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgYT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KHQscikvMjtuPU1hdGgubWF4KGUrYSxuKSxpPU1hdGgubWluKGUtYSxpKX0pKSxuLWl9KSl9ZnVuY3Rpb24gZCh0LGUpe3ZhciBuPXIudmFsdWVzKGUpLGk9ci5taW4obiksYT1yLm1heChuKTtyLmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihuKXtyLmZvckVhY2goWyJsIiwiciJdLChmdW5jdGlvbihvKXt2YXIgcyxjPW4rbyx1PXRbY107aWYodSE9PWUpe3ZhciBsPXIudmFsdWVzKHUpOyhzPSJsIj09PW8/aS1yLm1pbihsKTphLXIubWF4KGwpKSYmKHRbY109ci5tYXBWYWx1ZXModSwoZnVuY3Rpb24odCl7cmV0dXJuIHQrc30pKSl9fSkpfSkpfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gci5tYXBWYWx1ZXModC51bCwoZnVuY3Rpb24obixpKXtpZihlKXJldHVybiB0W2UudG9Mb3dlckNhc2UoKV1baV07dmFyIGE9ci5zb3J0Qnkoci5tYXAodCxpKSk7cmV0dXJuKGFbMV0rYVsyXSkvMn0pKX10LmV4cG9ydHM9e3Bvc2l0aW9uWDpmdW5jdGlvbih0KXt2YXIgZSxuPWEuYnVpbGRMYXllck1hdHJpeCh0KSxpPXIubWVyZ2Uobyh0LG4pLHModCxuKSksYz17fTtyLmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihhKXtlPSJ1Ij09PWE/bjpyLnZhbHVlcyhuKS5yZXZlcnNlKCksci5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obil7InIiPT09biYmKGU9ci5tYXAoZSwoZnVuY3Rpb24odCl7cmV0dXJuIHIudmFsdWVzKHQpLnJldmVyc2UoKX0pKSk7dmFyIG89KCJ1Ij09PWE/dC5wcmVkZWNlc3NvcnM6dC5zdWNjZXNzb3JzKS5iaW5kKHQpLHM9bCgwLGUsaSxvKSx1PWgodCxlLHMucm9vdCxzLmFsaWduLCJyIj09PW4pOyJyIj09PW4mJih1PXIubWFwVmFsdWVzKHUsKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpKSxjW2Erbl09dX0pKX0pKTt2YXIgdT1mKHQsYyk7cmV0dXJuIGQoYyx1KSxwKGMsdC5ncmFwaCgpLmFsaWduKX0sZmluZFR5cGUxQ29uZmxpY3RzOm8sZmluZFR5cGUyQ29uZmxpY3RzOnMsYWRkQ29uZmxpY3Q6YyxoYXNDb25mbGljdDp1LHZlcnRpY2FsQWxpZ25tZW50OmwsaG9yaXpvbnRhbENvbXBhY3Rpb246aCxhbGlnbkNvb3JkaW5hdGVzOmQsZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQ6ZixiYWxhbmNlOnB9fSw3ODczOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMTEzOCksYT1uKDM1NzMpLnBvc2l0aW9uWDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7KGZ1bmN0aW9uKHQpe3ZhciBlPWkuYnVpbGRMYXllck1hdHJpeCh0KSxuPXQuZ3JhcGgoKS5yYW5rc2VwLGE9MDtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGk9ci5tYXgoci5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5oZWlnaHR9KSkpO3IuZm9yRWFjaChlLChmdW5jdGlvbihlKXt0Lm5vZGUoZSkueT1hK2kvMn0pKSxhKz1pK259KSl9KSh0PWkuYXNOb25Db21wb3VuZEdyYXBoKHQpKSxyLmZvckVhY2goYSh0KSwoZnVuY3Rpb24oZSxuKXt0Lm5vZGUobikueD1lfSkpfX0sMzAwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oNTc0KS5HcmFwaCxhPW4oNjY4MSkuc2xhY2s7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe3IuZm9yRWFjaChlLm5vZGVFZGdlcyhpKSwoZnVuY3Rpb24ocil7dmFyIG89ci52LHM9aT09PW8/ci53Om87dC5oYXNOb2RlKHMpfHxhKGUscil8fCh0LnNldE5vZGUocyx7fSksdC5zZXRFZGdlKGkscyx7fSksbihzKSl9KSl9KSksdC5ub2RlQ291bnQoKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHIubWluQnkoZS5lZGdlcygpLChmdW5jdGlvbihuKXtpZih0Lmhhc05vZGUobi52KSE9PXQuaGFzTm9kZShuLncpKXJldHVybiBhKGUsbil9KSl9ZnVuY3Rpb24gYyh0LGUsbil7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZS5ub2RlKHQpLnJhbmsrPW59KSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4scj1uZXcgaSh7ZGlyZWN0ZWQ6ITF9KSx1PXQubm9kZXMoKVswXSxsPXQubm9kZUNvdW50KCk7Zm9yKHIuc2V0Tm9kZSh1LHt9KTtvKHIsdCk8bDspZT1zKHIsdCksbj1yLmhhc05vZGUoZS52KT9hKHQsZSk6LWEodCxlKSxjKHIsdCxuKTtyZXR1cm4gcn19LDgwOTM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2ODEpLmxvbmdlc3RQYXRoLGk9bigzMDApLGE9bigyNDcyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQuZ3JhcGgoKS5yYW5rZXIpe2Nhc2UibmV0d29yay1zaW1wbGV4IjpzKHQpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6IWZ1bmN0aW9uKHQpe3IodCksaSh0KX0odCk7YnJlYWs7Y2FzZSJsb25nZXN0LXBhdGgiOm8odCk7YnJlYWs7ZGVmYXVsdDpzKHQpfX07dmFyIG89cjtmdW5jdGlvbiBzKHQpe2EodCl9fSwyNDcyOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMzAwKSxhPW4oNjY4MSkuc2xhY2ssbz1uKDY2ODEpLmxvbmdlc3RQYXRoLHM9big1NzQpLmFsZy5wcmVvcmRlcixjPW4oNTc0KS5hbGcucG9zdG9yZGVyLHU9bigxMTM4KS5zaW1wbGlmeTtmdW5jdGlvbiBsKHQpe3Q9dSh0KSxvKHQpO3ZhciBlLG49aSh0KTtmb3IoZChuKSxoKG4sdCk7ZT15KG4pOyltKG4sdCxlLGcobix0LGUpKX1mdW5jdGlvbiBoKHQsZSl7dmFyIG49Yyh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSksci5mb3JFYWNoKG4sKGZ1bmN0aW9uKG4peyFmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5ub2RlKG4pLnBhcmVudDt0LmVkZ2UobixyKS5jdXR2YWx1ZT1mKHQsZSxuKX0odCxlLG4pfSkpfWZ1bmN0aW9uIGYodCxlLG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQsYT0hMCxvPWUuZWRnZShuLGkpLHM9MDtyZXR1cm4gb3x8KGE9ITEsbz1lLmVkZ2UoaSxuKSkscz1vLndlaWdodCxyLmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKHIpe3ZhciBvLGMsdT1yLnY9PT1uLGw9dT9yLnc6ci52O2lmKGwhPT1pKXt2YXIgaD11PT09YSxmPWUuZWRnZShyKS53ZWlnaHQ7aWYocys9aD9mOi1mLG89bixjPWwsdC5oYXNFZGdlKG8sYykpe3ZhciBkPXQuZWRnZShuLGwpLmN1dHZhbHVlO3MrPWg/LWQ6ZH19fSkpLHN9ZnVuY3Rpb24gZCh0LGUpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9dC5ub2RlcygpWzBdKSxwKHQse30sMSxlKX1mdW5jdGlvbiBwKHQsZSxuLGksYSl7dmFyIG89bixzPXQubm9kZShpKTtyZXR1cm4gZVtpXT0hMCxyLmZvckVhY2godC5uZWlnaGJvcnMoaSksKGZ1bmN0aW9uKGEpe3IuaGFzKGUsYSl8fChuPXAodCxlLG4sYSxpKSl9KSkscy5sb3c9byxzLmxpbT1uKyssYT9zLnBhcmVudD1hOmRlbGV0ZSBzLnBhcmVudCxufWZ1bmN0aW9uIHkodCl7cmV0dXJuIHIuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgaT1uLnYsbz1uLnc7ZS5oYXNFZGdlKGksbyl8fChpPW4udyxvPW4udik7dmFyIHM9dC5ub2RlKGkpLGM9dC5ub2RlKG8pLHU9cyxsPSExO3MubGltPmMubGltJiYodT1jLGw9ITApO3ZhciBoPXIuZmlsdGVyKGUuZWRnZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIGw9PT12KDAsdC5ub2RlKGUudiksdSkmJmwhPT12KDAsdC5ub2RlKGUudyksdSl9KSk7cmV0dXJuIHIubWluQnkoaCwoZnVuY3Rpb24odCl7cmV0dXJuIGEoZSx0KX0pKX1mdW5jdGlvbiBtKHQsZSxuLGkpe3ZhciBhPW4udixvPW4udzt0LnJlbW92ZUVkZ2UoYSxvKSx0LnNldEVkZ2UoaS52LGkudyx7fSksZCh0KSxoKHQsZSksZnVuY3Rpb24odCxlKXt2YXIgbj1yLmZpbmQodC5ub2RlcygpLChmdW5jdGlvbih0KXtyZXR1cm4hZS5ub2RlKHQpLnBhcmVudH0pKSxpPXModCxuKTtpPWkuc2xpY2UoMSksci5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciByPXQubm9kZShuKS5wYXJlbnQsaT1lLmVkZ2UobixyKSxhPSExO2l8fChpPWUuZWRnZShyLG4pLGE9ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShyKS5yYW5rKyhhP2kubWlubGVuOi1pLm1pbmxlbil9KSl9KHQsZSl9ZnVuY3Rpb24gdih0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfXQuZXhwb3J0cz1sLGwuaW5pdExvd0xpbVZhbHVlcz1kLGwuaW5pdEN1dFZhbHVlcz1oLGwuY2FsY0N1dFZhbHVlPWYsbC5sZWF2ZUVkZ2U9eSxsLmVudGVyRWRnZT1nLGwuZXhjaGFuZ2VFZGdlcz1tfSw2NjgxOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTt0LmV4cG9ydHM9e2xvbmdlc3RQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3IuZm9yRWFjaCh0LnNvdXJjZXMoKSwoZnVuY3Rpb24gbihpKXt2YXIgYT10Lm5vZGUoaSk7aWYoci5oYXMoZSxpKSlyZXR1cm4gYS5yYW5rO2VbaV09ITA7dmFyIG89ci5taW4oci5tYXAodC5vdXRFZGdlcyhpKSwoZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS53KS10LmVkZ2UoZSkubWlubGVufSkpKTtyZXR1cm4gbyE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmbnVsbCE9b3x8KG89MCksYS5yYW5rPW99KSl9LHNsYWNrOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubm9kZShlLncpLnJhbmstdC5ub2RlKGUudikucmFuay10LmVkZ2UoZSkubWlubGVufX19LDExMzg6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg0MzYpLGk9big1NzQpLkdyYXBoO2Z1bmN0aW9uIGEodCxlLG4saSl7dmFyIGE7ZG97YT1yLnVuaXF1ZUlkKGkpfXdoaWxlKHQuaGFzTm9kZShhKSk7cmV0dXJuIG4uZHVtbXk9ZSx0LnNldE5vZGUoYSxuKSxhfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHIubWF4KHIubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLnJhbms7aWYoIXIuaXNVbmRlZmluZWQobikpcmV0dXJuIG59KSkpfXQuZXhwb3J0cz17YWRkRHVtbXlOb2RlOmEsc2ltcGxpZnk6ZnVuY3Rpb24odCl7dmFyIGU9KG5ldyBpKS5zZXRHcmFwaCh0LmdyYXBoKCkpO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXtlLnNldE5vZGUobix0Lm5vZGUobikpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciByPWUuZWRnZShuLnYsbi53KXx8e3dlaWdodDowLG1pbmxlbjoxfSxpPXQuZWRnZShuKTtlLnNldEVkZ2Uobi52LG4udyx7d2VpZ2h0OnIud2VpZ2h0K2kud2VpZ2h0LG1pbmxlbjpNYXRoLm1heChyLm1pbmxlbixpLm1pbmxlbil9KX0pKSxlfSxhc05vbkNvbXBvdW5kR3JhcGg6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGkoe211bHRpZ3JhcGg6dC5pc011bHRpZ3JhcGgoKX0pLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIHIuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3QuY2hpbGRyZW4obikubGVuZ3RofHxlLnNldE5vZGUobix0Lm5vZGUobikpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2Uuc2V0RWRnZShuLHQuZWRnZShuKSl9KSksZX0sc3VjY2Vzc29yV2VpZ2h0czpmdW5jdGlvbih0KXt2YXIgZT1yLm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXt9O3JldHVybiByLmZvckVhY2godC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnddPShuW2Uud118fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gci56aXBPYmplY3QodC5ub2RlcygpLGUpfSxwcmVkZWNlc3NvcldlaWdodHM6ZnVuY3Rpb24odCl7dmFyIGU9ci5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gci5mb3JFYWNoKHQuaW5FZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnZdPShuW2Uudl18fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gci56aXBPYmplY3QodC5ub2RlcygpLGUpfSxpbnRlcnNlY3RSZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpPXQueCxhPXQueSxvPWUueC1pLHM9ZS55LWEsYz10LndpZHRoLzIsdT10LmhlaWdodC8yO2lmKCFvJiYhcyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBwb3NzaWJsZSB0byBmaW5kIGludGVyc2VjdGlvbiBpbnNpZGUgb2YgdGhlIHJlY3RhbmdsZSIpO3JldHVybiBNYXRoLmFicyhzKSpjPk1hdGguYWJzKG8pKnU/KHM8MCYmKHU9LXUpLG49dSpvL3Mscj11KToobzwwJiYoYz0tYyksbj1jLHI9YypzL28pLHt4Omkrbix5OmErcn19LGJ1aWxkTGF5ZXJNYXRyaXg6ZnVuY3Rpb24odCl7dmFyIGU9ci5tYXAoci5yYW5nZShvKHQpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobiksYT1pLnJhbms7ci5pc1VuZGVmaW5lZChhKXx8KGVbYV1baS5vcmRlcl09bil9KSksZX0sbm9ybWFsaXplUmFua3M6ZnVuY3Rpb24odCl7dmFyIGU9ci5taW4oci5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLnJhbmt9KSkpO3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKTtyLmhhcyhpLCJyYW5rIikmJihpLnJhbmstPWUpfSkpfSxyZW1vdmVFbXB0eVJhbmtzOmZ1bmN0aW9uKHQpe3ZhciBlPXIubWluKHIubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKSxuPVtdO3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHIpe3ZhciBpPXQubm9kZShyKS5yYW5rLWU7bltpXXx8KG5baV09W10pLG5baV0ucHVzaChyKX0pKTt2YXIgaT0wLGE9dC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO3IuZm9yRWFjaChuLChmdW5jdGlvbihlLG4pe3IuaXNVbmRlZmluZWQoZSkmJm4lYSE9MD8tLWk6aSYmci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS5yYW5rKz1pfSkpfSkpfSxhZGRCb3JkZXJOb2RlOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXt3aWR0aDowLGhlaWdodDowfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49NCYmKGkucmFuaz1uLGkub3JkZXI9ciksYSh0LCJib3JkZXIiLGksZSl9LG1heFJhbms6byxwYXJ0aXRpb246ZnVuY3Rpb24odCxlKXt2YXIgbj17bGhzOltdLHJoczpbXX07cmV0dXJuIHIuZm9yRWFjaCh0LChmdW5jdGlvbih0KXtlKHQpP24ubGhzLnB1c2godCk6bi5yaHMucHVzaCh0KX0pKSxufSx0aW1lOmZ1bmN0aW9uKHQsZSl7dmFyIG49ci5ub3coKTt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e2NvbnNvbGUubG9nKHQrIiB0aW1lOiAiKyhyLm5vdygpLW4pKyJtcyIpfX0sbm90aW1lOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUoKX19fSw4MTc3OnQ9Pnt0LmV4cG9ydHM9IjAuOC41In0sNzg1NjpmdW5jdGlvbih0KXt0LmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9T2JqZWN0Lmhhc093blByb3BlcnR5LGU9T2JqZWN0LnNldFByb3RvdHlwZU9mLG49T2JqZWN0LmlzRnJvemVuLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhPU9iamVjdC5mcmVlemUsbz1PYmplY3Quc2VhbCxzPU9iamVjdC5jcmVhdGUsYz0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QsdT1jLmFwcGx5LGw9Yy5jb25zdHJ1Y3Q7dXx8KHU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFwcGx5KGUsbil9KSxhfHwoYT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLG98fChvPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksbHx8KGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KHQsW251bGxdLmNvbmNhdChmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxuPUFycmF5KHQubGVuZ3RoKTtlPHQubGVuZ3RoO2UrKyluW2VdPXRbZV07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20odCl9KGUpKSkpfSk7dmFyIGgsZj13KEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSxkPXcoQXJyYXkucHJvdG90eXBlLnBvcCkscD13KEFycmF5LnByb3RvdHlwZS5wdXNoKSx5PXcoU3RyaW5nLnByb3RvdHlwZS50b0xvd2VyQ2FzZSksZz13KFN0cmluZy5wcm90b3R5cGUubWF0Y2gpLG09dyhTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLHY9dyhTdHJpbmcucHJvdG90eXBlLmluZGV4T2YpLGI9dyhTdHJpbmcucHJvdG90eXBlLnRyaW0pLF89dyhSZWdFeHAucHJvdG90eXBlLnRlc3QpLHg9KGg9VHlwZUVycm9yLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1BcnJheSh0KSxuPTA7bjx0O24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbChoLGUpfSk7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShuPjE/bi0xOjApLGk9MTtpPG47aSsrKXJbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIHUodCxlLHIpfX1mdW5jdGlvbiBrKHQscil7ZSYmZSh0LG51bGwpO2Zvcih2YXIgaT1yLmxlbmd0aDtpLS07KXt2YXIgYT1yW2ldO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7dmFyIG89eShhKTtvIT09YSYmKG4ocil8fChyW2ldPW8pLGE9byl9dFthXT0hMH1yZXR1cm4gdH1mdW5jdGlvbiBUKGUpe3ZhciBuPXMobnVsbCkscj12b2lkIDA7Zm9yKHIgaW4gZSl1KHQsZSxbcl0pJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBFKHQsZSl7Zm9yKDtudWxsIT09dDspe3ZhciBuPWkodCxlKTtpZihuKXtpZihuLmdldClyZXR1cm4gdyhuLmdldCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4udmFsdWUpcmV0dXJuIHcobi52YWx1ZSl9dD1yKHQpfXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJmYWxsYmFjayB2YWx1ZSBmb3IiLHQpLG51bGx9fXZhciBDPWEoWyJhIiwiYWJiciIsImFjcm9ueW0iLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJpZyIsImJsaW5rIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjZW50ZXIiLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiY29udGVudCIsImRhdGEiLCJkYXRhbGlzdCIsImRkIiwiZGVjb3JhdG9yIiwiZGVsIiwiZGV0YWlscyIsImRmbiIsImRpYWxvZyIsImRpciIsImRpdiIsImRsIiwiZHQiLCJlbGVtZW50IiwiZW0iLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb250IiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJoZWFkZXIiLCJoZ3JvdXAiLCJociIsImh0bWwiLCJpIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtYXJxdWVlIiwibWVudSIsIm1lbnVpdGVtIiwibWV0ZXIiLCJuYXYiLCJub2JyIiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzaGFkb3ciLCJzbWFsbCIsInNvdXJjZSIsInNwYWNlciIsInNwYW4iLCJzdHJpa2UiLCJzdHJvbmciLCJzdHlsZSIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGltZSIsInRyIiwidHJhY2siLCJ0dCIsInUiLCJ1bCIsInZhciIsInZpZGVvIiwid2JyIl0pLFM9YShbInN2ZyIsImEiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwcGF0aCIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJnIiwiZ2x5cGgiLCJnbHlwaHJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyZ3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWV0YWRhdGEiLCJtcGF0aCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN0eWxlIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRwYXRoIiwidGl0bGUiLCJ0cmVmIiwidHNwYW4iLCJ2aWV3Iiwidmtlcm4iXSksQT1hKFsiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRGlzdGFudExpZ2h0IiwiZmVGbG9vZCIsImZlRnVuY0EiLCJmZUZ1bmNCIiwiZmVGdW5jRyIsImZlRnVuY1IiLCJmZUdhdXNzaWFuQmx1ciIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSksTT1hKFsiYW5pbWF0ZSIsImNvbG9yLXByb2ZpbGUiLCJjdXJzb3IiLCJkaXNjYXJkIiwiZmVkcm9wc2hhZG93IiwiZmVpbWFnZSIsImZvbnQtZmFjZSIsImZvbnQtZmFjZS1mb3JtYXQiLCJmb250LWZhY2UtbmFtZSIsImZvbnQtZmFjZS1zcmMiLCJmb250LWZhY2UtdXJpIiwiZm9yZWlnbm9iamVjdCIsImhhdGNoIiwiaGF0Y2hwYXRoIiwibWVzaCIsIm1lc2hncmFkaWVudCIsIm1lc2hwYXRjaCIsIm1lc2hyb3ciLCJtaXNzaW5nLWdseXBoIiwic2NyaXB0Iiwic2V0Iiwic29saWRjb2xvciIsInVua25vd24iLCJ1c2UiXSksTj1hKFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9yIiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJtb3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1zdWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiXSksRD1hKFsibWFjdGlvbiIsIm1hbGlnbmdyb3VwIiwibWFsaWdubWFyayIsIm1sb25nZGl2IiwibXNjYXJyaWVzIiwibXNjYXJyeSIsIm1zZ3JvdXAiLCJtc3RhY2siLCJtc2xpbmUiLCJtc3JvdyIsInNlbWFudGljcyIsImFubm90YXRpb24iLCJhbm5vdGF0aW9uLXhtbCIsIm1wcmVzY3JpcHRzIiwibm9uZSJdKSxPPWEoWyIjdGV4dCJdKSxCPWEoWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3BpY3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxwYWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29udHJvbHMiLCJjb250cm9sc2xpc3QiLCJjb29yZHMiLCJjcm9zc29yaWdpbiIsImRhdGV0aW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGlyIiwiZGlzYWJsZWQiLCJkaXNhYmxlcGljdHVyZWlucGljdHVyZSIsImRpc2FibGVyZW1vdGVwbGF5YmFjayIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZW5jdHlwZSIsImVudGVya2V5aGludCIsImZhY2UiLCJmb3IiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaGlnaCIsImhyZWYiLCJocmVmbGFuZyIsImlkIiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vc2hhZGUiLCJub3ZhbGlkYXRlIiwibm93cmFwIiwib3BlbiIsIm9wdGltdW0iLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzcGFuIiwic3JjbGFuZyIsInN0YXJ0Iiwic3JjIiwic3Jjc2V0Iiwic3RlcCIsInN0eWxlIiwic3VtbWFyeSIsInRhYmluZGV4IiwidGl0bGUiLCJ0cmFuc2xhdGUiLCJ0eXBlIiwidXNlbWFwIiwidmFsaWduIiwidmFsdWUiLCJ3aWR0aCIsInhtbG5zIiwic2xvdCJdKSxMPWEoWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29sb3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIsImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3QiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUiLCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdlLXJlbmRlcmluZyIsImluIiwiaW4yIiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgiLCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtZWRpYSIsIm1ldGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29udGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlvIiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3RvcC1jb2xvciIsInN0b3Atb3BhY2l0eSIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1saW5lY2FwIiwic3Ryb2tlLWxpbmVqb2luIiwic3Ryb2tlLW1pdGVybGltaXQiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCIsInN0eWxlIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJpbmRleCIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidGV4dC1hbmNob3IiLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LXJlbmRlcmluZyIsInRleHRsZW5ndGgiLCJ0eXBlIiwidTEiLCJ1MiIsInVuaWNvZGUiLCJ2YWx1ZXMiLCJ2aWV3Ym94IiwidmlzaWJpbGl0eSIsInZlcnNpb24iLCJ2ZXJ0LWFkdi15IiwidmVydC1vcmlnaW4teCIsInZlcnQtb3JpZ2luLXkiLCJ3aWR0aCIsIndvcmQtc3BhY2luZyIsIndyYXAiLCJ3cml0aW5nLW1vZGUiLCJ4Y2hhbm5lbHNlbGVjdG9yIiwieWNoYW5uZWxzZWxlY3RvciIsIngiLCJ4MSIsIngyIiwieG1sbnMiLCJ5IiwieTEiLCJ5MiIsInoiLCJ6b29tYW5kcGFuIl0pLEk9YShbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uc2FsaWduIiwiY29sdW1ubGluZXMiLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRlcHRoIiwiZGlyIiwiZGlzcGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHNwYWNlIiwibHF1b3RlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3IiLCJtYXRoc2l6ZSIsIm1hdGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZlbCIsInNjcmlwdG1pbnNpemUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSxSPWEoWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxGPW8oL1x7XHtbXHNcU10qfFtcc1xTXSpcfVx9L2dtKSxQPW8oLzwlW1xzXFNdKnxbXHNcU10qJT4vZ20pLGo9bygvXmRhdGEtW1wtXHcuXHUwMEI3LVx1RkZGRl0vKSxZPW8oL15hcmlhLVtcLVx3XSskLyksej1vKC9eKD86KD86KD86ZnxodCl0cHM/fG1haWx0b3x0ZWx8Y2FsbHRvfGNpZHx4bXBwKTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06XXwkKSkvaSksVT1vKC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSxxPW8oL1tcdTAwMDAtXHUwMDIwXHUwMEEwXHUxNjgwXHUxODBFXHUyMDAwLVx1MjAyOVx1MjA1Rlx1MzAwMF0vZyksJD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07ZnVuY3Rpb24gSCh0KXtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxuPUFycmF5KHQubGVuZ3RoKTtlPHQubGVuZ3RoO2UrKyluW2VdPXRbZV07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20odCl9dmFyIFc9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9udWxsOndpbmRvd30sVj1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6JCh0KSl8fCJmdW5jdGlvbiIhPXR5cGVvZiB0LmNyZWF0ZVBvbGljeSlyZXR1cm4gbnVsbDt2YXIgbj1udWxsLHI9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7ZS5jdXJyZW50U2NyaXB0JiZlLmN1cnJlbnRTY3JpcHQuaGFzQXR0cmlidXRlKHIpJiYobj1lLmN1cnJlbnRTY3JpcHQuZ2V0QXR0cmlidXRlKHIpKTt2YXIgaT0iZG9tcHVyaWZ5Iisobj8iIyIrbjoiIik7dHJ5e3JldHVybiB0LmNyZWF0ZVBvbGljeShpLHtjcmVhdGVIVE1MOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0pfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRydXN0ZWRUeXBlcyBwb2xpY3kgIitpKyIgY291bGQgbm90IGJlIGNyZWF0ZWQuIiksbnVsbH19O3JldHVybiBmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlcoKSxuPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfTtpZihuLnZlcnNpb249IjIuMy4zIixuLnJlbW92ZWQ9W10sIWV8fCFlLmRvY3VtZW50fHw5IT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbi5pc1N1cHBvcnRlZD0hMSxuO3ZhciByPWUuZG9jdW1lbnQsaT1lLmRvY3VtZW50LG89ZS5Eb2N1bWVudEZyYWdtZW50LHM9ZS5IVE1MVGVtcGxhdGVFbGVtZW50LGM9ZS5Ob2RlLHU9ZS5FbGVtZW50LGw9ZS5Ob2RlRmlsdGVyLGg9ZS5OYW1lZE5vZGVNYXAsdz12b2lkIDA9PT1oP2UuTmFtZWROb2RlTWFwfHxlLk1vek5hbWVkQXR0ck1hcDpoLEc9ZS5UZXh0LFg9ZS5Db21tZW50LFo9ZS5ET01QYXJzZXIsUT1lLnRydXN0ZWRUeXBlcyxLPXUucHJvdG90eXBlLEo9RShLLCJjbG9uZU5vZGUiKSx0dD1FKEssIm5leHRTaWJsaW5nIiksZXQ9RShLLCJjaGlsZE5vZGVzIiksbnQ9RShLLCJwYXJlbnROb2RlIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpe3ZhciBydD1pLmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cnQuY29udGVudCYmcnQuY29udGVudC5vd25lckRvY3VtZW50JiYoaT1ydC5jb250ZW50Lm93bmVyRG9jdW1lbnQpfXZhciBpdD1WKFEsciksYXQ9aXQmJkZ0P2l0LmNyZWF0ZUhUTUwoIiIpOiIiLG90PWksc3Q9b3QuaW1wbGVtZW50YXRpb24sY3Q9b3QuY3JlYXRlTm9kZUl0ZXJhdG9yLHV0PW90LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQsbHQ9b3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUsaHQ9ci5pbXBvcnROb2RlLGZ0PXt9O3RyeXtmdD1UKGkpLmRvY3VtZW50TW9kZT9pLmRvY3VtZW50TW9kZTp7fX1jYXRjaCh0KXt9dmFyIGR0PXt9O24uaXNTdXBwb3J0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIG50JiZzdCYmdm9pZCAwIT09c3QuY3JlYXRlSFRNTERvY3VtZW50JiY5IT09ZnQ7dmFyIHB0PUYseXQ9UCxndD1qLG10PVksdnQ9VSxidD1xLF90PXoseHQ9bnVsbCx3dD1rKHt9LFtdLmNvbmNhdChIKEMpLEgoUyksSChBKSxIKE4pLEgoTykpKSxrdD1udWxsLFR0PWsoe30sW10uY29uY2F0KEgoQiksSChMKSxIKEkpLEgoUikpKSxFdD1udWxsLEN0PW51bGwsU3Q9ITAsQXQ9ITAsTXQ9ITEsTnQ9ITEsRHQ9ITEsT3Q9ITEsQnQ9ITEsTHQ9ITEsSXQ9ITEsUnQ9ITAsRnQ9ITEsUHQ9ITAsanQ9ITAsWXQ9ITEsenQ9e30sVXQ9bnVsbCxxdD1rKHt9LFsiYW5ub3RhdGlvbi14bWwiLCJhdWRpbyIsImNvbGdyb3VwIiwiZGVzYyIsImZvcmVpZ25vYmplY3QiLCJoZWFkIiwiaWZyYW1lIiwibWF0aCIsIm1pIiwibW4iLCJtbyIsIm1zIiwibXRleHQiLCJub2VtYmVkIiwibm9mcmFtZXMiLCJub3NjcmlwdCIsInBsYWludGV4dCIsInNjcmlwdCIsInN0eWxlIiwic3ZnIiwidGVtcGxhdGUiLCJ0aGVhZCIsInRpdGxlIiwidmlkZW8iLCJ4bXAiXSksJHQ9bnVsbCxIdD1rKHt9LFsiYXVkaW8iLCJ2aWRlbyIsImltZyIsInNvdXJjZSIsImltYWdlIiwidHJhY2siXSksV3Q9bnVsbCxWdD1rKHt9LFsiYWx0IiwiY2xhc3MiLCJmb3IiLCJpZCIsImxhYmVsIiwibmFtZSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInJvbGUiLCJzdW1tYXJ5IiwidGl0bGUiLCJ2YWx1ZSIsInN0eWxlIiwieG1sbnMiXSksR3Q9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLFh0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsWnQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLFF0PVp0LEt0PSExLEp0PXZvaWQgMCx0ZT1bImFwcGxpY2F0aW9uL3hodG1sK3htbCIsInRleHQvaHRtbCJdLGVlPSJ0ZXh0L2h0bWwiLG5lPXZvaWQgMCxyZT1udWxsLGllPWkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLGFlPWZ1bmN0aW9uKHQpe3JlJiZyZT09PXR8fCh0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOiQodCkpfHwodD17fSksdD1UKHQpLHh0PSJBTExPV0VEX1RBR1MiaW4gdD9rKHt9LHQuQUxMT1dFRF9UQUdTKTp3dCxrdD0iQUxMT1dFRF9BVFRSImluIHQ/ayh7fSx0LkFMTE9XRURfQVRUUik6VHQsV3Q9IkFERF9VUklfU0FGRV9BVFRSImluIHQ/ayhUKFZ0KSx0LkFERF9VUklfU0FGRV9BVFRSKTpWdCwkdD0iQUREX0RBVEFfVVJJX1RBR1MiaW4gdD9rKFQoSHQpLHQuQUREX0RBVEFfVVJJX1RBR1MpOkh0LFV0PSJGT1JCSURfQ09OVEVOVFMiaW4gdD9rKHt9LHQuRk9SQklEX0NPTlRFTlRTKTpxdCxFdD0iRk9SQklEX1RBR1MiaW4gdD9rKHt9LHQuRk9SQklEX1RBR1MpOnt9LEN0PSJGT1JCSURfQVRUUiJpbiB0P2soe30sdC5GT1JCSURfQVRUUik6e30senQ9IlVTRV9QUk9GSUxFUyJpbiB0JiZ0LlVTRV9QUk9GSUxFUyxTdD0hMSE9PXQuQUxMT1dfQVJJQV9BVFRSLEF0PSExIT09dC5BTExPV19EQVRBX0FUVFIsTXQ9dC5BTExPV19VTktOT1dOX1BST1RPQ09MU3x8ITEsTnQ9dC5TQUZFX0ZPUl9URU1QTEFURVN8fCExLER0PXQuV0hPTEVfRE9DVU1FTlR8fCExLEx0PXQuUkVUVVJOX0RPTXx8ITEsSXQ9dC5SRVRVUk5fRE9NX0ZSQUdNRU5UfHwhMSxSdD0hMSE9PXQuUkVUVVJOX0RPTV9JTVBPUlQsRnQ9dC5SRVRVUk5fVFJVU1RFRF9UWVBFfHwhMSxCdD10LkZPUkNFX0JPRFl8fCExLFB0PSExIT09dC5TQU5JVElaRV9ET00sanQ9ITEhPT10LktFRVBfQ09OVEVOVCxZdD10LklOX1BMQUNFfHwhMSxfdD10LkFMTE9XRURfVVJJX1JFR0VYUHx8X3QsUXQ9dC5OQU1FU1BBQ0V8fFp0LEp0PUp0PS0xPT09dGUuaW5kZXhPZih0LlBBUlNFUl9NRURJQV9UWVBFKT9lZTp0LlBBUlNFUl9NRURJQV9UWVBFLG5lPSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiPT09SnQ/ZnVuY3Rpb24odCl7cmV0dXJuIHR9OnksTnQmJihBdD0hMSksSXQmJihMdD0hMCksenQmJih4dD1rKHt9LFtdLmNvbmNhdChIKE8pKSksa3Q9W10sITA9PT16dC5odG1sJiYoayh4dCxDKSxrKGt0LEIpKSwhMD09PXp0LnN2ZyYmKGsoeHQsUyksayhrdCxMKSxrKGt0LFIpKSwhMD09PXp0LnN2Z0ZpbHRlcnMmJihrKHh0LEEpLGsoa3QsTCksayhrdCxSKSksITA9PT16dC5tYXRoTWwmJihrKHh0LE4pLGsoa3QsSSksayhrdCxSKSkpLHQuQUREX1RBR1MmJih4dD09PXd0JiYoeHQ9VCh4dCkpLGsoeHQsdC5BRERfVEFHUykpLHQuQUREX0FUVFImJihrdD09PVR0JiYoa3Q9VChrdCkpLGsoa3QsdC5BRERfQVRUUikpLHQuQUREX1VSSV9TQUZFX0FUVFImJmsoV3QsdC5BRERfVVJJX1NBRkVfQVRUUiksdC5GT1JCSURfQ09OVEVOVFMmJihVdD09PXF0JiYoVXQ9VChVdCkpLGsoVXQsdC5GT1JCSURfQ09OVEVOVFMpKSxqdCYmKHh0WyIjdGV4dCJdPSEwKSxEdCYmayh4dCxbImh0bWwiLCJoZWFkIiwiYm9keSJdKSx4dC50YWJsZSYmKGsoeHQsWyJ0Ym9keSJdKSxkZWxldGUgRXQudGJvZHkpLGEmJmEodCkscmU9dCl9LG9lPWsoe30sWyJtaSIsIm1vIiwibW4iLCJtcyIsIm10ZXh0Il0pLHNlPWsoe30sWyJmb3JlaWdub2JqZWN0IiwiZGVzYyIsInRpdGxlIiwiYW5ub3RhdGlvbi14bWwiXSksY2U9ayh7fSxTKTtrKGNlLEEpLGsoY2UsTSk7dmFyIHVlPWsoe30sTik7ayh1ZSxEKTt2YXIgbGU9ZnVuY3Rpb24odCl7dmFyIGU9bnQodCk7ZSYmZS50YWdOYW1lfHwoZT17bmFtZXNwYWNlVVJJOlp0LHRhZ05hbWU6InRlbXBsYXRlIn0pO3ZhciBuPXkodC50YWdOYW1lKSxyPXkoZS50YWdOYW1lKTtpZih0Lm5hbWVzcGFjZVVSST09PVh0KXJldHVybiBlLm5hbWVzcGFjZVVSST09PVp0PyJzdmciPT09bjplLm5hbWVzcGFjZVVSST09PUd0PyJzdmciPT09biYmKCJhbm5vdGF0aW9uLXhtbCI9PT1yfHxvZVtyXSk6Qm9vbGVhbihjZVtuXSk7aWYodC5uYW1lc3BhY2VVUkk9PT1HdClyZXR1cm4gZS5uYW1lc3BhY2VVUkk9PT1adD8ibWF0aCI9PT1uOmUubmFtZXNwYWNlVVJJPT09WHQ/Im1hdGgiPT09biYmc2Vbcl06Qm9vbGVhbih1ZVtuXSk7aWYodC5uYW1lc3BhY2VVUkk9PT1adCl7aWYoZS5uYW1lc3BhY2VVUkk9PT1YdCYmIXNlW3JdKXJldHVybiExO2lmKGUubmFtZXNwYWNlVVJJPT09R3QmJiFvZVtyXSlyZXR1cm4hMTt2YXIgaT1rKHt9LFsidGl0bGUiLCJzdHlsZSIsImZvbnQiLCJhIiwic2NyaXB0Il0pO3JldHVybiF1ZVtuXSYmKGlbbl18fCFjZVtuXSl9cmV0dXJuITF9LGhlPWZ1bmN0aW9uKHQpe3Aobi5yZW1vdmVkLHtlbGVtZW50OnR9KTt0cnl7dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfWNhdGNoKGUpe3RyeXt0Lm91dGVySFRNTD1hdH1jYXRjaChlKXt0LnJlbW92ZSgpfX19LGZlPWZ1bmN0aW9uKHQsZSl7dHJ5e3Aobi5yZW1vdmVkLHthdHRyaWJ1dGU6ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpLGZyb206ZX0pfWNhdGNoKHQpe3Aobi5yZW1vdmVkLHthdHRyaWJ1dGU6bnVsbCxmcm9tOmV9KX1pZihlLnJlbW92ZUF0dHJpYnV0ZSh0KSwiaXMiPT09dCYmIWt0W3RdKWlmKEx0fHxJdCl0cnl7aGUoZSl9Y2F0Y2godCl7fWVsc2UgdHJ5e2Uuc2V0QXR0cmlidXRlKHQsIiIpfWNhdGNoKHQpe319LGRlPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCxuPXZvaWQgMDtpZihCdCl0PSI8cmVtb3ZlPjwvcmVtb3ZlPiIrdDtlbHNle3ZhciByPWcodCwvXltcclxuXHQgXSsvKTtuPXImJnJbMF19ImFwcGxpY2F0aW9uL3hodG1sK3htbCI9PT1KdCYmKHQ9JzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48L2hlYWQ+PGJvZHk+Jyt0KyI8L2JvZHk+PC9odG1sPiIpO3ZhciBhPWl0P2l0LmNyZWF0ZUhUTUwodCk6dDtpZihRdD09PVp0KXRyeXtlPShuZXcgWikucGFyc2VGcm9tU3RyaW5nKGEsSnQpfWNhdGNoKHQpe31pZighZXx8IWUuZG9jdW1lbnRFbGVtZW50KXtlPXN0LmNyZWF0ZURvY3VtZW50KFF0LCJ0ZW1wbGF0ZSIsbnVsbCk7dHJ5e2UuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTD1LdD8iIjphfWNhdGNoKHQpe319dmFyIG89ZS5ib2R5fHxlLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gdCYmbiYmby5pbnNlcnRCZWZvcmUoaS5jcmVhdGVUZXh0Tm9kZShuKSxvLmNoaWxkTm9kZXNbMF18fG51bGwpLFF0PT09WnQ/bHQuY2FsbChlLER0PyJodG1sIjoiYm9keSIpWzBdOkR0P2UuZG9jdW1lbnRFbGVtZW50Om99LHBlPWZ1bmN0aW9uKHQpe3JldHVybiBjdC5jYWxsKHQub3duZXJEb2N1bWVudHx8dCx0LGwuU0hPV19FTEVNRU5UfGwuU0hPV19DT01NRU5UfGwuU0hPV19URVhULG51bGwsITEpfSx5ZT1mdW5jdGlvbih0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiBHfHx0IGluc3RhbmNlb2YgWHx8InN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic3RyaW5nIj09dHlwZW9mIHQudGV4dENvbnRlbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbW92ZUNoaWxkJiZ0LmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiB3JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZW1vdmVBdHRyaWJ1dGUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnNldEF0dHJpYnV0ZSYmInN0cmluZyI9PXR5cGVvZiB0Lm5hbWVzcGFjZVVSSSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuaW5zZXJ0QmVmb3JlKX0sZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PT0odm9pZCAwPT09Yz8idW5kZWZpbmVkIjokKGMpKT90IGluc3RhbmNlb2YgYzp0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOiQodCkpJiYibnVtYmVyIj09dHlwZW9mIHQubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgdC5ub2RlTmFtZX0sbWU9ZnVuY3Rpb24odCxlLHIpe2R0W3RdJiZmKGR0W3RdLChmdW5jdGlvbih0KXt0LmNhbGwobixlLHIscmUpfSkpfSx2ZT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA7aWYobWUoImJlZm9yZVNhbml0aXplRWxlbWVudHMiLHQsbnVsbCkseWUodCkpcmV0dXJuIGhlKHQpLCEwO2lmKGcodC5ub2RlTmFtZSwvW1x1MDA4MC1cdUZGRkZdLykpcmV0dXJuIGhlKHQpLCEwO3ZhciByPW5lKHQubm9kZU5hbWUpO2lmKG1lKCJ1cG9uU2FuaXRpemVFbGVtZW50Iix0LHt0YWdOYW1lOnIsYWxsb3dlZFRhZ3M6eHR9KSwhZ2UodC5maXJzdEVsZW1lbnRDaGlsZCkmJighZ2UodC5jb250ZW50KXx8IWdlKHQuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZCkpJiZfKC88Wy9cd10vZyx0LmlubmVySFRNTCkmJl8oLzxbL1x3XS9nLHQudGV4dENvbnRlbnQpKXJldHVybiBoZSh0KSwhMDtpZigic2VsZWN0Ij09PXImJl8oLzx0ZW1wbGF0ZS9pLHQuaW5uZXJIVE1MKSlyZXR1cm4gaGUodCksITA7aWYoIXh0W3JdfHxFdFtyXSl7aWYoanQmJiFVdFtyXSl7dmFyIGk9bnQodCl8fHQucGFyZW50Tm9kZSxhPWV0KHQpfHx0LmNoaWxkTm9kZXM7aWYoYSYmaSlmb3IodmFyIG89YS5sZW5ndGgtMTtvPj0wOy0tbylpLmluc2VydEJlZm9yZShKKGFbb10sITApLHR0KHQpKX1yZXR1cm4gaGUodCksITB9cmV0dXJuIHQgaW5zdGFuY2VvZiB1JiYhbGUodCk/KGhlKHQpLCEwKToibm9zY3JpcHQiIT09ciYmIm5vZW1iZWQiIT09cnx8IV8oLzxcL25vKHNjcmlwdHxlbWJlZCkvaSx0LmlubmVySFRNTCk/KE50JiYzPT09dC5ub2RlVHlwZSYmKGU9dC50ZXh0Q29udGVudCxlPW0oZSxwdCwiICIpLGU9bShlLHl0LCIgIiksdC50ZXh0Q29udGVudCE9PWUmJihwKG4ucmVtb3ZlZCx7ZWxlbWVudDp0LmNsb25lTm9kZSgpfSksdC50ZXh0Q29udGVudD1lKSksbWUoImFmdGVyU2FuaXRpemVFbGVtZW50cyIsdCxudWxsKSwhMSk6KGhlKHQpLCEwKX0sYmU9ZnVuY3Rpb24odCxlLG4pe2lmKFB0JiYoImlkIj09PWV8fCJuYW1lIj09PWUpJiYobiBpbiBpfHxuIGluIGllKSlyZXR1cm4hMTtpZihBdCYmIUN0W2VdJiZfKGd0LGUpKTtlbHNlIGlmKFN0JiZfKG10LGUpKTtlbHNle2lmKCFrdFtlXXx8Q3RbZV0pcmV0dXJuITE7aWYoV3RbZV0pO2Vsc2UgaWYoXyhfdCxtKG4sYnQsIiIpKSk7ZWxzZSBpZigic3JjIiE9PWUmJiJ4bGluazpocmVmIiE9PWUmJiJocmVmIiE9PWV8fCJzY3JpcHQiPT09dHx8MCE9PXYobiwiZGF0YToiKXx8ISR0W3RdKWlmKE10JiYhXyh2dCxtKG4sYnQsIiIpKSk7ZWxzZSBpZihuKXJldHVybiExfXJldHVybiEwfSxfZT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDAscj12b2lkIDAsaT12b2lkIDAsYT12b2lkIDA7bWUoImJlZm9yZVNhbml0aXplQXR0cmlidXRlcyIsdCxudWxsKTt2YXIgbz10LmF0dHJpYnV0ZXM7aWYobyl7dmFyIHM9e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczprdH07Zm9yKGE9by5sZW5ndGg7YS0tOyl7dmFyIGM9ZT1vW2FdLHU9Yy5uYW1lLGw9Yy5uYW1lc3BhY2VVUkk7aWYocj1iKGUudmFsdWUpLGk9bmUodSkscy5hdHRyTmFtZT1pLHMuYXR0clZhbHVlPXIscy5rZWVwQXR0cj0hMCxzLmZvcmNlS2VlcEF0dHI9dm9pZCAwLG1lKCJ1cG9uU2FuaXRpemVBdHRyaWJ1dGUiLHQscykscj1zLmF0dHJWYWx1ZSwhcy5mb3JjZUtlZXBBdHRyJiYoZmUodSx0KSxzLmtlZXBBdHRyKSlpZihfKC9cLz4vaSxyKSlmZSh1LHQpO2Vsc2V7TnQmJihyPW0ocixwdCwiICIpLHI9bShyLHl0LCIgIikpO3ZhciBoPW5lKHQubm9kZU5hbWUpO2lmKGJlKGgsaSxyKSl0cnl7bD90LnNldEF0dHJpYnV0ZU5TKGwsdSxyKTp0LnNldEF0dHJpYnV0ZSh1LHIpLGQobi5yZW1vdmVkKX1jYXRjaCh0KXt9fX1tZSgiYWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXMiLHQsbnVsbCl9fSx4ZT1mdW5jdGlvbiB0KGUpe3ZhciBuPXZvaWQgMCxyPXBlKGUpO2ZvcihtZSgiYmVmb3JlU2FuaXRpemVTaGFkb3dET00iLGUsbnVsbCk7bj1yLm5leHROb2RlKCk7KW1lKCJ1cG9uU2FuaXRpemVTaGFkb3dOb2RlIixuLG51bGwpLHZlKG4pfHwobi5jb250ZW50IGluc3RhbmNlb2YgbyYmdChuLmNvbnRlbnQpLF9lKG4pKTttZSgiYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSIsZSxudWxsKX07cmV0dXJuIG4uc2FuaXRpemU9ZnVuY3Rpb24odCxpKXt2YXIgYT12b2lkIDAscz12b2lkIDAsdT12b2lkIDAsbD12b2lkIDAsaD12b2lkIDA7aWYoKEt0PSF0KSYmKHQ9Ilx4M2MhLS1ceDNlIiksInN0cmluZyIhPXR5cGVvZiB0JiYhZ2UodCkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0LnRvU3RyaW5nKXRocm93IHgoInRvU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIik7aWYoInN0cmluZyIhPXR5cGVvZih0PXQudG9TdHJpbmcoKSkpdGhyb3cgeCgiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFuLmlzU3VwcG9ydGVkKXtpZigib2JqZWN0Ij09PSQoZS50b1N0YXRpY0hUTUwpfHwiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0YXRpY0hUTUwpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZS50b1N0YXRpY0hUTUwodCk7aWYoZ2UodCkpcmV0dXJuIGUudG9TdGF0aWNIVE1MKHQub3V0ZXJIVE1MKX1yZXR1cm4gdH1pZihPdHx8YWUoaSksbi5yZW1vdmVkPVtdLCJzdHJpbmciPT10eXBlb2YgdCYmKFl0PSExKSxZdCk7ZWxzZSBpZih0IGluc3RhbmNlb2YgYykxPT09KHM9KGE9ZGUoIlx4M2MhLS0tLVx4M2UiKSkub3duZXJEb2N1bWVudC5pbXBvcnROb2RlKHQsITApKS5ub2RlVHlwZSYmIkJPRFkiPT09cy5ub2RlTmFtZXx8IkhUTUwiPT09cy5ub2RlTmFtZT9hPXM6YS5hcHBlbmRDaGlsZChzKTtlbHNle2lmKCFMdCYmIU50JiYhRHQmJi0xPT09dC5pbmRleE9mKCI8IikpcmV0dXJuIGl0JiZGdD9pdC5jcmVhdGVIVE1MKHQpOnQ7aWYoIShhPWRlKHQpKSlyZXR1cm4gTHQ/bnVsbDphdH1hJiZCdCYmaGUoYS5maXJzdENoaWxkKTtmb3IodmFyIGY9cGUoWXQ/dDphKTt1PWYubmV4dE5vZGUoKTspMz09PXUubm9kZVR5cGUmJnU9PT1sfHx2ZSh1KXx8KHUuY29udGVudCBpbnN0YW5jZW9mIG8mJnhlKHUuY29udGVudCksX2UodSksbD11KTtpZihsPW51bGwsWXQpcmV0dXJuIHQ7aWYoTHQpe2lmKEl0KWZvcihoPXV0LmNhbGwoYS5vd25lckRvY3VtZW50KTthLmZpcnN0Q2hpbGQ7KWguYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTtlbHNlIGg9YTtyZXR1cm4gUnQmJihoPWh0LmNhbGwocixoLCEwKSksaH12YXIgZD1EdD9hLm91dGVySFRNTDphLmlubmVySFRNTDtyZXR1cm4gTnQmJihkPW0oZCxwdCwiICIpLGQ9bShkLHl0LCIgIikpLGl0JiZGdD9pdC5jcmVhdGVIVE1MKGQpOmR9LG4uc2V0Q29uZmlnPWZ1bmN0aW9uKHQpe2FlKHQpLE90PSEwfSxuLmNsZWFyQ29uZmlnPWZ1bmN0aW9uKCl7cmU9bnVsbCxPdD0hMX0sbi5pc1ZhbGlkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXx8YWUoe30pO3ZhciByPW5lKHQpLGk9bmUoZSk7cmV0dXJuIGJlKHIsaSxuKX0sbi5hZGRIb29rPWZ1bmN0aW9uKHQsZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihkdFt0XT1kdFt0XXx8W10scChkdFt0XSxlKSl9LG4ucmVtb3ZlSG9vaz1mdW5jdGlvbih0KXtkdFt0XSYmZChkdFt0XSl9LG4ucmVtb3ZlSG9va3M9ZnVuY3Rpb24odCl7ZHRbdF0mJihkdFt0XT1bXSl9LG4ucmVtb3ZlQWxsSG9va3M9ZnVuY3Rpb24oKXtkdD17fX0sbn0oKX0oKX0sODI4MjoodCxlLG4pPT57dmFyIHI9bigyMzU0KTt0LmV4cG9ydHM9e0dyYXBoOnIuR3JhcGgsanNvbjpuKDg5NzQpLGFsZzpuKDI0NDApLHZlcnNpb246ci52ZXJzaW9ufX0sMjg0MjoodCxlLG4pPT57dmFyIHI9big5MTI2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsbj17fSxpPVtdO2Z1bmN0aW9uIGEoaSl7ci5oYXMobixpKXx8KG5baV09ITAsZS5wdXNoKGkpLHIuZWFjaCh0LnN1Y2Nlc3NvcnMoaSksYSksci5lYWNoKHQucHJlZGVjZXNzb3JzKGkpLGEpKX1yZXR1cm4gci5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZT1bXSxhKHQpLGUubGVuZ3RoJiZpLnB1c2goZSl9KSksaX19LDM5ODQ6KHQsZSxuKT0+e3ZhciByPW4oOTEyNik7ZnVuY3Rpb24gaSh0LGUsbixhLG8scyl7ci5oYXMoYSxlKXx8KGFbZV09ITAsbnx8cy5wdXNoKGUpLHIuZWFjaChvKGUpLChmdW5jdGlvbihlKXtpKHQsZSxuLGEsbyxzKX0pKSxuJiZzLnB1c2goZSkpfXQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7ci5pc0FycmF5KGUpfHwoZT1bZV0pO3ZhciBhPSh0LmlzRGlyZWN0ZWQoKT90LnN1Y2Nlc3NvcnM6dC5uZWlnaGJvcnMpLmJpbmQodCksbz1bXSxzPXt9O3JldHVybiByLmVhY2goZSwoZnVuY3Rpb24oZSl7aWYoIXQuaGFzTm9kZShlKSl0aHJvdyBuZXcgRXJyb3IoIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogIitlKTtpKHQsZSwicG9zdCI9PT1uLHMsYSxvKX0pKSxvfX0sNDg0NzoodCxlLG4pPT57dmFyIHI9bigzNzYzKSxpPW4oOTEyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS50cmFuc2Zvcm0odC5ub2RlcygpLChmdW5jdGlvbihpLGEpe2lbYV09cih0LGEsZSxuKX0pLHt9KX19LDM3NjM6KHQsZSxuKT0+e3ZhciByPW4oOTEyNiksaT1uKDk2NzUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scil7dmFyIGEsbyxzPXt9LGM9bmV3IGksdT1mdW5jdGlvbih0KXt2YXIgZT10LnYhPT1hP3Qudjp0Lncscj1zW2VdLGk9bih0KSx1PW8uZGlzdGFuY2UraTtpZihpPDApdGhyb3cgbmV3IEVycm9yKCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuIEJhZCBlZGdlOiAiK3QrIiBXZWlnaHQ6ICIraSk7dTxyLmRpc3RhbmNlJiYoci5kaXN0YW5jZT11LHIucHJlZGVjZXNzb3I9YSxjLmRlY3JlYXNlKGUsdSkpfTtmb3IodC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQ9PT1lPzA6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3NbdF09e2Rpc3RhbmNlOm59LGMuYWRkKHQsbil9KSk7Yy5zaXplKCk+MCYmKGE9Yy5yZW1vdmVNaW4oKSwobz1zW2FdKS5kaXN0YW5jZSE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7KXIoYSkuZm9yRWFjaCh1KTtyZXR1cm4gc30odCxTdHJpbmcoZSksbnx8YSxyfHxmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlKX0pfTt2YXIgYT1yLmNvbnN0YW50KDEpfSw5MDk2Oih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpLGk9big1MDIzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZmlsdGVyKGkodCksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4xfHwxPT09ZS5sZW5ndGgmJnQuaGFzRWRnZShlWzBdLGVbMF0pfSkpfX0sODkyNDoodCxlLG4pPT57dmFyIHI9big5MTI2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbih0LGUsbil7dmFyIHI9e30saT10Lm5vZGVzKCk7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCl7clt0XT17fSxyW3RdW3RdPXtkaXN0YW5jZTowfSxpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QhPT1lJiYoclt0XVtlXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSksbih0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uLnY9PT10P24udzpuLnYsYT1lKG4pO3JbdF1baV09e2Rpc3RhbmNlOmEscHJlZGVjZXNzb3I6dH19KSl9KSksaS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1yW3RdO2kuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGE9cltuXTtpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWFbdF0saT1lW25dLG89YVtuXSxzPXIuZGlzdGFuY2UraS5kaXN0YW5jZTtzPG8uZGlzdGFuY2UmJihvLmRpc3RhbmNlPXMsby5wcmVkZWNlc3Nvcj1pLnByZWRlY2Vzc29yKX0pKX0pKX0pKSxyfSh0LGV8fGksbnx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX07dmFyIGk9ci5jb25zdGFudCgxKX0sMjQ0MDoodCxlLG4pPT57dC5leHBvcnRzPXtjb21wb25lbnRzOm4oMjg0MiksZGlqa3N0cmE6bigzNzYzKSxkaWprc3RyYUFsbDpuKDQ4NDcpLGZpbmRDeWNsZXM6big5MDk2KSxmbG95ZFdhcnNoYWxsOm4oODkyNCksaXNBY3ljbGljOm4oMjcwNykscG9zdG9yZGVyOm4oODgyOCkscHJlb3JkZXI6bigyNjQ4KSxwcmltOm4oNTE0KSx0YXJqYW46big1MDIzKSx0b3Bzb3J0Om4oMjE2Nil9fSwyNzA3Oih0LGUsbik9Pnt2YXIgcj1uKDIxNjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cih0KX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2Ygci5DeWNsZUV4Y2VwdGlvbilyZXR1cm4hMTt0aHJvdyB0fXJldHVybiEwfX0sODgyODoodCxlLG4pPT57dmFyIHI9bigzOTg0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0LGUsInBvc3QiKX19LDI2NDg6KHQsZSxuKT0+e3ZhciByPW4oMzk4NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCxlLCJwcmUiKX19LDUxNDoodCxlLG4pPT57dmFyIHI9big5MTI2KSxpPW4oNzcxKSxhPW4oOTY3NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz1uZXcgaSxzPXt9LGM9bmV3IGE7ZnVuY3Rpb24gdSh0KXt2YXIgcj10LnY9PT1uP3Qudzp0LnYsaT1jLnByaW9yaXR5KHIpO2lmKHZvaWQgMCE9PWkpe3ZhciBhPWUodCk7YTxpJiYoc1tyXT1uLGMuZGVjcmVhc2UocixhKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBvO3IuZWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe2MuYWRkKHQsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxvLnNldE5vZGUodCl9KSksYy5kZWNyZWFzZSh0Lm5vZGVzKClbMF0sMCk7Zm9yKHZhciBsPSExO2Muc2l6ZSgpPjA7KXtpZihuPWMucmVtb3ZlTWluKCksci5oYXMocyxuKSlvLnNldEVkZ2UobixzW25dKTtlbHNle2lmKGwpdGhyb3cgbmV3IEVycm9yKCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiAiK3QpO2w9ITB9dC5ub2RlRWRnZXMobikuZm9yRWFjaCh1KX1yZXR1cm4gb319LDUwMjM6KHQsZSxuKT0+e3ZhciByPW4oOTEyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPTAsbj1bXSxpPXt9LGE9W107ZnVuY3Rpb24gbyhzKXt2YXIgYz1pW3NdPXtvblN0YWNrOiEwLGxvd2xpbms6ZSxpbmRleDplKyt9O2lmKG4ucHVzaChzKSx0LnN1Y2Nlc3NvcnMocykuZm9yRWFjaCgoZnVuY3Rpb24odCl7ci5oYXMoaSx0KT9pW3RdLm9uU3RhY2smJihjLmxvd2xpbms9TWF0aC5taW4oYy5sb3dsaW5rLGlbdF0uaW5kZXgpKToobyh0KSxjLmxvd2xpbms9TWF0aC5taW4oYy5sb3dsaW5rLGlbdF0ubG93bGluaykpfSkpLGMubG93bGluaz09PWMuaW5kZXgpe3ZhciB1LGw9W107ZG97dT1uLnBvcCgpLGlbdV0ub25TdGFjaz0hMSxsLnB1c2godSl9d2hpbGUocyE9PXUpO2EucHVzaChsKX19cmV0dXJuIHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyLmhhcyhpLHQpfHxvKHQpfSkpLGF9fSwyMTY2Oih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpO2Z1bmN0aW9uIGkodCl7dmFyIGU9e30sbj17fSxpPVtdO2lmKHIuZWFjaCh0LnNpbmtzKCksKGZ1bmN0aW9uIG8ocyl7aWYoci5oYXMobixzKSl0aHJvdyBuZXcgYTtyLmhhcyhlLHMpfHwobltzXT0hMCxlW3NdPSEwLHIuZWFjaCh0LnByZWRlY2Vzc29ycyhzKSxvKSxkZWxldGUgbltzXSxpLnB1c2gocykpfSkpLHIuc2l6ZShlKSE9PXQubm9kZUNvdW50KCkpdGhyb3cgbmV3IGE7cmV0dXJuIGl9ZnVuY3Rpb24gYSgpe310LmV4cG9ydHM9aSxpLkN5Y2xlRXhjZXB0aW9uPWEsYS5wcm90b3R5cGU9bmV3IEVycm9yfSw5Njc1Oih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpO2Z1bmN0aW9uIGkoKXt0aGlzLl9hcnI9W10sdGhpcy5fa2V5SW5kaWNlcz17fX10LmV4cG9ydHM9aSxpLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5sZW5ndGh9LGkucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxpLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaGFzKHRoaXMuX2tleUluZGljZXMsdCl9LGkucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2tleUluZGljZXNbdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gdGhpcy5fYXJyW2VdLnByaW9yaXR5fSxpLnByb3RvdHlwZS5taW49ZnVuY3Rpb24oKXtpZigwPT09dGhpcy5zaXplKCkpdGhyb3cgbmV3IEVycm9yKCJRdWV1ZSB1bmRlcmZsb3ciKTtyZXR1cm4gdGhpcy5fYXJyWzBdLmtleX0saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlcztpZih0PVN0cmluZyh0KSwhci5oYXMobix0KSl7dmFyIGk9dGhpcy5fYXJyLGE9aS5sZW5ndGg7cmV0dXJuIG5bdF09YSxpLnB1c2goe2tleTp0LHByaW9yaXR5OmV9KSx0aGlzLl9kZWNyZWFzZShhKSwhMH1yZXR1cm4hMX0saS5wcm90b3R5cGUucmVtb3ZlTWluPWZ1bmN0aW9uKCl7dGhpcy5fc3dhcCgwLHRoaXMuX2Fyci5sZW5ndGgtMSk7dmFyIHQ9dGhpcy5fYXJyLnBvcCgpO3JldHVybiBkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1t0LmtleV0sdGhpcy5faGVhcGlmeSgwKSx0LmtleX0saS5wcm90b3R5cGUuZGVjcmVhc2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9rZXlJbmRpY2VzW3RdO2lmKGU+dGhpcy5fYXJyW25dLnByaW9yaXR5KXRocm93IG5ldyBFcnJvcigiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBLZXk6ICIrdCsiIE9sZDogIit0aGlzLl9hcnJbbl0ucHJpb3JpdHkrIiBOZXc6ICIrZSk7dGhpcy5fYXJyW25dLnByaW9yaXR5PWUsdGhpcy5fZGVjcmVhc2Uobil9LGkucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FycixuPTIqdCxyPW4rMSxpPXQ7bjxlLmxlbmd0aCYmKGk9ZVtuXS5wcmlvcml0eTxlW2ldLnByaW9yaXR5P246aSxyPGUubGVuZ3RoJiYoaT1lW3JdLnByaW9yaXR5PGVbaV0ucHJpb3JpdHk/cjppKSxpIT09dCYmKHRoaXMuX3N3YXAodCxpKSx0aGlzLl9oZWFwaWZ5KGkpKSl9LGkucHJvdG90eXBlLl9kZWNyZWFzZT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj10aGlzLl9hcnIscj1uW3RdLnByaW9yaXR5OzAhPT10JiYhKG5bZT10Pj4xXS5wcmlvcml0eTxyKTspdGhpcy5fc3dhcCh0LGUpLHQ9ZX0saS5wcm90b3R5cGUuX3N3YXA9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9hcnIscj10aGlzLl9rZXlJbmRpY2VzLGk9blt0XSxhPW5bZV07blt0XT1hLG5bZV09aSxyW2Eua2V5XT10LHJbaS5rZXldPWV9fSw3NzE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDkxMjYpO3QuZXhwb3J0cz1hO3ZhciBpPSJcMCI7ZnVuY3Rpb24gYSh0KXt0aGlzLl9pc0RpcmVjdGVkPSFyLmhhcyh0LCJkaXJlY3RlZCIpfHx0LmRpcmVjdGVkLHRoaXMuX2lzTXVsdGlncmFwaD0hIXIuaGFzKHQsIm11bHRpZ3JhcGgiKSYmdC5tdWx0aWdyYXBoLHRoaXMuX2lzQ29tcG91bmQ9ISFyLmhhcyh0LCJjb21wb3VuZCIpJiZ0LmNvbXBvdW5kLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49ci5jb25zdGFudCh2b2lkIDApLHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbj1yLmNvbnN0YW50KHZvaWQgMCksdGhpcy5fbm9kZXM9e30sdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudD17fSx0aGlzLl9jaGlsZHJlbj17fSx0aGlzLl9jaGlsZHJlblsiXDAiXT17fSksdGhpcy5faW49e30sdGhpcy5fcHJlZHM9e30sdGhpcy5fb3V0PXt9LHRoaXMuX3N1Y3M9e30sdGhpcy5fZWRnZU9ianM9e30sdGhpcy5fZWRnZUxhYmVscz17fX1mdW5jdGlvbiBvKHQsZSl7dFtlXT90W2VdKys6dFtlXT0xfWZ1bmN0aW9uIHModCxlKXstLXRbZV18fGRlbGV0ZSB0W2VdfWZ1bmN0aW9uIGModCxlLG4saSl7dmFyIGE9IiIrZSxvPSIiK247aWYoIXQmJmE+byl7dmFyIHM9YTthPW8sbz1zfXJldHVybiBhKyIBIitvKyIBIisoci5pc1VuZGVmaW5lZChpKT8iXDAiOmkpfWZ1bmN0aW9uIHUodCxlLG4scil7dmFyIGk9IiIrZSxhPSIiK247aWYoIXQmJmk+YSl7dmFyIG89aTtpPWEsYT1vfXZhciBzPXt2OmksdzphfTtyZXR1cm4gciYmKHMubmFtZT1yKSxzfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gYyh0LGUudixlLncsZS5uYW1lKX1hLnByb3RvdHlwZS5fbm9kZUNvdW50PTAsYS5wcm90b3R5cGUuX2VkZ2VDb3VudD0wLGEucHJvdG90eXBlLmlzRGlyZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNEaXJlY3RlZH0sYS5wcm90b3R5cGUuaXNNdWx0aWdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaH0sYS5wcm90b3R5cGUuaXNDb21wb3VuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0NvbXBvdW5kfSxhLnByb3RvdHlwZS5zZXRHcmFwaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGFiZWw9dCx0aGlzfSxhLnByb3RvdHlwZS5ncmFwaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYWJlbH0sYS5wcm90b3R5cGUuc2V0RGVmYXVsdE5vZGVMYWJlbD1mdW5jdGlvbih0KXtyZXR1cm4gci5pc0Z1bmN0aW9uKHQpfHwodD1yLmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49dCx0aGlzfSxhLnByb3RvdHlwZS5ub2RlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9kZUNvdW50fSxhLnByb3RvdHlwZS5ub2Rlcz1mdW5jdGlvbigpe3JldHVybiByLmtleXModGhpcy5fbm9kZXMpfSxhLnByb3RvdHlwZS5zb3VyY2VzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gci5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gci5pc0VtcHR5KHQuX2luW2VdKX0pKX0sYS5wcm90b3R5cGUuc2lua3M9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiByLmZpbHRlcih0aGlzLm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiByLmlzRW1wdHkodC5fb3V0W2VdKX0pKX0sYS5wcm90b3R5cGUuc2V0Tm9kZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1hcmd1bWVudHMsaT10aGlzO3JldHVybiByLmVhY2godCwoZnVuY3Rpb24odCl7bi5sZW5ndGg+MT9pLnNldE5vZGUodCxlKTppLnNldE5vZGUodCl9KSksdGhpc30sYS5wcm90b3R5cGUuc2V0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybiByLmhhcyh0aGlzLl9ub2Rlcyx0KT8oYXJndW1lbnRzLmxlbmd0aD4xJiYodGhpcy5fbm9kZXNbdF09ZSksdGhpcyk6KHRoaXMuX25vZGVzW3RdPWFyZ3VtZW50cy5sZW5ndGg+MT9lOnRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbih0KSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcGFyZW50W3RdPWksdGhpcy5fY2hpbGRyZW5bdF09e30sdGhpcy5fY2hpbGRyZW5bIlwwIl1bdF09ITApLHRoaXMuX2luW3RdPXt9LHRoaXMuX3ByZWRzW3RdPXt9LHRoaXMuX291dFt0XT17fSx0aGlzLl9zdWNzW3RdPXt9LCsrdGhpcy5fbm9kZUNvdW50LHRoaXMpfSxhLnByb3RvdHlwZS5ub2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ub2Rlc1t0XX0sYS5wcm90b3R5cGUuaGFzTm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gci5oYXModGhpcy5fbm9kZXMsdCl9LGEucHJvdG90eXBlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihyLmhhcyh0aGlzLl9ub2Rlcyx0KSl7dmFyIG49ZnVuY3Rpb24odCl7ZS5yZW1vdmVFZGdlKGUuX2VkZ2VPYmpzW3RdKX07ZGVsZXRlIHRoaXMuX25vZGVzW3RdLHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh0KSxkZWxldGUgdGhpcy5fcGFyZW50W3RdLHIuZWFjaCh0aGlzLmNoaWxkcmVuKHQpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0KX0pKSxkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF0pLHIuZWFjaChyLmtleXModGhpcy5faW5bdF0pLG4pLGRlbGV0ZSB0aGlzLl9pblt0XSxkZWxldGUgdGhpcy5fcHJlZHNbdF0sci5lYWNoKHIua2V5cyh0aGlzLl9vdXRbdF0pLG4pLGRlbGV0ZSB0aGlzLl9vdXRbdF0sZGVsZXRlIHRoaXMuX3N1Y3NbdF0sLS10aGlzLl9ub2RlQ291bnR9cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLnNldFBhcmVudD1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9pc0NvbXBvdW5kKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBwYXJlbnQgaW4gYSBub24tY29tcG91bmQgZ3JhcGgiKTtpZihyLmlzVW5kZWZpbmVkKGUpKWU9aTtlbHNle2Zvcih2YXIgbj1lKz0iIjshci5pc1VuZGVmaW5lZChuKTtuPXRoaXMucGFyZW50KG4pKWlmKG49PT10KXRocm93IG5ldyBFcnJvcigiU2V0dGluZyAiK2UrIiBhcyBwYXJlbnQgb2YgIit0KyIgd291bGQgY3JlYXRlIGEgY3ljbGUiKTt0aGlzLnNldE5vZGUoZSl9cmV0dXJuIHRoaXMuc2V0Tm9kZSh0KSx0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh0KSx0aGlzLl9wYXJlbnRbdF09ZSx0aGlzLl9jaGlsZHJlbltlXVt0XT0hMCx0aGlzfSxhLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Q9ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt0XV1bdF19LGEucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih0aGlzLl9pc0NvbXBvdW5kKXt2YXIgZT10aGlzLl9wYXJlbnRbdF07aWYoZSE9PWkpcmV0dXJuIGV9fSxhLnByb3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZihyLmlzVW5kZWZpbmVkKHQpJiYodD1pKSx0aGlzLl9pc0NvbXBvdW5kKXt2YXIgZT10aGlzLl9jaGlsZHJlblt0XTtpZihlKXJldHVybiByLmtleXMoZSl9ZWxzZXtpZih0PT09aSlyZXR1cm4gdGhpcy5ub2RlcygpO2lmKHRoaXMuaGFzTm9kZSh0KSlyZXR1cm5bXX19LGEucHJvdG90eXBlLnByZWRlY2Vzc29ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wcmVkc1t0XTtpZihlKXJldHVybiByLmtleXMoZSl9LGEucHJvdG90eXBlLnN1Y2Nlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3Vjc1t0XTtpZihlKXJldHVybiByLmtleXMoZSl9LGEucHJvdG90eXBlLm5laWdoYm9ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByZWRlY2Vzc29ycyh0KTtpZihlKXJldHVybiByLnVuaW9uKGUsdGhpcy5zdWNjZXNzb3JzKHQpKX0sYS5wcm90b3R5cGUuaXNMZWFmPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09KHRoaXMuaXNEaXJlY3RlZCgpP3RoaXMuc3VjY2Vzc29ycyh0KTp0aGlzLm5laWdoYm9ycyh0KSkubGVuZ3RofSxhLnByb3RvdHlwZS5maWx0ZXJOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCxjb21wb3VuZDp0aGlzLl9pc0NvbXBvdW5kfSk7ZS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO3ZhciBuPXRoaXM7ci5lYWNoKHRoaXMuX25vZGVzLChmdW5jdGlvbihuLHIpe3QocikmJmUuc2V0Tm9kZShyLG4pfSkpLHIuZWFjaCh0aGlzLl9lZGdlT2JqcywoZnVuY3Rpb24odCl7ZS5oYXNOb2RlKHQudikmJmUuaGFzTm9kZSh0LncpJiZlLnNldEVkZ2UodCxuLmVkZ2UodCkpfSkpO3ZhciBpPXt9O2Z1bmN0aW9uIGEodCl7dmFyIHI9bi5wYXJlbnQodCk7cmV0dXJuIHZvaWQgMD09PXJ8fGUuaGFzTm9kZShyKT8oaVt0XT1yLHIpOnIgaW4gaT9pW3JdOmEocil9cmV0dXJuIHRoaXMuX2lzQ29tcG91bmQmJnIuZWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe2Uuc2V0UGFyZW50KHQsYSh0KSl9KSksZX0sYS5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbD1mdW5jdGlvbih0KXtyZXR1cm4gci5pc0Z1bmN0aW9uKHQpfHwodD1yLmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49dCx0aGlzfSxhLnByb3RvdHlwZS5lZGdlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUNvdW50fSxhLnByb3RvdHlwZS5lZGdlcz1mdW5jdGlvbigpe3JldHVybiByLnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyl9LGEucHJvdG90eXBlLnNldFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9YXJndW1lbnRzO3JldHVybiByLnJlZHVjZSh0LChmdW5jdGlvbih0LHIpe3JldHVybiBpLmxlbmd0aD4xP24uc2V0RWRnZSh0LHIsZSk6bi5zZXRFZGdlKHQscikscn0pKSx0aGlzfSxhLnByb3RvdHlwZS5zZXRFZGdlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGksYT0hMSxzPWFyZ3VtZW50c1swXTsib2JqZWN0Ij09dHlwZW9mIHMmJm51bGwhPT1zJiYidiJpbiBzPyh0PXMudixlPXMudyxuPXMubmFtZSwyPT09YXJndW1lbnRzLmxlbmd0aCYmKGk9YXJndW1lbnRzWzFdLGE9ITApKToodD1zLGU9YXJndW1lbnRzWzFdLG49YXJndW1lbnRzWzNdLGFyZ3VtZW50cy5sZW5ndGg+MiYmKGk9YXJndW1lbnRzWzJdLGE9ITApKSx0PSIiK3QsZT0iIitlLHIuaXNVbmRlZmluZWQobil8fChuPSIiK24pO3ZhciBsPWModGhpcy5faXNEaXJlY3RlZCx0LGUsbik7aWYoci5oYXModGhpcy5fZWRnZUxhYmVscyxsKSlyZXR1cm4gYSYmKHRoaXMuX2VkZ2VMYWJlbHNbbF09aSksdGhpcztpZighci5pc1VuZGVmaW5lZChuKSYmIXRoaXMuX2lzTXVsdGlncmFwaCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgYSBuYW1lZCBlZGdlIHdoZW4gaXNNdWx0aWdyYXBoID0gZmFsc2UiKTt0aGlzLnNldE5vZGUodCksdGhpcy5zZXROb2RlKGUpLHRoaXMuX2VkZ2VMYWJlbHNbbF09YT9pOnRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbih0LGUsbik7dmFyIGg9dSh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gdD1oLnYsZT1oLncsT2JqZWN0LmZyZWV6ZShoKSx0aGlzLl9lZGdlT2Jqc1tsXT1oLG8odGhpcy5fcHJlZHNbZV0sdCksbyh0aGlzLl9zdWNzW3RdLGUpLHRoaXMuX2luW2VdW2xdPWgsdGhpcy5fb3V0W3RdW2xdPWgsdGhpcy5fZWRnZUNvdW50KyssdGhpc30sYS5wcm90b3R5cGUuZWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9MT09PWFyZ3VtZW50cy5sZW5ndGg/bCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6Yyh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tyXX0sYS5wcm90b3R5cGUuaGFzRWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9MT09PWFyZ3VtZW50cy5sZW5ndGg/bCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6Yyh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gci5oYXModGhpcy5fZWRnZUxhYmVscyxpKX0sYS5wcm90b3R5cGUucmVtb3ZlRWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9MT09PWFyZ3VtZW50cy5sZW5ndGg/bCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6Yyh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKSxpPXRoaXMuX2VkZ2VPYmpzW3JdO3JldHVybiBpJiYodD1pLnYsZT1pLncsZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbcl0sZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW3JdLHModGhpcy5fcHJlZHNbZV0sdCkscyh0aGlzLl9zdWNzW3RdLGUpLGRlbGV0ZSB0aGlzLl9pbltlXVtyXSxkZWxldGUgdGhpcy5fb3V0W3RdW3JdLHRoaXMuX2VkZ2VDb3VudC0tKSx0aGlzfSxhLnByb3RvdHlwZS5pbkVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5faW5bdF07aWYobil7dmFyIGk9ci52YWx1ZXMobik7cmV0dXJuIGU/ci5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudj09PWV9KSk6aX19LGEucHJvdG90eXBlLm91dEVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fb3V0W3RdO2lmKG4pe3ZhciBpPXIudmFsdWVzKG4pO3JldHVybiBlP3IuZmlsdGVyKGksKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnc9PT1lfSkpOml9fSxhLnByb3RvdHlwZS5ub2RlRWRnZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmluRWRnZXModCxlKTtpZihuKXJldHVybiBuLmNvbmNhdCh0aGlzLm91dEVkZ2VzKHQsZSkpfX0sMjM1NDoodCxlLG4pPT57dC5leHBvcnRzPXtHcmFwaDpuKDc3MSksdmVyc2lvbjpuKDk2MzEpfX0sODk3NDoodCxlLG4pPT57dmFyIHI9big5MTI2KSxpPW4oNzcxKTtmdW5jdGlvbiBhKHQpe3JldHVybiByLm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKSxpPXQucGFyZW50KGUpLGE9e3Y6ZX07cmV0dXJuIHIuaXNVbmRlZmluZWQobil8fChhLnZhbHVlPW4pLHIuaXNVbmRlZmluZWQoaSl8fChhLnBhcmVudD1pKSxhfSkpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHIubWFwKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpLGk9e3Y6ZS52LHc6ZS53fTtyZXR1cm4gci5pc1VuZGVmaW5lZChlLm5hbWUpfHwoaS5uYW1lPWUubmFtZSksci5pc1VuZGVmaW5lZChuKXx8KGkudmFsdWU9biksaX0pKX10LmV4cG9ydHM9e3dyaXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXtvcHRpb25zOntkaXJlY3RlZDp0LmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6dC5pc0NvbXBvdW5kKCl9LG5vZGVzOmEodCksZWRnZXM6byh0KX07cmV0dXJuIHIuaXNVbmRlZmluZWQodC5ncmFwaCgpKXx8KGUudmFsdWU9ci5jbG9uZSh0LmdyYXBoKCkpKSxlfSxyZWFkOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBpKHQub3B0aW9ucykuc2V0R3JhcGgodC52YWx1ZSk7cmV0dXJuIHIuZWFjaCh0Lm5vZGVzLChmdW5jdGlvbih0KXtlLnNldE5vZGUodC52LHQudmFsdWUpLHQucGFyZW50JiZlLnNldFBhcmVudCh0LnYsdC5wYXJlbnQpfSkpLHIuZWFjaCh0LmVkZ2VzLChmdW5jdGlvbih0KXtlLnNldEVkZ2Uoe3Y6dC52LHc6dC53LG5hbWU6dC5uYW1lfSx0LnZhbHVlKX0pKSxlfX19LDkxMjY6KHQsZSxuKT0+e3ZhciByO3RyeXtyPXtjbG9uZTpuKDY2NzgpLGNvbnN0YW50Om4oNTcwMyksZWFjaDpuKDYwNzMpLGZpbHRlcjpuKDMxMDUpLGhhczpuKDg3MjEpLGlzQXJyYXk6bigxNDY5KSxpc0VtcHR5Om4oMTYwOSksaXNGdW5jdGlvbjpuKDM1NjApLGlzVW5kZWZpbmVkOm4oMjM1Myksa2V5czpuKDM2NzQpLG1hcDpuKDUxNjEpLHJlZHVjZTpuKDQwNjEpLHNpemU6big0MjM4KSx0cmFuc2Zvcm06big4NzE4KSx1bmlvbjpuKDMzODYpLHZhbHVlczpuKDI2MjgpfX1jYXRjaCh0KXt9cnx8KHI9d2luZG93Ll8pLHQuZXhwb3J0cz1yfSw5NjMxOnQ9Pnt0LmV4cG9ydHM9IjIuMS44In0sMTc3MzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big3NjI4KSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuY29sb3I9ZSx0aGlzLmNoYW5nZWQ9ITEsdGhpcy5kYXRhPXQsdGhpcy50eXBlPW5ldyBpLmRlZmF1bHR9cmV0dXJuIHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvbG9yPWUsdGhpcy5jaGFuZ2VkPSExLHRoaXMuZGF0YT10LHRoaXMudHlwZS50eXBlPTAsdGhpc30sdC5wcm90b3R5cGUuX2Vuc3VyZUhTTD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQuaCxuPXQucyxpPXQubDt2b2lkIDA9PT1lJiYodC5oPXIuZGVmYXVsdC5jaGFubmVsLnJnYjJoc2wodCwiaCIpKSx2b2lkIDA9PT1uJiYodC5zPXIuZGVmYXVsdC5jaGFubmVsLnJnYjJoc2wodCwicyIpKSx2b2lkIDA9PT1pJiYodC5sPXIuZGVmYXVsdC5jaGFubmVsLnJnYjJoc2wodCwibCIpKX0sdC5wcm90b3R5cGUuX2Vuc3VyZVJHQj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQucixuPXQuZyxpPXQuYjt2b2lkIDA9PT1lJiYodC5yPXIuZGVmYXVsdC5jaGFubmVsLmhzbDJyZ2IodCwiciIpKSx2b2lkIDA9PT1uJiYodC5nPXIuZGVmYXVsdC5jaGFubmVsLmhzbDJyZ2IodCwiZyIpKSx2b2lkIDA9PT1pJiYodC5iPXIuZGVmYXVsdC5jaGFubmVsLmhzbDJyZ2IodCwiYiIpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhLGU9dC5yO3JldHVybiB0aGlzLnR5cGUuaXMoMil8fHZvaWQgMD09PWU/KHRoaXMuX2Vuc3VyZUhTTCgpLHIuZGVmYXVsdC5jaGFubmVsLmhzbDJyZ2IodCwiciIpKTplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlLnNldCgxKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLnI9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImciLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10Lmc7cmV0dXJuIHRoaXMudHlwZS5pcygyKXx8dm9pZCAwPT09ZT8odGhpcy5fZW5zdXJlSFNMKCksci5kZWZhdWx0LmNoYW5uZWwuaHNsMnJnYih0LCJnIikpOmV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGUuc2V0KDEpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEuZz10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYiIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQuYjtyZXR1cm4gdGhpcy50eXBlLmlzKDIpfHx2b2lkIDA9PT1lPyh0aGlzLl9lbnN1cmVIU0woKSxyLmRlZmF1bHQuY2hhbm5lbC5oc2wycmdiKHQsImIiKSk6ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZS5zZXQoMSksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5iPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJoIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhLGU9dC5oO3JldHVybiB0aGlzLnR5cGUuaXMoMSl8fHZvaWQgMD09PWU/KHRoaXMuX2Vuc3VyZVJHQigpLHIuZGVmYXVsdC5jaGFubmVsLnJnYjJoc2wodCwiaCIpKTplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlLnNldCgyKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLmg9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10LnM7cmV0dXJuIHRoaXMudHlwZS5pcygxKXx8dm9pZCAwPT09ZT8odGhpcy5fZW5zdXJlUkdCKCksci5kZWZhdWx0LmNoYW5uZWwucmdiMmhzbCh0LCJzIikpOmV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGUuc2V0KDIpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEucz10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibCIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQubDtyZXR1cm4gdGhpcy50eXBlLmlzKDEpfHx2b2lkIDA9PT1lPyh0aGlzLl9lbnN1cmVSR0IoKSxyLmRlZmF1bHQuY2hhbm5lbC5yZ2IyaHNsKHQsImwiKSk6ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZS5zZXQoMiksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5sPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5hfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5hPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKTtlLmRlZmF1bHQ9YX0sODE2NzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uZXcobigxNzczKS5kZWZhdWx0KSh7cjowLGc6MCxiOjAsYTowfSwidHJhbnNwYXJlbnQiKTtlLmRlZmF1bHQ9cn0sNzYyODoodCxlKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy50eXBlPTB9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGV9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0aGlzLnR5cGUmJnRoaXMudHlwZSE9PXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2hhbmdlIGJvdGggUkdCIGFuZCBIU0wgY2hhbm5lbHMgYXQgdGhlIHNhbWUgdGltZSIpO3RoaXMudHlwZT10fSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMudHlwZT0wfSx0LnByb3RvdHlwZS5pcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50eXBlPT09dH0sdH0oKTtlLmRlZmF1bHQ9bn0sMTY1NToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDgxNjcpLGk9big2MDYxKSxhPXtyZTovXiMoKD86W2EtZjAtOV17Mn0pezIsNH18W2EtZjAtOV17M30pJC9pLHBhcnNlOmZ1bmN0aW9uKHQpe2lmKDM1PT09dC5jaGFyQ29kZUF0KDApKXt2YXIgZT10Lm1hdGNoKGEucmUpO2lmKGUpe3ZhciBuPWVbMV0saT1wYXJzZUludChuLDE2KSxvPW4ubGVuZ3RoLHM9byU0PT0wLGM9bz40LHU9Yz8xOjE3LGw9Yz84OjQsaD1zPzA6LTEsZj1jPzI1NToxNTtyZXR1cm4gci5kZWZhdWx0LnNldCh7cjooaT4+bCooaCszKSZmKSp1LGc6KGk+PmwqKGgrMikmZikqdSxiOihpPj5sKihoKzEpJmYpKnUsYTpzPyhpJmYpKnUvMjU1OjF9LHQpfX19LHN0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZT10LnIsbj10Lmcscj10LmIsYT10LmE7cmV0dXJuIGE8MT8iIyIraS5ERUMySEVYW01hdGgucm91bmQoZSldK2kuREVDMkhFWFtNYXRoLnJvdW5kKG4pXStpLkRFQzJIRVhbTWF0aC5yb3VuZChyKV0raS5ERUMySEVYW01hdGgucm91bmQoMjU1KmEpXToiIyIraS5ERUMySEVYW01hdGgucm91bmQoZSldK2kuREVDMkhFWFtNYXRoLnJvdW5kKG4pXStpLkRFQzJIRVhbTWF0aC5yb3VuZChyKV19fTtlLmRlZmF1bHQ9YX0sODU4OToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big4MTY3KSxhPXtyZTovXmhzbGE/XChccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZS0/XGQrKT8oPzpkZWd8Z3JhZHxyYWR8dHVybik/KVxzKj8oPzosfFxzKVxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplLT9cZCspPyUpXHMqPyg/Oix8XHMpXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmUtP1xkKyk/JSkoPzpccyo/KD86LHxcLylccyo/XCs/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZS0/XGQrKT8oJSk/KSk/XHMqP1wpJC9pLGh1ZVJlOi9eKC4rPykoZGVnfGdyYWR8cmFkfHR1cm4pJC9pLF9odWUyZGVnOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYS5odWVSZSk7aWYoZSl7dmFyIG49ZVsxXTtzd2l0Y2goZVsyXSl7Y2FzZSJncmFkIjpyZXR1cm4gci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuaCguOSpwYXJzZUZsb2F0KG4pKTtjYXNlInJhZCI6cmV0dXJuIHIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmgoMTgwKnBhcnNlRmxvYXQobikvTWF0aC5QSSk7Y2FzZSJ0dXJuIjpyZXR1cm4gci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuaCgzNjAqcGFyc2VGbG9hdChuKSl9fXJldHVybiByLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5oKHBhcnNlRmxvYXQodCkpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10LmNoYXJDb2RlQXQoMCk7aWYoMTA0PT09ZXx8NzI9PT1lKXt2YXIgbj10Lm1hdGNoKGEucmUpO2lmKG4pe3ZhciBvPW5bMV0scz1uWzJdLGM9blszXSx1PW5bNF0sbD1uWzVdO3JldHVybiBpLmRlZmF1bHQuc2V0KHtoOmEuX2h1ZTJkZWcobyksczpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5zKHBhcnNlRmxvYXQocykpLGw6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAubChwYXJzZUZsb2F0KGMpKSxhOnU/ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYShsP3BhcnNlRmxvYXQodSkvMTAwOnBhcnNlRmxvYXQodSkpOjF9LHQpfX19LHN0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZT10Lmgsbj10LnMsaT10LmwsYT10LmE7cmV0dXJuIGE8MT8iaHNsYSgiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGUpKyIsICIrci5kZWZhdWx0Lmxhbmcucm91bmQobikrIiUsICIrci5kZWZhdWx0Lmxhbmcucm91bmQoaSkrIiUsICIrYSsiKSI6ImhzbCgiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGUpKyIsICIrci5kZWZhdWx0Lmxhbmcucm91bmQobikrIiUsICIrci5kZWZhdWx0Lmxhbmcucm91bmQoaSkrIiUpIn19O2UuZGVmYXVsdD1hfSwyMTkxOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTY1NSksaT1uKDc1MzgpLGE9big2NzYyKSxvPW4oODU4OSkscz17Zm9ybWF0OntrZXl3b3JkOmkuZGVmYXVsdCxoZXg6ci5kZWZhdWx0LHJnYjphLmRlZmF1bHQscmdiYTphLmRlZmF1bHQsaHNsOm8uZGVmYXVsdCxoc2xhOm8uZGVmYXVsdH0scGFyc2U6ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB0O3ZhciBlPXIuZGVmYXVsdC5wYXJzZSh0KXx8YS5kZWZhdWx0LnBhcnNlKHQpfHxvLmRlZmF1bHQucGFyc2UodCl8fGkuZGVmYXVsdC5wYXJzZSh0KTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0OiAiJyt0KyciJyl9LHN0cmluZ2lmeTpmdW5jdGlvbih0KXtyZXR1cm4hdC5jaGFuZ2VkJiZ0LmNvbG9yP3QuY29sb3I6dC50eXBlLmlzKDIpfHx2b2lkIDA9PT10LmRhdGEucj9vLmRlZmF1bHQuc3RyaW5naWZ5KHQpOnQuYTwxfHwhTnVtYmVyLmlzSW50ZWdlcih0LnIpfHwhTnVtYmVyLmlzSW50ZWdlcih0LmcpfHwhTnVtYmVyLmlzSW50ZWdlcih0LmIpP2EuZGVmYXVsdC5zdHJpbmdpZnkodCk6ci5kZWZhdWx0LnN0cmluZ2lmeSh0KX19O2UuZGVmYXVsdD1zfSw3NTM4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTY1NSksaT17Y29sb3JzOnthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW5hcXVhOiIjMDBmZmZmIixkYXJrYmx1ZToiIzAwMDA4YiIsZGFya2N5YW46IiMwMDhiOGIiLGRhcmtnb2xkZW5yb2Q6IiNiODg2MGIiLGRhcmtncmF5OiIjYTlhOWE5IixkYXJrZ3JlZW46IiMwMDY0MDAiLGRhcmtncmV5OiIjYTlhOWE5IixkYXJra2hha2k6IiNiZGI3NmIiLGRhcmttYWdlbnRhOiIjOGIwMDhiIixkYXJrb2xpdmVncmVlbjoiIzU1NmIyZiIsZGFya29yYW5nZToiI2ZmOGMwMCIsZGFya29yY2hpZDoiIzk5MzJjYyIsZGFya3JlZDoiIzhiMDAwMCIsZGFya3NhbG1vbjoiI2U5OTY3YSIsZGFya3NlYWdyZWVuOiIjOGZiYzhmIixkYXJrc2xhdGVibHVlOiIjNDgzZDhiIixkYXJrc2xhdGVncmF5OiIjMmY0ZjRmIixkYXJrc2xhdGVncmV5OiIjMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIjMDBjZWQxIixkYXJrdmlvbGV0OiIjOTQwMGQzIixkZWVwcGluazoiI2ZmMTQ5MyIsZGVlcHNreWJsdWU6IiMwMGJmZmYiLGRpbWdyYXk6IiM2OTY5NjkiLGRpbWdyZXk6IiM2OTY5NjkiLGRvZGdlcmJsdWU6IiMxZTkwZmYiLGZpcmVicmljazoiI2IyMjIyMiIsZmxvcmFsd2hpdGU6IiNmZmZhZjAiLGZvcmVzdGdyZWVuOiIjMjI4YjIyIixmdWNoc2lhOiIjZmYwMGZmIixnYWluc2Jvcm86IiNkY2RjZGMiLGdob3N0d2hpdGU6IiNmOGY4ZmYiLGdvbGQ6IiNmZmQ3MDAiLGdvbGRlbnJvZDoiI2RhYTUyMCIsZ3JheToiIzgwODA4MCIsZ3JlZW46IiMwMDgwMDAiLGdyZWVueWVsbG93OiIjYWRmZjJmIixncmV5OiIjODA4MDgwIixob25leWRldzoiI2YwZmZmMCIsaG90cGluazoiI2ZmNjliNCIsaW5kaWFucmVkOiIjY2Q1YzVjIixpbmRpZ286IiM0YjAwODIiLGl2b3J5OiIjZmZmZmYwIixraGFraToiI2YwZTY4YyIsbGF2ZW5kZXI6IiNlNmU2ZmEiLGxhdmVuZGVyYmx1c2g6IiNmZmYwZjUiLGxhd25ncmVlbjoiIzdjZmMwMCIsbGVtb25jaGlmZm9uOiIjZmZmYWNkIixsaWdodGJsdWU6IiNhZGQ4ZTYiLGxpZ2h0Y29yYWw6IiNmMDgwODAiLGxpZ2h0Y3lhbjoiI2UwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IiNmYWZhZDIiLGxpZ2h0Z3JheToiI2QzZDNkMyIsbGlnaHRncmVlbjoiIzkwZWU5MCIsbGlnaHRncmV5OiIjZDNkM2QzIixsaWdodHBpbms6IiNmZmI2YzEiLGxpZ2h0c2FsbW9uOiIjZmZhMDdhIixsaWdodHNlYWdyZWVuOiIjMjBiMmFhIixsaWdodHNreWJsdWU6IiM4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiIjNzc4ODk5IixsaWdodHNsYXRlZ3JleToiIzc3ODg5OSIsbGlnaHRzdGVlbGJsdWU6IiNiMGM0ZGUiLGxpZ2h0eWVsbG93OiIjZmZmZmUwIixsaW1lOiIjMDBmZjAwIixsaW1lZ3JlZW46IiMzMmNkMzIiLGxpbmVuOiIjZmFmMGU2IixtYWdlbnRhOiIjZmYwMGZmIixtYXJvb246IiM4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IiM2NmNkYWEiLG1lZGl1bWJsdWU6IiMwMDAwY2QiLG1lZGl1bW9yY2hpZDoiI2JhNTVkMyIsbWVkaXVtcHVycGxlOiIjOTM3MGRiIixtZWRpdW1zZWFncmVlbjoiIzNjYjM3MSIsbWVkaXVtc2xhdGVibHVlOiIjN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiIzAwZmE5YSIsbWVkaXVtdHVycXVvaXNlOiIjNDhkMWNjIixtZWRpdW12aW9sZXRyZWQ6IiNjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiIzE5MTk3MCIsbWludGNyZWFtOiIjZjVmZmZhIixtaXN0eXJvc2U6IiNmZmU0ZTEiLG1vY2Nhc2luOiIjZmZlNGI1IixuYXZham93aGl0ZToiI2ZmZGVhZCIsbmF2eToiIzAwMDA4MCIsb2xkbGFjZToiI2ZkZjVlNiIsb2xpdmU6IiM4MDgwMDAiLG9saXZlZHJhYjoiIzZiOGUyMyIsb3JhbmdlOiIjZmZhNTAwIixvcmFuZ2VyZWQ6IiNmZjQ1MDAiLG9yY2hpZDoiI2RhNzBkNiIscGFsZWdvbGRlbnJvZDoiI2VlZThhYSIscGFsZWdyZWVuOiIjOThmYjk4IixwYWxldHVycXVvaXNlOiIjYWZlZWVlIixwYWxldmlvbGV0cmVkOiIjZGI3MDkzIixwYXBheWF3aGlwOiIjZmZlZmQ1IixwZWFjaHB1ZmY6IiNmZmRhYjkiLHBlcnU6IiNjZDg1M2YiLHBpbms6IiNmZmMwY2IiLHBsdW06IiNkZGEwZGQiLHBvd2RlcmJsdWU6IiNiMGUwZTYiLHB1cnBsZToiIzgwMDA4MCIscmViZWNjYXB1cnBsZToiIzY2MzM5OSIscmVkOiIjZmYwMDAwIixyb3N5YnJvd246IiNiYzhmOGYiLHJveWFsYmx1ZToiIzQxNjllMSIsc2FkZGxlYnJvd246IiM4YjQ1MTMiLHNhbG1vbjoiI2ZhODA3MiIsc2FuZHlicm93bjoiI2Y0YTQ2MCIsc2VhZ3JlZW46IiMyZThiNTciLHNlYXNoZWxsOiIjZmZmNWVlIixzaWVubmE6IiNhMDUyMmQiLHNpbHZlcjoiI2MwYzBjMCIsc2t5Ymx1ZToiIzg3Y2VlYiIsc2xhdGVibHVlOiIjNmE1YWNkIixzbGF0ZWdyYXk6IiM3MDgwOTAiLHNsYXRlZ3JleToiIzcwODA5MCIsc25vdzoiI2ZmZmFmYSIsc3ByaW5nZ3JlZW46IiMwMGZmN2YiLHRhbjoiI2QyYjQ4YyIsdGVhbDoiIzAwODA4MCIsdGhpc3RsZToiI2Q4YmZkOCIsdHJhbnNwYXJlbnQ6IiMwMDAwMDAwMCIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9LHBhcnNlOmZ1bmN0aW9uKHQpe3Q9dC50b0xvd2VyQ2FzZSgpO3ZhciBlPWkuY29sb3JzW3RdO2lmKGUpcmV0dXJuIHIuZGVmYXVsdC5wYXJzZShlKX0sc3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPXIuZGVmYXVsdC5zdHJpbmdpZnkodCk7Zm9yKHZhciBuIGluIGkuY29sb3JzKWlmKGkuY29sb3JzW25dPT09ZSlyZXR1cm4gbn19O2UuZGVmYXVsdD1pfSw2NzYyOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTA4MyksaT1uKDgxNjcpLGE9e3JlOi9ecmdiYT9cKFxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplXGQrKT8oJT8pKVxzKj8oPzosfFxzKVxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplXGQrKT8oJT8pKVxzKj8oPzosfFxzKVxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplXGQrKT8oJT8pKSg/OlxzKj8oPzosfFwvKVxzKj9cKz8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplXGQrKT8oJT8pKSk/XHMqP1wpJC9pLHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hhckNvZGVBdCgwKTtpZigxMTQ9PT1lfHw4Mj09PWUpe3ZhciBuPXQubWF0Y2goYS5yZSk7aWYobil7dmFyIG89blsxXSxzPW5bMl0sYz1uWzNdLHU9bls0XSxsPW5bNV0saD1uWzZdLGY9bls3XSxkPW5bOF07cmV0dXJuIGkuZGVmYXVsdC5zZXQoe3I6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAucihzPzIuNTUqcGFyc2VGbG9hdChvKTpwYXJzZUZsb2F0KG8pKSxnOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmcodT8yLjU1KnBhcnNlRmxvYXQoYyk6cGFyc2VGbG9hdChjKSksYjpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5iKGg/Mi41NSpwYXJzZUZsb2F0KGwpOnBhcnNlRmxvYXQobCkpLGE6Zj9yLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5hKGQ/cGFyc2VGbG9hdChmKS8xMDA6cGFyc2VGbG9hdChmKSk6MX0sdCl9fX0sc3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPXQucixuPXQuZyxpPXQuYixhPXQuYTtyZXR1cm4gYTwxPyJyZ2JhKCIrci5kZWZhdWx0Lmxhbmcucm91bmQoZSkrIiwgIityLmRlZmF1bHQubGFuZy5yb3VuZChuKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGkpKyIsICIrci5kZWZhdWx0Lmxhbmcucm91bmQoYSkrIikiOiJyZ2IoIityLmRlZmF1bHQubGFuZy5yb3VuZChlKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKG4pKyIsICIrci5kZWZhdWx0Lmxhbmcucm91bmQoaSkrIikifX07ZS5kZWZhdWx0PWF9LDYwNjE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPXt9O2UuREVDMkhFWD1pO2Zvcih2YXIgYT0wO2E8PTI1NTthKyspaVthXT1yLmRlZmF1bHQudW5pdC5kZWMyaGV4KGEpfSw4NjEzOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfShuKDEyMDMpKX0sNTM3MToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpLGk9big0MTgpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3ZhciBuPXIuZGVmYXVsdC5wYXJzZSh0KSxhPXt9O2Zvcih2YXIgbyBpbiBlKWVbb10mJihhW29dPW5bb10rZVtvXSk7cmV0dXJuIGkuZGVmYXVsdCh0LGEpfX0sMTQxNjoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9bigyMTkxKTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPWkuZGVmYXVsdC5wYXJzZSh0KSxvPWFbZV0scz1yLmRlZmF1bHQuY2hhbm5lbC5jbGFtcFtlXShvK24pO3JldHVybiBvIT09cyYmKGFbZV09cyksaS5kZWZhdWx0LnN0cmluZ2lmeShhKX19LDkzNTM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big2MTk3KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdCh0LCJhIil9fSwzMzk0Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiYiIpfX0sNDE4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTA4MyksaT1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3ZhciBuPWkuZGVmYXVsdC5wYXJzZSh0KTtmb3IodmFyIGEgaW4gZSluW2FdPXIuZGVmYXVsdC5jaGFubmVsLmNsYW1wW2FdKGVbYV0pO3JldHVybiBpLmRlZmF1bHQuc3RyaW5naWZ5KG4pfX0sNjE5NzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9bigyMTkxKTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0Lmxhbmcucm91bmQoaS5kZWZhdWx0LnBhcnNlKHQpW2VdKX19LDczNjE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdCh0LCJoIiwxODApfX0sMzA0MjoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big4MzQ2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1pLmRlZmF1bHQodCksYT1pLmRlZmF1bHQoZSksbz1NYXRoLm1heChuLGEpLHM9TWF0aC5taW4obixhKSxjPShvK051bWJlci5FUFNJTE9OKS8ocytOdW1iZXIuRVBTSUxPTik7cmV0dXJuIHIuZGVmYXVsdC5sYW5nLnJvdW5kKHIuZGVmYXVsdC5sYW5nLmNsYW1wKGMsMSwxMCkpfX0sMTM2NDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE0MTYpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiByLmRlZmF1bHQodCwibCIsLWUpfX0sOTYxMDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE0MTYpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiByLmRlZmF1bHQodCwicyIsLWUpfX0sNTcyOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNDE4KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdCh0LHtzOjB9KX19LDIyOTk6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big2MTk3KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdCh0LCJnIil9fSwzMTE2Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTA4MyksaT1uKDgxNjcpLGE9bigyMTkxKTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlLG4sbyl7dm9pZCAwPT09byYmKG89MSk7dmFyIHM9aS5kZWZhdWx0LnNldCh7aDpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5oKHQpLHM6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAucyhlKSxsOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmwobiksYTpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5hKG8pfSk7cmV0dXJuIGEuZGVmYXVsdC5zdHJpbmdpZnkocyl9fSwzMDA4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiaCIpfX0sMTIwMzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1MzgpO2UuaGV4PXIuZGVmYXVsdDt2YXIgaT1uKDY1MzgpO2UucmdiPWkuZGVmYXVsdDt2YXIgYT1uKDY1MzgpO2UucmdiYT1hLmRlZmF1bHQ7dmFyIG89bigzMTE2KTtlLmhzbD1vLmRlZmF1bHQ7dmFyIHM9bigzMTE2KTtlLmhzbGE9cy5kZWZhdWx0O3ZhciBjPW4oMjYxOSk7ZS50b0tleXdvcmQ9Yy5kZWZhdWx0O3ZhciB1PW4oNDMwNyk7ZS50b0hleD11LmRlZmF1bHQ7dmFyIGw9big0MTI1KTtlLnRvUmdiYT1sLmRlZmF1bHQ7dmFyIGg9big3MzI5KTtlLnRvSHNsYT1oLmRlZmF1bHQ7dmFyIGY9big2MTk3KTtlLmNoYW5uZWw9Zi5kZWZhdWx0O3ZhciBkPW4oOTY0MCk7ZS5yZWQ9ZC5kZWZhdWx0O3ZhciBwPW4oMjI5OSk7ZS5ncmVlbj1wLmRlZmF1bHQ7dmFyIHk9bigzMzk0KTtlLmJsdWU9eS5kZWZhdWx0O3ZhciBnPW4oMzAwOCk7ZS5odWU9Zy5kZWZhdWx0O3ZhciBtPW4oNjQ1MSk7ZS5zYXR1cmF0aW9uPW0uZGVmYXVsdDt2YXIgdj1uKDkyMzUpO2UubGlnaHRuZXNzPXYuZGVmYXVsdDt2YXIgYj1uKDkzNTMpO2UuYWxwaGE9Yi5kZWZhdWx0O3ZhciBfPW4oOTM1Myk7ZS5vcGFjaXR5PV8uZGVmYXVsdDt2YXIgeD1uKDMwNDIpO2UuY29udHJhc3Q9eC5kZWZhdWx0O3ZhciB3PW4oODM0Nik7ZS5sdW1pbmFuY2U9dy5kZWZhdWx0O3ZhciBrPW4oNDExNyk7ZS5pc0Rhcms9ay5kZWZhdWx0O3ZhciBUPW4oMjIyNCk7ZS5pc0xpZ2h0PVQuZGVmYXVsdDt2YXIgRT1uKDU4NSk7ZS5pc1ZhbGlkPUUuZGVmYXVsdDt2YXIgQz1uKDEwODApO2Uuc2F0dXJhdGU9Qy5kZWZhdWx0O3ZhciBTPW4oOTYxMCk7ZS5kZXNhdHVyYXRlPVMuZGVmYXVsdDt2YXIgQT1uKDMyMzUpO2UubGlnaHRlbj1BLmRlZmF1bHQ7dmFyIE09bigxMzY0KTtlLmRhcmtlbj1NLmRlZmF1bHQ7dmFyIE49big3MTg5KTtlLm9wYWNpZnk9Ti5kZWZhdWx0O3ZhciBEPW4oNzE4OSk7ZS5mYWRlSW49RC5kZWZhdWx0O3ZhciBPPW4oNDk4OSk7ZS50cmFuc3BhcmVudGl6ZT1PLmRlZmF1bHQ7dmFyIEI9big0OTg5KTtlLmZhZGVPdXQ9Qi5kZWZhdWx0O3ZhciBMPW4oNzM2MSk7ZS5jb21wbGVtZW50PUwuZGVmYXVsdDt2YXIgST1uKDU3Mik7ZS5ncmF5c2NhbGU9SS5kZWZhdWx0O3ZhciBSPW4oNTM3MSk7ZS5hZGp1c3Q9Ui5kZWZhdWx0O3ZhciBGPW4oNDE4KTtlLmNoYW5nZT1GLmRlZmF1bHQ7dmFyIFA9big1NjYpO2UuaW52ZXJ0PVAuZGVmYXVsdDt2YXIgaj1uKDE4NjEpO2UubWl4PWouZGVmYXVsdDt2YXIgWT1uKDcwODEpO2Uuc2NhbGU9WS5kZWZhdWx0fSw1NjY6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigyMTkxKSxpPW4oMTg2MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9MTAwKTt2YXIgbj1yLmRlZmF1bHQucGFyc2UodCk7cmV0dXJuIG4ucj0yNTUtbi5yLG4uZz0yNTUtbi5nLG4uYj0yNTUtbi5iLGkuZGVmYXVsdChuLHQsZSl9fSw0MTE3Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjIyNCk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiFyLmRlZmF1bHQodCl9fSwyMjI0Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oODM0Nik7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCk+PS41fX0sNTg1Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gci5kZWZhdWx0LnBhcnNlKHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX19LDMyMzU6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0KHQsImwiLGUpfX0sOTIzNToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDYxOTcpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQsImwiKX19LDgzNDY6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3ZhciBlPWkuZGVmYXVsdC5wYXJzZSh0KSxuPWUucixhPWUuZyxvPWUuYixzPS4yMTI2KnIuZGVmYXVsdC5jaGFubmVsLnRvTGluZWFyKG4pKy43MTUyKnIuZGVmYXVsdC5jaGFubmVsLnRvTGluZWFyKGEpKy4wNzIyKnIuZGVmYXVsdC5jaGFubmVsLnRvTGluZWFyKG8pO3JldHVybiByLmRlZmF1bHQubGFuZy5yb3VuZChzKX19LDE4NjE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigyMTkxKSxpPW4oNjUzOCk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj01MCk7dmFyIGE9ci5kZWZhdWx0LnBhcnNlKHQpLG89YS5yLHM9YS5nLGM9YS5iLHU9YS5hLGw9ci5kZWZhdWx0LnBhcnNlKGUpLGg9bC5yLGY9bC5nLGQ9bC5iLHA9bC5hLHk9bi8xMDAsZz0yKnktMSxtPXUtcCx2PSgoZyptPT0tMT9nOihnK20pLygxK2cqbSkpKzEpLzIsYj0xLXYsXz1vKnYraCpiLHg9cyp2K2YqYix3PWMqditkKmIsaz11KnkrcCooMS15KTtyZXR1cm4gaS5kZWZhdWx0KF8seCx3LGspfX0sNzE4OToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE0MTYpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiByLmRlZmF1bHQodCwiYSIsZSl9fSw5NjQwOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiciIpfX0sNjUzODoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big4MTY3KSxhPW4oMjE5MSksbz1uKDQxOCk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSxuLHMpe2lmKHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PXMmJihzPTEpLCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gby5kZWZhdWx0KHQse2E6ZX0pO3ZhciBjPWkuZGVmYXVsdC5zZXQoe3I6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAucih0KSxnOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmcoZSksYjpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5iKG4pLGE6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYShzKX0pO3JldHVybiBhLmRlZmF1bHQuc3RyaW5naWZ5KGMpfX0sMTA4MDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE0MTYpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiByLmRlZmF1bHQodCwicyIsZSl9fSw2NDUxOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwicyIpfX0sNzA4MToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9bigyMTkxKSxhPW4oNTM3MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7dmFyIG4sbyxzLGM9aS5kZWZhdWx0LnBhcnNlKHQpLHU9e307Zm9yKHZhciBsIGluIGUpdVtsXT0obj1jW2xdLG89ZVtsXSxzPXIuZGVmYXVsdC5jaGFubmVsLm1heFtsXSxvPjA/KHMtbikqby8xMDA6bipvLzEwMCk7cmV0dXJuIGEuZGVmYXVsdCh0LHUpfX0sNDMwNzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0LmZvcm1hdC5oZXguc3RyaW5naWZ5KHIuZGVmYXVsdC5wYXJzZSh0KSl9fSw3MzI5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQuZm9ybWF0LmhzbGEuc3RyaW5naWZ5KHIuZGVmYXVsdC5wYXJzZSh0KSl9fSwyNjE5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQuZm9ybWF0LmtleXdvcmQuc3RyaW5naWZ5KHIuZGVmYXVsdC5wYXJzZSh0KSl9fSw0MTI1Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQuZm9ybWF0LnJnYmEuc3RyaW5naWZ5KHIuZGVmYXVsdC5wYXJzZSh0KSl9fSw0OTg5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTQxNik7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGVmYXVsdCh0LCJhIiwtZSl9fSw3OTk0Oih0LGUpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj17bWluOntyOjAsZzowLGI6MCxzOjAsbDowLGE6MH0sbWF4OntyOjI1NSxnOjI1NSxiOjI1NSxoOjM2MCxzOjEwMCxsOjEwMCxhOjF9LGNsYW1wOntyOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0yNTU/MjU1OnQ8MD8wOnR9LGc6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTI1NT8yNTU6dDwwPzA6dH0sYjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MjU1PzI1NTp0PDA/MDp0fSxoOmZ1bmN0aW9uKHQpe3JldHVybiB0JTM2MH0sczpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTAwPzEwMDp0PDA/MDp0fSxsOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMDA/MTAwOnQ8MD8wOnR9LGE6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTE/MTp0PDA/MDp0fX0sdG9MaW5lYXI6ZnVuY3Rpb24odCl7dmFyIGU9dC8yNTU7cmV0dXJuIHQ+LjAzOTI4P01hdGgucG93KChlKy4wNTUpLzEuMDU1LDIuNCk6ZS8xMi45Mn0saHVlMnJnYjpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P3QrNiooZS10KSpuOm48LjU/ZTpuPDIvMz90KyhlLXQpKigyLzMtbikqNjp0fSxoc2wycmdiOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5oLGk9dC5zLGE9dC5sO2lmKCFpKXJldHVybiAyLjU1KmE7ci89MzYwLGkvPTEwMDt2YXIgbz0oYS89MTAwKTwuNT9hKigxK2kpOmEraS1hKmkscz0yKmEtbztzd2l0Y2goZSl7Y2FzZSJyIjpyZXR1cm4gMjU1Km4uaHVlMnJnYihzLG8scisxLzMpO2Nhc2UiZyI6cmV0dXJuIDI1NSpuLmh1ZTJyZ2IocyxvLHIpO2Nhc2UiYiI6cmV0dXJuIDI1NSpuLmh1ZTJyZ2IocyxvLHItMS8zKX19LHJnYjJoc2w6ZnVuY3Rpb24odCxlKXt2YXIgbj10LnIscj10LmcsaT10LmI7bi89MjU1LHIvPTI1NSxpLz0yNTU7dmFyIGE9TWF0aC5tYXgobixyLGkpLG89TWF0aC5taW4obixyLGkpLHM9KGErbykvMjtpZigibCI9PT1lKXJldHVybiAxMDAqcztpZihhPT09bylyZXR1cm4gMDt2YXIgYz1hLW87aWYoInMiPT09ZSlyZXR1cm4gMTAwKihzPi41P2MvKDItYS1vKTpjLyhhK28pKTtzd2l0Y2goYSl7Y2FzZSBuOnJldHVybiA2MCooKHItaSkvYysocjxpPzY6MCkpO2Nhc2UgcjpyZXR1cm4gNjAqKChpLW4pL2MrMik7Y2FzZSBpOnJldHVybiA2MCooKG4tcikvYys0KTtkZWZhdWx0OnJldHVybi0xfX19O2UuZGVmYXVsdD1ufSwxMDgzOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNzk5NCksaT1uKDQwMjcpLGE9bigzMTgpLG89e2NoYW5uZWw6ci5kZWZhdWx0LGxhbmc6aS5kZWZhdWx0LHVuaXQ6YS5kZWZhdWx0fTtlLmRlZmF1bHQ9b30sNDAyNzoodCxlKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49e2NsYW1wOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT5uP01hdGgubWluKGUsTWF0aC5tYXgobix0KSk6TWF0aC5taW4obixNYXRoLm1heChlLHQpKX0scm91bmQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQoMWUxMCp0KS8xZTEwfX07ZS5kZWZhdWx0PW59LDMxODoodCxlKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49e2RlYzJoZXg6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5yb3VuZCh0KS50b1N0cmluZygxNik7cmV0dXJuIGUubGVuZ3RoPjE/ZToiMCIrZX19O2UuZGVmYXVsdD1ufSw4NTUyOih0LGUsbik9Pnt2YXIgcj1uKDg1Mikobig1NjM5KSwiRGF0YVZpZXciKTt0LmV4cG9ydHM9cn0sMTk4OToodCxlLG4pPT57dmFyIHI9bigxNzg5KSxpPW4oNDAxKSxhPW4oNzY2Nyksbz1uKDEzMjcpLHM9bigxODY2KTtmdW5jdGlvbiBjKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgcj10W2VdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWMucHJvdG90eXBlLmNsZWFyPXIsYy5wcm90b3R5cGUuZGVsZXRlPWksYy5wcm90b3R5cGUuZ2V0PWEsYy5wcm90b3R5cGUuaGFzPW8sYy5wcm90b3R5cGUuc2V0PXMsdC5leHBvcnRzPWN9LDg0MDc6KHQsZSxuKT0+e3ZhciByPW4oNzA0MCksaT1uKDEzNjIpLGE9bigyMTE3KSxvPW4oNzUxOCkscz1uKDQ3MDUpO2Z1bmN0aW9uIGModCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciByPXRbZV07dGhpcy5zZXQoclswXSxyWzFdKX19Yy5wcm90b3R5cGUuY2xlYXI9cixjLnByb3RvdHlwZS5kZWxldGU9aSxjLnByb3RvdHlwZS5nZXQ9YSxjLnByb3RvdHlwZS5oYXM9byxjLnByb3RvdHlwZS5zZXQ9cyx0LmV4cG9ydHM9Y30sNzA3MToodCxlLG4pPT57dmFyIHI9big4NTIpKG4oNTYzOSksIk1hcCIpO3QuZXhwb3J0cz1yfSwzMzY5Oih0LGUsbik9Pnt2YXIgcj1uKDQ3ODUpLGk9bigxMjg1KSxhPW4oNmUzKSxvPW4oOTkxNikscz1uKDUyNjUpO2Z1bmN0aW9uIGModCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciByPXRbZV07dGhpcy5zZXQoclswXSxyWzFdKX19Yy5wcm90b3R5cGUuY2xlYXI9cixjLnByb3RvdHlwZS5kZWxldGU9aSxjLnByb3RvdHlwZS5nZXQ9YSxjLnByb3RvdHlwZS5oYXM9byxjLnByb3RvdHlwZS5zZXQ9cyx0LmV4cG9ydHM9Y30sMzgxODoodCxlLG4pPT57dmFyIHI9big4NTIpKG4oNTYzOSksIlByb21pc2UiKTt0LmV4cG9ydHM9cn0sODUyNToodCxlLG4pPT57dmFyIHI9big4NTIpKG4oNTYzOSksIlNldCIpO3QuZXhwb3J0cz1yfSw4NjY4Oih0LGUsbik9Pnt2YXIgcj1uKDMzNjkpLGk9big2MTkpLGE9bigyMzg1KTtmdW5jdGlvbiBvKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyByOysrZTxuOyl0aGlzLmFkZCh0W2VdKX1vLnByb3RvdHlwZS5hZGQ9by5wcm90b3R5cGUucHVzaD1pLG8ucHJvdG90eXBlLmhhcz1hLHQuZXhwb3J0cz1vfSw2Mzg0Oih0LGUsbik9Pnt2YXIgcj1uKDg0MDcpLGk9big3NDY1KSxhPW4oMzc3OSksbz1uKDc1OTkpLHM9big0NzU4KSxjPW4oNDMwOSk7ZnVuY3Rpb24gdSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyByKHQpO3RoaXMuc2l6ZT1lLnNpemV9dS5wcm90b3R5cGUuY2xlYXI9aSx1LnByb3RvdHlwZS5kZWxldGU9YSx1LnByb3RvdHlwZS5nZXQ9byx1LnByb3RvdHlwZS5oYXM9cyx1LnByb3RvdHlwZS5zZXQ9Yyx0LmV4cG9ydHM9dX0sMjcwNToodCxlLG4pPT57dmFyIHI9big1NjM5KS5TeW1ib2w7dC5leHBvcnRzPXJ9LDExNDk6KHQsZSxuKT0+e3ZhciByPW4oNTYzOSkuVWludDhBcnJheTt0LmV4cG9ydHM9cn0sNTc3Oih0LGUsbik9Pnt2YXIgcj1uKDg1Mikobig1NjM5KSwiV2Vha01hcCIpO3QuZXhwb3J0cz1yfSw2ODc0OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX19LDc0MTI6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248ciYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fX0sNDk2Mzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoLGk9MCxhPVtdOysrbjxyOyl7dmFyIG89dFtuXTtlKG8sbix0KSYmKGFbaSsrXT1vKX1yZXR1cm4gYX19LDc0NDM6KHQsZSxuKT0+e3ZhciByPW4oMjExOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIShudWxsPT10fHwhdC5sZW5ndGgpJiZyKHQsZSwwKT4tMX19LDExOTY6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrcjxpOylpZihuKGUsdFtyXSkpcmV0dXJuITA7cmV0dXJuITF9fSw0NjM2Oih0LGUsbik9Pnt2YXIgcj1uKDI1NDUpLGk9big1Njk0KSxhPW4oMTQ2OSksbz1uKDQxNDQpLHM9big1Nzc2KSxjPW4oNjcxOSksdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWEodCksbD0hbiYmaSh0KSxoPSFuJiYhbCYmbyh0KSxmPSFuJiYhbCYmIWgmJmModCksZD1ufHxsfHxofHxmLHA9ZD9yKHQubGVuZ3RoLFN0cmluZyk6W10seT1wLmxlbmd0aDtmb3IodmFyIGcgaW4gdCkhZSYmIXUuY2FsbCh0LGcpfHxkJiYoImxlbmd0aCI9PWd8fGgmJigib2Zmc2V0Ij09Z3x8InBhcmVudCI9PWcpfHxmJiYoImJ1ZmZlciI9PWd8fCJieXRlTGVuZ3RoIj09Z3x8ImJ5dGVPZmZzZXQiPT1nKXx8cyhnLHkpKXx8cC5wdXNoKGcpO3JldHVybiBwfX0sOTkzMjp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkocik7KytuPHI7KWlbbl09ZSh0W25dLG4sdCk7cmV0dXJuIGl9fSwyNDg4OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49LTEscj1lLmxlbmd0aCxpPXQubGVuZ3RoOysrbjxyOyl0W2krbl09ZVtuXTtyZXR1cm4gdH19LDI2NjM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT0tMSxhPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IociYmYSYmKG49dFsrK2ldKTsrK2k8YTspbj1lKG4sdFtpXSxpLHQpO3JldHVybiBufX0sMjkwODp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxyOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX19LDg5ODM6KHQsZSxuKT0+e3ZhciByPW4oMzcxKSgibGVuZ3RoIik7dC5leHBvcnRzPXJ9LDY1NTY6KHQsZSxuKT0+e3ZhciByPW4oOTQ2NSksaT1uKDc4MTMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7KHZvaWQgMCE9PW4mJiFpKHRbZV0sbil8fHZvaWQgMD09PW4mJiEoZSBpbiB0KSkmJnIodCxlLG4pfX0sNDg2NToodCxlLG4pPT57dmFyIHI9big5NDY1KSxpPW4oNzgxMyksYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIG89dFtlXTthLmNhbGwodCxlKSYmaShvLG4pJiYodm9pZCAwIT09bnx8ZSBpbiB0KXx8cih0LGUsbil9fSw4NDcwOih0LGUsbik9Pnt2YXIgcj1uKDc4MTMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS07KWlmKHIodFtuXVswXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX19LDQwMzc6KHQsZSxuKT0+e3ZhciByPW4oODM2MyksaT1uKDM2NzQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZyKGUsaShlKSx0KX19LDM4ODY6KHQsZSxuKT0+e3ZhciByPW4oODM2MyksaT1uKDE3MDQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZyKGUsaShlKSx0KX19LDk0NjU6KHQsZSxuKT0+e3ZhciByPW4oODc3Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXsiX19wcm90b19fIj09ZSYmcj9yKHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn19LDU5OTA6KHQsZSxuKT0+e3ZhciByPW4oNjM4NCksaT1uKDc0MTIpLGE9big0ODY1KSxvPW4oNDAzNykscz1uKDM4ODYpLGM9big0NjI2KSx1PW4oMjc4KSxsPW4oODgwNSksaD1uKDE5MTEpLGY9big4MjM0KSxkPW4oNjkwNCkscD1uKDQxNjApLHk9bigzODI0KSxnPW4oOTE0OCksbT1uKDg1MTcpLHY9bigxNDY5KSxiPW4oNDE0NCksXz1uKDY2ODgpLHg9bigzMjE4KSx3PW4oMjkyOCksaz1uKDM2NzQpLFQ9bigxNzA0KSxFPSJbb2JqZWN0IEFyZ3VtZW50c10iLEM9IltvYmplY3QgRnVuY3Rpb25dIixTPSJbb2JqZWN0IE9iamVjdF0iLEE9e307QVtFXT1BWyJbb2JqZWN0IEFycmF5XSJdPUFbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09QVsiW29iamVjdCBEYXRhVmlld10iXT1BWyJbb2JqZWN0IEJvb2xlYW5dIl09QVsiW29iamVjdCBEYXRlXSJdPUFbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUFbIltvYmplY3QgSW50OEFycmF5XSJdPUFbIltvYmplY3QgSW50MTZBcnJheV0iXT1BWyJbb2JqZWN0IEludDMyQXJyYXldIl09QVsiW29iamVjdCBNYXBdIl09QVsiW29iamVjdCBOdW1iZXJdIl09QVtTXT1BWyJbb2JqZWN0IFJlZ0V4cF0iXT1BWyJbb2JqZWN0IFNldF0iXT1BWyJbb2JqZWN0IFN0cmluZ10iXT1BWyJbb2JqZWN0IFN5bWJvbF0iXT1BWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09QVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1BWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPUFbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsQVsiW29iamVjdCBFcnJvcl0iXT1BW0NdPUFbIltvYmplY3QgV2Vha01hcF0iXT0hMSx0LmV4cG9ydHM9ZnVuY3Rpb24gdChlLG4sTSxOLEQsTyl7dmFyIEIsTD0xJm4sST0yJm4sUj00Jm47aWYoTSYmKEI9RD9NKGUsTixELE8pOk0oZSkpLHZvaWQgMCE9PUIpcmV0dXJuIEI7aWYoIXgoZSkpcmV0dXJuIGU7dmFyIEY9dihlKTtpZihGKXtpZihCPXkoZSksIUwpcmV0dXJuIHUoZSxCKX1lbHNle3ZhciBQPXAoZSksaj1QPT1DfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1QO2lmKGIoZSkpcmV0dXJuIGMoZSxMKTtpZihQPT1TfHxQPT1FfHxqJiYhRCl7aWYoQj1JfHxqP3t9Om0oZSksIUwpcmV0dXJuIEk/aChlLHMoQixlKSk6bChlLG8oQixlKSl9ZWxzZXtpZighQVtQXSlyZXR1cm4gRD9lOnt9O0I9ZyhlLFAsTCl9fU98fChPPW5ldyByKTt2YXIgWT1PLmdldChlKTtpZihZKXJldHVybiBZO08uc2V0KGUsQiksdyhlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHIpe0IuYWRkKHQocixuLE0scixlLE8pKX0pKTpfKGUpJiZlLmZvckVhY2goKGZ1bmN0aW9uKHIsaSl7Qi5zZXQoaSx0KHIsbixNLGksZSxPKSl9KSk7dmFyIHo9Rj92b2lkIDA6KFI/ST9kOmY6ST9UOmspKGUpO3JldHVybiBpKHp8fGUsKGZ1bmN0aW9uKHIsaSl7eiYmKHI9ZVtpPXJdKSxhKEIsaSx0KHIsbixNLGksZSxPKSl9KSksQn19LDMxMTg6KHQsZSxuKT0+e3ZhciByPW4oMzIxOCksaT1PYmplY3QuY3JlYXRlLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihlKXtpZighcihlKSlyZXR1cm57fTtpZihpKXJldHVybiBpKGUpO3QucHJvdG90eXBlPWU7dmFyIG49bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPXZvaWQgMCxufX0oKTt0LmV4cG9ydHM9YX0sOTg4MToodCxlLG4pPT57dmFyIHI9big3ODE2KSxpPW4oOTI5MSkocik7dC5leHBvcnRzPWl9LDYwMjk6KHQsZSxuKT0+e3ZhciByPW4oMzQ0OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9LTEsYT10Lmxlbmd0aDsrK2k8YTspe3ZhciBvPXRbaV0scz1lKG8pO2lmKG51bGwhPXMmJih2b2lkIDA9PT1jP3M9PXMmJiFyKHMpOm4ocyxjKSkpdmFyIGM9cyx1PW99cmV0dXJuIHV9fSw3NjA6KHQsZSxuKT0+e3ZhciByPW4oOTg4MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49W107cmV0dXJuIHIodCwoZnVuY3Rpb24odCxyLGkpe2UodCxyLGkpJiZuLnB1c2godCl9KSksbn19LDE4NDg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1uKyhyPzE6LTEpO3I/YS0tOisrYTxpOylpZihlKHRbYV0sYSx0KSlyZXR1cm4gYTtyZXR1cm4tMX19LDEwNzg6KHQsZSxuKT0+e3ZhciByPW4oMjQ4OCksaT1uKDcyODUpO3QuZXhwb3J0cz1mdW5jdGlvbiB0KGUsbixhLG8scyl7dmFyIGM9LTEsdT1lLmxlbmd0aDtmb3IoYXx8KGE9aSksc3x8KHM9W10pOysrYzx1Oyl7dmFyIGw9ZVtjXTtuPjAmJmEobCk/bj4xP3QobCxuLTEsYSxvLHMpOnIocyxsKTpvfHwoc1tzLmxlbmd0aF09bCl9cmV0dXJuIHN9fSw4NDgzOih0LGUsbik9Pnt2YXIgcj1uKDUwNjMpKCk7dC5leHBvcnRzPXJ9LDc4MTY6KHQsZSxuKT0+e3ZhciByPW4oODQ4MyksaT1uKDM2NzQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZyKHQsZSxpKX19LDc3ODY6KHQsZSxuKT0+e3ZhciByPW4oMTgxMSksaT1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAsYT0oZT1yKGUsdCkpLmxlbmd0aDtudWxsIT10JiZuPGE7KXQ9dFtpKGVbbisrXSldO3JldHVybiBuJiZuPT1hP3Q6dm9pZCAwfX0sODg2NjoodCxlLG4pPT57dmFyIHI9bigyNDg4KSxpPW4oMTQ2OSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1lKHQpO3JldHVybiBpKHQpP2E6cihhLG4odCkpfX0sNDIzOToodCxlLG4pPT57dmFyIHI9bigyNzA1KSxpPW4oOTYwNyksYT1uKDIzMzMpLG89cj9yLnRvU3RyaW5nVGFnOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6byYmbyBpbiBPYmplY3QodCk/aSh0KTphKHQpfX0sMzMyNTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ZX19LDg1NjU6dD0+e3ZhciBlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGwhPXQmJmUuY2FsbCh0LG4pfX0sMTM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX19LDIxMTg6KHQsZSxuKT0+e3ZhciByPW4oMTg0OCksaT1uKDI3MjIpLGE9bigyMzUxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlPT1lP2EodCxlLG4pOnIodCxpLG4pfX0sOTQ1NDoodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09cih0KX19LDkzOToodCxlLG4pPT57dmFyIHI9bigyNDkyKSxpPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uIHQoZSxuLGEsbyxzKXtyZXR1cm4gZT09PW58fChudWxsPT1lfHxudWxsPT1ufHwhaShlKSYmIWkobik/ZSE9ZSYmbiE9bjpyKGUsbixhLG8sdCxzKSl9fSwyNDkyOih0LGUsbik9Pnt2YXIgcj1uKDYzODQpLGk9big3MTE0KSxhPW4oODM1MSksbz1uKDYwOTYpLHM9big0MTYwKSxjPW4oMTQ2OSksdT1uKDQxNDQpLGw9big2NzE5KSxoPSJbb2JqZWN0IEFyZ3VtZW50c10iLGY9IltvYmplY3QgQXJyYXldIixkPSJbb2JqZWN0IE9iamVjdF0iLHA9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4seSxnLG0pe3ZhciB2PWModCksYj1jKGUpLF89dj9mOnModCkseD1iP2Y6cyhlKSx3PShfPV89PWg/ZDpfKT09ZCxrPSh4PXg9PWg/ZDp4KT09ZCxUPV89PXg7aWYoVCYmdSh0KSl7aWYoIXUoZSkpcmV0dXJuITE7dj0hMCx3PSExfWlmKFQmJiF3KXJldHVybiBtfHwobT1uZXcgciksdnx8bCh0KT9pKHQsZSxuLHksZyxtKTphKHQsZSxfLG4seSxnLG0pO2lmKCEoMSZuKSl7dmFyIEU9dyYmcC5jYWxsKHQsIl9fd3JhcHBlZF9fIiksQz1rJiZwLmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihFfHxDKXt2YXIgUz1FP3QudmFsdWUoKTp0LEE9Qz9lLnZhbHVlKCk6ZTtyZXR1cm4gbXx8KG09bmV3IHIpLGcoUyxBLG4seSxtKX19cmV0dXJuISFUJiYobXx8KG09bmV3IHIpLG8odCxlLG4seSxnLG0pKX19LDU1ODg6KHQsZSxuKT0+e3ZhciByPW4oNDE2MCksaT1uKDcwMDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KSYmIltvYmplY3QgTWFwXSI9PXIodCl9fSwyOTU4Oih0LGUsbik9Pnt2YXIgcj1uKDYzODQpLGk9big5MzkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixhKXt2YXIgbz1uLmxlbmd0aCxzPW8sYz0hYTtpZihudWxsPT10KXJldHVybiFzO2Zvcih0PU9iamVjdCh0KTtvLS07KXt2YXIgdT1uW29dO2lmKGMmJnVbMl0/dVsxXSE9PXRbdVswXV06ISh1WzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288czspe3ZhciBsPSh1PW5bb10pWzBdLGg9dFtsXSxmPXVbMV07aWYoYyYmdVsyXSl7aWYodm9pZCAwPT09aCYmIShsIGluIHQpKXJldHVybiExfWVsc2V7dmFyIGQ9bmV3IHI7aWYoYSl2YXIgcD1hKGgsZixsLHQsZSxkKTtpZighKHZvaWQgMD09PXA/aShmLGgsMyxhLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH19LDI3MjI6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdCE9dH19LDg0NTg6KHQsZSxuKT0+e3ZhciByPW4oMzU2MCksaT1uKDUzNDYpLGE9bigzMjE4KSxvPW4oMzQ2KSxzPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGM9RnVuY3Rpb24ucHJvdG90eXBlLHU9T2JqZWN0LnByb3RvdHlwZSxsPWMudG9TdHJpbmcsaD11Lmhhc093blByb3BlcnR5LGY9UmVnRXhwKCJeIitsLmNhbGwoaCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEoIWEodCl8fGkodCkpJiYocih0KT9mOnMpLnRlc3Qobyh0KSl9fSw5MjIxOih0LGUsbik9Pnt2YXIgcj1uKDQxNjApLGk9big3MDA1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkmJiJbb2JqZWN0IFNldF0iPT1yKHQpfX0sODc0OToodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oMTc4MCksYT1uKDcwMDUpLG89e307b1siW29iamVjdCBGbG9hdDMyQXJyYXldIl09b1siW29iamVjdCBGbG9hdDY0QXJyYXldIl09b1siW29iamVjdCBJbnQ4QXJyYXldIl09b1siW29iamVjdCBJbnQxNkFycmF5XSJdPW9bIltvYmplY3QgSW50MzJBcnJheV0iXT1vWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09b1siW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1vWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPW9bIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsb1siW29iamVjdCBBcmd1bWVudHNdIl09b1siW29iamVjdCBBcnJheV0iXT1vWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPW9bIltvYmplY3QgQm9vbGVhbl0iXT1vWyJbb2JqZWN0IERhdGFWaWV3XSJdPW9bIltvYmplY3QgRGF0ZV0iXT1vWyJbb2JqZWN0IEVycm9yXSJdPW9bIltvYmplY3QgRnVuY3Rpb25dIl09b1siW29iamVjdCBNYXBdIl09b1siW29iamVjdCBOdW1iZXJdIl09b1siW29iamVjdCBPYmplY3RdIl09b1siW29iamVjdCBSZWdFeHBdIl09b1siW29iamVjdCBTZXRdIl09b1siW29iamVjdCBTdHJpbmddIl09b1siW29iamVjdCBXZWFrTWFwXSJdPSExLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYSh0KSYmaSh0Lmxlbmd0aCkmJiEhb1tyKHQpXX19LDcyMDY6KHQsZSxuKT0+e3ZhciByPW4oMTU3MyksaT1uKDY0MzIpLGE9big2NTU3KSxvPW4oMTQ2OSkscz1uKDk2MDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/YToib2JqZWN0Ij09dHlwZW9mIHQ/byh0KT9pKHRbMF0sdFsxXSk6cih0KTpzKHQpfX0sMjgwOih0LGUsbik9Pnt2YXIgcj1uKDU3MjYpLGk9big2OTE2KSxhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpKXJldHVybiBpKHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBPYmplY3QodCkpYS5jYWxsKHQsbikmJiJjb25zdHJ1Y3RvciIhPW4mJmUucHVzaChuKTtyZXR1cm4gZX19LDMxMzoodCxlLG4pPT57dmFyIHI9bigzMjE4KSxpPW4oNTcyNiksYT1uKDM0OTgpLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpcmV0dXJuIGEodCk7dmFyIGU9aSh0KSxuPVtdO2Zvcih2YXIgcyBpbiB0KSgiY29uc3RydWN0b3IiIT1zfHwhZSYmby5jYWxsKHQscykpJiZuLnB1c2gocyk7cmV0dXJuIG59fSw0MzM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0PGV9fSw5MTk5Oih0LGUsbik9Pnt2YXIgcj1uKDk4ODEpLGk9big4NjEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj0tMSxhPWkodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiByKHQsKGZ1bmN0aW9uKHQscixpKXthWysrbl09ZSh0LHIsaSl9KSksYX19LDE1NzM6KHQsZSxuKT0+e3ZhciByPW4oMjk1OCksaT1uKDE0OTkpLGE9bigyNjM0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aSh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/YShlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8cihuLHQsZSl9fX0sNjQzMjoodCxlLG4pPT57dmFyIHI9big5MzkpLGk9bigxOTE3KSxhPW4oOTA5NSksbz1uKDU0MDMpLHM9big5MTYyKSxjPW4oMjYzNCksdT1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8odCkmJnMoZSk/Yyh1KHQpLGUpOmZ1bmN0aW9uKG4pe3ZhciBvPWkobix0KTtyZXR1cm4gdm9pZCAwPT09byYmbz09PWU/YShuLHQpOnIoZSxvLDMpfX19LDI5ODA6KHQsZSxuKT0+e3ZhciByPW4oNjM4NCksaT1uKDY1NTYpLGE9big4NDgzKSxvPW4oOTc4Mykscz1uKDMyMTgpLGM9bigxNzA0KSx1PW4oNjM5MCk7dC5leHBvcnRzPWZ1bmN0aW9uIHQoZSxuLGwsaCxmKXtlIT09biYmYShuLChmdW5jdGlvbihhLGMpe2lmKGZ8fChmPW5ldyByKSxzKGEpKW8oZSxuLGMsbCx0LGgsZik7ZWxzZXt2YXIgZD1oP2godShlLGMpLGEsYysiIixlLG4sZik6dm9pZCAwO3ZvaWQgMD09PWQmJihkPWEpLGkoZSxjLGQpfX0pLGMpfX0sOTc4MzoodCxlLG4pPT57dmFyIHI9big2NTU2KSxpPW4oNDYyNiksYT1uKDcxMzMpLG89bigyNzgpLHM9big4NTE3KSxjPW4oNTY5NCksdT1uKDE0NjkpLGw9big5MjQ2KSxoPW4oNDE0NCksZj1uKDM1NjApLGQ9bigzMjE4KSxwPW4oODYzMCkseT1uKDY3MTkpLGc9big2MzkwKSxtPW4oMzY3OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHYsYixfLHgpe3ZhciB3PWcodCxuKSxrPWcoZSxuKSxUPXguZ2V0KGspO2lmKFQpcih0LG4sVCk7ZWxzZXt2YXIgRT1fP18odyxrLG4rIiIsdCxlLHgpOnZvaWQgMCxDPXZvaWQgMD09PUU7aWYoQyl7dmFyIFM9dShrKSxBPSFTJiZoKGspLE09IVMmJiFBJiZ5KGspO0U9ayxTfHxBfHxNP3Uodyk/RT13Omwodyk/RT1vKHcpOkE/KEM9ITEsRT1pKGssITApKTpNPyhDPSExLEU9YShrLCEwKSk6RT1bXTpwKGspfHxjKGspPyhFPXcsYyh3KT9FPW0odyk6ZCh3KSYmIWYodyl8fChFPXMoaykpKTpDPSExfUMmJih4LnNldChrLEUpLGIoRSxrLHYsXyx4KSx4LmRlbGV0ZShrKSkscih0LG4sRSl9fX0sOTU1NjoodCxlLG4pPT57dmFyIHI9big5OTMyKSxpPW4oNzc4NiksYT1uKDcyMDYpLG89big5MTk5KSxzPW4oMTEzMSksYz1uKDE3MTcpLHU9big1MDIyKSxsPW4oNjU1NyksaD1uKDE0NjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7ZT1lLmxlbmd0aD9yKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBoKHQpP2Z1bmN0aW9uKGUpe3JldHVybiBpKGUsMT09PXQubGVuZ3RoP3RbMF06dCl9OnR9KSk6W2xdO3ZhciBmPS0xO2U9cihlLGMoYSkpO3ZhciBkPW8odCwoZnVuY3Rpb24odCxuLGkpe3JldHVybntjcml0ZXJpYTpyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisrZix2YWx1ZTp0fX0pKTtyZXR1cm4gcyhkLChmdW5jdGlvbih0LGUpe3JldHVybiB1KHQsZSxuKX0pKX19LDU5NzA6KHQsZSxuKT0+e3ZhciByPW4oMzAxMiksaT1uKDkwOTUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiByKHQsZSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gaSh0LG4pfSkpfX0sMzAxMjoodCxlLG4pPT57dmFyIHI9big3Nzg2KSxpPW4oNjExKSxhPW4oMTgxMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG89LTEscz1lLmxlbmd0aCxjPXt9OysrbzxzOyl7dmFyIHU9ZVtvXSxsPXIodCx1KTtuKGwsdSkmJmkoYyxhKHUsdCksbCl9cmV0dXJuIGN9fSwzNzE6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fX0sOTE1MjoodCxlLG4pPT57dmFyIHI9big3Nzg2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByKGUsdCl9fX0sOTg6dD0+e3ZhciBlPU1hdGguY2VpbCxuPU1hdGgubWF4O3QuZXhwb3J0cz1mdW5jdGlvbih0LHIsaSxhKXtmb3IodmFyIG89LTEscz1uKGUoKHItdCkvKGl8fDEpKSwwKSxjPUFycmF5KHMpO3MtLTspY1thP3M6KytvXT10LHQrPWk7cmV0dXJuIGN9fSwxMDc6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyLGkpe3JldHVybiBpKHQsKGZ1bmN0aW9uKHQsaSxhKXtuPXI/KHI9ITEsdCk6ZShuLHQsaSxhKX0pKSxufX0sNTk3NjoodCxlLG4pPT57dmFyIHI9big2NTU3KSxpPW4oNTM1NyksYT1uKDYxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYShpKHQsZSxyKSx0KyIiKX19LDYxMToodCxlLG4pPT57dmFyIHI9big0ODY1KSxpPW4oMTgxMSksYT1uKDU3NzYpLG89bigzMjE4KSxzPW4oMzI3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYyl7aWYoIW8odCkpcmV0dXJuIHQ7Zm9yKHZhciB1PS0xLGw9KGU9aShlLHQpKS5sZW5ndGgsaD1sLTEsZj10O251bGwhPWYmJisrdTxsOyl7dmFyIGQ9cyhlW3VdKSxwPW47aWYoIl9fcHJvdG9fXyI9PT1kfHwiY29uc3RydWN0b3IiPT09ZHx8InByb3RvdHlwZSI9PT1kKXJldHVybiB0O2lmKHUhPWgpe3ZhciB5PWZbZF07dm9pZCAwPT09KHA9Yz9jKHksZCxmKTp2b2lkIDApJiYocD1vKHkpP3k6YShlW3UrMV0pP1tdOnt9KX1yKGYsZCxwKSxmPWZbZF19cmV0dXJuIHR9fSw2NTYwOih0LGUsbik9Pnt2YXIgcj1uKDU3MDMpLGk9big4Nzc3KSxhPW4oNjU1Nyksbz1pP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpyKGUpLHdyaXRhYmxlOiEwfSl9OmE7dC5leHBvcnRzPW99LDExMzE6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9fSwyNTQ1OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49LTEscj1BcnJheSh0KTsrK248dDspcltuXT1lKG4pO3JldHVybiByfX0sNTMxOih0LGUsbik9Pnt2YXIgcj1uKDI3MDUpLGk9big5OTMyKSxhPW4oMTQ2OSksbz1uKDM0NDgpLHM9cj9yLnByb3RvdHlwZTp2b2lkIDAsYz1zP3MudG9TdHJpbmc6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZihhKGUpKXJldHVybiBpKGUsdCkrIiI7aWYobyhlKSlyZXR1cm4gYz9jLmNhbGwoZSk6IiI7dmFyIG49ZSsiIjtyZXR1cm4iMCI9PW4mJjEvZT09LTEvMD8iLTAiOm59fSw3NTYxOih0LGUsbik9Pnt2YXIgcj1uKDc5OTApLGk9L15ccysvO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD90LnNsaWNlKDAscih0KSsxKS5yZXBsYWNlKGksIiIpOnR9fSwxNzE3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX19LDU2NTI6KHQsZSxuKT0+e3ZhciByPW4oODY2OCksaT1uKDc0NDMpLGE9bigxMTk2KSxvPW4oNDc1Nykscz1uKDM1OTMpLGM9bigxODE0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciB1PS0xLGw9aSxoPXQubGVuZ3RoLGY9ITAsZD1bXSxwPWQ7aWYobilmPSExLGw9YTtlbHNlIGlmKGg+PTIwMCl7dmFyIHk9ZT9udWxsOnModCk7aWYoeSlyZXR1cm4gYyh5KTtmPSExLGw9byxwPW5ldyByfWVsc2UgcD1lP1tdOmQ7dDpmb3IoOysrdTxoOyl7dmFyIGc9dFt1XSxtPWU/ZShnKTpnO2lmKGc9bnx8MCE9PWc/ZzowLGYmJm09PW0pe2Zvcih2YXIgdj1wLmxlbmd0aDt2LS07KWlmKHBbdl09PT1tKWNvbnRpbnVlIHQ7ZSYmcC5wdXNoKG0pLGQucHVzaChnKX1lbHNlIGwocCxtLG4pfHwocCE9PWQmJnAucHVzaChtKSxkLnB1c2goZykpfXJldHVybiBkfX0sNzQxNToodCxlLG4pPT57dmFyIHI9big5OTMyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcihlLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX19LDE3NTc6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPS0xLGk9dC5sZW5ndGgsYT1lLmxlbmd0aCxvPXt9OysrcjxpOyl7dmFyIHM9cjxhP2Vbcl06dm9pZCAwO24obyx0W3JdLHMpfXJldHVybiBvfX0sNDc1Nzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaGFzKGUpfX0sNDI5MDoodCxlLG4pPT57dmFyIHI9big2NTU3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyfX0sMTgxMToodCxlLG4pPT57dmFyIHI9bigxNDY5KSxpPW4oNTQwMyksYT1uKDU1MTQpLG89big5ODMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0KT90OmkodCxlKT9bdF06YShvKHQpKX19LDQzMTg6KHQsZSxuKT0+e3ZhciByPW4oMTE0OSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyByKGUpLnNldChuZXcgcih0KSksZX19LDQ2MjY6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9big1NjM5KSxpPWUmJiFlLm5vZGVUeXBlJiZlLGE9aSYmdCYmIXQubm9kZVR5cGUmJnQsbz1hJiZhLmV4cG9ydHM9PT1pP3IuQnVmZmVyOnZvaWQgMCxzPW8/by5hbGxvY1Vuc2FmZTp2b2lkIDA7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoZSlyZXR1cm4gdC5zbGljZSgpO3ZhciBuPXQubGVuZ3RoLHI9cz9zKG4pOm5ldyB0LmNvbnN0cnVjdG9yKG4pO3JldHVybiB0LmNvcHkocikscn19LDcxNTc6KHQsZSxuKT0+e3ZhciByPW4oNDMxOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZT9yKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX19LDMxNDc6dD0+e3ZhciBlPS9cdyokLzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsZS5leGVjKHQpKTtyZXR1cm4gbi5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsbn19LDQxOToodCxlLG4pPT57dmFyIHI9bigyNzA1KSxpPXI/ci5wcm90b3R5cGU6dm9pZCAwLGE9aT9pLnZhbHVlT2Y6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYT9PYmplY3QoYS5jYWxsKHQpKTp7fX19LDcxMzM6KHQsZSxuKT0+e3ZhciByPW4oNDMxOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZT9yKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfX0sNjM5MzoodCxlLG4pPT57dmFyIHI9bigzNDQ4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZih0IT09ZSl7dmFyIG49dm9pZCAwIT09dCxpPW51bGw9PT10LGE9dD09dCxvPXIodCkscz12b2lkIDAhPT1lLGM9bnVsbD09PWUsdT1lPT1lLGw9cihlKTtpZighYyYmIWwmJiFvJiZ0PmV8fG8mJnMmJnUmJiFjJiYhbHx8aSYmcyYmdXx8IW4mJnV8fCFhKXJldHVybiAxO2lmKCFpJiYhbyYmIWwmJnQ8ZXx8bCYmbiYmYSYmIWkmJiFvfHxjJiZuJiZhfHwhcyYmYXx8IXUpcmV0dXJuLTF9cmV0dXJuIDB9fSw1MDIyOih0LGUsbik9Pnt2YXIgcj1uKDYzOTMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPS0xLGE9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEscz1hLmxlbmd0aCxjPW4ubGVuZ3RoOysraTxzOyl7dmFyIHU9cihhW2ldLG9baV0pO2lmKHUpcmV0dXJuIGk+PWM/dTp1KigiZGVzYyI9PW5baV0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtZS5pbmRleH19LDI3ODp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49LTEscj10Lmxlbmd0aDtmb3IoZXx8KGU9QXJyYXkocikpOysrbjxyOyllW25dPXRbbl07cmV0dXJuIGV9fSw4MzYzOih0LGUsbik9Pnt2YXIgcj1uKDQ4NjUpLGk9big5NDY1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIG89IW47bnx8KG49e30pO2Zvcih2YXIgcz0tMSxjPWUubGVuZ3RoOysrczxjOyl7dmFyIHU9ZVtzXSxsPWE/YShuW3VdLHRbdV0sdSxuLHQpOnZvaWQgMDt2b2lkIDA9PT1sJiYobD10W3VdKSxvP2kobix1LGwpOnIobix1LGwpfXJldHVybiBufX0sODgwNToodCxlLG4pPT57dmFyIHI9big4MzYzKSxpPW4oOTU1MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCxpKHQpLGUpfX0sMTkxMToodCxlLG4pPT57dmFyIHI9big4MzYzKSxpPW4oMTQ0Mik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCxpKHQpLGUpfX0sNDQyOToodCxlLG4pPT57dmFyIHI9big1NjM5KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07dC5leHBvcnRzPXJ9LDE3NTA6KHQsZSxuKT0+e3ZhciByPW4oNTk3NiksaT1uKDY2MTIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcigoZnVuY3Rpb24oZSxuKXt2YXIgcj0tMSxhPW4ubGVuZ3RoLG89YT4xP25bYS0xXTp2b2lkIDAscz1hPjI/blsyXTp2b2lkIDA7Zm9yKG89dC5sZW5ndGg+MyYmImZ1bmN0aW9uIj09dHlwZW9mIG8/KGEtLSxvKTp2b2lkIDAscyYmaShuWzBdLG5bMV0scykmJihvPWE8Mz92b2lkIDA6byxhPTEpLGU9T2JqZWN0KGUpOysrcjxhOyl7dmFyIGM9bltyXTtjJiZ0KGUsYyxyLG8pfXJldHVybiBlfSkpfX0sOTI5MToodCxlLG4pPT57dmFyIHI9big4NjEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtpZihudWxsPT1uKXJldHVybiBuO2lmKCFyKG4pKXJldHVybiB0KG4saSk7Zm9yKHZhciBhPW4ubGVuZ3RoLG89ZT9hOi0xLHM9T2JqZWN0KG4pOyhlP28tLTorK288YSkmJiExIT09aShzW29dLG8scyk7KTtyZXR1cm4gbn19fSw1MDYzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9LTEsYT1PYmplY3QoZSksbz1yKGUpLHM9by5sZW5ndGg7cy0tOyl7dmFyIGM9b1t0P3M6KytpXTtpZighMT09PW4oYVtjXSxjLGEpKWJyZWFrfXJldHVybiBlfX19LDc3NDA6KHQsZSxuKT0+e3ZhciByPW4oNzIwNiksaT1uKDg2MTIpLGE9bigzNjc0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixvKXt2YXIgcz1PYmplY3QoZSk7aWYoIWkoZSkpe3ZhciBjPXIobiwzKTtlPWEoZSksbj1mdW5jdGlvbih0KXtyZXR1cm4gYyhzW3RdLHQscyl9fXZhciB1PXQoZSxuLG8pO3JldHVybiB1Pi0xP3NbYz9lW3VdOnVdOnZvaWQgMH19fSw3NDQ1Oih0LGUsbik9Pnt2YXIgcj1uKDk4KSxpPW4oNjYxMiksYT1uKDg2MDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLG8pe3JldHVybiBvJiYibnVtYmVyIiE9dHlwZW9mIG8mJmkoZSxuLG8pJiYobj1vPXZvaWQgMCksZT1hKGUpLHZvaWQgMD09PW4/KG49ZSxlPTApOm49YShuKSxvPXZvaWQgMD09PW8/ZTxuPzE6LTE6YShvKSxyKGUsbixvLHQpfX19LDM1OTM6KHQsZSxuKT0+e3ZhciByPW4oODUyNSksaT1uKDMwOCksYT1uKDE4MTQpLG89ciYmMS9hKG5ldyByKFssLTBdKSlbMV09PTEvMD9mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHIodCl9Omk7dC5leHBvcnRzPW99LDg3Nzc6KHQsZSxuKT0+e3ZhciByPW4oODUyKSxpPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXIoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KCk7dC5leHBvcnRzPWl9LDcxMTQ6KHQsZSxuKT0+e3ZhciByPW4oODY2OCksaT1uKDI5MDgpLGE9big0NzU3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyxzLGMpe3ZhciB1PTEmbixsPXQubGVuZ3RoLGg9ZS5sZW5ndGg7aWYobCE9aCYmISh1JiZoPmwpKXJldHVybiExO3ZhciBmPWMuZ2V0KHQpLGQ9Yy5nZXQoZSk7aWYoZiYmZClyZXR1cm4gZj09ZSYmZD09dDt2YXIgcD0tMSx5PSEwLGc9MiZuP25ldyByOnZvaWQgMDtmb3IoYy5zZXQodCxlKSxjLnNldChlLHQpOysrcDxsOyl7dmFyIG09dFtwXSx2PWVbcF07aWYobyl2YXIgYj11P28odixtLHAsZSx0LGMpOm8obSx2LHAsdCxlLGMpO2lmKHZvaWQgMCE9PWIpe2lmKGIpY29udGludWU7eT0hMTticmVha31pZihnKXtpZighaShlLChmdW5jdGlvbih0LGUpe2lmKCFhKGcsZSkmJihtPT09dHx8cyhtLHQsbixvLGMpKSlyZXR1cm4gZy5wdXNoKGUpfSkpKXt5PSExO2JyZWFrfX1lbHNlIGlmKG0hPT12JiYhcyhtLHYsbixvLGMpKXt5PSExO2JyZWFrfX1yZXR1cm4gYy5kZWxldGUodCksYy5kZWxldGUoZSkseX19LDgzNTE6KHQsZSxuKT0+e3ZhciByPW4oMjcwNSksaT1uKDExNDkpLGE9big3ODEzKSxvPW4oNzExNCkscz1uKDg3NzYpLGM9bigxODE0KSx1PXI/ci5wcm90b3R5cGU6dm9pZCAwLGw9dT91LnZhbHVlT2Y6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyLHUsaCxmKXtzd2l0Y2gobil7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhaChuZXcgaSh0KSxuZXcgaShlKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIGEoK3QsK2UpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09ZSsiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIGQ9cztjYXNlIltvYmplY3QgU2V0XSI6dmFyIHA9MSZyO2lmKGR8fChkPWMpLHQuc2l6ZSE9ZS5zaXplJiYhcClyZXR1cm4hMTt2YXIgeT1mLmdldCh0KTtpZih5KXJldHVybiB5PT1lO3J8PTIsZi5zZXQodCxlKTt2YXIgZz1vKGQodCksZChlKSxyLHUsaCxmKTtyZXR1cm4gZi5kZWxldGUodCksZztjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobClyZXR1cm4gbC5jYWxsKHQpPT1sLmNhbGwoZSl9cmV0dXJuITF9fSw2MDk2Oih0LGUsbik9Pnt2YXIgcj1uKDgyMzQpLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYSxvLHMpe3ZhciBjPTEmbix1PXIodCksbD11Lmxlbmd0aDtpZihsIT1yKGUpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIGY9dVtoXTtpZighKGM/ZiBpbiBlOmkuY2FsbChlLGYpKSlyZXR1cm4hMX12YXIgZD1zLmdldCh0KSxwPXMuZ2V0KGUpO2lmKGQmJnApcmV0dXJuIGQ9PWUmJnA9PXQ7dmFyIHk9ITA7cy5zZXQodCxlKSxzLnNldChlLHQpO2Zvcih2YXIgZz1jOysraDxsOyl7dmFyIG09dFtmPXVbaF1dLHY9ZVtmXTtpZihhKXZhciBiPWM/YSh2LG0sZixlLHQscyk6YShtLHYsZix0LGUscyk7aWYoISh2b2lkIDA9PT1iP209PT12fHxvKG0sdixuLGEscyk6Yikpe3k9ITE7YnJlYWt9Z3x8KGc9ImNvbnN0cnVjdG9yIj09Zil9aWYoeSYmIWcpe3ZhciBfPXQuY29uc3RydWN0b3IseD1lLmNvbnN0cnVjdG9yO189PXh8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIF8mJl8gaW5zdGFuY2VvZiBfJiYiZnVuY3Rpb24iPT10eXBlb2YgeCYmeCBpbnN0YW5jZW9mIHh8fCh5PSExKX1yZXR1cm4gcy5kZWxldGUodCkscy5kZWxldGUoZSkseX19LDkwMjE6KHQsZSxuKT0+e3ZhciByPW4oNTU2NCksaT1uKDUzNTcpLGE9big2MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKGkodCx2b2lkIDAsciksdCsiIil9fSwxOTU3Oih0LGUsbik9Pnt2YXIgcj0ib2JqZWN0Ij09dHlwZW9mIG4uZyYmbi5nJiZuLmcuT2JqZWN0PT09T2JqZWN0JiZuLmc7dC5leHBvcnRzPXJ9LDgyMzQ6KHQsZSxuKT0+e3ZhciByPW4oODg2NiksaT1uKDk1NTEpLGE9bigzNjc0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxhLGkpfX0sNjkwNDoodCxlLG4pPT57dmFyIHI9big4ODY2KSxpPW4oMTQ0MiksYT1uKDE3MDQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcih0LGEsaSl9fSw1MDUwOih0LGUsbik9Pnt2YXIgcj1uKDcwMTkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQuX19kYXRhX187cmV0dXJuIHIoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH19LDE0OTk6KHQsZSxuKT0+e3ZhciByPW4oOTE2MiksaT1uKDM2NzQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9aSh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBhPWVbbl0sbz10W2FdO2Vbbl09W2EsbyxyKG8pXX1yZXR1cm4gZX19LDg1MjoodCxlLG4pPT57dmFyIHI9big4NDU4KSxpPW4oNzgwMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49aSh0LGUpO3JldHVybiByKG4pP246dm9pZCAwfX0sNTkyNDoodCxlLG4pPT57dmFyIHI9big1NTY5KShPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KTt0LmV4cG9ydHM9cn0sOTYwNzoodCxlLG4pPT57dmFyIHI9bigyNzA1KSxpPU9iamVjdC5wcm90b3R5cGUsYT1pLmhhc093blByb3BlcnR5LG89aS50b1N0cmluZyxzPXI/ci50b1N0cmluZ1RhZzp2b2lkIDA7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWEuY2FsbCh0LHMpLG49dFtzXTt0cnl7dFtzXT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2godCl7fXZhciBpPW8uY2FsbCh0KTtyZXR1cm4gciYmKGU/dFtzXT1uOmRlbGV0ZSB0W3NdKSxpfX0sOTU1MToodCxlLG4pPT57dmFyIHI9big0OTYzKSxpPW4oNDc5KSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9bz9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCkscihvKHQpLChmdW5jdGlvbihlKXtyZXR1cm4gYS5jYWxsKHQsZSl9KSkpfTppO3QuZXhwb3J0cz1zfSwxNDQyOih0LGUsbik9Pnt2YXIgcj1uKDI0ODgpLGk9big1OTI0KSxhPW4oOTU1MSksbz1uKDQ3OSkscz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXTt0OylyKGUsYSh0KSksdD1pKHQpO3JldHVybiBlfTpvO3QuZXhwb3J0cz1zfSw0MTYwOih0LGUsbik9Pnt2YXIgcj1uKDg1NTIpLGk9big3MDcxKSxhPW4oMzgxOCksbz1uKDg1MjUpLHM9big1NzcpLGM9big0MjM5KSx1PW4oMzQ2KSxsPSJbb2JqZWN0IE1hcF0iLGg9IltvYmplY3QgUHJvbWlzZV0iLGY9IltvYmplY3QgU2V0XSIsZD0iW29iamVjdCBXZWFrTWFwXSIscD0iW29iamVjdCBEYXRhVmlld10iLHk9dShyKSxnPXUoaSksbT11KGEpLHY9dShvKSxiPXUocyksXz1jOyhyJiZfKG5ldyByKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1wfHxpJiZfKG5ldyBpKSE9bHx8YSYmXyhhLnJlc29sdmUoKSkhPWh8fG8mJl8obmV3IG8pIT1mfHxzJiZfKG5ldyBzKSE9ZCkmJihfPWZ1bmN0aW9uKHQpe3ZhciBlPWModCksbj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxyPW4/dShuKToiIjtpZihyKXN3aXRjaChyKXtjYXNlIHk6cmV0dXJuIHA7Y2FzZSBnOnJldHVybiBsO2Nhc2UgbTpyZXR1cm4gaDtjYXNlIHY6cmV0dXJuIGY7Y2FzZSBiOnJldHVybiBkfXJldHVybiBlfSksdC5leHBvcnRzPV99LDc4MDE6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfX0sMjIyOih0LGUsbik9Pnt2YXIgcj1uKDE4MTEpLGk9big1Njk0KSxhPW4oMTQ2OSksbz1uKDU3NzYpLHM9bigxNzgwKSxjPW4oMzI3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgdT0tMSxsPShlPXIoZSx0KSkubGVuZ3RoLGg9ITE7Kyt1PGw7KXt2YXIgZj1jKGVbdV0pO2lmKCEoaD1udWxsIT10JiZuKHQsZikpKWJyZWFrO3Q9dFtmXX1yZXR1cm4gaHx8Kyt1IT1sP2g6ISEobD1udWxsPT10PzA6dC5sZW5ndGgpJiZzKGwpJiZvKGYsbCkmJihhKHQpfHxpKHQpKX19LDI2ODk6dD0+e3ZhciBlPVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGUudGVzdCh0KX19LDE3ODk6KHQsZSxuKT0+e3ZhciByPW4oNDUzNik7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1yP3IobnVsbCk6e30sdGhpcy5zaXplPTB9fSw0MDE6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX19LDc2Njc6KHQsZSxuKT0+e3ZhciByPW4oNDUzNiksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKHIpe3ZhciBuPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09bj92b2lkIDA6bn1yZXR1cm4gaS5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9fSwxMzI3Oih0LGUsbik9Pnt2YXIgcj1uKDQ1MzYpLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gcj92b2lkIDAhPT1lW3RdOmkuY2FsbChlLHQpfX0sMTg2NjoodCxlLG4pPT57dmFyIHI9big0NTM2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxuW3RdPXImJnZvaWQgMD09PWU/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOmUsdGhpc319LDM4MjQ6dD0+e3ZhciBlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPXQubGVuZ3RoLHI9bmV3IHQuY29uc3RydWN0b3Iobik7cmV0dXJuIG4mJiJzdHJpbmciPT10eXBlb2YgdFswXSYmZS5jYWxsKHQsImluZGV4IikmJihyLmluZGV4PXQuaW5kZXgsci5pbnB1dD10LmlucHV0KSxyfX0sOTE0ODoodCxlLG4pPT57dmFyIHI9big0MzE4KSxpPW4oNzE1NyksYT1uKDMxNDcpLG89big0MTkpLHM9big3MTMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBjPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiByKHQpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IGMoK3QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBpKHQsbik7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOmNhc2UiW29iamVjdCBGbG9hdDY0QXJyYXldIjpjYXNlIltvYmplY3QgSW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDE2QXJyYXldIjpjYXNlIltvYmplY3QgSW50MzJBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQzMkFycmF5XSI6cmV0dXJuIHModCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBjO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBjKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gYSh0KTtjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBjO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gbyh0KX19fSw4NTE3Oih0LGUsbik9Pnt2YXIgcj1uKDMxMTgpLGk9big1OTI0KSxhPW4oNTcyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxhKHQpP3t9OnIoaSh0KSl9fSw3Mjg1Oih0LGUsbik9Pnt2YXIgcj1uKDI3MDUpLGk9big1Njk0KSxhPW4oMTQ2OSksbz1yP3IuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCl8fGkodCl8fCEhKG8mJnQmJnRbb10pfX0sNTc3Njp0PT57dmFyIGU9L14oPzowfFsxLTldXGQqKSQvO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKG49bnVsbD09bj85MDA3MTk5MjU0NzQwOTkxOm4pJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZlLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8bn19LDY2MTI6KHQsZSxuKT0+e3ZhciByPW4oNzgxMyksaT1uKDg2MTIpLGE9big1Nzc2KSxvPW4oMzIxOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZighbyhuKSlyZXR1cm4hMTt2YXIgcz10eXBlb2YgZTtyZXR1cm4hISgibnVtYmVyIj09cz9pKG4pJiZhKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1zJiZlIGluIG4pJiZyKG5bZV0sdCl9fSw1NDAzOih0LGUsbik9Pnt2YXIgcj1uKDE0NjkpLGk9bigzNDQ4KSxhPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLG89L15cdyokLzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFpKHQpKXx8by50ZXN0KHQpfHwhYS50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LDcwMTk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09ZXx8Im51bWJlciI9PWV8fCJzeW1ib2wiPT1lfHwiYm9vbGVhbiI9PWU/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fX0sNTM0NjoodCxlLG4pPT57dmFyIHIsaT1uKDQ0MjkpLGE9KHI9L1teLl0rJC8uZXhlYyhpJiZpLmtleXMmJmkua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK3I6IiI7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEhYSYmYSBpbiB0fX0sNTcyNjp0PT57dmFyIGU9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49dCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4gdD09PSgiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5wcm90b3R5cGV8fGUpfX0sOTE2MjoodCxlLG4pPT57dmFyIHI9bigzMjE4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXQmJiFyKHQpfX0sNzA0MDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH19LDEzNjI6KHQsZSxuKT0+e3ZhciByPW4oODQ3MCksaT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cihlLHQpO3JldHVybiEobjwwfHwobj09ZS5sZW5ndGgtMT9lLnBvcCgpOmkuY2FsbChlLG4sMSksLS10aGlzLnNpemUsMCkpfX0sMjExNzoodCxlLG4pPT57dmFyIHI9big4NDcwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPXIoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfX0sNzUxODoodCxlLG4pPT57dmFyIHI9big4NDcwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcy5fX2RhdGFfXyx0KT4tMX19LDQ3MDU6KHQsZSxuKT0+e3ZhciByPW4oODQ3MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPXIobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc319LDQ3ODU6KHQsZSxuKT0+e3ZhciByPW4oMTk4OSksaT1uKDg0MDcpLGE9big3MDcxKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyByLG1hcDpuZXcoYXx8aSksc3RyaW5nOm5ldyByfX19LDEyODU6KHQsZSxuKT0+e3ZhciByPW4oNTA1MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX19LDZlMzoodCxlLG4pPT57dmFyIHI9big1MDUwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcyx0KS5nZXQodCl9fSw5OTE2Oih0LGUsbik9Pnt2YXIgcj1uKDUwNTApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQpLmhhcyh0KX19LDUyNjU6KHQsZSxuKT0+e3ZhciByPW4oNTA1MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49cih0aGlzLHQpLGk9bi5zaXplO3JldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZSs9bi5zaXplPT1pPzA6MSx0aGlzfX0sODc3Njp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LHIpe25bKytlXT1bcix0XX0pKSxufX0sMjYzNDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZuW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KG4pKX19fSw0NTIzOih0LGUsbik9Pnt2YXIgcj1uKDgzMDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX19LDQ1MzY6KHQsZSxuKT0+e3ZhciByPW4oODUyKShPYmplY3QsImNyZWF0ZSIpO3QuZXhwb3J0cz1yfSw2OTE2Oih0LGUsbik9Pnt2YXIgcj1uKDU1NjkpKE9iamVjdC5rZXlzLE9iamVjdCk7dC5leHBvcnRzPXJ9LDM0OTg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10KWZvcih2YXIgbiBpbiBPYmplY3QodCkpZS5wdXNoKG4pO3JldHVybiBlfX0sMTE2NzoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1uKDE5NTcpLGk9ZSYmIWUubm9kZVR5cGUmJmUsYT1pJiZ0JiYhdC5ub2RlVHlwZSYmdCxvPWEmJmEuZXhwb3J0cz09PWkmJnIucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBhJiZhLnJlcXVpcmUmJmEucmVxdWlyZSgidXRpbCIpLnR5cGVzfHxvJiZvLmJpbmRpbmcmJm8uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCk7dC5leHBvcnRzPXN9LDIzMzM6dD0+e3ZhciBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodCl9fSw1NTY5OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fX0sNTM1NzoodCxlLG4pPT57dmFyIHI9big2ODc0KSxpPU1hdGgubWF4O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9aSh2b2lkIDA9PT1lP3QubGVuZ3RoLTE6ZSwwKSxmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMsbz0tMSxzPWkoYS5sZW5ndGgtZSwwKSxjPUFycmF5KHMpOysrbzxzOyljW29dPWFbZStvXTtvPS0xO2Zvcih2YXIgdT1BcnJheShlKzEpOysrbzxlOyl1W29dPWFbb107cmV0dXJuIHVbZV09bihjKSxyKHQsdGhpcyx1KX19fSw1NjM5Oih0LGUsbik9Pnt2YXIgcj1uKDE5NTcpLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixhPXJ8fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7dC5leHBvcnRzPWF9LDYzOTA6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCgiY29uc3RydWN0b3IiIT09ZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRbZV0pJiYiX19wcm90b19fIiE9ZSlyZXR1cm4gdFtlXX19LDYxOTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc319LDIzODU6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9fSwxODE0OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59fSw2MToodCxlLG4pPT57dmFyIHI9big2NTYwKSxpPW4oMTI3NSkocik7dC5leHBvcnRzPWl9LDEyNzU6dD0+e3ZhciBlPURhdGUubm93O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj0wLHI9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lKCksYT0xNi0oaS1yKTtpZihyPWksYT4wKXtpZigrK24+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2Ugbj0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX19LDc0NjU6KHQsZSxuKT0+e3ZhciByPW4oODQwNyk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgcix0aGlzLnNpemU9MH19LDM3Nzk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUsbn19LDc1OTk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9fSw0NzU4OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfX0sNDMwOToodCxlLG4pPT57dmFyIHI9big4NDA3KSxpPW4oNzA3MSksYT1uKDMzNjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187aWYobiBpbnN0YW5jZW9mIHIpe3ZhciBvPW4uX19kYXRhX187aWYoIWl8fG8ubGVuZ3RoPDE5OSlyZXR1cm4gby5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IGEobyl9cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplPW4uc2l6ZSx0aGlzfX0sMjM1MTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9bi0xLGk9dC5sZW5ndGg7KytyPGk7KWlmKHRbcl09PT1lKXJldHVybiByO3JldHVybi0xfX0sODAxNjoodCxlLG4pPT57dmFyIHI9big4OTgzKSxpPW4oMjY4OSksYT1uKDE5MDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KT9hKHQpOnIodCl9fSw1NTE0Oih0LGUsbik9Pnt2YXIgcj1uKDQ1MjMpLGk9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csYT0vXFwoXFwpPy9nLG89cigoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShpLChmdW5jdGlvbih0LG4scixpKXtlLnB1c2gocj9pLnJlcGxhY2UoYSwiJDEiKTpufHx0KX0pKSxlfSkpO3QuZXhwb3J0cz1vfSwzMjc6KHQsZSxuKT0+e3ZhciByPW4oMzQ0OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8cih0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX19LDM0Njp0PT57dmFyIGU9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIGUuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9fSw3OTkwOnQ9Pnt2YXIgZT0vXHMvO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZlLnRlc3QodC5jaGFyQXQobikpOyk7cmV0dXJuIG59fSwxOTAzOnQ9Pnt2YXIgZT0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLG49IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIscj0iW15cXHVkODAwLVxcdWRmZmZdIixpPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixhPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixvPSIoPzoiK2UrInwiK24rIik/IixzPSJbXFx1ZmUwZVxcdWZlMGZdPyIsYz1zK28rIig/OlxcdTIwMGQoPzoiK1tyLGksYV0uam9pbigifCIpKyIpIitzK28rIikqIix1PSIoPzoiK1tyK2UrIj8iLGUsaSxhLCJbXFx1ZDgwMC1cXHVkZmZmXSJdLmpvaW4oInwiKSsiKSIsbD1SZWdFeHAobisiKD89IituKyIpfCIrdStjLCJnIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1sLmxhc3RJbmRleD0wO2wudGVzdCh0KTspKytlO3JldHVybiBlfX0sNjY3ODoodCxlLG4pPT57dmFyIHI9big1OTkwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCw0KX19LDM2MToodCxlLG4pPT57dmFyIHI9big1OTkwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCw1KX19LDU3MDM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19fSwxNzQ3Oih0LGUsbik9Pnt2YXIgcj1uKDU5NzYpLGk9big3ODEzKSxhPW4oNjYxMiksbz1uKDE3MDQpLHM9T2JqZWN0LnByb3RvdHlwZSxjPXMuaGFzT3duUHJvcGVydHksdT1yKChmdW5jdGlvbih0LGUpe3Q9T2JqZWN0KHQpO3ZhciBuPS0xLHI9ZS5sZW5ndGgsdT1yPjI/ZVsyXTp2b2lkIDA7Zm9yKHUmJmEoZVswXSxlWzFdLHUpJiYocj0xKTsrK248cjspZm9yKHZhciBsPWVbbl0saD1vKGwpLGY9LTEsZD1oLmxlbmd0aDsrK2Y8ZDspe3ZhciBwPWhbZl0seT10W3BdOyh2b2lkIDA9PT15fHxpKHksc1twXSkmJiFjLmNhbGwodCxwKSkmJih0W3BdPWxbcF0pfXJldHVybiB0fSkpO3QuZXhwb3J0cz11fSw2MDczOih0LGUsbik9Pnt0LmV4cG9ydHM9big0NDg2KX0sNzgxMzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfX0sMzEwNToodCxlLG4pPT57dmFyIHI9big0OTYzKSxpPW4oNzYwKSxhPW4oNzIwNiksbz1uKDE0NjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybihvKHQpP3I6aSkodCxhKGUsMykpfX0sMzMxMToodCxlLG4pPT57dmFyIHI9big3NzQwKShuKDk5OCkpO3QuZXhwb3J0cz1yfSw5OTg6KHQsZSxuKT0+e3ZhciByPW4oMTg0OCksaT1uKDcyMDYpLGE9big1NTQpLG89TWF0aC5tYXg7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1udWxsPT10PzA6dC5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIGM9bnVsbD09bj8wOmEobik7cmV0dXJuIGM8MCYmKGM9byhzK2MsMCkpLHIodCxpKGUsMyksYyl9fSw1NTY0Oih0LGUsbik9Pnt2YXIgcj1uKDEwNzgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/cih0LDEpOltdfX0sNDQ4NjoodCxlLG4pPT57dmFyIHI9big3NDEyKSxpPW4oOTg4MSksYT1uKDQyOTApLG89bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4obyh0KT9yOmkpKHQsYShlKSl9fSwyNjIwOih0LGUsbik9Pnt2YXIgcj1uKDg0ODMpLGk9big0MjkwKSxhPW4oMTcwNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpyKHQsaShlKSxhKX19LDE5MTc6KHQsZSxuKT0+e3ZhciByPW4oNzc4Nik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1udWxsPT10P3ZvaWQgMDpyKHQsZSk7cmV0dXJuIHZvaWQgMD09PWk/bjppfX0sODcyMToodCxlLG4pPT57dmFyIHI9big4NTY1KSxpPW4oMjIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dCYmaSh0LGUscil9fSw5MDk1Oih0LGUsbik9Pnt2YXIgcj1uKDEzKSxpPW4oMjIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dCYmaSh0LGUscil9fSw2NTU3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSw1Njk0Oih0LGUsbik9Pnt2YXIgcj1uKDk0NTQpLGk9big3MDA1KSxhPU9iamVjdC5wcm90b3R5cGUsbz1hLmhhc093blByb3BlcnR5LHM9YS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxjPXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9yOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpJiZvLmNhbGwodCwiY2FsbGVlIikmJiFzLmNhbGwodCwiY2FsbGVlIil9O3QuZXhwb3J0cz1jfSwxNDY5OnQ9Pnt2YXIgZT1BcnJheS5pc0FycmF5O3QuZXhwb3J0cz1lfSw4NjEyOih0LGUsbik9Pnt2YXIgcj1uKDM1NjApLGk9bigxNzgwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJmkodC5sZW5ndGgpJiYhcih0KX19LDkyNDY6KHQsZSxuKT0+e3ZhciByPW4oODYxMiksaT1uKDcwMDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KSYmcih0KX19LDQxNDQ6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9big1NjM5KSxpPW4oNTA2MiksYT1lJiYhZS5ub2RlVHlwZSYmZSxvPWEmJnQmJiF0Lm5vZGVUeXBlJiZ0LHM9byYmby5leHBvcnRzPT09YT9yLkJ1ZmZlcjp2b2lkIDAsYz0ocz9zLmlzQnVmZmVyOnZvaWQgMCl8fGk7dC5leHBvcnRzPWN9LDE2MDk6KHQsZSxuKT0+e3ZhciByPW4oMjgwKSxpPW4oNDE2MCksYT1uKDU2OTQpLG89bigxNDY5KSxzPW4oODYxMiksYz1uKDQxNDQpLHU9big1NzI2KSxsPW4oNjcxOSksaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiEwO2lmKHModCkmJihvKHQpfHwic3RyaW5nIj09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNwbGljZXx8Yyh0KXx8bCh0KXx8YSh0KSkpcmV0dXJuIXQubGVuZ3RoO3ZhciBlPWkodCk7aWYoIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lKXJldHVybiF0LnNpemU7aWYodSh0KSlyZXR1cm4hcih0KS5sZW5ndGg7Zm9yKHZhciBuIGluIHQpaWYoaC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9fSwzNTYwOih0LGUsbik9Pnt2YXIgcj1uKDQyMzkpLGk9bigzMjE4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWkodCkpcmV0dXJuITE7dmFyIGU9cih0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9fSwxNzgwOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9fSw2Njg4Oih0LGUsbik9Pnt2YXIgcj1uKDU1ODgpLGk9bigxNzE3KSxhPW4oMTE2Nyksbz1hJiZhLmlzTWFwLHM9bz9pKG8pOnI7dC5leHBvcnRzPXN9LDMyMTg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX19LDcwMDU6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fX0sODYzMDoodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oNTkyNCksYT1uKDcwMDUpLG89RnVuY3Rpb24ucHJvdG90eXBlLHM9T2JqZWN0LnByb3RvdHlwZSxjPW8udG9TdHJpbmcsdT1zLmhhc093blByb3BlcnR5LGw9Yy5jYWxsKE9iamVjdCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFhKHQpfHwiW29iamVjdCBPYmplY3RdIiE9cih0KSlyZXR1cm4hMTt2YXIgZT1pKHQpO2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciBuPXUuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmYy5jYWxsKG4pPT1sfX0sMjkyODoodCxlLG4pPT57dmFyIHI9big5MjIxKSxpPW4oMTcxNyksYT1uKDExNjcpLG89YSYmYS5pc1NldCxzPW8/aShvKTpyO3QuZXhwb3J0cz1zfSw3MDM3Oih0LGUsbik9Pnt2YXIgcj1uKDQyMzkpLGk9bigxNDY5KSxhPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8IWkodCkmJmEodCkmJiJbb2JqZWN0IFN0cmluZ10iPT1yKHQpfX0sMzQ0ODoodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8aSh0KSYmIltvYmplY3QgU3ltYm9sXSI9PXIodCl9fSw2NzE5Oih0LGUsbik9Pnt2YXIgcj1uKDg3NDkpLGk9bigxNzE3KSxhPW4oMTE2Nyksbz1hJiZhLmlzVHlwZWRBcnJheSxzPW8/aShvKTpyO3QuZXhwb3J0cz1zfSwyMzUzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXR9fSwzNjc0Oih0LGUsbik9Pnt2YXIgcj1uKDQ2MzYpLGk9bigyODApLGE9big4NjEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCk/cih0KTppKHQpfX0sMTcwNDoodCxlLG4pPT57dmFyIHI9big0NjM2KSxpPW4oMzEzKSxhPW4oODYxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQpP3IodCwhMCk6aSh0KX19LDkyODp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT90W2UtMV06dm9pZCAwfX0sNTE2MToodCxlLG4pPT57dmFyIHI9big5OTMyKSxpPW4oNzIwNiksYT1uKDkxOTkpLG89bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4obyh0KT9yOmEpKHQsaShlLDMpKX19LDY2MDQ6KHQsZSxuKT0+e3ZhciByPW4oOTQ2NSksaT1uKDc4MTYpLGE9big3MjA2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gZT1hKGUsMyksaSh0LChmdW5jdGlvbih0LGksYSl7cihuLGksZSh0LGksYSkpfSkpLG59fSw2MTYyOih0LGUsbik9Pnt2YXIgcj1uKDYwMjkpLGk9bigzMzI1KSxhPW4oNjU1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9yKHQsYSxpKTp2b2lkIDB9fSw4MzA2Oih0LGUsbik9Pnt2YXIgcj1uKDMzNjkpO2Z1bmN0aW9uIGkodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLGk9ZT9lLmFwcGx5KHRoaXMscik6clswXSxhPW4uY2FjaGU7aWYoYS5oYXMoaSkpcmV0dXJuIGEuZ2V0KGkpO3ZhciBvPXQuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1hLnNldChpLG8pfHxhLG99O3JldHVybiBuLmNhY2hlPW5ldyhpLkNhY2hlfHxyKSxufWkuQ2FjaGU9cix0LmV4cG9ydHM9aX0sMzg1NzoodCxlLG4pPT57dmFyIHI9bigyOTgwKSxpPW4oMTc1MCkoKGZ1bmN0aW9uKHQsZSxuKXtyKHQsZSxuKX0pKTt0LmV4cG9ydHM9aX0sMzYzMjoodCxlLG4pPT57dmFyIHI9big2MDI5KSxpPW4oNDMzKSxhPW4oNjU1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9yKHQsYSxpKTp2b2lkIDB9fSwyNzYyOih0LGUsbik9Pnt2YXIgcj1uKDYwMjkpLGk9big3MjA2KSxhPW4oNDMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/cih0LGkoZSwyKSxhKTp2b2lkIDB9fSwzMDg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbigpe319LDc3NzE6KHQsZSxuKT0+e3ZhciByPW4oNTYzOSk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuRGF0ZS5ub3coKX19LDk3MjI6KHQsZSxuKT0+e3ZhciByPW4oNTk3MCksaT1uKDkwMjEpKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3t9OnIodCxlKX0pKTt0LmV4cG9ydHM9aX0sOTYwMToodCxlLG4pPT57dmFyIHI9bigzNzEpLGk9big5MTUyKSxhPW4oNTQwMyksbz1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQpP3Iobyh0KSk6aSh0KX19LDYwMjY6KHQsZSxuKT0+e3ZhciByPW4oNzQ0NSkoKTt0LmV4cG9ydHM9cn0sNDA2MToodCxlLG4pPT57dmFyIHI9bigyNjYzKSxpPW4oOTg4MSksYT1uKDcyMDYpLG89bigxMDcpLHM9bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBjPXModCk/cjpvLHU9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBjKHQsYShlLDQpLG4sdSxpKX19LDQyMzg6KHQsZSxuKT0+e3ZhciByPW4oMjgwKSxpPW4oNDE2MCksYT1uKDg2MTIpLG89big3MDM3KSxzPW4oODAxNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoYSh0KSlyZXR1cm4gbyh0KT9zKHQpOnQubGVuZ3RoO3ZhciBlPWkodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lP3Quc2l6ZTpyKHQpLmxlbmd0aH19LDk3MzQ6KHQsZSxuKT0+e3ZhciByPW4oMTA3OCksaT1uKDk1NTYpLGE9big1OTc2KSxvPW4oNjYxMikscz1hKChmdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJuW107dmFyIG49ZS5sZW5ndGg7cmV0dXJuIG4+MSYmbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJm8oZVswXSxlWzFdLGVbMl0pJiYoZT1bZVswXV0pLGkodCxyKGUsMSksW10pfSkpO3QuZXhwb3J0cz1zfSw0Nzk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybltdfX0sNTA2Mjp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSw4NjAxOih0LGUsbik9Pnt2YXIgcj1uKDQ4NDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD9JbmZpbml0eT09PSh0PXIodCkpfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9fSw1NTQ6KHQsZSxuKT0+e3ZhciByPW4oODYwMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfX0sNDg0MToodCxlLG4pPT57dmFyIHI9big3NTYxKSxpPW4oMzIxOCksYT1uKDM0NDgpLG89L15bLStdMHhbMC05YS1mXSskL2kscz0vXjBiWzAxXSskL2ksYz0vXjBvWzAtN10rJC9pLHU9cGFyc2VJbnQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihhKHQpKXJldHVybiBOYU47aWYoaSh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9aShlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9cih0KTt2YXIgbj1zLnRlc3QodCk7cmV0dXJuIG58fGMudGVzdCh0KT91KHQuc2xpY2UoMiksbj8yOjgpOm8udGVzdCh0KT9OYU46K3R9fSwzNjc4Oih0LGUsbik9Pnt2YXIgcj1uKDgzNjMpLGk9bigxNzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxpKHQpKX19LDk4MzM6KHQsZSxuKT0+e3ZhciByPW4oNTMxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6cih0KX19LDg3MTg6KHQsZSxuKT0+e3ZhciByPW4oNzQxMiksaT1uKDMxMTgpLGE9big3ODE2KSxvPW4oNzIwNikscz1uKDU5MjQpLGM9bigxNDY5KSx1PW4oNDE0NCksbD1uKDM1NjApLGg9bigzMjE4KSxmPW4oNjcxOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZD1jKHQpLHA9ZHx8dSh0KXx8Zih0KTtpZihlPW8oZSw0KSxudWxsPT1uKXt2YXIgeT10JiZ0LmNvbnN0cnVjdG9yO249cD9kP25ldyB5OltdOmgodCkmJmwoeSk/aShzKHQpKTp7fX1yZXR1cm4ocD9yOmEpKHQsKGZ1bmN0aW9uKHQscixpKXtyZXR1cm4gZShuLHQscixpKX0pKSxufX0sMzM4NjoodCxlLG4pPT57dmFyIHI9bigxMDc4KSxpPW4oNTk3NiksYT1uKDU2NTIpLG89big5MjQ2KSxzPWkoKGZ1bmN0aW9uKHQpe3JldHVybiBhKHIodCwxLG8sITApKX0pKTt0LmV4cG9ydHM9c30sMzk1NToodCxlLG4pPT57dmFyIHI9big5ODMzKSxpPTA7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSsraTtyZXR1cm4gcih0KStlfX0sMjYyODoodCxlLG4pPT57dmFyIHI9big3NDE1KSxpPW4oMzY3NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOnIodCxpKHQpKX19LDcyODc6KHQsZSxuKT0+e3ZhciByPW4oNDg2NSksaT1uKDE3NTcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBpKHR8fFtdLGV8fFtdLHIpfX0sOTIzNDooKT0+e30sMTc0ODoodCxlLG4pPT57dmFyIHI9eyIuL2xvY2FsZSI6OTIzNCwiLi9sb2NhbGUuanMiOjkyMzR9O2Z1bmN0aW9uIGkodCl7dmFyIGU9YSh0KTtyZXR1cm4gbihlKX1mdW5jdGlvbiBhKHQpe2lmKCFuLm8ocix0KSl7dmFyIGU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdCsiJyIpO3Rocm93IGUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZX1yZXR1cm4gclt0XX1pLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMocil9LGkucmVzb2x2ZT1hLHQuZXhwb3J0cz1pLGkuaWQ9MTc0OH0sMTk0MTpmdW5jdGlvbih0LGUsbil7KHQ9bi5ubWQodCkpLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUscjtmdW5jdGlvbiBpKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheXx8IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10JiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBzKHQpe3JldHVybiB2b2lkIDA9PT10fWZ1bmN0aW9uIGModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fHwiW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZXx8IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGwodCxlKXt2YXIgbixyPVtdO2ZvcihuPTA7bjx0Lmxlbmd0aDsrK24pci5wdXNoKGUodFtuXSxuKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciBuIGluIGUpaChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gaChlLCJ0b1N0cmluZyIpJiYodC50b1N0cmluZz1lLnRvU3RyaW5nKSxoKGUsInZhbHVlT2YiKSYmKHQudmFsdWVPZj1lLnZhbHVlT2YpLHR9ZnVuY3Rpb24gZCh0LGUsbixyKXtyZXR1cm4gYmUodCxlLG4sciwhMCkudXRjKCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbD09dC5fcGYmJih0Ll9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZE1vbnRoOm51bGwsaW52YWxpZEZvcm1hdDohMSx1c2VySW52YWxpZGF0ZWQ6ITEsaXNvOiExLHBhcnNlZERhdGVQYXJ0czpbXSxtZXJpZGllbTpudWxsLHJmYzI4MjI6ITEsd2Vla2RheU1pc21hdGNoOiExfSksdC5fcGZ9ZnVuY3Rpb24geSh0KXtpZihudWxsPT10Ll9pc1ZhbGlkKXt2YXIgZT1wKHQpLG49ci5jYWxsKGUucGFyc2VkRGF0ZVBhcnRzLChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxpPSFpc05hTih0Ll9kLmdldFRpbWUoKSkmJmUub3ZlcmZsb3c8MCYmIWUuZW1wdHkmJiFlLmludmFsaWRNb250aCYmIWUuaW52YWxpZFdlZWtkYXkmJiFlLndlZWtkYXlNaXNtYXRjaCYmIWUubnVsbElucHV0JiYhZS5pbnZhbGlkRm9ybWF0JiYhZS51c2VySW52YWxpZGF0ZWQmJighZS5tZXJpZGllbXx8ZS5tZXJpZGllbSYmbik7aWYodC5fc3RyaWN0JiYoaT1pJiYwPT09ZS5jaGFyc0xlZnRPdmVyJiYwPT09ZS51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT1lLmJpZ0hvdXIpLG51bGwhPU9iamVjdC5pc0Zyb3plbiYmT2JqZWN0LmlzRnJvemVuKHQpKXJldHVybiBpO3QuX2lzVmFsaWQ9aX1yZXR1cm4gdC5faXNWYWxpZH1mdW5jdGlvbiBnKHQpe3ZhciBlPWQoTmFOKTtyZXR1cm4gbnVsbCE9dD9mKHAoZSksdCk6cChlKS51c2VySW52YWxpZGF0ZWQ9ITAsZX1yPUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3QodGhpcyksbj1lLmxlbmd0aD4+PjAscj0wO3I8bjtyKyspaWYociBpbiBlJiZ0LmNhbGwodGhpcyxlW3JdLHIsZSkpcmV0dXJuITA7cmV0dXJuITF9O3ZhciBtPWkubW9tZW50UHJvcGVydGllcz1bXTtmdW5jdGlvbiB2KHQsZSl7dmFyIG4scixpO2lmKHMoZS5faXNBTW9tZW50T2JqZWN0KXx8KHQuX2lzQU1vbWVudE9iamVjdD1lLl9pc0FNb21lbnRPYmplY3QpLHMoZS5faSl8fCh0Ll9pPWUuX2kpLHMoZS5fZil8fCh0Ll9mPWUuX2YpLHMoZS5fbCl8fCh0Ll9sPWUuX2wpLHMoZS5fc3RyaWN0KXx8KHQuX3N0cmljdD1lLl9zdHJpY3QpLHMoZS5fdHptKXx8KHQuX3R6bT1lLl90em0pLHMoZS5faXNVVEMpfHwodC5faXNVVEM9ZS5faXNVVEMpLHMoZS5fb2Zmc2V0KXx8KHQuX29mZnNldD1lLl9vZmZzZXQpLHMoZS5fcGYpfHwodC5fcGY9cChlKSkscyhlLl9sb2NhbGUpfHwodC5fbG9jYWxlPWUuX2xvY2FsZSksMDxtLmxlbmd0aClmb3Iobj0wO248bS5sZW5ndGg7bisrKXMoaT1lW3I9bVtuXV0pfHwodFtyXT1pKTtyZXR1cm4gdH12YXIgYj0hMTtmdW5jdGlvbiBfKHQpe3YodGhpcyx0KSx0aGlzLl9kPW5ldyBEYXRlKG51bGwhPXQuX2Q/dC5fZC5nZXRUaW1lKCk6TmFOKSx0aGlzLmlzVmFsaWQoKXx8KHRoaXMuX2Q9bmV3IERhdGUoTmFOKSksITE9PT1iJiYoYj0hMCxpLnVwZGF0ZU9mZnNldCh0aGlzKSxiPSExKX1mdW5jdGlvbiB4KHQpe3JldHVybiB0IGluc3RhbmNlb2YgX3x8bnVsbCE9dCYmbnVsbCE9dC5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIHcodCl7cmV0dXJuIHQ8MD9NYXRoLmNlaWwodCl8fDA6TWF0aC5mbG9vcih0KX1mdW5jdGlvbiBrKHQpe3ZhciBlPSt0LG49MDtyZXR1cm4gMCE9PWUmJmlzRmluaXRlKGUpJiYobj13KGUpKSxufWZ1bmN0aW9uIFQodCxlLG4pe3ZhciByLGk9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLGE9TWF0aC5hYnModC5sZW5ndGgtZS5sZW5ndGgpLG89MDtmb3Iocj0wO3I8aTtyKyspKG4mJnRbcl0hPT1lW3JdfHwhbiYmayh0W3JdKSE9PWsoZVtyXSkpJiZvKys7cmV0dXJuIG8rYX1mdW5jdGlvbiBFKHQpeyExPT09aS5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrdCl9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuPSEwO3JldHVybiBmKChmdW5jdGlvbigpe2lmKG51bGwhPWkuZGVwcmVjYXRpb25IYW5kbGVyJiZpLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLHQpLG4pe2Zvcih2YXIgcixhPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXtpZihyPSIiLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW29dKXtmb3IodmFyIHMgaW4gcis9IlxuWyIrbysiXSAiLGFyZ3VtZW50c1swXSlyKz1zKyI6ICIrYXJndW1lbnRzWzBdW3NdKyIsICI7cj1yLnNsaWNlKDAsLTIpfWVsc2Ugcj1hcmd1bWVudHNbb107YS5wdXNoKHIpfUUodCsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSkuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFjayksbj0hMX1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxlKX12YXIgUyxBPXt9O2Z1bmN0aW9uIE0odCxlKXtudWxsIT1pLmRlcHJlY2F0aW9uSGFuZGxlciYmaS5kZXByZWNhdGlvbkhhbmRsZXIodCxlKSxBW3RdfHwoRShlKSxBW3RdPSEwKX1mdW5jdGlvbiBOKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gRCh0LGUpe3ZhciBuLHI9Zih7fSx0KTtmb3IobiBpbiBlKWgoZSxuKSYmKG8odFtuXSkmJm8oZVtuXSk/KHJbbl09e30sZihyW25dLHRbbl0pLGYocltuXSxlW25dKSk6bnVsbCE9ZVtuXT9yW25dPWVbbl06ZGVsZXRlIHJbbl0pO2ZvcihuIGluIHQpaCh0LG4pJiYhaChlLG4pJiZvKHRbbl0pJiYocltuXT1mKHt9LHJbbl0pKTtyZXR1cm4gcn1mdW5jdGlvbiBPKHQpe251bGwhPXQmJnRoaXMuc2V0KHQpfWkuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPSExLGkuZGVwcmVjYXRpb25IYW5kbGVyPW51bGwsUz1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2ZvcihlIGluIHQpaCh0LGUpJiZuLnB1c2goZSk7cmV0dXJuIG59O3ZhciBCPXt9O2Z1bmN0aW9uIEwodCxlKXt2YXIgbj10LnRvTG93ZXJDYXNlKCk7QltuXT1CW24rInMiXT1CW2VdPXR9ZnVuY3Rpb24gSSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/Qlt0XXx8Qlt0LnRvTG93ZXJDYXNlKCldOnZvaWQgMH1mdW5jdGlvbiBSKHQpe3ZhciBlLG4scj17fTtmb3IobiBpbiB0KWgodCxuKSYmKGU9SShuKSkmJihyW2VdPXRbbl0pO3JldHVybiByfXZhciBGPXt9O2Z1bmN0aW9uIFAodCxlKXtGW3RdPWV9ZnVuY3Rpb24gaih0LGUsbil7dmFyIHI9IiIrTWF0aC5hYnModCksaT1lLXIubGVuZ3RoO3JldHVybigwPD10P24/IisiOiIiOiItIikrTWF0aC5wb3coMTAsTWF0aC5tYXgoMCxpKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrcn12YXIgWT0vKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyx6PS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFU9e30scT17fTtmdW5jdGlvbiAkKHQsZSxuLHIpe3ZhciBpPXI7InN0cmluZyI9PXR5cGVvZiByJiYoaT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3JdKCl9KSx0JiYocVt0XT1pKSxlJiYocVtlWzBdXT1mdW5jdGlvbigpe3JldHVybiBqKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGVbMV0sZVsyXSl9KSxuJiYocVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQpfSl9ZnVuY3Rpb24gSCh0LGUpe3JldHVybiB0LmlzVmFsaWQoKT8oZT1XKGUsdC5sb2NhbGVEYXRhKCkpLFVbZV09VVtlXXx8ZnVuY3Rpb24odCl7dmFyIGUsbixyLGk9dC5tYXRjaChZKTtmb3IoZT0wLG49aS5sZW5ndGg7ZTxuO2UrKylxW2lbZV1dP2lbZV09cVtpW2VdXTppW2VdPShyPWlbZV0pLm1hdGNoKC9cW1tcc1xTXS8pP3IucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTpyLnJlcGxhY2UoL1xcL2csIiIpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixhPSIiO2ZvcihyPTA7cjxuO3IrKylhKz1OKGlbcl0pP2lbcl0uY2FsbChlLHQpOmlbcl07cmV0dXJuIGF9fShlKSxVW2VdKHQpKTp0LmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIFcodCxlKXt2YXIgbj01O2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUubG9uZ0RhdGVGb3JtYXQodCl8fHR9Zm9yKHoubGFzdEluZGV4PTA7MDw9biYmei50ZXN0KHQpOyl0PXQucmVwbGFjZSh6LHIpLHoubGFzdEluZGV4PTAsbi09MTtyZXR1cm4gdH12YXIgVj0vXGQvLEc9L1xkXGQvLFg9L1xkezN9LyxaPS9cZHs0fS8sUT0vWystXT9cZHs2fS8sSz0vXGRcZD8vLEo9L1xkXGRcZFxkPy8sdHQ9L1xkXGRcZFxkXGRcZD8vLGV0PS9cZHsxLDN9LyxudD0vXGR7MSw0fS8scnQ9L1srLV0/XGR7MSw2fS8saXQ9L1xkKy8sYXQ9L1srLV0/XGQrLyxvdD0vWnxbKy1dXGRcZDo/XGRcZC9naSxzdD0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpLGN0PS9bMC05XXswLDI1Nn1bJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGMDdcdUZGMTAtXHVGRkVGXXsxLDI1Nn18W1x1MDYwMC1cdTA2RkZcL117MSwyNTZ9KFxzKj9bXHUwNjAwLVx1MDZGRl17MSwyNTZ9KXsxLDJ9L2ksdXQ9e307ZnVuY3Rpb24gbHQodCxlLG4pe3V0W3RdPU4oZSk/ZTpmdW5jdGlvbih0LHIpe3JldHVybiB0JiZuP246ZX19ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gaCh1dCx0KT91dFt0XShlLl9zdHJpY3QsZS5fbG9jYWxlKTpuZXcgUmVnRXhwKGZ0KHQucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csKGZ1bmN0aW9uKHQsZSxuLHIsaSl7cmV0dXJuIGV8fG58fHJ8fGl9KSkpKX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfXZhciBkdD17fTtmdW5jdGlvbiBwdCh0LGUpe3ZhciBuLHI9ZTtmb3IoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLGMoZSkmJihyPWZ1bmN0aW9uKHQsbil7bltlXT1rKHQpfSksbj0wO248dC5sZW5ndGg7bisrKWR0W3Rbbl1dPXJ9ZnVuY3Rpb24geXQodCxlKXtwdCh0LChmdW5jdGlvbih0LG4scixpKXtyLl93PXIuX3d8fHt9LGUodCxyLl93LHIsaSl9KSl9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIG10KHQpPzM2NjozNjV9ZnVuY3Rpb24gbXQodCl7cmV0dXJuIHQlND09MCYmdCUxMDAhPTB8fHQlNDAwPT0wfSQoIlkiLDAsMCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLnllYXIoKTtyZXR1cm4gdDw9OTk5OT8iIit0OiIrIit0fSkpLCQoMCxbIllZIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLnllYXIoKSUxMDB9KSksJCgwLFsiWVlZWSIsNF0sMCwieWVhciIpLCQoMCxbIllZWVlZIiw1XSwwLCJ5ZWFyIiksJCgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksTCgieWVhciIsInkiKSxQKCJ5ZWFyIiwxKSxsdCgiWSIsYXQpLGx0KCJZWSIsSyxHKSxsdCgiWVlZWSIsbnQsWiksbHQoIllZWVlZIixydCxRKSxsdCgiWVlZWVlZIixydCxRKSxwdChbIllZWVlZIiwiWVlZWVlZIl0sMCkscHQoIllZWVkiLChmdW5jdGlvbih0LGUpe2VbMF09Mj09PXQubGVuZ3RoP2kucGFyc2VUd29EaWdpdFllYXIodCk6ayh0KX0pKSxwdCgiWVkiLChmdW5jdGlvbih0LGUpe2VbMF09aS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pKSxwdCgiWSIsKGZ1bmN0aW9uKHQsZSl7ZVswXT1wYXJzZUludCh0LDEwKX0pKSxpLnBhcnNlVHdvRGlnaXRZZWFyPWZ1bmN0aW9uKHQpe3JldHVybiBrKHQpKyg2ODxrKHQpPzE5MDA6MmUzKX07dmFyIHZ0LGJ0PV90KCJGdWxsWWVhciIsITApO2Z1bmN0aW9uIF90KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uPyh3dCh0aGlzLHQsbiksaS51cGRhdGVPZmZzZXQodGhpcyxlKSx0aGlzKTp4dCh0aGlzLHQpfX1mdW5jdGlvbiB4dCh0LGUpe3JldHVybiB0LmlzVmFsaWQoKT90Ll9kWyJnZXQiKyh0Ll9pc1VUQz8iVVRDIjoiIikrZV0oKTpOYU59ZnVuY3Rpb24gd3QodCxlLG4pe3QuaXNWYWxpZCgpJiYhaXNOYU4obikmJigiRnVsbFllYXIiPT09ZSYmbXQodC55ZWFyKCkpJiYxPT09dC5tb250aCgpJiYyOT09PXQuZGF0ZSgpP3QuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXShuLHQubW9udGgoKSxrdChuLHQubW9udGgoKSkpOnQuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXShuKSl9ZnVuY3Rpb24ga3QodCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpcmV0dXJuIE5hTjt2YXIgbj0oZSUxMisxMiklMTI7cmV0dXJuIHQrPShlLW4pLzEyLDE9PT1uP210KHQpPzI5OjI4OjMxLW4lNyUyfXZ0PUFycmF5LnByb3RvdHlwZS5pbmRleE9mP0FycmF5LnByb3RvdHlwZS5pbmRleE9mOmZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPTA7ZTx0aGlzLmxlbmd0aDsrK2UpaWYodGhpc1tlXT09PXQpcmV0dXJuIGU7cmV0dXJuLTF9LCQoIk0iLFsiTU0iLDJdLCJNbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSkpLCQoIk1NTSIsMCwwLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx0KX0pKSwkKCJNTU1NIiwwLDAsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcyx0KX0pKSxMKCJtb250aCIsIk0iKSxQKCJtb250aCIsOCksbHQoIk0iLEspLGx0KCJNTSIsSyxHKSxsdCgiTU1NIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5tb250aHNTaG9ydFJlZ2V4KHQpfSkpLGx0KCJNTU1NIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5tb250aHNSZWdleCh0KX0pKSxwdChbIk0iLCJNTSJdLChmdW5jdGlvbih0LGUpe2VbMV09ayh0KS0xfSkpLHB0KFsiTU1NIiwiTU1NTSJdLChmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1uLl9sb2NhbGUubW9udGhzUGFyc2UodCxyLG4uX3N0cmljdCk7bnVsbCE9aT9lWzFdPWk6cChuKS5pbnZhbGlkTW9udGg9dH0pKTt2YXIgVHQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/LyxFdD0iSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxDdD0iSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIik7ZnVuY3Rpb24gU3QodCxlKXt2YXIgbjtpZighdC5pc1ZhbGlkKCkpcmV0dXJuIHQ7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlmKC9eXGQrJC8udGVzdChlKSllPWsoZSk7ZWxzZSBpZighYyhlPXQubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKGUpKSlyZXR1cm4gdDtyZXR1cm4gbj1NYXRoLm1pbih0LmRhdGUoKSxrdCh0LnllYXIoKSxlKSksdC5fZFsic2V0IisodC5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKGUsbiksdH1mdW5jdGlvbiBBdCh0KXtyZXR1cm4gbnVsbCE9dD8oU3QodGhpcyx0KSxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTp4dCh0aGlzLCJNb250aCIpfXZhciBNdD1jdCxOdD1jdDtmdW5jdGlvbiBEdCgpe2Z1bmN0aW9uIHQodCxlKXtyZXR1cm4gZS5sZW5ndGgtdC5sZW5ndGh9dmFyIGUsbixyPVtdLGk9W10sYT1bXTtmb3IoZT0wO2U8MTI7ZSsrKW49ZChbMmUzLGVdKSxyLnB1c2godGhpcy5tb250aHNTaG9ydChuLCIiKSksaS5wdXNoKHRoaXMubW9udGhzKG4sIiIpKSxhLnB1c2godGhpcy5tb250aHMobiwiIikpLGEucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG4sIiIpKTtmb3Ioci5zb3J0KHQpLGkuc29ydCh0KSxhLnNvcnQodCksZT0wO2U8MTI7ZSsrKXJbZV09ZnQocltlXSksaVtlXT1mdChpW2VdKTtmb3IoZT0wO2U8MjQ7ZSsrKWFbZV09ZnQoYVtlXSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK2Euam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9dGhpcy5fbW9udGhzUmVnZXgsdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2kuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Iuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIE90KHQpe3ZhciBlO2lmKHQ8MTAwJiYwPD10KXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO25bMF09dCs0MDAsZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLG4pKSxpc0Zpbml0ZShlLmdldFVUQ0Z1bGxZZWFyKCkpJiZlLnNldFVUQ0Z1bGxZZWFyKHQpfWVsc2UgZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpO3JldHVybiBlfWZ1bmN0aW9uIEJ0KHQsZSxuKXt2YXIgcj03K2UtbjtyZXR1cm4tKDcrT3QodCwwLHIpLmdldFVUQ0RheSgpLWUpJTcrci0xfWZ1bmN0aW9uIEx0KHQsZSxuLHIsaSl7dmFyIGEsbyxzPTErNyooZS0xKSsoNytuLXIpJTcrQnQodCxyLGkpO3JldHVybiBvPXM8PTA/Z3QoYT10LTEpK3M6cz5ndCh0KT8oYT10KzEscy1ndCh0KSk6KGE9dCxzKSx7eWVhcjphLGRheU9mWWVhcjpvfX1mdW5jdGlvbiBJdCh0LGUsbil7dmFyIHIsaSxhPUJ0KHQueWVhcigpLGUsbiksbz1NYXRoLmZsb29yKCh0LmRheU9mWWVhcigpLWEtMSkvNykrMTtyZXR1cm4gbzwxP3I9bytSdChpPXQueWVhcigpLTEsZSxuKTpvPlJ0KHQueWVhcigpLGUsbik/KHI9by1SdCh0LnllYXIoKSxlLG4pLGk9dC55ZWFyKCkrMSk6KGk9dC55ZWFyKCkscj1vKSx7d2VlazpyLHllYXI6aX19ZnVuY3Rpb24gUnQodCxlLG4pe3ZhciByPUJ0KHQsZSxuKSxpPUJ0KHQrMSxlLG4pO3JldHVybihndCh0KS1yK2kpLzd9ZnVuY3Rpb24gRnQodCxlKXtyZXR1cm4gdC5zbGljZShlLDcpLmNvbmNhdCh0LnNsaWNlKDAsZSkpfSQoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSwkKCJXIixbIldXIiwyXSwiV28iLCJpc29XZWVrIiksTCgid2VlayIsInciKSxMKCJpc29XZWVrIiwiVyIpLFAoIndlZWsiLDUpLFAoImlzb1dlZWsiLDUpLGx0KCJ3IixLKSxsdCgid3ciLEssRyksbHQoIlciLEspLGx0KCJXVyIsSyxHKSx5dChbInciLCJ3dyIsIlciLCJXVyJdLChmdW5jdGlvbih0LGUsbixyKXtlW3Iuc3Vic3RyKDAsMSldPWsodCl9KSksJCgiZCIsMCwiZG8iLCJkYXkiKSwkKCJkZCIsMCwwLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyx0KX0pKSwkKCJkZGQiLDAsMCwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyx0KX0pKSwkKCJkZGRkIiwwLDAsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLHQpfSkpLCQoImUiLDAsMCwid2Vla2RheSIpLCQoIkUiLDAsMCwiaXNvV2Vla2RheSIpLEwoImRheSIsImQiKSxMKCJ3ZWVrZGF5IiwiZSIpLEwoImlzb1dlZWtkYXkiLCJFIiksUCgiZGF5IiwxMSksUCgid2Vla2RheSIsMTEpLFAoImlzb1dlZWtkYXkiLDExKSxsdCgiZCIsSyksbHQoImUiLEspLGx0KCJFIixLKSxsdCgiZGQiLChmdW5jdGlvbih0LGUpe3JldHVybiBlLndlZWtkYXlzTWluUmVnZXgodCl9KSksbHQoImRkZCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUud2Vla2RheXNTaG9ydFJlZ2V4KHQpfSkpLGx0KCJkZGRkIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS53ZWVrZGF5c1JlZ2V4KHQpfSkpLHl0KFsiZGQiLCJkZGQiLCJkZGRkIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPW4uX2xvY2FsZS53ZWVrZGF5c1BhcnNlKHQscixuLl9zdHJpY3QpO251bGwhPWk/ZS5kPWk6cChuKS5pbnZhbGlkV2Vla2RheT10fSkpLHl0KFsiZCIsImUiLCJFIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe2Vbcl09ayh0KX0pKTt2YXIgUHQ9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLGp0PSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksWXQ9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLHp0PWN0LFV0PWN0LHF0PWN0O2Z1bmN0aW9uICR0KCl7ZnVuY3Rpb24gdCh0LGUpe3JldHVybiBlLmxlbmd0aC10Lmxlbmd0aH12YXIgZSxuLHIsaSxhLG89W10scz1bXSxjPVtdLHU9W107Zm9yKGU9MDtlPDc7ZSsrKW49ZChbMmUzLDFdKS5kYXkoZSkscj10aGlzLndlZWtkYXlzTWluKG4sIiIpLGk9dGhpcy53ZWVrZGF5c1Nob3J0KG4sIiIpLGE9dGhpcy53ZWVrZGF5cyhuLCIiKSxvLnB1c2gocikscy5wdXNoKGkpLGMucHVzaChhKSx1LnB1c2gociksdS5wdXNoKGkpLHUucHVzaChhKTtmb3Ioby5zb3J0KHQpLHMuc29ydCh0KSxjLnNvcnQodCksdS5zb3J0KHQpLGU9MDtlPDc7ZSsrKXNbZV09ZnQoc1tlXSksY1tlXT1mdChjW2VdKSx1W2VdPWZ0KHVbZV0pO3RoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Uuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitjLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Muam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK28uam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIEh0KCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9ZnVuY3Rpb24gV3QodCxlKXskKHQsMCwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksZSl9KSl9ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gZS5fbWVyaWRpZW1QYXJzZX0kKCJIIixbIkhIIiwyXSwwLCJob3VyIiksJCgiaCIsWyJoaCIsMl0sMCxIdCksJCgiayIsWyJrayIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH0pKSwkKCJobW0iLDAsMCwoZnVuY3Rpb24oKXtyZXR1cm4iIitIdC5hcHBseSh0aGlzKStqKHRoaXMubWludXRlcygpLDIpfSkpLCQoImhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrSHQuYXBwbHkodGhpcykraih0aGlzLm1pbnV0ZXMoKSwyKStqKHRoaXMuc2Vjb25kcygpLDIpfSkpLCQoIkhtbSIsMCwwLChmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStqKHRoaXMubWludXRlcygpLDIpfSkpLCQoIkhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5ob3VycygpK2oodGhpcy5taW51dGVzKCksMikraih0aGlzLnNlY29uZHMoKSwyKX0pKSxXdCgiYSIsITApLFd0KCJBIiwhMSksTCgiaG91ciIsImgiKSxQKCJob3VyIiwxMyksbHQoImEiLFZ0KSxsdCgiQSIsVnQpLGx0KCJIIixLKSxsdCgiaCIsSyksbHQoImsiLEspLGx0KCJISCIsSyxHKSxsdCgiaGgiLEssRyksbHQoImtrIixLLEcpLGx0KCJobW0iLEopLGx0KCJobW1zcyIsdHQpLGx0KCJIbW0iLEopLGx0KCJIbW1zcyIsdHQpLHB0KFsiSCIsIkhIIl0sMykscHQoWyJrIiwia2siXSwoZnVuY3Rpb24odCxlLG4pe3ZhciByPWsodCk7ZVszXT0yND09PXI/MDpyfSkpLHB0KFsiYSIsIkEiXSwoZnVuY3Rpb24odCxlLG4pe24uX2lzUG09bi5fbG9jYWxlLmlzUE0odCksbi5fbWVyaWRpZW09dH0pKSxwdChbImgiLCJoaCJdLChmdW5jdGlvbih0LGUsbil7ZVszXT1rKHQpLHAobikuYmlnSG91cj0hMH0pKSxwdCgiaG1tIiwoZnVuY3Rpb24odCxlLG4pe3ZhciByPXQubGVuZ3RoLTI7ZVszXT1rKHQuc3Vic3RyKDAscikpLGVbNF09ayh0LnN1YnN0cihyKSkscChuKS5iaWdIb3VyPSEwfSkpLHB0KCJobW1zcyIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10Lmxlbmd0aC00LGk9dC5sZW5ndGgtMjtlWzNdPWsodC5zdWJzdHIoMCxyKSksZVs0XT1rKHQuc3Vic3RyKHIsMikpLGVbNV09ayh0LnN1YnN0cihpKSkscChuKS5iaWdIb3VyPSEwfSkpLHB0KCJIbW0iLChmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5sZW5ndGgtMjtlWzNdPWsodC5zdWJzdHIoMCxyKSksZVs0XT1rKHQuc3Vic3RyKHIpKX0pKSxwdCgiSG1tc3MiLChmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5sZW5ndGgtNCxpPXQubGVuZ3RoLTI7ZVszXT1rKHQuc3Vic3RyKDAscikpLGVbNF09ayh0LnN1YnN0cihyLDIpKSxlWzVdPWsodC5zdWJzdHIoaSkpfSkpO3ZhciBHdCxYdD1fdCgiSG91cnMiLCEwKSxadD17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sbW9udGhzOkV0LG1vbnRoc1Nob3J0OkN0LHdlZWs6e2RvdzowLGRveTo2fSx3ZWVrZGF5czpQdCx3ZWVrZGF5c01pbjpZdCx3ZWVrZGF5c1Nob3J0Omp0LG1lcmlkaWVtUGFyc2U6L1thcF1cLj9tP1wuPy9pfSxRdD17fSxLdD17fTtmdW5jdGlvbiBKdCh0KXtyZXR1cm4gdD90LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTp0fWZ1bmN0aW9uIHRlKGUpe3ZhciByPW51bGw7aWYoIVF0W2VdJiZ0JiZ0LmV4cG9ydHMpdHJ5e3I9R3QuX2FiYnIsbigxNzQ4KSgiLi8iK2UpLGVlKHIpfWNhdGNoKGUpe31yZXR1cm4gUXRbZV19ZnVuY3Rpb24gZWUodCxlKXt2YXIgbjtyZXR1cm4gdCYmKChuPXMoZSk/cmUodCk6bmUodCxlKSk/R3Q9bjoidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2NhbGUgIit0KyIgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PyIpKSxHdC5fYWJicn1mdW5jdGlvbiBuZSh0LGUpe2lmKG51bGw9PT1lKXJldHVybiBkZWxldGUgUXRbdF0sbnVsbDt2YXIgbixyPVp0O2lmKGUuYWJicj10LG51bGwhPVF0W3RdKU0oImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIikscj1RdFt0XS5fY29uZmlnO2Vsc2UgaWYobnVsbCE9ZS5wYXJlbnRMb2NhbGUpaWYobnVsbCE9UXRbZS5wYXJlbnRMb2NhbGVdKXI9UXRbZS5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0obj10ZShlLnBhcmVudExvY2FsZSkpKXJldHVybiBLdFtlLnBhcmVudExvY2FsZV18fChLdFtlLnBhcmVudExvY2FsZV09W10pLEt0W2UucGFyZW50TG9jYWxlXS5wdXNoKHtuYW1lOnQsY29uZmlnOmV9KSxudWxsO3I9bi5fY29uZmlnfXJldHVybiBRdFt0XT1uZXcgTyhEKHIsZSkpLEt0W3RdJiZLdFt0XS5mb3JFYWNoKChmdW5jdGlvbih0KXtuZSh0Lm5hbWUsdC5jb25maWcpfSkpLGVlKHQpLFF0W3RdfWZ1bmN0aW9uIHJlKHQpe3ZhciBlO2lmKHQmJnQuX2xvY2FsZSYmdC5fbG9jYWxlLl9hYmJyJiYodD10Ll9sb2NhbGUuX2FiYnIpLCF0KXJldHVybiBHdDtpZighYSh0KSl7aWYoZT10ZSh0KSlyZXR1cm4gZTt0PVt0XX1yZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scixpLGE9MDthPHQubGVuZ3RoOyl7Zm9yKGU9KGk9SnQodFthXSkuc3BsaXQoIi0iKSkubGVuZ3RoLG49KG49SnQodFthKzFdKSk/bi5zcGxpdCgiLSIpOm51bGw7MDxlOyl7aWYocj10ZShpLnNsaWNlKDAsZSkuam9pbigiLSIpKSlyZXR1cm4gcjtpZihuJiZuLmxlbmd0aD49ZSYmVChpLG4sITApPj1lLTEpYnJlYWs7ZS0tfWErK31yZXR1cm4gR3R9KHQpfWZ1bmN0aW9uIGllKHQpe3ZhciBlLG49dC5fYTtyZXR1cm4gbiYmLTI9PT1wKHQpLm92ZXJmbG93JiYoZT1uWzFdPDB8fDExPG5bMV0/MTpuWzJdPDF8fG5bMl0+a3QoblswXSxuWzFdKT8yOm5bM108MHx8MjQ8blszXXx8MjQ9PT1uWzNdJiYoMCE9PW5bNF18fDAhPT1uWzVdfHwwIT09bls2XSk/MzpuWzRdPDB8fDU5PG5bNF0/NDpuWzVdPDB8fDU5PG5bNV0/NTpuWzZdPDB8fDk5OTxuWzZdPzY6LTEscCh0KS5fb3ZlcmZsb3dEYXlPZlllYXImJihlPDB8fDI8ZSkmJihlPTIpLHAodCkuX292ZXJmbG93V2Vla3MmJi0xPT09ZSYmKGU9NykscCh0KS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PWUmJihlPTgpLHAodCkub3ZlcmZsb3c9ZSksdH1mdW5jdGlvbiBhZSh0LGUsbil7cmV0dXJuIG51bGwhPXQ/dDpudWxsIT1lP2U6bn1mdW5jdGlvbiBvZSh0KXt2YXIgZSxuLHIsYSxvLHM9W107aWYoIXQuX2Qpe3ZhciBjLHU7Zm9yKGM9dCx1PW5ldyBEYXRlKGkubm93KCkpLHI9Yy5fdXNlVVRDP1t1LmdldFVUQ0Z1bGxZZWFyKCksdS5nZXRVVENNb250aCgpLHUuZ2V0VVRDRGF0ZSgpXTpbdS5nZXRGdWxsWWVhcigpLHUuZ2V0TW9udGgoKSx1LmdldERhdGUoKV0sdC5fdyYmbnVsbD09dC5fYVsyXSYmbnVsbD09dC5fYVsxXSYmZnVuY3Rpb24odCl7dmFyIGUsbixyLGksYSxvLHMsYztpZihudWxsIT0oZT10Ll93KS5HR3x8bnVsbCE9ZS5XfHxudWxsIT1lLkUpYT0xLG89NCxuPWFlKGUuR0csdC5fYVswXSxJdChfZSgpLDEsNCkueWVhcikscj1hZShlLlcsMSksKChpPWFlKGUuRSwxKSk8MXx8NzxpKSYmKGM9ITApO2Vsc2V7YT10Ll9sb2NhbGUuX3dlZWsuZG93LG89dC5fbG9jYWxlLl93ZWVrLmRveTt2YXIgdT1JdChfZSgpLGEsbyk7bj1hZShlLmdnLHQuX2FbMF0sdS55ZWFyKSxyPWFlKGUudyx1LndlZWspLG51bGwhPWUuZD8oKGk9ZS5kKTwwfHw2PGkpJiYoYz0hMCk6bnVsbCE9ZS5lPyhpPWUuZSthLChlLmU8MHx8NjxlLmUpJiYoYz0hMCkpOmk9YX1yPDF8fHI+UnQobixhLG8pP3AodCkuX292ZXJmbG93V2Vla3M9ITA6bnVsbCE9Yz9wKHQpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KHM9THQobixyLGksYSxvKSx0Ll9hWzBdPXMueWVhcix0Ll9kYXlPZlllYXI9cy5kYXlPZlllYXIpfSh0KSxudWxsIT10Ll9kYXlPZlllYXImJihvPWFlKHQuX2FbMF0sclswXSksKHQuX2RheU9mWWVhcj5ndChvKXx8MD09PXQuX2RheU9mWWVhcikmJihwKHQpLl9vdmVyZmxvd0RheU9mWWVhcj0hMCksbj1PdChvLDAsdC5fZGF5T2ZZZWFyKSx0Ll9hWzFdPW4uZ2V0VVRDTW9udGgoKSx0Ll9hWzJdPW4uZ2V0VVRDRGF0ZSgpKSxlPTA7ZTwzJiZudWxsPT10Ll9hW2VdOysrZSl0Ll9hW2VdPXNbZV09cltlXTtmb3IoO2U8NztlKyspdC5fYVtlXT1zW2VdPW51bGw9PXQuX2FbZV0/Mj09PWU/MTowOnQuX2FbZV07MjQ9PT10Ll9hWzNdJiYwPT09dC5fYVs0XSYmMD09PXQuX2FbNV0mJjA9PT10Ll9hWzZdJiYodC5fbmV4dERheT0hMCx0Ll9hWzNdPTApLHQuX2Q9KHQuX3VzZVVUQz9PdDpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcztyZXR1cm4gdDwxMDAmJjA8PXQ/KHM9bmV3IERhdGUodCs0MDAsZSxuLHIsaSxhLG8pLGlzRmluaXRlKHMuZ2V0RnVsbFllYXIoKSkmJnMuc2V0RnVsbFllYXIodCkpOnM9bmV3IERhdGUodCxlLG4scixpLGEsbyksc30pLmFwcGx5KG51bGwscyksYT10Ll91c2VVVEM/dC5fZC5nZXRVVENEYXkoKTp0Ll9kLmdldERheSgpLG51bGwhPXQuX3R6bSYmdC5fZC5zZXRVVENNaW51dGVzKHQuX2QuZ2V0VVRDTWludXRlcygpLXQuX3R6bSksdC5fbmV4dERheSYmKHQuX2FbM109MjQpLHQuX3cmJnZvaWQgMCE9PXQuX3cuZCYmdC5fdy5kIT09YSYmKHAodCkud2Vla2RheU1pc21hdGNoPSEwKX19dmFyIHNlPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLGNlPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyx1ZT0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/LyxsZT1bWyJZWVlZWVktTU0tREQiLC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0vXSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1XXGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dXSxoZT1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxmZT0vXlwvP0RhdGVcKChcLT9cZCspL2k7ZnVuY3Rpb24gZGUodCl7dmFyIGUsbixyLGksYSxvLHM9dC5faSxjPXNlLmV4ZWMocyl8fGNlLmV4ZWMocyk7aWYoYyl7Zm9yKHAodCkuaXNvPSEwLGU9MCxuPWxlLmxlbmd0aDtlPG47ZSsrKWlmKGxlW2VdWzFdLmV4ZWMoY1sxXSkpe2k9bGVbZV1bMF0scj0hMSE9PWxlW2VdWzJdO2JyZWFrfWlmKG51bGw9PWkpcmV0dXJuIHZvaWQodC5faXNWYWxpZD0hMSk7aWYoY1szXSl7Zm9yKGU9MCxuPWhlLmxlbmd0aDtlPG47ZSsrKWlmKGhlW2VdWzFdLmV4ZWMoY1szXSkpe2E9KGNbMl18fCIgIikraGVbZV1bMF07YnJlYWt9aWYobnVsbD09YSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKX1pZighciYmbnVsbCE9YSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKTtpZihjWzRdKXtpZighdWUuZXhlYyhjWzRdKSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKTtvPSJaIn10Ll9mPWkrKGF8fCIiKSsob3x8IiIpLG1lKHQpfWVsc2UgdC5faXNWYWxpZD0hMX12YXIgcGU9L14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XHMpPyhcZHsxLDJ9KVxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxzKFxkezIsNH0pXHMoXGRcZCk6KFxkXGQpKD86OihcZFxkKSk/XHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cZHs0fSkpJC87dmFyIHllPXtVVDowLEdNVDowLEVEVDotMjQwLEVTVDotMzAwLENEVDotMzAwLENTVDotMzYwLE1EVDotMzYwLE1TVDotNDIwLFBEVDotNDIwLFBTVDotNDgwfTtmdW5jdGlvbiBnZSh0KXt2YXIgZSxuLHIsaT1wZS5leGVjKHQuX2kucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxzXHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIikpO2lmKGkpe3ZhciBhPWZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt2YXIgbz1bZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7cmV0dXJuIGU8PTQ5PzJlMytlOmU8PTk5OT8xOTAwK2U6ZX0odCksQ3QuaW5kZXhPZihlKSxwYXJzZUludChuLDEwKSxwYXJzZUludChyLDEwKSxwYXJzZUludChpLDEwKV07cmV0dXJuIGEmJm8ucHVzaChwYXJzZUludChhLDEwKSksb30oaVs0XSxpWzNdLGlbMl0saVs1XSxpWzZdLGlbN10pO2lmKG49YSxyPXQsKGU9aVsxXSkmJmp0LmluZGV4T2YoZSkhPT1uZXcgRGF0ZShuWzBdLG5bMV0sblsyXSkuZ2V0RGF5KCkmJihwKHIpLndlZWtkYXlNaXNtYXRjaD0hMCwhKHIuX2lzVmFsaWQ9ITEpKSlyZXR1cm47dC5fYT1hLHQuX3R6bT1mdW5jdGlvbih0LGUsbil7aWYodClyZXR1cm4geWVbdF07aWYoZSlyZXR1cm4gMDt2YXIgcj1wYXJzZUludChuLDEwKSxpPXIlMTAwO3JldHVybihyLWkpLzEwMCo2MCtpfShpWzhdLGlbOV0saVsxMF0pLHQuX2Q9T3QuYXBwbHkobnVsbCx0Ll9hKSx0Ll9kLnNldFVUQ01pbnV0ZXModC5fZC5nZXRVVENNaW51dGVzKCktdC5fdHptKSxwKHQpLnJmYzI4MjI9ITB9ZWxzZSB0Ll9pc1ZhbGlkPSExfWZ1bmN0aW9uIG1lKHQpe2lmKHQuX2YhPT1pLklTT184NjAxKWlmKHQuX2YhPT1pLlJGQ18yODIyKXt0Ll9hPVtdLHAodCkuZW1wdHk9ITA7dmFyIGUsbixyLGEsbyxzLGMsdSxsPSIiK3QuX2ksZj1sLmxlbmd0aCxkPTA7Zm9yKHI9Vyh0Ll9mLHQuX2xvY2FsZSkubWF0Y2goWSl8fFtdLGU9MDtlPHIubGVuZ3RoO2UrKylhPXJbZV0sKG49KGwubWF0Y2goaHQoYSx0KSl8fFtdKVswXSkmJigwPChvPWwuc3Vic3RyKDAsbC5pbmRleE9mKG4pKSkubGVuZ3RoJiZwKHQpLnVudXNlZElucHV0LnB1c2gobyksbD1sLnNsaWNlKGwuaW5kZXhPZihuKStuLmxlbmd0aCksZCs9bi5sZW5ndGgpLHFbYV0/KG4/cCh0KS5lbXB0eT0hMTpwKHQpLnVudXNlZFRva2Vucy5wdXNoKGEpLHM9YSx1PXQsbnVsbCE9KGM9bikmJmgoZHQscykmJmR0W3NdKGMsdS5fYSx1LHMpKTp0Ll9zdHJpY3QmJiFuJiZwKHQpLnVudXNlZFRva2Vucy5wdXNoKGEpO3AodCkuY2hhcnNMZWZ0T3Zlcj1mLWQsMDxsLmxlbmd0aCYmcCh0KS51bnVzZWRJbnB1dC5wdXNoKGwpLHQuX2FbM108PTEyJiYhMD09PXAodCkuYmlnSG91ciYmMDx0Ll9hWzNdJiYocCh0KS5iaWdIb3VyPXZvaWQgMCkscCh0KS5wYXJzZWREYXRlUGFydHM9dC5fYS5zbGljZSgwKSxwKHQpLm1lcmlkaWVtPXQuX21lcmlkaWVtLHQuX2FbM109ZnVuY3Rpb24odCxlLG4pe3ZhciByO3JldHVybiBudWxsPT1uP2U6bnVsbCE9dC5tZXJpZGllbUhvdXI/dC5tZXJpZGllbUhvdXIoZSxuKToobnVsbCE9dC5pc1BNJiYoKHI9dC5pc1BNKG4pKSYmZTwxMiYmKGUrPTEyKSxyfHwxMiE9PWV8fChlPTApKSxlKX0odC5fbG9jYWxlLHQuX2FbM10sdC5fbWVyaWRpZW0pLG9lKHQpLGllKHQpfWVsc2UgZ2UodCk7ZWxzZSBkZSh0KX1mdW5jdGlvbiB2ZSh0KXt2YXIgZSxuLHIsaCxkPXQuX2ksbT10Ll9mO3JldHVybiB0Ll9sb2NhbGU9dC5fbG9jYWxlfHxyZSh0Ll9sKSxudWxsPT09ZHx8dm9pZCAwPT09bSYmIiI9PT1kP2coe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIGQmJih0Ll9pPWQ9dC5fbG9jYWxlLnByZXBhcnNlKGQpKSx4KGQpP25ldyBfKGllKGQpKToodShkKT90Ll9kPWQ6YShtKT9mdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxhO2lmKDA9PT10Ll9mLmxlbmd0aClyZXR1cm4gcCh0KS5pbnZhbGlkRm9ybWF0PSEwLHQuX2Q9bmV3IERhdGUoTmFOKTtmb3IoaT0wO2k8dC5fZi5sZW5ndGg7aSsrKWE9MCxlPXYoe30sdCksbnVsbCE9dC5fdXNlVVRDJiYoZS5fdXNlVVRDPXQuX3VzZVVUQyksZS5fZj10Ll9mW2ldLG1lKGUpLHkoZSkmJihhKz1wKGUpLmNoYXJzTGVmdE92ZXIsYSs9MTAqcChlKS51bnVzZWRUb2tlbnMubGVuZ3RoLHAoZSkuc2NvcmU9YSwobnVsbD09cnx8YTxyKSYmKHI9YSxuPWUpKTtmKHQsbnx8ZSl9KHQpOm0/bWUodCk6cyhuPShlPXQpLl9pKT9lLl9kPW5ldyBEYXRlKGkubm93KCkpOnUobik/ZS5fZD1uZXcgRGF0ZShuLnZhbHVlT2YoKSk6InN0cmluZyI9PXR5cGVvZiBuPyhyPWUsbnVsbD09PShoPWZlLmV4ZWMoci5faSkpPyhkZShyKSwhMT09PXIuX2lzVmFsaWQmJihkZWxldGUgci5faXNWYWxpZCxnZShyKSwhMT09PXIuX2lzVmFsaWQmJihkZWxldGUgci5faXNWYWxpZCxpLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHIpKSkpOnIuX2Q9bmV3IERhdGUoK2hbMV0pKTphKG4pPyhlLl9hPWwobi5zbGljZSgwKSwoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfSkpLG9lKGUpKTpvKG4pP2Z1bmN0aW9uKHQpe2lmKCF0Ll9kKXt2YXIgZT1SKHQuX2kpO3QuX2E9bChbZS55ZWFyLGUubW9udGgsZS5kYXl8fGUuZGF0ZSxlLmhvdXIsZS5taW51dGUsZS5zZWNvbmQsZS5taWxsaXNlY29uZF0sKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZwYXJzZUludCh0LDEwKX0pKSxvZSh0KX19KGUpOmMobik/ZS5fZD1uZXcgRGF0ZShuKTppLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGUpLHkodCl8fCh0Ll9kPW51bGwpLHQpKX1mdW5jdGlvbiBiZSh0LGUsbixyLGkpe3ZhciBzLGM9e307cmV0dXJuITAhPT1uJiYhMSE9PW58fChyPW4sbj12b2lkIDApLChvKHQpJiZmdW5jdGlvbih0KXtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gMD09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmxlbmd0aDt2YXIgZTtmb3IoZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuITE7cmV0dXJuITB9KHQpfHxhKHQpJiYwPT09dC5sZW5ndGgpJiYodD12b2lkIDApLGMuX2lzQU1vbWVudE9iamVjdD0hMCxjLl91c2VVVEM9Yy5faXNVVEM9aSxjLl9sPW4sYy5faT10LGMuX2Y9ZSxjLl9zdHJpY3Q9ciwocz1uZXcgXyhpZSh2ZShjKSkpKS5fbmV4dERheSYmKHMuYWRkKDEsImQiKSxzLl9uZXh0RGF5PXZvaWQgMCksc31mdW5jdGlvbiBfZSh0LGUsbixyKXtyZXR1cm4gYmUodCxlLG4sciwhMSl9aS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1DKCJ2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSBkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uIiwoZnVuY3Rpb24odCl7dC5fZD1uZXcgRGF0ZSh0Ll9pKyh0Ll91c2VVVEM/IiBVVEMiOiIiKSl9KSksaS5JU09fODYwMT1mdW5jdGlvbigpe30saS5SRkNfMjgyMj1mdW5jdGlvbigpe307dmFyIHhlPUMoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIiwoZnVuY3Rpb24oKXt2YXIgdD1fZS5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZ0LmlzVmFsaWQoKT90PHRoaXM/dGhpczp0OmcoKX0pKSx3ZT1DKCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsKGZ1bmN0aW9uKCl7dmFyIHQ9X2UuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCk/dGhpczx0P3RoaXM6dDpnKCl9KSk7ZnVuY3Rpb24ga2UodCxlKXt2YXIgbixyO2lmKDE9PT1lLmxlbmd0aCYmYShlWzBdKSYmKGU9ZVswXSksIWUubGVuZ3RoKXJldHVybiBfZSgpO2ZvcihuPWVbMF0scj0xO3I8ZS5sZW5ndGg7KytyKWVbcl0uaXNWYWxpZCgpJiYhZVtyXVt0XShuKXx8KG49ZVtyXSk7cmV0dXJuIG59dmFyIFRlPVsieWVhciIsInF1YXJ0ZXIiLCJtb250aCIsIndlZWsiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiXTtmdW5jdGlvbiBFZSh0KXt2YXIgZT1SKHQpLG49ZS55ZWFyfHwwLHI9ZS5xdWFydGVyfHwwLGk9ZS5tb250aHx8MCxhPWUud2Vla3x8ZS5pc29XZWVrfHwwLG89ZS5kYXl8fDAscz1lLmhvdXJ8fDAsYz1lLm1pbnV0ZXx8MCx1PWUuc2Vjb25kfHwwLGw9ZS5taWxsaXNlY29uZHx8MDt0aGlzLl9pc1ZhbGlkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KWlmKC0xPT09dnQuY2FsbChUZSxlKXx8bnVsbCE9dFtlXSYmaXNOYU4odFtlXSkpcmV0dXJuITE7Zm9yKHZhciBuPSExLHI9MDtyPFRlLmxlbmd0aDsrK3IpaWYodFtUZVtyXV0pe2lmKG4pcmV0dXJuITE7cGFyc2VGbG9hdCh0W1RlW3JdXSkhPT1rKHRbVGVbcl1dKSYmKG49ITApfXJldHVybiEwfShlKSx0aGlzLl9taWxsaXNlY29uZHM9K2wrMWUzKnUrNmU0KmMrMWUzKnMqNjAqNjAsdGhpcy5fZGF5cz0rbys3KmEsdGhpcy5fbW9udGhzPStpKzMqcisxMipuLHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPXJlKCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFZX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4gdDwwPy0xKk1hdGgucm91bmQoLTEqdCk6TWF0aC5yb3VuZCh0KX1mdW5jdGlvbiBBZSh0LGUpeyQodCwwLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy51dGNPZmZzZXQoKSxuPSIrIjtyZXR1cm4gdDwwJiYodD0tdCxuPSItIiksbitqKH5+KHQvNjApLDIpK2Uraih+fnQlNjAsMil9KSl9QWUoIloiLCI6IiksQWUoIlpaIiwiIiksbHQoIloiLHN0KSxsdCgiWloiLHN0KSxwdChbIloiLCJaWiJdLChmdW5jdGlvbih0LGUsbil7bi5fdXNlVVRDPSEwLG4uX3R6bT1OZShzdCx0KX0pKTt2YXIgTWU9LyhbXCtcLV18XGRcZCkvZ2k7ZnVuY3Rpb24gTmUodCxlKXt2YXIgbj0oZXx8IiIpLm1hdGNoKHQpO2lmKG51bGw9PT1uKXJldHVybiBudWxsO3ZhciByPSgobltuLmxlbmd0aC0xXXx8W10pKyIiKS5tYXRjaChNZSl8fFsiLSIsMCwwXSxpPTYwKnJbMV0rayhyWzJdKTtyZXR1cm4gMD09PWk/MDoiKyI9PT1yWzBdP2k6LWl9ZnVuY3Rpb24gRGUodCxlKXt2YXIgbixyO3JldHVybiBlLl9pc1VUQz8obj1lLmNsb25lKCkscj0oeCh0KXx8dSh0KT90LnZhbHVlT2YoKTpfZSh0KS52YWx1ZU9mKCkpLW4udmFsdWVPZigpLG4uX2Quc2V0VGltZShuLl9kLnZhbHVlT2YoKStyKSxpLnVwZGF0ZU9mZnNldChuLCExKSxuKTpfZSh0KS5sb2NhbCgpfWZ1bmN0aW9uIE9lKHQpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0Ll9kLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfWZ1bmN0aW9uIEJlKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmdGhpcy5faXNVVEMmJjA9PT10aGlzLl9vZmZzZXR9aS51cGRhdGVPZmZzZXQ9ZnVuY3Rpb24oKXt9O3ZhciBMZT0vXihcLXxcKyk/KD86KFxkKilbLiBdKT8oXGQrKVw6KFxkKykoPzpcOihcZCspKFwuXGQqKT8pPyQvLEllPS9eKC18XCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztmdW5jdGlvbiBSZSh0LGUpe3ZhciBuLHIsaSxhPXQsbz1udWxsO3JldHVybiBDZSh0KT9hPXttczp0Ll9taWxsaXNlY29uZHMsZDp0Ll9kYXlzLE06dC5fbW9udGhzfTpjKHQpPyhhPXt9LGU/YVtlXT10OmEubWlsbGlzZWNvbmRzPXQpOihvPUxlLmV4ZWModCkpPyhuPSItIj09PW9bMV0/LTE6MSxhPXt5OjAsZDprKG9bMl0pKm4saDprKG9bM10pKm4sbTprKG9bNF0pKm4sczprKG9bNV0pKm4sbXM6ayhTZSgxZTMqb1s2XSkpKm59KToobz1JZS5leGVjKHQpKT8obj0iLSI9PT1vWzFdPy0xOjEsYT17eTpGZShvWzJdLG4pLE06RmUob1szXSxuKSx3OkZlKG9bNF0sbiksZDpGZShvWzVdLG4pLGg6RmUob1s2XSxuKSxtOkZlKG9bN10sbiksczpGZShvWzhdLG4pfSk6bnVsbD09YT9hPXt9OiJvYmplY3QiPT10eXBlb2YgYSYmKCJmcm9tImluIGF8fCJ0byJpbiBhKSYmKGk9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gdC5pc1ZhbGlkKCkmJmUuaXNWYWxpZCgpPyhlPURlKGUsdCksdC5pc0JlZm9yZShlKT9uPVBlKHQsZSk6KChuPVBlKGUsdCkpLm1pbGxpc2Vjb25kcz0tbi5taWxsaXNlY29uZHMsbi5tb250aHM9LW4ubW9udGhzKSxuKTp7bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9fShfZShhLmZyb20pLF9lKGEudG8pKSwoYT17fSkubXM9aS5taWxsaXNlY29uZHMsYS5NPWkubW9udGhzKSxyPW5ldyBFZShhKSxDZSh0KSYmaCh0LCJfbG9jYWxlIikmJihyLl9sb2NhbGU9dC5fbG9jYWxlKSxyfWZ1bmN0aW9uIEZlKHQsZSl7dmFyIG49dCYmcGFyc2VGbG9hdCh0LnJlcGxhY2UoIiwiLCIuIikpO3JldHVybihpc05hTihuKT8wOm4pKmV9ZnVuY3Rpb24gUGUodCxlKXt2YXIgbj17fTtyZXR1cm4gbi5tb250aHM9ZS5tb250aCgpLXQubW9udGgoKSsxMiooZS55ZWFyKCktdC55ZWFyKCkpLHQuY2xvbmUoKS5hZGQobi5tb250aHMsIk0iKS5pc0FmdGVyKGUpJiYtLW4ubW9udGhzLG4ubWlsbGlzZWNvbmRzPStlLSt0LmNsb25lKCkuYWRkKG4ubW9udGhzLCJNIiksbn1mdW5jdGlvbiBqZSh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBpO3JldHVybiBudWxsPT09cnx8aXNOYU4oK3IpfHwoTShlLCJtb21lbnQoKS4iK2UrIihwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4iK2UrIihudW1iZXIsIHBlcmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4iKSxpPW4sbj1yLHI9aSksWWUodGhpcyxSZShuPSJzdHJpbmciPT10eXBlb2Ygbj8rbjpuLHIpLHQpLHRoaXN9fWZ1bmN0aW9uIFllKHQsZSxuLHIpe3ZhciBhPWUuX21pbGxpc2Vjb25kcyxvPVNlKGUuX2RheXMpLHM9U2UoZS5fbW9udGhzKTt0LmlzVmFsaWQoKSYmKHI9bnVsbD09cnx8cixzJiZTdCh0LHh0KHQsIk1vbnRoIikrcypuKSxvJiZ3dCh0LCJEYXRlIix4dCh0LCJEYXRlIikrbypuKSxhJiZ0Ll9kLnNldFRpbWUodC5fZC52YWx1ZU9mKCkrYSpuKSxyJiZpLnVwZGF0ZU9mZnNldCh0LG98fHMpKX1SZS5mbj1FZS5wcm90b3R5cGUsUmUuaW52YWxpZD1mdW5jdGlvbigpe3JldHVybiBSZShOYU4pfTt2YXIgemU9amUoMSwiYWRkIiksVWU9amUoLTEsInN1YnRyYWN0Iik7ZnVuY3Rpb24gcWUodCxlKXt2YXIgbj0xMiooZS55ZWFyKCktdC55ZWFyKCkpKyhlLm1vbnRoKCktdC5tb250aCgpKSxyPXQuY2xvbmUoKS5hZGQobiwibW9udGhzIik7cmV0dXJuLShuKyhlLXI8MD8oZS1yKS8oci10LmNsb25lKCkuYWRkKG4tMSwibW9udGhzIikpOihlLXIpLyh0LmNsb25lKCkuYWRkKG4rMSwibW9udGhzIiktcikpKXx8MH1mdW5jdGlvbiAkZSh0KXt2YXIgZTtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9sb2NhbGUuX2FiYnI6KG51bGwhPShlPXJlKHQpKSYmKHRoaXMuX2xvY2FsZT1lKSx0aGlzKX1pLmRlZmF1bHRGb3JtYXQ9IllZWVktTU0tRERUSEg6bW06c3NaIixpLmRlZmF1bHRGb3JtYXRVdGM9IllZWVktTU0tRERUSEg6bW06c3NbWl0iO3ZhciBIZT1DKCJtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLiIsKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKHQpfSkpO2Z1bmN0aW9uIFdlKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12YXIgVmU9MTI2MjI3ODA4ZTU7ZnVuY3Rpb24gR2UodCxlKXtyZXR1cm4odCVlK2UpJWV9ZnVuY3Rpb24gWGUodCxlLG4pe3JldHVybiB0PDEwMCYmMDw9dD9uZXcgRGF0ZSh0KzQwMCxlLG4pLVZlOm5ldyBEYXRlKHQsZSxuKS52YWx1ZU9mKCl9ZnVuY3Rpb24gWmUodCxlLG4pe3JldHVybiB0PDEwMCYmMDw9dD9EYXRlLlVUQyh0KzQwMCxlLG4pLVZlOkRhdGUuVVRDKHQsZSxuKX1mdW5jdGlvbiBRZSh0LGUpeyQoMCxbdCx0Lmxlbmd0aF0sMCxlKX1mdW5jdGlvbiBLZSh0LGUsbixyLGkpe3ZhciBhO3JldHVybiBudWxsPT10P0l0KHRoaXMscixpKS55ZWFyOigoYT1SdCh0LHIsaSkpPGUmJihlPWEpLGZ1bmN0aW9uKHQsZSxuLHIsaSl7dmFyIGE9THQodCxlLG4scixpKSxvPU90KGEueWVhciwwLGEuZGF5T2ZZZWFyKTtyZXR1cm4gdGhpcy55ZWFyKG8uZ2V0VVRDRnVsbFllYXIoKSksdGhpcy5tb250aChvLmdldFVUQ01vbnRoKCkpLHRoaXMuZGF0ZShvLmdldFVUQ0RhdGUoKSksdGhpc30uY2FsbCh0aGlzLHQsZSxuLHIsaSkpfSQoMCxbImdnIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLndlZWtZZWFyKCklMTAwfSkpLCQoMCxbIkdHIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzb1dlZWtZZWFyKCklMTAwfSkpLFFlKCJnZ2dnIiwid2Vla1llYXIiKSxRZSgiZ2dnZ2ciLCJ3ZWVrWWVhciIpLFFlKCJHR0dHIiwiaXNvV2Vla1llYXIiKSxRZSgiR0dHR0ciLCJpc29XZWVrWWVhciIpLEwoIndlZWtZZWFyIiwiZ2ciKSxMKCJpc29XZWVrWWVhciIsIkdHIiksUCgid2Vla1llYXIiLDEpLFAoImlzb1dlZWtZZWFyIiwxKSxsdCgiRyIsYXQpLGx0KCJnIixhdCksbHQoIkdHIixLLEcpLGx0KCJnZyIsSyxHKSxsdCgiR0dHRyIsbnQsWiksbHQoImdnZ2ciLG50LFopLGx0KCJHR0dHRyIscnQsUSksbHQoImdnZ2dnIixydCxRKSx5dChbImdnZ2ciLCJnZ2dnZyIsIkdHR0ciLCJHR0dHRyJdLChmdW5jdGlvbih0LGUsbixyKXtlW3Iuc3Vic3RyKDAsMildPWsodCl9KSkseXQoWyJnZyIsIkdHIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe2Vbcl09aS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pKSwkKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSxMKCJxdWFydGVyIiwiUSIpLFAoInF1YXJ0ZXIiLDcpLGx0KCJRIixWKSxwdCgiUSIsKGZ1bmN0aW9uKHQsZSl7ZVsxXT0zKihrKHQpLTEpfSkpLCQoIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSxMKCJkYXRlIiwiRCIpLFAoImRhdGUiLDkpLGx0KCJEIixLKSxsdCgiREQiLEssRyksbHQoIkRvIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9lLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlfHxlLl9vcmRpbmFsUGFyc2U6ZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnR9KSkscHQoWyJEIiwiREQiXSwyKSxwdCgiRG8iLChmdW5jdGlvbih0LGUpe2VbMl09ayh0Lm1hdGNoKEspWzBdKX0pKTt2YXIgSmU9X3QoIkRhdGUiLCEwKTskKCJEREQiLFsiRERERCIsM10sIkRERG8iLCJkYXlPZlllYXIiKSxMKCJkYXlPZlllYXIiLCJEREQiKSxQKCJkYXlPZlllYXIiLDQpLGx0KCJEREQiLGV0KSxsdCgiRERERCIsWCkscHQoWyJEREQiLCJEREREIl0sKGZ1bmN0aW9uKHQsZSxuKXtuLl9kYXlPZlllYXI9ayh0KX0pKSwkKCJtIixbIm1tIiwyXSwwLCJtaW51dGUiKSxMKCJtaW51dGUiLCJtIiksUCgibWludXRlIiwxNCksbHQoIm0iLEspLGx0KCJtbSIsSyxHKSxwdChbIm0iLCJtbSJdLDQpO3ZhciB0bj1fdCgiTWludXRlcyIsITEpOyQoInMiLFsic3MiLDJdLDAsInNlY29uZCIpLEwoInNlY29uZCIsInMiKSxQKCJzZWNvbmQiLDE1KSxsdCgicyIsSyksbHQoInNzIixLLEcpLHB0KFsicyIsInNzIl0sNSk7dmFyIGVuLG5uPV90KCJTZWNvbmRzIiwhMSk7Zm9yKCQoIlMiLDAsMCwoZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pKSwkKDAsWyJTUyIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSkpLCQoMCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSwkKDAsWyJTU1NTIiw0XSwwLChmdW5jdGlvbigpe3JldHVybiAxMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksJCgwLFsiU1NTU1MiLDVdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDEwMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksJCgwLFsiU1NTU1NTIiw2XSwwLChmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSkpLCQoMCxbIlNTU1NTU1MiLDddLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlNCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksJCgwLFsiU1NTU1NTU1MiLDhdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlNSp0aGlzLm1pbGxpc2Vjb25kKCl9KSksJCgwLFsiU1NTU1NTU1NTIiw5XSwwLChmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSkpLEwoIm1pbGxpc2Vjb25kIiwibXMiKSxQKCJtaWxsaXNlY29uZCIsMTYpLGx0KCJTIixldCxWKSxsdCgiU1MiLGV0LEcpLGx0KCJTU1MiLGV0LFgpLGVuPSJTU1NTIjtlbi5sZW5ndGg8PTk7ZW4rPSJTIilsdChlbixpdCk7ZnVuY3Rpb24gcm4odCxlKXtlWzZdPWsoMWUzKigiMC4iK3QpKX1mb3IoZW49IlMiO2VuLmxlbmd0aDw9OTtlbis9IlMiKXB0KGVuLHJuKTt2YXIgYW49X3QoIk1pbGxpc2Vjb25kcyIsITEpOyQoInoiLDAsMCwiem9uZUFiYnIiKSwkKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciBvbj1fLnByb3RvdHlwZTtmdW5jdGlvbiBzbih0KXtyZXR1cm4gdH1vbi5hZGQ9emUsb24uY2FsZW5kYXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10fHxfZSgpLHI9RGUobix0aGlzKS5zdGFydE9mKCJkYXkiKSxhPWkuY2FsZW5kYXJGb3JtYXQodGhpcyxyKXx8InNhbWVFbHNlIixvPWUmJihOKGVbYV0pP2VbYV0uY2FsbCh0aGlzLG4pOmVbYV0pO3JldHVybiB0aGlzLmZvcm1hdChvfHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihhLHRoaXMsX2UobikpKX0sb24uY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8odGhpcyl9LG9uLmRpZmY9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtpZighKHI9RGUodCx0aGlzKSkuaXNWYWxpZCgpKXJldHVybiBOYU47c3dpdGNoKGk9NmU0KihyLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpLGU9SShlKSl7Y2FzZSJ5ZWFyIjphPXFlKHRoaXMscikvMTI7YnJlYWs7Y2FzZSJtb250aCI6YT1xZSh0aGlzLHIpO2JyZWFrO2Nhc2UicXVhcnRlciI6YT1xZSh0aGlzLHIpLzM7YnJlYWs7Y2FzZSJzZWNvbmQiOmE9KHRoaXMtcikvMWUzO2JyZWFrO2Nhc2UibWludXRlIjphPSh0aGlzLXIpLzZlNDticmVhaztjYXNlImhvdXIiOmE9KHRoaXMtcikvMzZlNTticmVhaztjYXNlImRheSI6YT0odGhpcy1yLWkpLzg2NGU1O2JyZWFrO2Nhc2Uid2VlayI6YT0odGhpcy1yLWkpLzYwNDhlNTticmVhaztkZWZhdWx0OmE9dGhpcy1yfXJldHVybiBuP2E6dyhhKX0sb24uZW5kT2Y9ZnVuY3Rpb24odCl7dmFyIGU7aWYodm9pZCAwPT09KHQ9SSh0KSl8fCJtaWxsaXNlY29uZCI9PT10fHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5faXNVVEM/WmU6WGU7c3dpdGNoKHQpe2Nhc2UieWVhciI6ZT1uKHRoaXMueWVhcigpKzEsMCwxKS0xO2JyZWFrO2Nhc2UicXVhcnRlciI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1vbnRoKCklMyszLDEpLTE7YnJlYWs7Y2FzZSJtb250aCI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSsxLDEpLTE7YnJlYWs7Y2FzZSJ3ZWVrIjplPW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKzcpLTE7YnJlYWs7Y2FzZSJpc29XZWVrIjplPW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSs3KS0xO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkrMSktMTticmVhaztjYXNlImhvdXIiOmU9dGhpcy5fZC52YWx1ZU9mKCksZSs9MzZlNS1HZShlKyh0aGlzLl9pc1VUQz8wOjZlNCp0aGlzLnV0Y09mZnNldCgpKSwzNmU1KS0xO2JyZWFrO2Nhc2UibWludXRlIjplPXRoaXMuX2QudmFsdWVPZigpLGUrPTZlNC1HZShlLDZlNCktMTticmVhaztjYXNlInNlY29uZCI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlKz0xZTMtR2UoZSwxZTMpLTF9cmV0dXJuIHRoaXMuX2Quc2V0VGltZShlKSxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSxvbi5mb3JtYXQ9ZnVuY3Rpb24odCl7dHx8KHQ9dGhpcy5pc1V0YygpP2kuZGVmYXVsdEZvcm1hdFV0YzppLmRlZmF1bHRGb3JtYXQpO3ZhciBlPUgodGhpcyx0KTtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChlKX0sb24uZnJvbT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmlzVmFsaWQoKSYmKHgodCkmJnQuaXNWYWxpZCgpfHxfZSh0KS5pc1ZhbGlkKCkpP1JlKHt0bzp0aGlzLGZyb206dH0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghZSk6dGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX0sb24uZnJvbU5vdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mcm9tKF9lKCksdCl9LG9uLnRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoeCh0KSYmdC5pc1ZhbGlkKCl8fF9lKHQpLmlzVmFsaWQoKSk/UmUoe2Zyb206dGhpcyx0bzp0fSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxvbi50b05vdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50byhfZSgpLHQpfSxvbi5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIE4odGhpc1t0PUkodCldKT90aGlzW3RdKCk6dGhpc30sb24uaW52YWxpZEF0PWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcykub3ZlcmZsb3d9LG9uLmlzQWZ0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj14KHQpP3Q6X2UodCk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFuLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KGU9SShlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk+bi52YWx1ZU9mKCk6bi52YWx1ZU9mKCk8dGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkudmFsdWVPZigpKX0sb24uaXNCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj14KHQpP3Q6X2UodCk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFuLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KGU9SShlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk8bi52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKGUpLnZhbHVlT2YoKTxuLnZhbHVlT2YoKSl9LG9uLmlzQmV0d2Vlbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT14KHQpP3Q6X2UodCksYT14KGUpP2U6X2UoZSk7cmV0dXJuISEodGhpcy5pc1ZhbGlkKCkmJmkuaXNWYWxpZCgpJiZhLmlzVmFsaWQoKSkmJigiKCI9PT0ocj1yfHwiKCkiKVswXT90aGlzLmlzQWZ0ZXIoaSxuKTohdGhpcy5pc0JlZm9yZShpLG4pKSYmKCIpIj09PXJbMV0/dGhpcy5pc0JlZm9yZShhLG4pOiF0aGlzLmlzQWZ0ZXIoYSxuKSl9LG9uLmlzU2FtZT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9eCh0KT90Ol9lKHQpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhci5pc1ZhbGlkKCkpJiYoIm1pbGxpc2Vjb25kIj09PShlPUkoZSl8fCJtaWxsaXNlY29uZCIpP3RoaXMudmFsdWVPZigpPT09ci52YWx1ZU9mKCk6KG49ci52YWx1ZU9mKCksdGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkudmFsdWVPZigpPD1uJiZuPD10aGlzLmNsb25lKCkuZW5kT2YoZSkudmFsdWVPZigpKSl9LG9uLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pc1NhbWUodCxlKXx8dGhpcy5pc0FmdGVyKHQsZSl9LG9uLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNTYW1lKHQsZSl8fHRoaXMuaXNCZWZvcmUodCxlKX0sb24uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB5KHRoaXMpfSxvbi5sYW5nPUhlLG9uLmxvY2FsZT0kZSxvbi5sb2NhbGVEYXRhPVdlLG9uLm1heD13ZSxvbi5taW49eGUsb24ucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uKCl7cmV0dXJuIGYoe30scCh0aGlzKSl9LG9uLnNldD1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIG49ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHt1bml0Om4scHJpb3JpdHk6RltuXX0pO3JldHVybiBlLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucHJpb3JpdHktZS5wcmlvcml0eX0pKSxlfSh0PVIodCkpLHI9MDtyPG4ubGVuZ3RoO3IrKyl0aGlzW25bcl0udW5pdF0odFtuW3JdLnVuaXRdKTtlbHNlIGlmKE4odGhpc1t0PUkodCldKSlyZXR1cm4gdGhpc1t0XShlKTtyZXR1cm4gdGhpc30sb24uc3RhcnRPZj1mdW5jdGlvbih0KXt2YXIgZTtpZih2b2lkIDA9PT0odD1JKHQpKXx8Im1pbGxpc2Vjb25kIj09PXR8fCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl9pc1VUQz9aZTpYZTtzd2l0Y2godCl7Y2FzZSJ5ZWFyIjplPW4odGhpcy55ZWFyKCksMCwxKTticmVhaztjYXNlInF1YXJ0ZXIiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSwxKTticmVhaztjYXNlIndlZWsiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkpO2JyZWFrO2Nhc2UiaXNvV2VlayI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkpO2JyZWFrO2Nhc2UiaG91ciI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlLT1HZShlKyh0aGlzLl9pc1VUQz8wOjZlNCp0aGlzLnV0Y09mZnNldCgpKSwzNmU1KTticmVhaztjYXNlIm1pbnV0ZSI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlLT1HZShlLDZlNCk7YnJlYWs7Y2FzZSJzZWNvbmQiOmU9dGhpcy5fZC52YWx1ZU9mKCksZS09R2UoZSwxZTMpfXJldHVybiB0aGlzLl9kLnNldFRpbWUoZSksaS51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpc30sb24uc3VidHJhY3Q9VWUsb24udG9BcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuW3QueWVhcigpLHQubW9udGgoKSx0LmRhdGUoKSx0LmhvdXIoKSx0Lm1pbnV0ZSgpLHQuc2Vjb25kKCksdC5taWxsaXNlY29uZCgpXX0sb24udG9PYmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybnt5ZWFyczp0LnllYXIoKSxtb250aHM6dC5tb250aCgpLGRhdGU6dC5kYXRlKCksaG91cnM6dC5ob3VycygpLG1pbnV0ZXM6dC5taW51dGVzKCksc2Vjb25kczp0LnNlY29uZHMoKSxtaWxsaXNlY29uZHM6dC5taWxsaXNlY29uZHMoKX19LG9uLnRvRGF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LG9uLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbDt2YXIgZT0hMCE9PXQsbj1lP3RoaXMuY2xvbmUoKS51dGMoKTp0aGlzO3JldHVybiBuLnllYXIoKTwwfHw5OTk5PG4ueWVhcigpP0gobixlPyJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iOiJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIik6TihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyk/ZT90aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk6bmV3IERhdGUodGhpcy52YWx1ZU9mKCkrNjAqdGhpcy51dGNPZmZzZXQoKSoxZTMpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgiWiIsSChuLCJaIikpOkgobixlPyJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1oiKX0sb24uaW5zcGVjdD1mdW5jdGlvbigpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgdD0ibW9tZW50IixlPSIiO3RoaXMuaXNMb2NhbCgpfHwodD0wPT09dGhpcy51dGNPZmZzZXQoKT8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLGU9IloiKTt2YXIgbj0iWyIrdCsnKCJdJyxyPTA8PXRoaXMueWVhcigpJiZ0aGlzLnllYXIoKTw9OTk5OT8iWVlZWSI6IllZWVlZWSIsaT1lKydbIildJztyZXR1cm4gdGhpcy5mb3JtYXQobityKyItTU0tRERbVF1ISDptbTpzcy5TU1MiK2kpfSxvbi50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LG9uLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfSxvbi51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sb24udmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kLnZhbHVlT2YoKS02ZTQqKHRoaXMuX29mZnNldHx8MCl9LG9uLmNyZWF0aW9uRGF0YT1mdW5jdGlvbigpe3JldHVybntpbnB1dDp0aGlzLl9pLGZvcm1hdDp0aGlzLl9mLGxvY2FsZTp0aGlzLl9sb2NhbGUsaXNVVEM6dGhpcy5faXNVVEMsc3RyaWN0OnRoaXMuX3N0cmljdH19LG9uLnllYXI9YnQsb24uaXNMZWFwWWVhcj1mdW5jdGlvbigpe3JldHVybiBtdCh0aGlzLnllYXIoKSl9LG9uLndlZWtZZWFyPWZ1bmN0aW9uKHQpe3JldHVybiBLZS5jYWxsKHRoaXMsdCx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KX0sb24uaXNvV2Vla1llYXI9ZnVuY3Rpb24odCl7cmV0dXJuIEtlLmNhbGwodGhpcyx0LHRoaXMuaXNvV2VlaygpLHRoaXMuaXNvV2Vla2RheSgpLDEsNCl9LG9uLnF1YXJ0ZXI9b24ucXVhcnRlcnM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/TWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKih0LTEpK3RoaXMubW9udGgoKSUzKX0sb24ubW9udGg9QXQsb24uZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4ga3QodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sb24ud2Vlaz1vbi53ZWVrcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfSxvbi5pc29XZWVrPW9uLmlzb1dlZWtzPWZ1bmN0aW9uKHQpe3ZhciBlPUl0KHRoaXMsMSw0KS53ZWVrO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfSxvbi53ZWVrc0luWWVhcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO3JldHVybiBSdCh0aGlzLnllYXIoKSx0LmRvdyx0LmRveSl9LG9uLmlzb1dlZWtzSW5ZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIFJ0KHRoaXMueWVhcigpLDEsNCl9LG9uLmRhdGU9SmUsb24uZGF5PW9uLmRheXM9ZnVuY3Rpb24odCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT10P3RoaXM6TmFOO3ZhciBlLG4scj10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPXQ/KGU9dCxuPXRoaXMubG9jYWxlRGF0YSgpLHQ9InN0cmluZyIhPXR5cGVvZiBlP2U6aXNOYU4oZSk/Im51bWJlciI9PXR5cGVvZihlPW4ud2Vla2RheXNQYXJzZShlKSk/ZTpudWxsOnBhcnNlSW50KGUsMTApLHRoaXMuYWRkKHQtciwiZCIpKTpyfSxvbi53ZWVrZGF5PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjt2YXIgZT0odGhpcy5kYXkoKSs3LXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09dD9lOnRoaXMuYWRkKHQtZSwiZCIpfSxvbi5pc29XZWVrZGF5PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjtpZihudWxsPT10KXJldHVybiB0aGlzLmRheSgpfHw3O3ZhciBlLG4scj0oZT10LG49dGhpcy5sb2NhbGVEYXRhKCksInN0cmluZyI9PXR5cGVvZiBlP24ud2Vla2RheXNQYXJzZShlKSU3fHw3OmlzTmFOKGUpP251bGw6ZSk7cmV0dXJuIHRoaXMuZGF5KHRoaXMuZGF5KCklNz9yOnItNyl9LG9uLmRheU9mWWVhcj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IiktdGhpcy5jbG9uZSgpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJuIG51bGw9PXQ/ZTp0aGlzLmFkZCh0LWUsImQiKX0sb24uaG91cj1vbi5ob3Vycz1YdCxvbi5taW51dGU9b24ubWludXRlcz10bixvbi5zZWNvbmQ9b24uc2Vjb25kcz1ubixvbi5taWxsaXNlY29uZD1vbi5taWxsaXNlY29uZHM9YW4sb24udXRjT2Zmc2V0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixhPXRoaXMuX29mZnNldHx8MDtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPXQ/dGhpczpOYU47aWYobnVsbD09dClyZXR1cm4gdGhpcy5faXNVVEM/YTpPZSh0aGlzKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKG51bGw9PT0odD1OZShzdCx0KSkpcmV0dXJuIHRoaXN9ZWxzZSBNYXRoLmFicyh0KTwxNiYmIW4mJih0Kj02MCk7cmV0dXJuIXRoaXMuX2lzVVRDJiZlJiYocj1PZSh0aGlzKSksdGhpcy5fb2Zmc2V0PXQsdGhpcy5faXNVVEM9ITAsbnVsbCE9ciYmdGhpcy5hZGQociwibSIpLGEhPT10JiYoIWV8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/WWUodGhpcyxSZSh0LWEsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfSxvbi51dGM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsdCl9LG9uLmxvY2FsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsdCksdGhpcy5faXNVVEM9ITEsdCYmdGhpcy5zdWJ0cmFjdChPZSh0aGlzKSwibSIpKSx0aGlzfSxvbi5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIHQ9TmUob3QsdGhpcy5faSk7bnVsbCE9dD90aGlzLnV0Y09mZnNldCh0KTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30sb24uaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKHQ9dD9fZSh0KS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLXQpJTYwPT0wKX0sb24uaXNEU1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfSxvbi5pc0xvY2FsPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmIXRoaXMuX2lzVVRDfSxvbi5pc1V0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDfSxvbi5pc1V0Yz1CZSxvbi5pc1VUQz1CZSxvbi56b25lQWJicj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn0sb24uem9uZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0sb24uZGF0ZXM9QygiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLEplKSxvbi5tb250aHM9QygibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixBdCksb24ueWVhcnM9QygieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIsYnQpLG9uLnpvbmU9QygibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10Pygic3RyaW5nIiE9dHlwZW9mIHQmJih0PS10KSx0aGlzLnV0Y09mZnNldCh0LGUpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfSkpLG9uLmlzRFNUU2hpZnRlZD1DKCJpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIiwoZnVuY3Rpb24oKXtpZighcyh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIHQ9e307aWYodih0LHRoaXMpLCh0PXZlKHQpKS5fYSl7dmFyIGU9dC5faXNVVEM/ZCh0Ll9hKTpfZSh0Ll9hKTt0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJjA8VCh0Ll9hLGUudG9BcnJheSgpKX1lbHNlIHRoaXMuX2lzRFNUU2hpZnRlZD0hMTtyZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkfSkpO3ZhciBjbj1PLnByb3RvdHlwZTtmdW5jdGlvbiB1bih0LGUsbixyKXt2YXIgaT1yZSgpLGE9ZCgpLnNldChyLGUpO3JldHVybiBpW25dKGEsdCl9ZnVuY3Rpb24gbG4odCxlLG4pe2lmKGModCkmJihlPXQsdD12b2lkIDApLHQ9dHx8IiIsbnVsbCE9ZSlyZXR1cm4gdW4odCxlLG4sIm1vbnRoIik7dmFyIHIsaT1bXTtmb3Iocj0wO3I8MTI7cisrKWlbcl09dW4odCxyLG4sIm1vbnRoIik7cmV0dXJuIGl9ZnVuY3Rpb24gaG4odCxlLG4scil7ImJvb2xlYW4iPT10eXBlb2YgdD9jKGUpJiYobj1lLGU9dm9pZCAwKTooZT10LHQ9ITEsYyhuPWUpJiYobj1lLGU9dm9pZCAwKSksZT1lfHwiIjt2YXIgaSxhPXJlKCksbz10P2EuX3dlZWsuZG93OjA7aWYobnVsbCE9bilyZXR1cm4gdW4oZSwobitvKSU3LHIsImRheSIpO3ZhciBzPVtdO2ZvcihpPTA7aTw3O2krKylzW2ldPXVuKGUsKGkrbyklNyxyLCJkYXkiKTtyZXR1cm4gc31jbi5jYWxlbmRhcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5fY2FsZW5kYXJbdF18fHRoaXMuX2NhbGVuZGFyLnNhbWVFbHNlO3JldHVybiBOKHIpP3IuY2FsbChlLG4pOnJ9LGNuLmxvbmdEYXRlRm9ybWF0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xvbmdEYXRlRm9ybWF0W3RdLG49dGhpcy5fbG9uZ0RhdGVGb3JtYXRbdC50b1VwcGVyQ2FzZSgpXTtyZXR1cm4gZXx8IW4/ZToodGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF09bi5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSl9KSksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF0pfSxjbi5pbnZhbGlkRGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnZhbGlkRGF0ZX0sY24ub3JkaW5hbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCIlZCIsdCl9LGNuLnByZXBhcnNlPXNuLGNuLnBvc3Rmb3JtYXQ9c24sY24ucmVsYXRpdmVUaW1lPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXRoaXMuX3JlbGF0aXZlVGltZVtuXTtyZXR1cm4gTihpKT9pKHQsZSxuLHIpOmkucmVwbGFjZSgvJWQvaSx0KX0sY24ucGFzdEZ1dHVyZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3JlbGF0aXZlVGltZVswPHQ/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4gTihuKT9uKGUpOm4ucmVwbGFjZSgvJXMvaSxlKX0sY24uc2V0PWZ1bmN0aW9uKHQpe3ZhciBlLG47Zm9yKG4gaW4gdClOKGU9dFtuXSk/dGhpc1tuXT1lOnRoaXNbIl8iK25dPWU7dGhpcy5fY29uZmlnPXQsdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ9bmV3IFJlZ0V4cCgodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2V8fHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpKyJ8IisvXGR7MSwyfS8uc291cmNlKX0sY24ubW9udGhzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/YSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoc1t0Lm1vbnRoKCldOnRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0fHxUdCkudGVzdChlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW3QubW9udGgoKV06YSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoczp0aGlzLl9tb250aHMuc3RhbmRhbG9uZX0sY24ubW9udGhzU2hvcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9hKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFt0Lm1vbnRoKCldOnRoaXMuX21vbnRoc1Nob3J0W1R0LnRlc3QoZSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVt0Lm1vbnRoKCldOmEodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0LnN0YW5kYWxvbmV9LGNuLm1vbnRoc1BhcnNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE7aWYodGhpcy5fbW9udGhzUGFyc2VFeGFjdClyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPXQudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fbW9udGhzUGFyc2UpZm9yKHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdLHI9MDtyPDEyOysrcilhPWQoWzJlMyxyXSksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtyXT10aGlzLm1vbnRoc1Nob3J0KGEsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fbG9uZ01vbnRoc1BhcnNlW3JdPXRoaXMubW9udGhzKGEsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuIG4/Ik1NTSI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLG8pKT9pOm51bGw6LTEhPT0oaT12dC5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxvKSk/aTpudWxsOiJNTU0iPT09ZT8tMSE9PShpPXZ0LmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsbykpP2k6bnVsbH0uY2FsbCh0aGlzLHQsZSxuKTtmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSkscj0wO3I8MTI7cisrKXtpZihpPWQoWzJlMyxyXSksbiYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtyXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhpLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KGksIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksbnx8dGhpcy5fbW9udGhzUGFyc2Vbcl18fChhPSJeIit0aGlzLm1vbnRocyhpLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoaSwiIiksdGhpcy5fbW9udGhzUGFyc2Vbcl09bmV3IFJlZ0V4cChhLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxuJiYiTU1NTSI9PT1lJiZ0aGlzLl9sb25nTW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZihuJiYiTU1NIj09PWUmJnRoaXMuX3Nob3J0TW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZighbiYmdGhpcy5fbW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcn19LGNuLm1vbnRoc1JlZ2V4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhoKHRoaXMsIl9tb250aHNSZWdleCIpfHxEdC5jYWxsKHRoaXMpLHQ/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpOihoKHRoaXMsIl9tb250aHNSZWdleCIpfHwodGhpcy5fbW9udGhzUmVnZXg9TnQpLHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4JiZ0P3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KX0sY24ubW9udGhzU2hvcnRSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oaCh0aGlzLCJfbW9udGhzUmVnZXgiKXx8RHQuY2FsbCh0aGlzKSx0P3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdleCk6KGgodGhpcywiX21vbnRoc1Nob3J0UmVnZXgiKXx8KHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9TXQpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgmJnQ/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KX0sY24ud2Vlaz1mdW5jdGlvbih0KXtyZXR1cm4gSXQodCx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla30sY24uZmlyc3REYXlPZlllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3l9LGNuLmZpcnN0RGF5T2ZXZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG93fSxjbi53ZWVrZGF5cz1mdW5jdGlvbih0LGUpe3ZhciBuPWEodGhpcy5fd2Vla2RheXMpP3RoaXMuX3dlZWtkYXlzOnRoaXMuX3dlZWtkYXlzW3QmJiEwIT09dCYmdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdO3JldHVybiEwPT09dD9GdChuLHRoaXMuX3dlZWsuZG93KTp0P25bdC5kYXkoKV06bn0sY24ud2Vla2RheXNNaW49ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10P0Z0KHRoaXMuX3dlZWtkYXlzTWluLHRoaXMuX3dlZWsuZG93KTp0P3RoaXMuX3dlZWtkYXlzTWluW3QuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufSxjbi53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dD9GdCh0aGlzLl93ZWVrZGF5c1Nob3J0LHRoaXMuX3dlZWsuZG93KTp0P3RoaXMuX3dlZWtkYXlzU2hvcnRbdC5kYXkoKV06dGhpcy5fd2Vla2RheXNTaG9ydH0sY24ud2Vla2RheXNQYXJzZT1mdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhO2lmKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdClyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPXQudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSxyPTA7cjw3OysrcilhPWQoWzJlMywxXSkuZGF5KHIpLHRoaXMuX21pbldlZWtkYXlzUGFyc2Vbcl09dGhpcy53ZWVrZGF5c01pbihhLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtyXT10aGlzLndlZWtkYXlzU2hvcnQoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW3JdPXRoaXMud2Vla2RheXMoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gbj8iZGRkZCI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKT9pOm51bGw6ImRkZCI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxvKSk/aTpudWxsOiJkZGRkIj09PWU/LTEhPT0oaT12dC5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsbykpfHwtMSE9PShpPXZ0LmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDoiZGRkIj09PWU/LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxvKSk/aTpudWxsfS5jYWxsKHRoaXMsdCxlLG4pO2Zvcih0aGlzLl93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9mdWxsV2Vla2RheXNQYXJzZT1bXSkscj0wO3I8NztyKyspe2lmKGk9ZChbMmUzLDFdKS5kYXkociksbiYmIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW3JdJiYodGhpcy5fZnVsbFdlZWtkYXlzUGFyc2Vbcl09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5cyhpLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzU2hvcnQoaSwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlW3JdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNNaW4oaSwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtyXXx8KGE9Il4iK3RoaXMud2Vla2RheXMoaSwiIikrInxeIit0aGlzLndlZWtkYXlzU2hvcnQoaSwiIikrInxeIit0aGlzLndlZWtkYXlzTWluKGksIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2Vbcl09bmV3IFJlZ0V4cChhLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxuJiYiZGRkZCI9PT1lJiZ0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtyXS50ZXN0KHQpKXJldHVybiByO2lmKG4mJiJkZGQiPT09ZSYmdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3JdLnRlc3QodCkpcmV0dXJuIHI7aWYobiYmImRkIj09PWUmJnRoaXMuX21pbldlZWtkYXlzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZighbiYmdGhpcy5fd2Vla2RheXNQYXJzZVtyXS50ZXN0KHQpKXJldHVybiByfX0sY24ud2Vla2RheXNSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCR0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpOihoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1JlZ2V4PXp0KSx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4JiZ0P3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCl9LGNuLndlZWtkYXlzU2hvcnRSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCR0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KTooaCh0aGlzLCJfd2Vla2RheXNTaG9ydFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9VXQpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX0sY24ud2Vla2RheXNNaW5SZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCR0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpOihoKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c01pblJlZ2V4PXF0KSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4JiZ0P3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9LGNuLmlzUE09ZnVuY3Rpb24odCl7cmV0dXJuInAiPT09KHQrIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfSxjbi5tZXJpZGllbT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIDExPHQ/bj8icG0iOiJQTSI6bj8iYW0iOiJBTSJ9LGVlKCJlbiIse2RheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBlPXQlMTA7cmV0dXJuIHQrKDE9PT1rKHQlMTAwLzEwKT8idGgiOjE9PT1lPyJzdCI6Mj09PWU/Im5kIjozPT09ZT8icmQiOiJ0aCIpfX0pLGkubGFuZz1DKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsZWUpLGkubGFuZ0RhdGE9QygibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIscmUpO3ZhciBmbj1NYXRoLmFicztmdW5jdGlvbiBkbih0LGUsbixyKXt2YXIgaT1SZShlLG4pO3JldHVybiB0Ll9taWxsaXNlY29uZHMrPXIqaS5fbWlsbGlzZWNvbmRzLHQuX2RheXMrPXIqaS5fZGF5cyx0Ll9tb250aHMrPXIqaS5fbW9udGhzLHQuX2J1YmJsZSgpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiB0PDA/TWF0aC5mbG9vcih0KTpNYXRoLmNlaWwodCl9ZnVuY3Rpb24geW4odCl7cmV0dXJuIDQ4MDAqdC8xNDYwOTd9ZnVuY3Rpb24gZ24odCl7cmV0dXJuIDE0NjA5Nyp0LzQ4MDB9ZnVuY3Rpb24gbW4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXModCl9fXZhciB2bj1tbigibXMiKSxibj1tbigicyIpLF9uPW1uKCJtIikseG49bW4oImgiKSx3bj1tbigiZCIpLGtuPW1uKCJ3IiksVG49bW4oIk0iKSxFbj1tbigiUSIpLENuPW1uKCJ5Iik7ZnVuY3Rpb24gU24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX2RhdGFbdF06TmFOfX12YXIgQW49U24oIm1pbGxpc2Vjb25kcyIpLE1uPVNuKCJzZWNvbmRzIiksTm49U24oIm1pbnV0ZXMiKSxEbj1TbigiaG91cnMiKSxPbj1TbigiZGF5cyIpLEJuPVNuKCJtb250aHMiKSxMbj1TbigieWVhcnMiKSxJbj1NYXRoLnJvdW5kLFJuPXtzczo0NCxzOjQ1LG06NDUsaDoyMixkOjI2LE06MTF9LEZuPU1hdGguYWJzO2Z1bmN0aW9uIFBuKHQpe3JldHVybigwPHQpLSh0PDApfHwrdH1mdW5jdGlvbiBqbigpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgdCxlLG49Rm4odGhpcy5fbWlsbGlzZWNvbmRzKS8xZTMscj1Gbih0aGlzLl9kYXlzKSxpPUZuKHRoaXMuX21vbnRocyk7ZT13KCh0PXcobi82MCkpLzYwKSxuJT02MCx0JT02MDt2YXIgYT13KGkvMTIpLG89aSU9MTIscz1yLGM9ZSx1PXQsbD1uP24udG9GaXhlZCgzKS5yZXBsYWNlKC9cLj8wKyQvLCIiKToiIixoPXRoaXMuYXNTZWNvbmRzKCk7aWYoIWgpcmV0dXJuIlAwRCI7dmFyIGY9aDwwPyItIjoiIixkPVBuKHRoaXMuX21vbnRocykhPT1QbihoKT8iLSI6IiIscD1Qbih0aGlzLl9kYXlzKSE9PVBuKGgpPyItIjoiIix5PVBuKHRoaXMuX21pbGxpc2Vjb25kcykhPT1QbihoKT8iLSI6IiI7cmV0dXJuIGYrIlAiKyhhP2QrYSsiWSI6IiIpKyhvP2QrbysiTSI6IiIpKyhzP3ArcysiRCI6IiIpKyhjfHx1fHxsPyJUIjoiIikrKGM/eStjKyJIIjoiIikrKHU/eSt1KyJNIjoiIikrKGw/eStsKyJTIjoiIil9dmFyIFluPUVlLnByb3RvdHlwZTtyZXR1cm4gWW4uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZhbGlkfSxZbi5hYnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9Zm4odGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPWZuKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1mbih0aGlzLl9tb250aHMpLHQubWlsbGlzZWNvbmRzPWZuKHQubWlsbGlzZWNvbmRzKSx0LnNlY29uZHM9Zm4odC5zZWNvbmRzKSx0Lm1pbnV0ZXM9Zm4odC5taW51dGVzKSx0LmhvdXJzPWZuKHQuaG91cnMpLHQubW9udGhzPWZuKHQubW9udGhzKSx0LnllYXJzPWZuKHQueWVhcnMpLHRoaXN9LFluLmFkZD1mdW5jdGlvbih0LGUpe3JldHVybiBkbih0aGlzLHQsZSwxKX0sWW4uc3VidHJhY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZG4odGhpcyx0LGUsLTEpfSxZbi5hcz1mdW5jdGlvbih0KXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjt2YXIgZSxuLHI9dGhpcy5fbWlsbGlzZWNvbmRzO2lmKCJtb250aCI9PT0odD1JKHQpKXx8InF1YXJ0ZXIiPT09dHx8InllYXIiPT09dClzd2l0Y2goZT10aGlzLl9kYXlzK3IvODY0ZTUsbj10aGlzLl9tb250aHMreW4oZSksdCl7Y2FzZSJtb250aCI6cmV0dXJuIG47Y2FzZSJxdWFydGVyIjpyZXR1cm4gbi8zO2Nhc2UieWVhciI6cmV0dXJuIG4vMTJ9ZWxzZSBzd2l0Y2goZT10aGlzLl9kYXlzK01hdGgucm91bmQoZ24odGhpcy5fbW9udGhzKSksdCl7Y2FzZSJ3ZWVrIjpyZXR1cm4gZS83K3IvNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gZStyLzg2NGU1O2Nhc2UiaG91ciI6cmV0dXJuIDI0KmUrci8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCplK3IvNmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqZStyLzFlMztjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gTWF0aC5mbG9vcig4NjRlNSplKStyO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHVuaXQgIit0KX19LFluLmFzTWlsbGlzZWNvbmRzPXZuLFluLmFzU2Vjb25kcz1ibixZbi5hc01pbnV0ZXM9X24sWW4uYXNIb3Vycz14bixZbi5hc0RheXM9d24sWW4uYXNXZWVrcz1rbixZbi5hc01vbnRocz1UbixZbi5hc1F1YXJ0ZXJzPUVuLFluLmFzWWVhcnM9Q24sWW4udmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLl9taWxsaXNlY29uZHMrODY0ZTUqdGhpcy5fZGF5cyt0aGlzLl9tb250aHMlMTIqMjU5MmU2KzMxNTM2ZTYqayh0aGlzLl9tb250aHMvMTIpOk5hTn0sWW4uX2J1YmJsZT1mdW5jdGlvbigpe3ZhciB0LGUsbixyLGksYT10aGlzLl9taWxsaXNlY29uZHMsbz10aGlzLl9kYXlzLHM9dGhpcy5fbW9udGhzLGM9dGhpcy5fZGF0YTtyZXR1cm4gMDw9YSYmMDw9byYmMDw9c3x8YTw9MCYmbzw9MCYmczw9MHx8KGErPTg2NGU1KnBuKGduKHMpK28pLHM9bz0wKSxjLm1pbGxpc2Vjb25kcz1hJTFlMyx0PXcoYS8xZTMpLGMuc2Vjb25kcz10JTYwLGU9dyh0LzYwKSxjLm1pbnV0ZXM9ZSU2MCxuPXcoZS82MCksYy5ob3Vycz1uJTI0LHMrPWk9dyh5bihvKz13KG4vMjQpKSksby09cG4oZ24oaSkpLHI9dyhzLzEyKSxzJT0xMixjLmRheXM9byxjLm1vbnRocz1zLGMueWVhcnM9cix0aGlzfSxZbi5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBSZSh0aGlzKX0sWW4uZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0PUkodCksdGhpcy5pc1ZhbGlkKCk/dGhpc1t0KyJzIl0oKTpOYU59LFluLm1pbGxpc2Vjb25kcz1BbixZbi5zZWNvbmRzPU1uLFluLm1pbnV0ZXM9Tm4sWW4uaG91cnM9RG4sWW4uZGF5cz1PbixZbi53ZWVrcz1mdW5jdGlvbigpe3JldHVybiB3KHRoaXMuZGF5cygpLzcpfSxZbi5tb250aHM9Qm4sWW4ueWVhcnM9TG4sWW4uaHVtYW5pemU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBlLG4scixpLGEsbyxzLGMsdSxsLGg9dGhpcy5sb2NhbGVEYXRhKCksZj0oZT0hdCxuPWgscj1SZSh0aGlzKS5hYnMoKSxpPUluKHIuYXMoInMiKSksYT1JbihyLmFzKCJtIikpLG89SW4oci5hcygiaCIpKSxzPUluKHIuYXMoImQiKSksYz1JbihyLmFzKCJNIikpLHU9SW4oci5hcygieSIpKSwobD1pPD1Sbi5zcyYmWyJzIixpXXx8aTxSbi5zJiZbInNzIixpXXx8YTw9MSYmWyJtIl18fGE8Um4ubSYmWyJtbSIsYV18fG88PTEmJlsiaCJdfHxvPFJuLmgmJlsiaGgiLG9dfHxzPD0xJiZbImQiXXx8czxSbi5kJiZbImRkIixzXXx8Yzw9MSYmWyJNIl18fGM8Um4uTSYmWyJNTSIsY118fHU8PTEmJlsieSJdfHxbInl5Iix1XSlbMl09ZSxsWzNdPTA8K3RoaXMsbFs0XT1uLGZ1bmN0aW9uKHQsZSxuLHIsaSl7cmV0dXJuIGkucmVsYXRpdmVUaW1lKGV8fDEsISFuLHQscil9LmFwcGx5KG51bGwsbCkpO3JldHVybiB0JiYoZj1oLnBhc3RGdXR1cmUoK3RoaXMsZikpLGgucG9zdGZvcm1hdChmKX0sWW4udG9JU09TdHJpbmc9am4sWW4udG9TdHJpbmc9am4sWW4udG9KU09OPWpuLFluLmxvY2FsZT0kZSxZbi5sb2NhbGVEYXRhPVdlLFluLnRvSXNvU3RyaW5nPUMoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIixqbiksWW4ubGFuZz1IZSwkKCJYIiwwLDAsInVuaXgiKSwkKCJ4IiwwLDAsInZhbHVlT2YiKSxsdCgieCIsYXQpLGx0KCJYIiwvWystXT9cZCsoXC5cZHsxLDN9KT8vKSxwdCgiWCIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KHQsMTApKX0pKSxwdCgieCIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9kPW5ldyBEYXRlKGsodCkpfSkpLGkudmVyc2lvbj0iMi4yNC4wIixlPV9lLGkuZm49b24saS5taW49ZnVuY3Rpb24oKXtyZXR1cm4ga2UoImlzQmVmb3JlIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGkubWF4PWZ1bmN0aW9uKCl7cmV0dXJuIGtlKCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGkubm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93KCk6K25ldyBEYXRlfSxpLnV0Yz1kLGkudW5peD1mdW5jdGlvbih0KXtyZXR1cm4gX2UoMWUzKnQpfSxpLm1vbnRocz1mdW5jdGlvbih0LGUpe3JldHVybiBsbih0LGUsIm1vbnRocyIpfSxpLmlzRGF0ZT11LGkubG9jYWxlPWVlLGkuaW52YWxpZD1nLGkuZHVyYXRpb249UmUsaS5pc01vbWVudD14LGkud2Vla2RheXM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBobih0LGUsbiwid2Vla2RheXMiKX0saS5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gX2UuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfSxpLmxvY2FsZURhdGE9cmUsaS5pc0R1cmF0aW9uPUNlLGkubW9udGhzU2hvcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbG4odCxlLCJtb250aHNTaG9ydCIpfSxpLndlZWtkYXlzTWluPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaG4odCxlLG4sIndlZWtkYXlzTWluIil9LGkuZGVmaW5lTG9jYWxlPW5lLGkudXBkYXRlTG9jYWxlPWZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9ZSl7dmFyIG4scixpPVp0O251bGwhPShyPXRlKHQpKSYmKGk9ci5fY29uZmlnKSwobj1uZXcgTyhlPUQoaSxlKSkpLnBhcmVudExvY2FsZT1RdFt0XSxRdFt0XT1uLGVlKHQpfWVsc2UgbnVsbCE9UXRbdF0mJihudWxsIT1RdFt0XS5wYXJlbnRMb2NhbGU/UXRbdF09UXRbdF0ucGFyZW50TG9jYWxlOm51bGwhPVF0W3RdJiZkZWxldGUgUXRbdF0pO3JldHVybiBRdFt0XX0saS5sb2NhbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFMoUXQpfSxpLndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBobih0LGUsbiwid2Vla2RheXNTaG9ydCIpfSxpLm5vcm1hbGl6ZVVuaXRzPUksaS5yZWxhdGl2ZVRpbWVSb3VuZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9JbjoiZnVuY3Rpb24iPT10eXBlb2YgdCYmKEluPXQsITApfSxpLnJlbGF0aXZlVGltZVRocmVzaG9sZD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDAhPT1Sblt0XSYmKHZvaWQgMD09PWU/Um5bdF06KFJuW3RdPWUsInMiPT09dCYmKFJuLnNzPWUtMSksITApKX0saS5jYWxlbmRhckZvcm1hdD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZGlmZihlLCJkYXlzIiwhMCk7cmV0dXJuIG48LTY/InNhbWVFbHNlIjpuPC0xPyJsYXN0V2VlayI6bjwwPyJsYXN0RGF5IjpuPDE/InNhbWVEYXkiOm48Mj8ibmV4dERheSI6bjw3PyJuZXh0V2VlayI6InNhbWVFbHNlIn0saS5wcm90b3R5cGU9b24saS5IVE1MNV9GTVQ9e0RBVEVUSU1FX0xPQ0FMOiJZWVlZLU1NLUREVEhIOm1tIixEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiJZWVlZLU1NLUREVEhIOm1tOnNzIixEQVRFVElNRV9MT0NBTF9NUzoiWVlZWS1NTS1ERFRISDptbTpzcy5TU1MiLERBVEU6IllZWVktTU0tREQiLFRJTUU6IkhIOm1tIixUSU1FX1NFQ09ORFM6IkhIOm1tOnNzIixUSU1FX01TOiJISDptbTpzcy5TU1MiLFdFRUs6IkdHR0ctW1ddV1ciLE1PTlRIOiJZWVlZLU1NIn0saX0oKX0sNjQ3MDp0PT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIlBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSl9ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbixyPSIiLGk9MCxhPS0xLG89MCxzPTA7czw9dC5sZW5ndGg7KytzKXtpZihzPHQubGVuZ3RoKW49dC5jaGFyQ29kZUF0KHMpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihhPT09cy0xfHwxPT09byk7ZWxzZSBpZihhIT09cy0xJiYyPT09byl7aWYoci5sZW5ndGg8Mnx8MiE9PWl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSlpZihyLmxlbmd0aD4yKXt2YXIgYz1yLmxhc3RJbmRleE9mKCIvIik7aWYoYyE9PXIubGVuZ3RoLTEpey0xPT09Yz8ocj0iIixpPTApOmk9KHI9ci5zbGljZSgwLGMpKS5sZW5ndGgtMS1yLmxhc3RJbmRleE9mKCIvIiksYT1zLG89MDtjb250aW51ZX19ZWxzZSBpZigyPT09ci5sZW5ndGh8fDE9PT1yLmxlbmd0aCl7cj0iIixpPTAsYT1zLG89MDtjb250aW51ZX1lJiYoci5sZW5ndGg+MD9yKz0iLy4uIjpyPSIuLiIsaT0yKX1lbHNlIHIubGVuZ3RoPjA/cis9Ii8iK3Quc2xpY2UoYSsxLHMpOnI9dC5zbGljZShhKzEscyksaT1zLWEtMTthPXMsbz0wfWVsc2UgNDY9PT1uJiYtMSE9PW8/KytvOm89LTF9cmV0dXJuIHJ9dmFyIHI9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQscj0iIixpPSExLGE9YXJndW1lbnRzLmxlbmd0aC0xO2E+PS0xJiYhaTthLS0pe3ZhciBvO2E+PTA/bz1hcmd1bWVudHNbYV06KHZvaWQgMD09PXQmJih0PXByb2Nlc3MuY3dkKCkpLG89dCksZShvKSwwIT09by5sZW5ndGgmJihyPW8rIi8iK3IsaT00Nz09PW8uY2hhckNvZGVBdCgwKSl9cmV0dXJuIHI9bihyLCFpKSxpP3IubGVuZ3RoPjA/Ii8iK3I6Ii8iOnIubGVuZ3RoPjA/cjoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbih0KXtpZihlKHQpLDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7dmFyIHI9NDc9PT10LmNoYXJDb2RlQXQoMCksaT00Nz09PXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKTtyZXR1cm4gMCE9PSh0PW4odCwhcikpLmxlbmd0aHx8cnx8KHQ9Ii4iKSx0Lmxlbmd0aD4wJiZpJiYodCs9Ii8iKSxyPyIvIit0OnR9LGlzQWJzb2x1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIGUodCksdC5sZW5ndGg+MCYmNDc9PT10LmNoYXJDb2RlQXQoMCl9LGpvaW46ZnVuY3Rpb24oKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciB0LG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKXt2YXIgaT1hcmd1bWVudHNbbl07ZShpKSxpLmxlbmd0aD4wJiYodm9pZCAwPT09dD90PWk6dCs9Ii8iK2kpfXJldHVybiB2b2lkIDA9PT10PyIuIjpyLm5vcm1hbGl6ZSh0KX0scmVsYXRpdmU6ZnVuY3Rpb24odCxuKXtpZihlKHQpLGUobiksdD09PW4pcmV0dXJuIiI7aWYoKHQ9ci5yZXNvbHZlKHQpKT09PShuPXIucmVzb2x2ZShuKSkpcmV0dXJuIiI7Zm9yKHZhciBpPTE7aTx0Lmxlbmd0aCYmNDc9PT10LmNoYXJDb2RlQXQoaSk7KytpKTtmb3IodmFyIGE9dC5sZW5ndGgsbz1hLWkscz0xO3M8bi5sZW5ndGgmJjQ3PT09bi5jaGFyQ29kZUF0KHMpOysrcyk7Zm9yKHZhciBjPW4ubGVuZ3RoLXMsdT1vPGM/bzpjLGw9LTEsaD0wO2g8PXU7KytoKXtpZihoPT09dSl7aWYoYz51KXtpZig0Nz09PW4uY2hhckNvZGVBdChzK2gpKXJldHVybiBuLnNsaWNlKHMraCsxKTtpZigwPT09aClyZXR1cm4gbi5zbGljZShzK2gpfWVsc2Ugbz51JiYoNDc9PT10LmNoYXJDb2RlQXQoaStoKT9sPWg6MD09PWgmJihsPTApKTticmVha312YXIgZj10LmNoYXJDb2RlQXQoaStoKTtpZihmIT09bi5jaGFyQ29kZUF0KHMraCkpYnJlYWs7NDc9PT1mJiYobD1oKX12YXIgZD0iIjtmb3IoaD1pK2wrMTtoPD1hOysraCloIT09YSYmNDchPT10LmNoYXJDb2RlQXQoaCl8fCgwPT09ZC5sZW5ndGg/ZCs9Ii4uIjpkKz0iLy4uIik7cmV0dXJuIGQubGVuZ3RoPjA/ZCtuLnNsaWNlKHMrbCk6KHMrPWwsNDc9PT1uLmNoYXJDb2RlQXQocykmJisrcyxuLnNsaWNlKHMpKX0sX21ha2VMb25nOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxkaXJuYW1lOmZ1bmN0aW9uKHQpe2lmKGUodCksMD09PXQubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIG49dC5jaGFyQ29kZUF0KDApLHI9NDc9PT1uLGk9LTEsYT0hMCxvPXQubGVuZ3RoLTE7bz49MTstLW8paWYoNDc9PT0obj10LmNoYXJDb2RlQXQobykpKXtpZighYSl7aT1vO2JyZWFrfX1lbHNlIGE9ITE7cmV0dXJuLTE9PT1pP3I/Ii8iOiIuIjpyJiYxPT09aT8iLy8iOnQuc2xpY2UoMCxpKX0sYmFzZW5hbWU6ZnVuY3Rpb24odCxuKXtpZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcignImV4dCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO2UodCk7dmFyIHIsaT0wLGE9LTEsbz0hMDtpZih2b2lkIDAhPT1uJiZuLmxlbmd0aD4wJiZuLmxlbmd0aDw9dC5sZW5ndGgpe2lmKG4ubGVuZ3RoPT09dC5sZW5ndGgmJm49PT10KXJldHVybiIiO3ZhciBzPW4ubGVuZ3RoLTEsYz0tMTtmb3Iocj10Lmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgdT10LmNoYXJDb2RlQXQocik7aWYoNDc9PT11KXtpZighbyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PWMmJihvPSExLGM9cisxKSxzPj0wJiYodT09PW4uY2hhckNvZGVBdChzKT8tMT09LS1zJiYoYT1yKToocz0tMSxhPWMpKX1yZXR1cm4gaT09PWE/YT1jOi0xPT09YSYmKGE9dC5sZW5ndGgpLHQuc2xpY2UoaSxhKX1mb3Iocj10Lmxlbmd0aC0xO3I+PTA7LS1yKWlmKDQ3PT09dC5jaGFyQ29kZUF0KHIpKXtpZighbyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cisxKTtyZXR1cm4tMT09PWE/IiI6dC5zbGljZShpLGEpfSxleHRuYW1lOmZ1bmN0aW9uKHQpe2UodCk7Zm9yKHZhciBuPS0xLHI9MCxpPS0xLGE9ITAsbz0wLHM9dC5sZW5ndGgtMTtzPj0wOy0tcyl7dmFyIGM9dC5jaGFyQ29kZUF0KHMpO2lmKDQ3IT09YyktMT09PWkmJihhPSExLGk9cysxKSw0Nj09PWM/LTE9PT1uP249czoxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSk7ZWxzZSBpZighYSl7cj1zKzE7YnJlYWt9fXJldHVybi0xPT09bnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJm49PT1pLTEmJm49PT1yKzE/IiI6dC5zbGljZShuLGkpfSxmb3JtYXQ6ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInBhdGhPYmplY3QiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5kaXJ8fGUucm9vdCxyPWUuYmFzZXx8KGUubmFtZXx8IiIpKyhlLmV4dHx8IiIpO3JldHVybiBuP249PT1lLnJvb3Q/bityOm4rIi8iK3I6cn0oMCx0KX0scGFyc2U6ZnVuY3Rpb24odCl7ZSh0KTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PXQubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9dC5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxjPS0xLHU9ITAsbD10Lmxlbmd0aC0xLGg9MDtsPj1yOy0tbClpZig0NyE9PShpPXQuY2hhckNvZGVBdChsKSkpLTE9PT1jJiYodT0hMSxjPWwrMSksNDY9PT1pPy0xPT09bz9vPWw6MSE9PWgmJihoPTEpOi0xIT09byYmKGg9LTEpO2Vsc2UgaWYoIXUpe3M9bCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1jfHwwPT09aHx8MT09PWgmJm89PT1jLTEmJm89PT1zKzE/LTEhPT1jJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT90LnNsaWNlKDEsYyk6dC5zbGljZShzLGMpKTooMD09PXMmJmE/KG4ubmFtZT10LnNsaWNlKDEsbyksbi5iYXNlPXQuc2xpY2UoMSxjKSk6KG4ubmFtZT10LnNsaWNlKHMsbyksbi5iYXNlPXQuc2xpY2UocyxjKSksbi5leHQ9dC5zbGljZShvLGMpKSxzPjA/bi5kaXI9dC5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLHQuZXhwb3J0cz1yfSw4MjE4OigpPT57fSw4MDA5OigpPT57fSw1MzU0OigpPT57fSw2ODc4OigpPT57fSw4MTgzOigpPT57fSwxNDI4OigpPT57fSw0NTUxOigpPT57fSw4ODAwOigpPT57fSwxOTkzOigpPT57fSwzMDY5OigpPT57fSw5MTQzOigpPT57fX0sZT17fTtmdW5jdGlvbiBuKHIpe3ZhciBpPWVbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPWVbcl09e2lkOnIsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiB0W3JdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLG4pLGEubG9hZGVkPSEwLGEuZXhwb3J0c31uLmM9ZSxuLm49dD0+e3ZhciBlPXQmJnQuX19lc01vZHVsZT8oKT0+dC5kZWZhdWx0OigpPT50O3JldHVybiBuLmQoZSx7YTplfSksZX0sbi5kPSh0LGUpPT57Zm9yKHZhciByIGluIGUpbi5vKGUscikmJiFuLm8odCxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscix7ZW51bWVyYWJsZTohMCxnZXQ6ZVtyXX0pfSxuLmc9ZnVuY3Rpb24oKXtpZigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaCh0KXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxuLm89KHQsZSk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpLG4ucj10PT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbi5ubWQ9dD0+KHQucGF0aHM9W10sdC5jaGlsZHJlbnx8KHQuY2hpbGRyZW49W10pLHQpO3ZhciByPW4obi5zPTc0NTgpO3JldHVybiByLmRlZmF1bHR9KSgpfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1tZXJtYWlkLm1pbi5qcy5tYXA=`; \ No newline at end of file +module.exports = `LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbWVybWFpZC5taW4uanMuTElDRU5TRS50eHQgKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMubWVybWFpZD1lKCk6dC5tZXJtYWlkPWUoKX0oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcywoZnVuY3Rpb24oKXtyZXR1cm4oKCk9Pnt2YXIgdD17MTM2MjoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsNl0sbj1bMSw3XSxyPVsxLDhdLGk9WzEsOV0sYT1bMSwxMl0sbz1bMSwxMV0scz1bMSwxNSwyNF0sYz1bMSwxOV0sdT1bMSwzMV0sbD1bMSwzNF0saD1bMSwzMl0sZj1bMSwzM10sZD1bMSwzNV0scD1bMSwzNl0seT1bMSwzN10sZz1bMSwzOF0sbT1bMSw0MV0sdj1bMSw0Ml0sYj1bMSw0M10sXz1bMSw0NF0seD1bMTUsMjRdLHc9WzEsNTZdLGs9WzEsNTddLFQ9WzEsNThdLEU9WzEsNTldLEM9WzEsNjBdLFM9WzEsNjFdLEE9WzE1LDI0LDMxLDM4LDM5LDQ3LDUwLDUxLDUyLDUzLDU0LDU1LDYwLDYyXSxNPVsxNSwyNCwyOSwzMSwzOCwzOSw0Myw0Nyw1MCw1MSw1Miw1Myw1NCw1NSw2MCw2Miw3Nyw3OCw3OSw4MF0sTj1bNyw4LDksMTAsMTUsMTgsMjIsMjRdLEQ9WzQ3LDc3LDc4LDc5LDgwXSxPPVs0Nyw1NCw1NSw3Nyw3OCw3OSw4MF0sQj1bNDcsNTAsNTEsNTIsNTMsNzcsNzgsNzksODBdLEw9WzE1LDI0LDMxXSxJPVsxLDkzXSxSPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxtZXJtYWlkRG9jOjQsZGlyZWN0aW9uOjUsZGlyZWN0aXZlOjYsZGlyZWN0aW9uX3RiOjcsZGlyZWN0aW9uX2J0OjgsZGlyZWN0aW9uX3JsOjksZGlyZWN0aW9uX2xyOjEwLGdyYXBoQ29uZmlnOjExLG9wZW5EaXJlY3RpdmU6MTIsdHlwZURpcmVjdGl2ZToxMyxjbG9zZURpcmVjdGl2ZToxNCxORVdMSU5FOjE1LCI6IjoxNixhcmdEaXJlY3RpdmU6MTcsb3Blbl9kaXJlY3RpdmU6MTgsdHlwZV9kaXJlY3RpdmU6MTksYXJnX2RpcmVjdGl2ZToyMCxjbG9zZV9kaXJlY3RpdmU6MjEsQ0xBU1NfRElBR1JBTToyMixzdGF0ZW1lbnRzOjIzLEVPRjoyNCxzdGF0ZW1lbnQ6MjUsY2xhc3NOYW1lOjI2LGFscGhhTnVtVG9rZW46MjcsY2xhc3NMaXRlcmFsTmFtZToyOCxHRU5FUklDVFlQRToyOSxyZWxhdGlvblN0YXRlbWVudDozMCxMQUJFTDozMSxjbGFzc1N0YXRlbWVudDozMixtZXRob2RTdGF0ZW1lbnQ6MzMsYW5ub3RhdGlvblN0YXRlbWVudDozNCxjbGlja1N0YXRlbWVudDozNSxjc3NDbGFzc1N0YXRlbWVudDozNixDTEFTUzozNyxTVFlMRV9TRVBBUkFUT1I6MzgsU1RSVUNUX1NUQVJUOjM5LG1lbWJlcnM6NDAsU1RSVUNUX1NUT1A6NDEsQU5OT1RBVElPTl9TVEFSVDo0MixBTk5PVEFUSU9OX0VORDo0MyxNRU1CRVI6NDQsU0VQQVJBVE9SOjQ1LHJlbGF0aW9uOjQ2LFNUUjo0NyxyZWxhdGlvblR5cGU6NDgsbGluZVR5cGU6NDksQUdHUkVHQVRJT046NTAsRVhURU5TSU9OOjUxLENPTVBPU0lUSU9OOjUyLERFUEVOREVOQ1k6NTMsTElORTo1NCxET1RURURfTElORTo1NSxDQUxMQkFDSzo1NixMSU5LOjU3LExJTktfVEFSR0VUOjU4LENMSUNLOjU5LENBTExCQUNLX05BTUU6NjAsQ0FMTEJBQ0tfQVJHUzo2MSxIUkVGOjYyLENTU0NMQVNTOjYzLGNvbW1lbnRUb2tlbjo2NCx0ZXh0VG9rZW46NjUsZ3JhcGhDb2RlVG9rZW5zOjY2LHRleHROb1RhZ3NUb2tlbjo2NyxUQUdTVEFSVDo2OCxUQUdFTkQ6NjksIj09Ijo3MCwiLS0iOjcxLFBDVDo3MixERUZBVUxUOjczLFNQQUNFOjc0LE1JTlVTOjc1LGtleXdvcmRzOjc2LFVOSUNPREVfVEVYVDo3NyxOVU06NzgsQUxQSEE6NzksQlFVT1RFX1NUUjo4MCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNzoiZGlyZWN0aW9uX3RiIiw4OiJkaXJlY3Rpb25fYnQiLDk6ImRpcmVjdGlvbl9ybCIsMTA6ImRpcmVjdGlvbl9sciIsMTU6Ik5FV0xJTkUiLDE2OiI6IiwxODoib3Blbl9kaXJlY3RpdmUiLDE5OiJ0eXBlX2RpcmVjdGl2ZSIsMjA6ImFyZ19kaXJlY3RpdmUiLDIxOiJjbG9zZV9kaXJlY3RpdmUiLDIyOiJDTEFTU19ESUFHUkFNIiwyNDoiRU9GIiwyOToiR0VORVJJQ1RZUEUiLDMxOiJMQUJFTCIsMzc6IkNMQVNTIiwzODoiU1RZTEVfU0VQQVJBVE9SIiwzOToiU1RSVUNUX1NUQVJUIiw0MToiU1RSVUNUX1NUT1AiLDQyOiJBTk5PVEFUSU9OX1NUQVJUIiw0MzoiQU5OT1RBVElPTl9FTkQiLDQ0OiJNRU1CRVIiLDQ1OiJTRVBBUkFUT1IiLDQ3OiJTVFIiLDUwOiJBR0dSRUdBVElPTiIsNTE6IkVYVEVOU0lPTiIsNTI6IkNPTVBPU0lUSU9OIiw1MzoiREVQRU5ERU5DWSIsNTQ6IkxJTkUiLDU1OiJET1RURURfTElORSIsNTY6IkNBTExCQUNLIiw1NzoiTElOSyIsNTg6IkxJTktfVEFSR0VUIiw1OToiQ0xJQ0siLDYwOiJDQUxMQkFDS19OQU1FIiw2MToiQ0FMTEJBQ0tfQVJHUyIsNjI6IkhSRUYiLDYzOiJDU1NDTEFTUyIsNjY6ImdyYXBoQ29kZVRva2VucyIsNjg6IlRBR1NUQVJUIiw2OToiVEFHRU5EIiw3MDoiPT0iLDcxOiItLSIsNzI6IlBDVCIsNzM6IkRFRkFVTFQiLDc0OiJTUEFDRSIsNzU6Ik1JTlVTIiw3Njoia2V5d29yZHMiLDc3OiJVTklDT0RFX1RFWFQiLDc4OiJOVU0iLDc5OiJBTFBIQSIsODA6IkJRVU9URV9TVFIifSxwcm9kdWN0aW9uc186WzAsWzMsMV0sWzMsMV0sWzMsMl0sWzUsMV0sWzUsMV0sWzUsMV0sWzUsMV0sWzQsMV0sWzYsNF0sWzYsNl0sWzEyLDFdLFsxMywxXSxbMTcsMV0sWzE0LDFdLFsxMSw0XSxbMjMsMV0sWzIzLDJdLFsyMywzXSxbMjYsMV0sWzI2LDFdLFsyNiwyXSxbMjYsMl0sWzI2LDJdLFsyNSwxXSxbMjUsMl0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI1LDFdLFszMiwyXSxbMzIsNF0sWzMyLDVdLFszMiw3XSxbMzQsNF0sWzQwLDFdLFs0MCwyXSxbMzMsMV0sWzMzLDJdLFszMywxXSxbMzMsMV0sWzMwLDNdLFszMCw0XSxbMzAsNF0sWzMwLDVdLFs0NiwzXSxbNDYsMl0sWzQ2LDJdLFs0NiwxXSxbNDgsMV0sWzQ4LDFdLFs0OCwxXSxbNDgsMV0sWzQ5LDFdLFs0OSwxXSxbMzUsM10sWzM1LDRdLFszNSwzXSxbMzUsNF0sWzM1LDRdLFszNSw1XSxbMzUsM10sWzM1LDRdLFszNSw0XSxbMzUsNV0sWzM1LDNdLFszNSw0XSxbMzUsNF0sWzM1LDVdLFszNiwzXSxbNjQsMV0sWzY0LDFdLFs2NSwxXSxbNjUsMV0sWzY1LDFdLFs2NSwxXSxbNjUsMV0sWzY1LDFdLFs2NSwxXSxbNjcsMV0sWzY3LDFdLFs2NywxXSxbNjcsMV0sWzI3LDFdLFsyNywxXSxbMjcsMV0sWzI4LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgNDpyLnNldERpcmVjdGlvbigiVEIiKTticmVhaztjYXNlIDU6ci5zZXREaXJlY3Rpb24oIkJUIik7YnJlYWs7Y2FzZSA2OnIuc2V0RGlyZWN0aW9uKCJSTCIpO2JyZWFrO2Nhc2UgNzpyLnNldERpcmVjdGlvbigiTFIiKTticmVhaztjYXNlIDExOnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxMjpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxMzphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTQ6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiY2xhc3MiKTticmVhaztjYXNlIDE5OmNhc2UgMjA6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAyMTp0aGlzLiQ9YVtzLTFdK2Fbc107YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOnRoaXMuJD1hW3MtMV0rIn4iK2Fbc107YnJlYWs7Y2FzZSAyNDpyLmFkZFJlbGF0aW9uKGFbc10pO2JyZWFrO2Nhc2UgMjU6YVtzLTFdLnRpdGxlPXIuY2xlYW51cExhYmVsKGFbc10pLHIuYWRkUmVsYXRpb24oYVtzLTFdKTticmVhaztjYXNlIDMzOnIuYWRkQ2xhc3MoYVtzXSk7YnJlYWs7Y2FzZSAzNDpyLmFkZENsYXNzKGFbcy0yXSksci5zZXRDc3NDbGFzcyhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAzNTpyLmFkZENsYXNzKGFbcy0zXSksci5hZGRNZW1iZXJzKGFbcy0zXSxhW3MtMV0pO2JyZWFrO2Nhc2UgMzY6ci5hZGRDbGFzcyhhW3MtNV0pLHIuc2V0Q3NzQ2xhc3MoYVtzLTVdLGFbcy0zXSksci5hZGRNZW1iZXJzKGFbcy01XSxhW3MtMV0pO2JyZWFrO2Nhc2UgMzc6ci5hZGRBbm5vdGF0aW9uKGFbc10sYVtzLTJdKTticmVhaztjYXNlIDM4OnRoaXMuJD1bYVtzXV07YnJlYWs7Y2FzZSAzOTphW3NdLnB1c2goYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDQwOmNhc2UgNDI6Y2FzZSA0MzpicmVhaztjYXNlIDQxOnIuYWRkTWVtYmVyKGFbcy0xXSxyLmNsZWFudXBMYWJlbChhW3NdKSk7YnJlYWs7Y2FzZSA0NDp0aGlzLiQ9e2lkMTphW3MtMl0saWQyOmFbc10scmVsYXRpb246YVtzLTFdLHJlbGF0aW9uVGl0bGUxOiJub25lIixyZWxhdGlvblRpdGxlMjoibm9uZSJ9O2JyZWFrO2Nhc2UgNDU6dGhpcy4kPXtpZDE6YVtzLTNdLGlkMjphW3NdLHJlbGF0aW9uOmFbcy0xXSxyZWxhdGlvblRpdGxlMTphW3MtMl0scmVsYXRpb25UaXRsZTI6Im5vbmUifTticmVhaztjYXNlIDQ2OnRoaXMuJD17aWQxOmFbcy0zXSxpZDI6YVtzXSxyZWxhdGlvbjphW3MtMl0scmVsYXRpb25UaXRsZTE6Im5vbmUiLHJlbGF0aW9uVGl0bGUyOmFbcy0xXX07YnJlYWs7Y2FzZSA0Nzp0aGlzLiQ9e2lkMTphW3MtNF0saWQyOmFbc10scmVsYXRpb246YVtzLTJdLHJlbGF0aW9uVGl0bGUxOmFbcy0zXSxyZWxhdGlvblRpdGxlMjphW3MtMV19O2JyZWFrO2Nhc2UgNDg6dGhpcy4kPXt0eXBlMTphW3MtMl0sdHlwZTI6YVtzXSxsaW5lVHlwZTphW3MtMV19O2JyZWFrO2Nhc2UgNDk6dGhpcy4kPXt0eXBlMToibm9uZSIsdHlwZTI6YVtzXSxsaW5lVHlwZTphW3MtMV19O2JyZWFrO2Nhc2UgNTA6dGhpcy4kPXt0eXBlMTphW3MtMV0sdHlwZTI6Im5vbmUiLGxpbmVUeXBlOmFbc119O2JyZWFrO2Nhc2UgNTE6dGhpcy4kPXt0eXBlMToibm9uZSIsdHlwZTI6Im5vbmUiLGxpbmVUeXBlOmFbc119O2JyZWFrO2Nhc2UgNTI6dGhpcy4kPXIucmVsYXRpb25UeXBlLkFHR1JFR0FUSU9OO2JyZWFrO2Nhc2UgNTM6dGhpcy4kPXIucmVsYXRpb25UeXBlLkVYVEVOU0lPTjticmVhaztjYXNlIDU0OnRoaXMuJD1yLnJlbGF0aW9uVHlwZS5DT01QT1NJVElPTjticmVhaztjYXNlIDU1OnRoaXMuJD1yLnJlbGF0aW9uVHlwZS5ERVBFTkRFTkNZO2JyZWFrO2Nhc2UgNTY6dGhpcy4kPXIubGluZVR5cGUuTElORTticmVhaztjYXNlIDU3OnRoaXMuJD1yLmxpbmVUeXBlLkRPVFRFRF9MSU5FO2JyZWFrO2Nhc2UgNTg6Y2FzZSA2NDp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMV0sYVtzXSk7YnJlYWs7Y2FzZSA1OTpjYXNlIDY1OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3MtMV0pLHIuc2V0VG9vbHRpcChhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSA2MDpjYXNlIDY4OnRoaXMuJD1hW3MtMl0sci5zZXRMaW5rKGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDYxOmNhc2UgNjk6dGhpcy4kPWFbcy0zXSxyLnNldExpbmsoYVtzLTJdLGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDYyOmNhc2UgNzA6dGhpcy4kPWFbcy0zXSxyLnNldExpbmsoYVtzLTJdLGFbcy0xXSksci5zZXRUb29sdGlwKGFbcy0yXSxhW3NdKTticmVhaztjYXNlIDYzOmNhc2UgNzE6dGhpcy4kPWFbcy00XSxyLnNldExpbmsoYVtzLTNdLGFbcy0yXSxhW3NdKSxyLnNldFRvb2x0aXAoYVtzLTNdLGFbcy0xXSk7YnJlYWs7Y2FzZSA2Njp0aGlzLiQ9YVtzLTNdLHIuc2V0Q2xpY2tFdmVudChhW3MtMl0sYVtzLTFdLGFbc10pO2JyZWFrO2Nhc2UgNjc6dGhpcy4kPWFbcy00XSxyLnNldENsaWNrRXZlbnQoYVtzLTNdLGFbcy0yXSxhW3MtMV0pLHIuc2V0VG9vbHRpcChhW3MtM10sYVtzXSk7YnJlYWs7Y2FzZSA3MjpyLnNldENzc0NsYXNzKGFbcy0xXSxhW3NdKX19LHRhYmxlOlt7MzoxLDQ6Miw1OjMsNjo0LDc6ZSw4Om4sOTpyLDEwOmksMTE6NSwxMjoxMCwxODphLDIyOm99LHsxOlszXX0sezE6WzIsMV19LHsxOlsyLDJdfSx7MzoxMyw0OjIsNTozLDY6NCw3OmUsODpuLDk6ciwxMDppLDExOjUsMTI6MTAsMTg6YSwyMjpvfSx7MTpbMiw4XX0sdChzLFsyLDRdKSx0KHMsWzIsNV0pLHQocyxbMiw2XSksdChzLFsyLDddKSx7MTM6MTQsMTk6WzEsMTVdfSx7MTU6WzEsMTZdfSx7MTk6WzIsMTFdfSx7MTpbMiwzXX0sezE0OjE3LDE2OlsxLDE4XSwyMTpjfSx0KFsxNiwyMV0sWzIsMTJdKSx7NToyOSw2OjI4LDc6ZSw4Om4sOTpyLDEwOmksMTI6MTAsMTg6YSwyMzoyMCwyNToyMSwyNjozMCwyNzozOSwyODo0MCwzMDoyMiwzMjoyMywzMzoyNCwzNDoyNSwzNToyNiwzNjoyNywzNzp1LDQyOmwsNDQ6aCw0NTpmLDU2OmQsNTc6cCw1OTp5LDYzOmcsNzc6bSw3ODp2LDc5OmIsODA6X30sezE1OlsxLDQ1XX0sezE3OjQ2LDIwOlsxLDQ3XX0sezE1OlsyLDE0XX0sezI0OlsxLDQ4XX0sezE1OlsxLDQ5XSwyNDpbMiwxNl19LHQoeCxbMiwyNF0sezMxOlsxLDUwXX0pLHQoeCxbMiwyNl0pLHQoeCxbMiwyN10pLHQoeCxbMiwyOF0pLHQoeCxbMiwyOV0pLHQoeCxbMiwzMF0pLHQoeCxbMiwzMV0pLHQoeCxbMiwzMl0pLHQoeCxbMiw0MF0sezQ2OjUxLDQ4OjU0LDQ5OjU1LDMxOlsxLDUzXSw0NzpbMSw1Ml0sNTA6dyw1MTprLDUyOlQsNTM6RSw1NDpDLDU1OlN9KSx7MjY6NjIsMjc6MzksMjg6NDAsNzc6bSw3ODp2LDc5OmIsODA6X30sdCh4LFsyLDQyXSksdCh4LFsyLDQzXSksezI3OjYzLDc3Om0sNzg6diw3OTpifSx7MjY6NjQsMjc6MzksMjg6NDAsNzc6bSw3ODp2LDc5OmIsODA6X30sezI2OjY1LDI3OjM5LDI4OjQwLDc3Om0sNzg6diw3OTpiLDgwOl99LHsyNjo2NiwyNzozOSwyODo0MCw3NzptLDc4OnYsNzk6Yiw4MDpffSx7NDc6WzEsNjddfSx0KEEsWzIsMTldLHsyNzozOSwyODo0MCwyNjo2OCwyOTpbMSw2OV0sNzc6bSw3ODp2LDc5OmIsODA6X30pLHQoQSxbMiwyMF0sezI5OlsxLDcwXX0pLHQoTSxbMiw4Nl0pLHQoTSxbMiw4N10pLHQoTSxbMiw4OF0pLHQoWzE1LDI0LDI5LDMxLDM4LDM5LDQ3LDUwLDUxLDUyLDUzLDU0LDU1LDYwLDYyXSxbMiw4OV0pLHQoTixbMiw5XSksezE0OjcxLDIxOmN9LHsyMTpbMiwxM119LHsxOlsyLDE1XX0sezU6MjksNjoyOCw3OmUsODpuLDk6ciwxMDppLDEyOjEwLDE4OmEsMjM6NzIsMjQ6WzIsMTddLDI1OjIxLDI2OjMwLDI3OjM5LDI4OjQwLDMwOjIyLDMyOjIzLDMzOjI0LDM0OjI1LDM1OjI2LDM2OjI3LDM3OnUsNDI6bCw0NDpoLDQ1OmYsNTY6ZCw1NzpwLDU5OnksNjM6Zyw3NzptLDc4OnYsNzk6Yiw4MDpffSx0KHgsWzIsMjVdKSx7MjY6NzMsMjc6MzksMjg6NDAsNDc6WzEsNzRdLDc3Om0sNzg6diw3OTpiLDgwOl99LHs0Njo3NSw0ODo1NCw0OTo1NSw1MDp3LDUxOmssNTI6VCw1MzpFLDU0OkMsNTU6U30sdCh4LFsyLDQxXSksezQ5Ojc2LDU0OkMsNTU6U30sdChELFsyLDUxXSx7NDg6NzcsNTA6dyw1MTprLDUyOlQsNTM6RX0pLHQoTyxbMiw1Ml0pLHQoTyxbMiw1M10pLHQoTyxbMiw1NF0pLHQoTyxbMiw1NV0pLHQoQixbMiw1Nl0pLHQoQixbMiw1N10pLHQoeCxbMiwzM10sezM4OlsxLDc4XSwzOTpbMSw3OV19KSx7NDM6WzEsODBdfSx7NDc6WzEsODFdfSx7NDc6WzEsODJdfSx7NjA6WzEsODNdLDYyOlsxLDg0XX0sezI3Ojg1LDc3Om0sNzg6diw3OTpifSx0KEEsWzIsMjFdKSx0KEEsWzIsMjJdKSx0KEEsWzIsMjNdKSx7MTU6WzEsODZdfSx7MjQ6WzIsMThdfSx0KEwsWzIsNDRdKSx7MjY6ODcsMjc6MzksMjg6NDAsNzc6bSw3ODp2LDc5OmIsODA6X30sezI2Ojg4LDI3OjM5LDI4OjQwLDQ3OlsxLDg5XSw3NzptLDc4OnYsNzk6Yiw4MDpffSx0KEQsWzIsNTBdLHs0ODo5MCw1MDp3LDUxOmssNTI6VCw1MzpFfSksdChELFsyLDQ5XSksezI3OjkxLDc3Om0sNzg6diw3OTpifSx7NDA6OTIsNDQ6SX0sezI2Ojk0LDI3OjM5LDI4OjQwLDc3Om0sNzg6diw3OTpiLDgwOl99LHQoeCxbMiw1OF0sezQ3OlsxLDk1XX0pLHQoeCxbMiw2MF0sezQ3OlsxLDk3XSw1ODpbMSw5Nl19KSx0KHgsWzIsNjRdLHs0NzpbMSw5OF0sNjE6WzEsOTldfSksdCh4LFsyLDY4XSx7NDc6WzEsMTAxXSw1ODpbMSwxMDBdfSksdCh4LFsyLDcyXSksdChOLFsyLDEwXSksdChMLFsyLDQ2XSksdChMLFsyLDQ1XSksezI2OjEwMiwyNzozOSwyODo0MCw3NzptLDc4OnYsNzk6Yiw4MDpffSx0KEQsWzIsNDhdKSx0KHgsWzIsMzRdLHszOTpbMSwxMDNdfSksezQxOlsxLDEwNF19LHs0MDoxMDUsNDE6WzIsMzhdLDQ0Okl9LHQoeCxbMiwzN10pLHQoeCxbMiw1OV0pLHQoeCxbMiw2MV0pLHQoeCxbMiw2Ml0sezU4OlsxLDEwNl19KSx0KHgsWzIsNjVdKSx0KHgsWzIsNjZdLHs0NzpbMSwxMDddfSksdCh4LFsyLDY5XSksdCh4LFsyLDcwXSx7NTg6WzEsMTA4XX0pLHQoTCxbMiw0N10pLHs0MDoxMDksNDQ6SX0sdCh4LFsyLDM1XSksezQxOlsyLDM5XX0sdCh4LFsyLDYzXSksdCh4LFsyLDY3XSksdCh4LFsyLDcxXSksezQxOlsxLDExMF19LHQoeCxbMiwzNl0pXSxkZWZhdWx0QWN0aW9uczp7MjpbMiwxXSwzOlsyLDJdLDU6WzIsOF0sMTI6WzIsMTFdLDEzOlsyLDNdLDE5OlsyLDE0XSw0NzpbMiwxM10sNDg6WzIsMTVdLDcyOlsyLDE4XSwxMDU6WzIsMzldfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIWUucmVjb3ZlcmFibGUpe3ZhciBuPW5ldyBFcnJvcih0KTt0aHJvdyBuLmhhc2g9ZSxufXRoaXMudHJhY2UodCl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bMF0scj1bXSxpPVtudWxsXSxhPVtdLG89dGhpcy50YWJsZSxzPSIiLGM9MCx1PTAsbD0wLGg9MixmPTEsZD1hLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHA9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSx5PXt5eTp7fX07Zm9yKHZhciBnIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksZykmJih5Lnl5W2ddPXRoaXMueXlbZ10pO3Auc2V0SW5wdXQodCx5Lnl5KSx5Lnl5LmxleGVyPXAseS55eS5wYXJzZXI9dGhpcyx2b2lkIDA9PT1wLnl5bGxvYyYmKHAueXlsbG9jPXt9KTt2YXIgbT1wLnl5bGxvYzthLnB1c2gobSk7dmFyIHY9cC5vcHRpb25zJiZwLm9wdGlvbnMucmFuZ2VzO2Z1bmN0aW9uIGIoKXt2YXIgdDtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mKHQ9ci5wb3AoKXx8cC5sZXgoKXx8ZikmJih0IGluc3RhbmNlb2YgQXJyYXkmJih0PShyPXQpLnBvcCgpKSx0PWUuc3ltYm9sc19bdF18fHQpLHR9ImZ1bmN0aW9uIj09dHlwZW9mIHkueXkucGFyc2VFcnJvcj90aGlzLnBhcnNlRXJyb3I9eS55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmb3IodmFyIF8seCx3LGssVCxFLEMsUyxBLE09e307Oyl7aWYodz1uW24ubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbd10/az10aGlzLmRlZmF1bHRBY3Rpb25zW3ddOihudWxsPT1fJiYoXz1iKCkpLGs9b1t3XSYmb1t3XVtfXSksdm9pZCAwPT09a3x8IWsubGVuZ3RofHwha1swXSl7dmFyIE49IiI7Zm9yKEUgaW4gQT1bXSxvW3ddKXRoaXMudGVybWluYWxzX1tFXSYmRT5oJiZBLnB1c2goIiciK3RoaXMudGVybWluYWxzX1tFXSsiJyIpO049cC5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOlxuIitwLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK0Euam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciOiJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjogVW5leHBlY3RlZCAiKyhfPT1mPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyIpLHRoaXMucGFyc2VFcnJvcihOLHt0ZXh0OnAubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW19dfHxfLGxpbmU6cC55eWxpbmVubyxsb2M6bSxleHBlY3RlZDpBfSl9aWYoa1swXWluc3RhbmNlb2YgQXJyYXkmJmsubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIit3KyIsIHRva2VuOiAiK18pO3N3aXRjaChrWzBdKXtjYXNlIDE6bi5wdXNoKF8pLGkucHVzaChwLnl5dGV4dCksYS5wdXNoKHAueXlsbG9jKSxuLnB1c2goa1sxXSksXz1udWxsLHg/KF89eCx4PW51bGwpOih1PXAueXlsZW5nLHM9cC55eXRleHQsYz1wLnl5bGluZW5vLG09cC55eWxsb2MsbD4wJiZsLS0pO2JyZWFrO2Nhc2UgMjppZihDPXRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzFdLE0uJD1pW2kubGVuZ3RoLUNdLE0uXyQ9e2ZpcnN0X2xpbmU6YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmFbYS5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOmFbYS5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LHYmJihNLl8kLnJhbmdlPVthW2EubGVuZ3RoLShDfHwxKV0ucmFuZ2VbMF0sYVthLmxlbmd0aC0xXS5yYW5nZVsxXV0pLHZvaWQgMCE9PShUPXRoaXMucGVyZm9ybUFjdGlvbi5hcHBseShNLFtzLHUsYyx5Lnl5LGtbMV0saSxhXS5jb25jYXQoZCkpKSlyZXR1cm4gVDtDJiYobj1uLnNsaWNlKDAsLTEqQyoyKSxpPWkuc2xpY2UoMCwtMSpDKSxhPWEuc2xpY2UoMCwtMSpDKSksbi5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzBdKSxpLnB1c2goTS4kKSxhLnB1c2goTS5fJCksUz1vW25bbi5sZW5ndGgtMl1dW25bbi5sZW5ndGgtMV1dLG4ucHVzaChTKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0sRj17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnl5LnBhcnNlcil0aHJvdyBuZXcgRXJyb3IodCk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcih0LGUpfSxzZXRJbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnl5PWV8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PXQsdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW5wdXRbMF07cmV0dXJuIHRoaXMueXl0ZXh0Kz10LHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz10LHRoaXMubWF0Y2hlZCs9dCx0Lm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksdH0sdW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbj10LnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9dCt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtZSksdGhpcy5vZmZzZXQtPWU7dmFyIHI9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksbi5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPW4ubGVuZ3RoLTEpO3ZhciBpPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpuPyhuLmxlbmd0aD09PXIubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStyW3IubGVuZ3RoLW4ubGVuZ3RoXS5sZW5ndGgtblswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baVswXSxpWzBdK3RoaXMueXlsZW5nLWVdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyPyh0aGlzLl9iYWNrdHJhY2s9ITAsdGhpcyk6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGVzczpmdW5jdGlvbih0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UodCkpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSt0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaDtyZXR1cm4gdC5sZW5ndGg8MjAmJih0Kz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC10Lmxlbmd0aCkpLCh0LnN1YnN0cigwLDIwKSsodC5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXN0SW5wdXQoKSxlPW5ldyBBcnJheSh0Lmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHQrdGhpcy51cGNvbWluZ0lucHV0KCkrIlxuIitlKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoaT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihpLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLChyPXRbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpKSYmKHRoaXMueXlsaW5lbm8rPXIubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46cj9yW3IubGVuZ3RoLTFdLmxlbmd0aC1yW3IubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rdFswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz10WzBdLHRoaXMubWF0Y2grPXRbMF0sdGhpcy5tYXRjaGVzPXQsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UodFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9dFswXSxuPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLGUsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksbilyZXR1cm4gbjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgYSBpbiBpKXRoaXNbYV09aVthXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dmFyIHQsZSxuLHI7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApLHRoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGk9dGhpcy5fY3VycmVudFJ1bGVzKCksYT0wO2E8aS5sZW5ndGg7YSsrKWlmKChuPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbaVthXV0pKSYmKCFlfHxuWzBdLmxlbmd0aD5lWzBdLmxlbmd0aCkpe2lmKGU9bixyPWEsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoITEhPT0odD10aGlzLnRlc3RfbWF0Y2gobixpW2FdKSkpcmV0dXJuIHQ7aWYodGhpcy5fYmFja3RyYWNrKXtlPSExO2NvbnRpbnVlfXJldHVybiExfWlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gZT8hMSE9PSh0PXRoaXMudGVzdF9tYXRjaChlLGlbcl0pKSYmdDoiIj09PXRoaXMuX2lucHV0P3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gVW5yZWNvZ25pemVkIHRleHQuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dCgpfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbih0KXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2godCl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKHR8fDApKT49MD90aGlzLmNvbmRpdGlvblN0YWNrW3RdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYmVnaW4odCl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnt9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSwxODtjYXNlIDE6cmV0dXJuIDc7Y2FzZSAyOnJldHVybiA4O2Nhc2UgMzpyZXR1cm4gOTtjYXNlIDQ6cmV0dXJuIDEwO2Nhc2UgNTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwxOTtjYXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTY7Y2FzZSA3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDIxO2Nhc2UgODpyZXR1cm4gMjA7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMjpjYXNlIDE5OmJyZWFrO2Nhc2UgMTE6cmV0dXJuIDE1O2Nhc2UgMTM6Y2FzZSAxNDpyZXR1cm4gMjI7Y2FzZSAxNTpyZXR1cm4gdGhpcy5iZWdpbigic3RydWN0IiksMzk7Y2FzZSAxNjpyZXR1cm4iRU9GX0lOX1NUUlVDVCI7Y2FzZSAxNzpyZXR1cm4iT1BFTl9JTl9TVFJVQ1QiO2Nhc2UgMTg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0MTtjYXNlIDIwOnJldHVybiJNRU1CRVIiO2Nhc2UgMjE6cmV0dXJuIDM3O2Nhc2UgMjI6cmV0dXJuIDYzO2Nhc2UgMjM6cmV0dXJuIDU2O2Nhc2UgMjQ6cmV0dXJuIDU3O2Nhc2UgMjU6cmV0dXJuIDU5O2Nhc2UgMjY6cmV0dXJuIDQyO2Nhc2UgMjc6cmV0dXJuIDQzO2Nhc2UgMjg6dGhpcy5iZWdpbigiZ2VuZXJpYyIpO2JyZWFrO2Nhc2UgMjk6Y2FzZSAzMjpjYXNlIDM1OmNhc2UgMzg6Y2FzZSA0MTpjYXNlIDQ0OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDMwOnJldHVybiJHRU5FUklDVFlQRSI7Y2FzZSAzMTp0aGlzLmJlZ2luKCJzdHJpbmciKTticmVhaztjYXNlIDMzOnJldHVybiJTVFIiO2Nhc2UgMzQ6dGhpcy5iZWdpbigiYnFzdHJpbmciKTticmVhaztjYXNlIDM2OnJldHVybiJCUVVPVEVfU1RSIjtjYXNlIDM3OnRoaXMuYmVnaW4oImhyZWYiKTticmVhaztjYXNlIDM5OnJldHVybiA2MjtjYXNlIDQwOnRoaXMuYmVnaW4oImNhbGxiYWNrX25hbWUiKTticmVhaztjYXNlIDQyOnRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJjYWxsYmFja19hcmdzIik7YnJlYWs7Y2FzZSA0MzpyZXR1cm4gNjA7Y2FzZSA0NTpyZXR1cm4gNjE7Y2FzZSA0NjpjYXNlIDQ3OmNhc2UgNDg6Y2FzZSA0OTpyZXR1cm4gNTg7Y2FzZSA1MDpjYXNlIDUxOnJldHVybiA1MTtjYXNlIDUyOmNhc2UgNTM6cmV0dXJuIDUzO2Nhc2UgNTQ6cmV0dXJuIDUyO2Nhc2UgNTU6cmV0dXJuIDUwO2Nhc2UgNTY6cmV0dXJuIDU0O2Nhc2UgNTc6cmV0dXJuIDU1O2Nhc2UgNTg6cmV0dXJuIDMxO2Nhc2UgNTk6cmV0dXJuIDM4O2Nhc2UgNjA6cmV0dXJuIDc1O2Nhc2UgNjE6cmV0dXJuIkRPVCI7Y2FzZSA2MjpyZXR1cm4iUExVUyI7Y2FzZSA2MzpyZXR1cm4gNzI7Y2FzZSA2NDpjYXNlIDY1OnJldHVybiJFUVVBTFMiO2Nhc2UgNjY6cmV0dXJuIDc5O2Nhc2UgNjc6cmV0dXJuIlBVTkNUVUFUSU9OIjtjYXNlIDY4OnJldHVybiA3ODtjYXNlIDY5OnJldHVybiA3NztjYXNlIDcwOnJldHVybiA3NDtjYXNlIDcxOnJldHVybiAyNH19LHJ1bGVzOlsvXig/OiUlXHspLywvXig/Oi4qZGlyZWN0aW9uXHMrVEJbXlxuXSopLywvXig/Oi4qZGlyZWN0aW9uXHMrQlRbXlxuXSopLywvXig/Oi4qZGlyZWN0aW9uXHMrUkxbXlxuXSopLywvXig/Oi4qZGlyZWN0aW9uXHMrTFJbXlxuXSopLywvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS8sL14oPzo6KS8sL14oPzpcfSUlKS8sL14oPzooKD86KD8hXH0lJSkufFxuKSopKS8sL14oPzolJSg/IVx7KSpbXlxuXSooXHI/XG4/KSspLywvXig/OiUlW15cbl0qKFxyP1xuKSopLywvXig/OlxzKihccj9cbikrKS8sL14oPzpccyspLywvXig/OmNsYXNzRGlhZ3JhbS12MlxiKS8sL14oPzpjbGFzc0RpYWdyYW1cYikvLC9eKD86W3tdKS8sL14oPzokKS8sL14oPzpbe10pLywvXig/Olt9XSkvLC9eKD86W1xuXSkvLC9eKD86W157fVxuXSopLywvXig/OmNsYXNzXGIpLywvXig/OmNzc0NsYXNzXGIpLywvXig/OmNhbGxiYWNrXGIpLywvXig/OmxpbmtcYikvLC9eKD86Y2xpY2tcYikvLC9eKD86PDwpLywvXig/Oj4+KS8sL14oPzpbfl0pLywvXig/Olt+XSkvLC9eKD86W15+XSopLywvXig/OlsiXSkvLC9eKD86WyJdKS8sL14oPzpbXiJdKikvLC9eKD86W2BdKS8sL14oPzpbYF0pLywvXig/OlteYF0rKS8sL14oPzpocmVmW1xzXStbIl0pLywvXig/OlsiXSkvLC9eKD86W14iXSopLywvXig/OmNhbGxbXHNdKykvLC9eKD86XChbXHNdKlwpKS8sL14oPzpcKCkvLC9eKD86W14oXSopLywvXig/OlwpKS8sL14oPzpbXildKikvLC9eKD86X3NlbGZcYikvLC9eKD86X2JsYW5rXGIpLywvXig/Ol9wYXJlbnRcYikvLC9eKD86X3RvcFxiKS8sL14oPzpccyo8XHwpLywvXig/OlxzKlx8PikvLC9eKD86XHMqPikvLC9eKD86XHMqPCkvLC9eKD86XHMqXCopLywvXig/OlxzKm9cYikvLC9eKD86LS0pLywvXig/OlwuXC4pLywvXig/Ojp7MX1bXjpcbjtdKykvLC9eKD86OnszfSkvLC9eKD86LSkvLC9eKD86XC4pLywvXig/OlwrKS8sL14oPzolKS8sL14oPzo9KS8sL14oPzo9KS8sL14oPzpcdyspLywvXig/OlshIiMkJSYnKissLS5gP1xcL10pLywvXig/OlswLTldKykvLC9eKD86W1x1MDBBQVx1MDBCNVx1MDBCQVx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XXxbXHUwMEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N118W1x1MDM3QS1cdTAzN0RcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVdfFtcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyN1x1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVFQV18W1x1MDVGMC1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRV18W1x1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFdfFtcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1MDhBMF18W1x1MDhBMi1cdTA4QUNcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5NzddfFtcdTA5NzktXHUwOTdGXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXXxbXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUtXHUwQTBBXXxbXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzldfFtcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOF18W1x1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ118W1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q118W1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTldfFtcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMF18W1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNEXXxbXHUwQzU4XHUwQzU5XHUwQzYwXHUwQzYxXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM118W1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMF18W1x1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENjBcdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFdfFtcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2XHUwRTgxXXxbXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4XHUwRThBXHUwRThEXHUwRTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXXxbXHUwRUE1XHUwRUE3XHUwRUFBXHUwRUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZdfFtcdTBFREMtXHUwRURGXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhDXHUxMDAwLVx1MTAyQV18W1x1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFdfFtcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXXxbXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBdfFtcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMF18W1x1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXXxbXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFdfFtcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN118W1x1MTdEQ1x1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUNdfFtcdTE5NTAtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QzEtXHUxOUM3XHUxQTAwLVx1MUExNl18W1x1MUEyMC1cdTFBNTRcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1cdTFCQTBcdTFCQUVcdTFCQUZdfFtcdTFCQkEtXHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxQ0U5LVx1MUNFQ118W1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURdfFtcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXXxbXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNdfFtcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXXxbXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XXxbXHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NF18W1x1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNdfFtcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XXxbXHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VdfFtcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NdfFtcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRF18W1x1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkNDXXxbXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQl18W1x1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjk3XHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XXxbXHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3QTAtXHVBN0FBXHVBN0Y4LVx1QTgwMVx1QTgwMy1cdUE4MDVdfFtcdUE4MDctXHVBODBBXHVBODBDLVx1QTgyMlx1QTg0MC1cdUE4NzNcdUE4ODItXHVBOEIzXHVBOEYyLVx1QThGN1x1QThGQl18W1x1QTkwQS1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBOTYwLVx1QTk3Q1x1QTk4NC1cdUE5QjJcdUE5Q0ZcdUFBMDAtXHVBQTI4XXxbXHVBQTQwLVx1QUE0Mlx1QUE0NC1cdUFBNEJcdUFBNjAtXHVBQTc2XHVBQTdBXHVBQTgwLVx1QUFBRlx1QUFCMVx1QUFCNV18W1x1QUFCNlx1QUFCOS1cdUFBQkRcdUFBQzBcdUFBQzJcdUFBREItXHVBQUREXHVBQUUwLVx1QUFFQVx1QUFGMi1cdUFBRjRdfFtcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1cdUFCMTZcdUFCMjAtXHVBQjI2XHVBQjI4LVx1QUIyRV18W1x1QUJDMC1cdUFCRTJcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXXxbXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZdfFtcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RdfFtcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ118W1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXXxbXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdKS8sL14oPzpccykvLC9eKD86JCkvXSxjb25kaXRpb25zOnthcmdfZGlyZWN0aXZlOntydWxlczpbNyw4XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbNiw3XSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbNV0saW5jbHVzaXZlOiExfSxjYWxsYmFja19hcmdzOntydWxlczpbNDQsNDVdLGluY2x1c2l2ZTohMX0sY2FsbGJhY2tfbmFtZTp7cnVsZXM6WzQxLDQyLDQzXSxpbmNsdXNpdmU6ITF9LGhyZWY6e3J1bGVzOlszOCwzOV0saW5jbHVzaXZlOiExfSxzdHJ1Y3Q6e3J1bGVzOlsxNiwxNywxOCwxOSwyMF0saW5jbHVzaXZlOiExfSxnZW5lcmljOntydWxlczpbMjksMzBdLGluY2x1c2l2ZTohMX0sYnFzdHJpbmc6e3J1bGVzOlszNSwzNl0saW5jbHVzaXZlOiExfSxzdHJpbmc6e3J1bGVzOlszMiwzM10saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDIsMyw0LDksMTAsMTEsMTIsMTMsMTQsMTUsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzEsMzQsMzcsNDAsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzFdLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiBQKCl7dGhpcy55eT17fX1yZXR1cm4gUi5sZXhlcj1GLFAucHJvdG90eXBlPVIsUi5QYXJzZXI9UCxuZXcgUH0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDgyMTgpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sNTg5MDoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsMl0sbj1bMSw1XSxyPVs2LDksMTEsMjMsNDFdLGk9WzEsMTddLGE9WzEsMjBdLG89WzEsMjVdLHM9WzEsMjZdLGM9WzEsMjddLHU9WzEsMjhdLGw9WzEsMzddLGg9WzIzLDM4LDM5XSxmPVs0LDYsOSwxMSwyMyw0MV0sZD1bMzQsMzUsMzYsMzddLHA9WzIyLDI5XSx5PVsxLDU1XSxnPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxFUl9ESUFHUkFNOjQsZG9jdW1lbnQ6NSxFT0Y6NixkaXJlY3RpdmU6NyxsaW5lOjgsU1BBQ0U6OSxzdGF0ZW1lbnQ6MTAsTkVXTElORToxMSxvcGVuRGlyZWN0aXZlOjEyLHR5cGVEaXJlY3RpdmU6MTMsY2xvc2VEaXJlY3RpdmU6MTQsIjoiOjE1LGFyZ0RpcmVjdGl2ZToxNixlbnRpdHlOYW1lOjE3LHJlbFNwZWM6MTgscm9sZToxOSxCTE9DS19TVEFSVDoyMCxhdHRyaWJ1dGVzOjIxLEJMT0NLX1NUT1A6MjIsQUxQSEFOVU06MjMsYXR0cmlidXRlOjI0LGF0dHJpYnV0ZVR5cGU6MjUsYXR0cmlidXRlTmFtZToyNixhdHRyaWJ1dGVLZXlUeXBlOjI3LGF0dHJpYnV0ZUNvbW1lbnQ6MjgsQVRUUklCVVRFX1dPUkQ6MjksQVRUUklCVVRFX0tFWTozMCxDT01NRU5UOjMxLGNhcmRpbmFsaXR5OjMyLHJlbFR5cGU6MzMsWkVST19PUl9PTkU6MzQsWkVST19PUl9NT1JFOjM1LE9ORV9PUl9NT1JFOjM2LE9OTFlfT05FOjM3LE5PTl9JREVOVElGWUlORzozOCxJREVOVElGWUlORzozOSxXT1JEOjQwLG9wZW5fZGlyZWN0aXZlOjQxLHR5cGVfZGlyZWN0aXZlOjQyLGFyZ19kaXJlY3RpdmU6NDMsY2xvc2VfZGlyZWN0aXZlOjQ0LCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJFUl9ESUFHUkFNIiw2OiJFT0YiLDk6IlNQQUNFIiwxMToiTkVXTElORSIsMTU6IjoiLDIwOiJCTE9DS19TVEFSVCIsMjI6IkJMT0NLX1NUT1AiLDIzOiJBTFBIQU5VTSIsMjk6IkFUVFJJQlVURV9XT1JEIiwzMDoiQVRUUklCVVRFX0tFWSIsMzE6IkNPTU1FTlQiLDM0OiJaRVJPX09SX09ORSIsMzU6IlpFUk9fT1JfTU9SRSIsMzY6Ik9ORV9PUl9NT1JFIiwzNzoiT05MWV9PTkUiLDM4OiJOT05fSURFTlRJRllJTkciLDM5OiJJREVOVElGWUlORyIsNDA6IldPUkQiLDQxOiJvcGVuX2RpcmVjdGl2ZSIsNDI6InR5cGVfZGlyZWN0aXZlIiw0MzoiYXJnX2RpcmVjdGl2ZSIsNDQ6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywzXSxbMywyXSxbNSwwXSxbNSwyXSxbOCwyXSxbOCwxXSxbOCwxXSxbOCwxXSxbNyw0XSxbNyw2XSxbMTAsMV0sWzEwLDVdLFsxMCw0XSxbMTAsM10sWzEwLDFdLFsxNywxXSxbMjEsMV0sWzIxLDJdLFsyNCwyXSxbMjQsM10sWzI0LDNdLFsyNCw0XSxbMjUsMV0sWzI2LDFdLFsyNywxXSxbMjgsMV0sWzE4LDNdLFszMiwxXSxbMzIsMV0sWzMyLDFdLFszMiwxXSxbMzMsMV0sWzMzLDFdLFsxOSwxXSxbMTksMV0sWzEyLDFdLFsxMywxXSxbMTYsMV0sWzE0LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgMTpicmVhaztjYXNlIDM6Y2FzZSA3OmNhc2UgODp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0OmFbcy0xXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDE2OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDI1OmNhc2UgMzU6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAxMjpyLmFkZEVudGl0eShhW3MtNF0pLHIuYWRkRW50aXR5KGFbcy0yXSksci5hZGRSZWxhdGlvbnNoaXAoYVtzLTRdLGFbc10sYVtzLTJdLGFbcy0zXSk7YnJlYWs7Y2FzZSAxMzpyLmFkZEVudGl0eShhW3MtM10pLHIuYWRkQXR0cmlidXRlcyhhW3MtM10sYVtzLTFdKTticmVhaztjYXNlIDE0OnIuYWRkRW50aXR5KGFbcy0yXSk7YnJlYWs7Y2FzZSAxNTpyLmFkZEVudGl0eShhW3NdKTticmVhaztjYXNlIDE3OnRoaXMuJD1bYVtzXV07YnJlYWs7Y2FzZSAxODphW3NdLnB1c2goYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE5OnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMV0sYXR0cmlidXRlTmFtZTphW3NdfTticmVhaztjYXNlIDIwOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMl0sYXR0cmlidXRlTmFtZTphW3MtMV0sYXR0cmlidXRlS2V5VHlwZTphW3NdfTticmVhaztjYXNlIDIxOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtMl0sYXR0cmlidXRlTmFtZTphW3MtMV0sYXR0cmlidXRlQ29tbWVudDphW3NdfTticmVhaztjYXNlIDIyOnRoaXMuJD17YXR0cmlidXRlVHlwZTphW3MtM10sYXR0cmlidXRlTmFtZTphW3MtMl0sYXR0cmlidXRlS2V5VHlwZTphW3MtMV0sYXR0cmlidXRlQ29tbWVudDphW3NdfTticmVhaztjYXNlIDI2OmNhc2UgMzQ6dGhpcy4kPWFbc10ucmVwbGFjZSgvIi9nLCIiKTticmVhaztjYXNlIDI3OnRoaXMuJD17Y2FyZEE6YVtzXSxyZWxUeXBlOmFbcy0xXSxjYXJkQjphW3MtMl19O2JyZWFrO2Nhc2UgMjg6dGhpcy4kPXIuQ2FyZGluYWxpdHkuWkVST19PUl9PTkU7YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9ci5DYXJkaW5hbGl0eS5aRVJPX09SX01PUkU7YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9ci5DYXJkaW5hbGl0eS5PTkVfT1JfTU9SRTticmVhaztjYXNlIDMxOnRoaXMuJD1yLkNhcmRpbmFsaXR5Lk9OTFlfT05FO2JyZWFrO2Nhc2UgMzI6dGhpcy4kPXIuSWRlbnRpZmljYXRpb24uTk9OX0lERU5USUZZSU5HO2JyZWFrO2Nhc2UgMzM6dGhpcy4kPXIuSWRlbnRpZmljYXRpb24uSURFTlRJRllJTkc7YnJlYWs7Y2FzZSAzNjpyLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzc6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzg6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDM5OnIucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImVyIil9fSx0YWJsZTpbezM6MSw0OmUsNzozLDEyOjQsNDE6bn0sezE6WzNdfSx0KHIsWzIsM10sezU6Nn0pLHszOjcsNDplLDc6MywxMjo0LDQxOm59LHsxMzo4LDQyOlsxLDldfSx7NDI6WzIsMzZdfSx7NjpbMSwxMF0sNzoxNSw4OjExLDk6WzEsMTJdLDEwOjEzLDExOlsxLDE0XSwxMjo0LDE3OjE2LDIzOmksNDE6bn0sezE6WzIsMl19LHsxNDoxOCwxNTpbMSwxOV0sNDQ6YX0sdChbMTUsNDRdLFsyLDM3XSksdChyLFsyLDhdLHsxOlsyLDFdfSksdChyLFsyLDRdKSx7NzoxNSwxMDoyMSwxMjo0LDE3OjE2LDIzOmksNDE6bn0sdChyLFsyLDZdKSx0KHIsWzIsN10pLHQocixbMiwxMV0pLHQocixbMiwxNV0sezE4OjIyLDMyOjI0LDIwOlsxLDIzXSwzNDpvLDM1OnMsMzY6YywzNzp1fSksdChbNiw5LDExLDE1LDIwLDIzLDM0LDM1LDM2LDM3LDQxXSxbMiwxNl0pLHsxMTpbMSwyOV19LHsxNjozMCw0MzpbMSwzMV19LHsxMTpbMiwzOV19LHQocixbMiw1XSksezE3OjMyLDIzOml9LHsyMTozMywyMjpbMSwzNF0sMjQ6MzUsMjU6MzYsMjk6bH0sezMzOjM4LDM4OlsxLDM5XSwzOTpbMSw0MF19LHQoaCxbMiwyOF0pLHQoaCxbMiwyOV0pLHQoaCxbMiwzMF0pLHQoaCxbMiwzMV0pLHQoZixbMiw5XSksezE0OjQxLDQ0OmF9LHs0NDpbMiwzOF19LHsxNTpbMSw0Ml19LHsyMjpbMSw0M119LHQocixbMiwxNF0pLHsyMTo0NCwyMjpbMiwxN10sMjQ6MzUsMjU6MzYsMjk6bH0sezI2OjQ1LDI5OlsxLDQ2XX0sezI5OlsyLDIzXX0sezMyOjQ3LDM0Om8sMzU6cywzNjpjLDM3OnV9LHQoZCxbMiwzMl0pLHQoZCxbMiwzM10pLHsxMTpbMSw0OF19LHsxOTo0OSwyMzpbMSw1MV0sNDA6WzEsNTBdfSx0KHIsWzIsMTNdKSx7MjI6WzIsMThdfSx0KHAsWzIsMTldLHsyNzo1MiwyODo1MywzMDpbMSw1NF0sMzE6eX0pLHQoWzIyLDI5LDMwLDMxXSxbMiwyNF0pLHsyMzpbMiwyN119LHQoZixbMiwxMF0pLHQocixbMiwxMl0pLHQocixbMiwzNF0pLHQocixbMiwzNV0pLHQocCxbMiwyMF0sezI4OjU2LDMxOnl9KSx0KHAsWzIsMjFdKSx0KFsyMiwyOSwzMV0sWzIsMjVdKSx0KHAsWzIsMjZdKSx0KHAsWzIsMjJdKV0sZGVmYXVsdEFjdGlvbnM6ezU6WzIsMzZdLDc6WzIsMl0sMjA6WzIsMzldLDMxOlsyLDM4XSwzNzpbMiwyM10sNDQ6WzIsMThdLDQ3OlsyLDI3XX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LG09e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKHQpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IodCxlKX0sc2V0SW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy55eT1lfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lucHV0WzBdO3JldHVybiB0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQsdC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUpLHRoaXMub2Zmc2V0LT1lO3ZhciByPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLG4ubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1uLmxlbmd0aC0xKTt2YXIgaT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46bj8obi5sZW5ndGg9PT1yLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcltyLmxlbmd0aC1uLmxlbmd0aF0ubGVuZ3RoLW5bMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2lbMF0saVswXSt0aGlzLnl5bGVuZy1lXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcj8odGhpcy5fYmFja3RyYWNrPSEwLHRoaXMpOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxlc3M6ZnVuY3Rpb24odCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHQpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih0Lmxlbmd0aD4yMD8iLi4uIjoiIikrdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2g7cmV0dXJuIHQubGVuZ3RoPDIwJiYodCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtdC5sZW5ndGgpKSwodC5zdWJzdHIoMCwyMCkrKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFzdElucHV0KCksZT1uZXcgQXJyYXkodC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB0K3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIrZSsiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKGk9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoaS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSwocj10WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSkmJih0aGlzLnl5bGluZW5vKz1yLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnI/cltyLmxlbmd0aC0xXS5sZW5ndGgtcltyLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9dFswXSx0aGlzLm1hdGNoKz10WzBdLHRoaXMubWF0Y2hlcz10LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHRbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPXRbMF0sbj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxlLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLG4pcmV0dXJuIG47aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGEgaW4gaSl0aGlzW2FdPWlbYV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3ZhciB0LGUsbixyO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKSx0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBpPXRoaXMuX2N1cnJlbnRSdWxlcygpLGE9MDthPGkubGVuZ3RoO2ErKylpZigobj10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2lbYV1dKSkmJighZXx8blswXS5sZW5ndGg+ZVswXS5sZW5ndGgpKXtpZihlPW4scj1hLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKCExIT09KHQ9dGhpcy50ZXN0X21hdGNoKG4saVthXSkpKXJldHVybiB0O2lmKHRoaXMuX2JhY2t0cmFjayl7ZT0hMTtjb250aW51ZX1yZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGU/ITEhPT0odD10aGlzLnRlc3RfbWF0Y2goZSxpW3JdKSkmJnQ6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHQoKXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyh0fHwwKSk+PTA/dGhpcy5jb25kaXRpb25TdGFja1t0XToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbih0KXt0aGlzLmJlZ2luKHQpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksNDE7Y2FzZSAxOnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDQyO2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxNTtjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksNDQ7Y2FzZSA0OnJldHVybiA0MztjYXNlIDU6Y2FzZSA2OmNhc2UgODpjYXNlIDEzOmNhc2UgMTc6YnJlYWs7Y2FzZSA3OnJldHVybiAxMTtjYXNlIDk6cmV0dXJuIDk7Y2FzZSAxMDpyZXR1cm4gNDA7Y2FzZSAxMTpyZXR1cm4gNDtjYXNlIDEyOnJldHVybiB0aGlzLmJlZ2luKCJibG9jayIpLDIwO2Nhc2UgMTQ6cmV0dXJuIDMwO2Nhc2UgMTU6cmV0dXJuIDI5O2Nhc2UgMTY6cmV0dXJuIDMxO2Nhc2UgMTg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwyMjtjYXNlIDE5OmNhc2UgMzI6cmV0dXJuIGUueXl0ZXh0WzBdO2Nhc2UgMjA6Y2FzZSAyNDpyZXR1cm4gMzQ7Y2FzZSAyMTpjYXNlIDI1OnJldHVybiAzNTtjYXNlIDIyOmNhc2UgMjY6cmV0dXJuIDM2O2Nhc2UgMjM6cmV0dXJuIDM3O2Nhc2UgMjc6Y2FzZSAyOTpjYXNlIDMwOnJldHVybiAzODtjYXNlIDI4OnJldHVybiAzOTtjYXNlIDMxOnJldHVybiAyMztjYXNlIDMzOnJldHVybiA2fX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/Oltcc10rKS9pLC9eKD86IlteIl0qIikvaSwvXig/OmVyRGlhZ3JhbVxiKS9pLC9eKD86XHspL2ksL14oPzpccyspL2ksL14oPzooPzpQSyl8KD86RkspKS9pLC9eKD86W0EtWmEtel1bQS1aYS16MC05XC1fXSopL2ksL14oPzoiW14iXSoiKS9pLC9eKD86W1xuXSspL2ksL14oPzpcfSkvaSwvXig/Oi4pL2ksL14oPzpcfG9cYikvaSwvXig/Olx9b1xiKS9pLC9eKD86XH1cfCkvaSwvXig/Olx8XHwpL2ksL14oPzpvXHwpL2ksL14oPzpvXHspL2ksL14oPzpcfFx7KS9pLC9eKD86XC5cLikvaSwvXig/Oi0tKS9pLC9eKD86XC4tKS9pLC9eKD86LVwuKS9pLC9eKD86W0EtWmEtel1bQS1aYS16MC05XC1fXSopL2ksL14oPzouKS9pLC9eKD86JCkvaV0sY29uZGl0aW9uczp7b3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sYmxvY2s6e3J1bGVzOlsxMywxNCwxNSwxNiwxNywxOCwxOV0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsNyw4LDksMTAsMTEsMTIsMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzNdLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiB2KCl7dGhpcy55eT17fX1yZXR1cm4gZy5sZXhlcj1tLHYucHJvdG90eXBlPWcsZy5QYXJzZXI9dixuZXcgdn0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDgwMDkpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sMzYwMjoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzEsOV0sbj1bMSw3XSxyPVsxLDZdLGk9WzEsOF0sYT1bMSwyMCwyMSwyMiwyMywzOCw0Nyw1OSw2MCw3OSw4MCw4MSw4Miw4Myw4NCw4OCw5OCw5OSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLG89WzIsMTBdLHM9WzEsMjBdLGM9WzEsMjFdLHU9WzEsMjJdLGw9WzEsMjNdLGg9WzEsMzBdLGY9WzEsNTldLGQ9WzEsNDVdLHA9WzEsNDldLHk9WzEsMzNdLGc9WzEsMzRdLG09WzEsMzVdLHY9WzEsMzZdLGI9WzEsMzddLF89WzEsNTNdLHg9WzEsNjBdLHc9WzEsNDhdLGs9WzEsNTBdLFQ9WzEsNTJdLEU9WzEsNTZdLEM9WzEsNTddLFM9WzEsMzhdLEE9WzEsMzldLE09WzEsNDBdLE49WzEsNDFdLEQ9WzEsNThdLE89WzEsNDddLEI9WzEsNTFdLEw9WzEsNTRdLEk9WzEsNTVdLFI9WzEsNDZdLEY9WzEsNjNdLFA9WzEsNjhdLGo9WzEsMjAsMjEsMjIsMjMsMzgsNDIsNDcsNTksNjAsNzksODAsODEsODIsODMsODQsODgsOTgsOTksMTAyLDEwNCwxMDUsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxZPVsxLDcyXSx6PVsxLDcxXSxVPVsxLDczXSxxPVsyMCwyMSwyMyw3NCw3NV0sSD1bMSw5NF0sJD1bMSw5OV0sVz1bMSwxMDJdLFY9WzEsMTAzXSxHPVsxLDk2XSxYPVsxLDEwMV0sWj1bMSwxMDRdLFE9WzEsOTddLEs9WzEsMTA5XSxKPVsxLDEwOF0sdHQ9WzEsOThdLGV0PVsxLDEwMF0sbnQ9WzEsMTA1XSxydD1bMSwxMDZdLGl0PVsxLDEwN10sYXQ9WzEsMTEwXSxvdD1bMjAsMjEsMjIsMjMsNzQsNzVdLHN0PVsyMCwyMSwyMiwyMyw0OCw3NCw3NV0sY3Q9WzIwLDIxLDIyLDIzLDQwLDQ3LDQ4LDUwLDUyLDU0LDU2LDU4LDU5LDYwLDYyLDY0LDY2LDY3LDY5LDc0LDc1LDg0LDg4LDk4LDk5LDEwMiwxMDQsMTA1LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSx1dD1bMjAsMjEsMjNdLGx0PVsyMCwyMSwyMyw0Nyw1OSw2MCw3NCw3NSw4NCw4OCw5OCw5OSwxMDIsMTA0LDEwNSwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0saHQ9WzEsMTIsMjAsMjEsMjIsMjMsMjQsMzgsNDIsNDcsNTksNjAsNzksODAsODEsODIsODMsODQsODgsOTgsOTksMTAyLDEwNCwxMDUsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxmdD1bNDcsNTksNjAsODQsODgsOTgsOTksMTAyLDEwNCwxMDUsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLGR0PVsxLDE0M10scHQ9WzEsMTUxXSx5dD1bMSwxNTJdLGd0PVsxLDE1M10sbXQ9WzEsMTU0XSx2dD1bMSwxMzhdLGJ0PVsxLDEzOV0sX3Q9WzEsMTM1XSx4dD1bMSwxNDZdLHd0PVsxLDE0N10sa3Q9WzEsMTQ4XSxUdD1bMSwxNDldLEV0PVsxLDE1MF0sQ3Q9WzEsMTU1XSxTdD1bMSwxNTZdLEF0PVsxLDE0MV0sTXQ9WzEsMTQ0XSxOdD1bMSwxNDBdLER0PVsxLDEzN10sT3Q9WzIwLDIxLDIyLDIzLDM4LDQyLDQ3LDU5LDYwLDc5LDgwLDgxLDgyLDgzLDg0LDg4LDk4LDk5LDEwMiwxMDQsMTA1LDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0sQnQ9WzEsMTU5XSxMdD1bMjAsMjEsMjIsMjMsMjYsNDcsNTksNjAsODQsOTgsOTksMTAyLDEwNCwxMDUsMTE1LDExNiwxMTcsMTE4LDExOSwxMjBdLEl0PVsyMCwyMSwyMiwyMywyNCwyNiwzOCw0MCw0MSw0Miw0Nyw1MSw1Myw1NSw1Nyw1OSw2MCw2MSw2Myw2NSw2Niw2OCw3MCw3NCw3NSw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4OCw5OCw5OSwxMDIsMTA0LDEwNSwxMDYsMTA3LDExNSwxMTYsMTE3LDExOCwxMTksMTIwXSxSdD1bMTIsMjEsMjIsMjRdLEZ0PVsyMiw5OV0sUHQ9WzEsMjQyXSxqdD1bMSwyMzddLFl0PVsxLDIzOF0senQ9WzEsMjQ2XSxVdD1bMSwyNDNdLHF0PVsxLDI0MF0sSHQ9WzEsMjM5XSwkdD1bMSwyNDFdLFd0PVsxLDI0NF0sVnQ9WzEsMjQ1XSxHdD1bMSwyNDddLFh0PVsxLDI2NV0sWnQ9WzIwLDIxLDIzLDk5XSxRdD1bMjAsMjEsMjIsMjMsNTksNjAsNzksOTUsOTgsOTksMTAyLDEwMywxMDQsMTA1LDEwNl0sS3Q9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLG1lcm1haWREb2M6NCxkaXJlY3RpdmU6NSxvcGVuRGlyZWN0aXZlOjYsdHlwZURpcmVjdGl2ZTo3LGNsb3NlRGlyZWN0aXZlOjgsc2VwYXJhdG9yOjksIjoiOjEwLGFyZ0RpcmVjdGl2ZToxMSxvcGVuX2RpcmVjdGl2ZToxMix0eXBlX2RpcmVjdGl2ZToxMyxhcmdfZGlyZWN0aXZlOjE0LGNsb3NlX2RpcmVjdGl2ZToxNSxncmFwaENvbmZpZzoxNixkb2N1bWVudDoxNyxsaW5lOjE4LHN0YXRlbWVudDoxOSxTRU1JOjIwLE5FV0xJTkU6MjEsU1BBQ0U6MjIsRU9GOjIzLEdSQVBIOjI0LE5PRElSOjI1LERJUjoyNixGaXJzdFN0bXRTZXBlcmF0b3I6MjcsZW5kaW5nOjI4LGVuZFRva2VuOjI5LHNwYWNlTGlzdDozMCxzcGFjZUxpc3ROZXdsaW5lOjMxLHZlcnRpY2VTdGF0ZW1lbnQ6MzIsc3R5bGVTdGF0ZW1lbnQ6MzMsbGlua1N0eWxlU3RhdGVtZW50OjM0LGNsYXNzRGVmU3RhdGVtZW50OjM1LGNsYXNzU3RhdGVtZW50OjM2LGNsaWNrU3RhdGVtZW50OjM3LHN1YmdyYXBoOjM4LHRleHQ6MzksU1FTOjQwLFNRRTo0MSxlbmQ6NDIsZGlyZWN0aW9uOjQzLGxpbms6NDQsbm9kZTo0NSx2ZXJ0ZXg6NDYsQU1QOjQ3LFNUWUxFX1NFUEFSQVRPUjo0OCxpZFN0cmluZzo0OSxQUzo1MCxQRTo1MSwiKC0iOjUyLCItKSI6NTMsU1RBRElVTVNUQVJUOjU0LFNUQURJVU1FTkQ6NTUsU1VCUk9VVElORVNUQVJUOjU2LFNVQlJPVVRJTkVFTkQ6NTcsVkVSVEVYX1dJVEhfUFJPUFNfU1RBUlQ6NTgsQUxQSEE6NTksQ09MT046NjAsUElQRTo2MSxDWUxJTkRFUlNUQVJUOjYyLENZTElOREVSRU5EOjYzLERJQU1PTkRfU1RBUlQ6NjQsRElBTU9ORF9TVE9QOjY1LFRBR0VORDo2NixUUkFQU1RBUlQ6NjcsVFJBUEVORDo2OCxJTlZUUkFQU1RBUlQ6NjksSU5WVFJBUEVORDo3MCxsaW5rU3RhdGVtZW50OjcxLGFycm93VGV4dDo3MixURVNUU1RSOjczLFNUQVJUX0xJTks6NzQsTElOSzo3NSx0ZXh0VG9rZW46NzYsU1RSOjc3LGtleXdvcmRzOjc4LFNUWUxFOjc5LExJTktTVFlMRTo4MCxDTEFTU0RFRjo4MSxDTEFTUzo4MixDTElDSzo4MyxET1dOOjg0LFVQOjg1LHRleHROb1RhZ3M6ODYsdGV4dE5vVGFnc1Rva2VuOjg3LERFRkFVTFQ6ODgsc3R5bGVzT3B0Ojg5LGFscGhhTnVtOjkwLENBTExCQUNLTkFNRTo5MSxDQUxMQkFDS0FSR1M6OTIsSFJFRjo5MyxMSU5LX1RBUkdFVDo5NCxIRVg6OTUsbnVtTGlzdDo5NixJTlRFUlBPTEFURTo5NyxOVU06OTgsQ09NTUE6OTksc3R5bGU6MTAwLHN0eWxlQ29tcG9uZW50OjEwMSxNSU5VUzoxMDIsVU5JVDoxMDMsQlJLVDoxMDQsRE9UOjEwNSxQQ1Q6MTA2LFRBR1NUQVJUOjEwNyxhbHBoYU51bVRva2VuOjEwOCxpZFN0cmluZ1Rva2VuOjEwOSxhbHBoYU51bVN0YXRlbWVudDoxMTAsZGlyZWN0aW9uX3RiOjExMSxkaXJlY3Rpb25fYnQ6MTEyLGRpcmVjdGlvbl9ybDoxMTMsZGlyZWN0aW9uX2xyOjExNCxQVU5DVFVBVElPTjoxMTUsVU5JQ09ERV9URVhUOjExNixQTFVTOjExNyxFUVVBTFM6MTE4LE1VTFQ6MTE5LFVOREVSU0NPUkU6MTIwLGdyYXBoQ29kZVRva2VuczoxMjEsQVJST1dfQ1JPU1M6MTIyLEFSUk9XX1BPSU5UOjEyMyxBUlJPV19DSVJDTEU6MTI0LEFSUk9XX09QRU46MTI1LFFVT1RFOjEyNiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsMTA6IjoiLDEyOiJvcGVuX2RpcmVjdGl2ZSIsMTM6InR5cGVfZGlyZWN0aXZlIiwxNDoiYXJnX2RpcmVjdGl2ZSIsMTU6ImNsb3NlX2RpcmVjdGl2ZSIsMjA6IlNFTUkiLDIxOiJORVdMSU5FIiwyMjoiU1BBQ0UiLDIzOiJFT0YiLDI0OiJHUkFQSCIsMjU6Ik5PRElSIiwyNjoiRElSIiwzODoic3ViZ3JhcGgiLDQwOiJTUVMiLDQxOiJTUUUiLDQyOiJlbmQiLDQ3OiJBTVAiLDQ4OiJTVFlMRV9TRVBBUkFUT1IiLDUwOiJQUyIsNTE6IlBFIiw1MjoiKC0iLDUzOiItKSIsNTQ6IlNUQURJVU1TVEFSVCIsNTU6IlNUQURJVU1FTkQiLDU2OiJTVUJST1VUSU5FU1RBUlQiLDU3OiJTVUJST1VUSU5FRU5EIiw1ODoiVkVSVEVYX1dJVEhfUFJPUFNfU1RBUlQiLDU5OiJBTFBIQSIsNjA6IkNPTE9OIiw2MToiUElQRSIsNjI6IkNZTElOREVSU1RBUlQiLDYzOiJDWUxJTkRFUkVORCIsNjQ6IkRJQU1PTkRfU1RBUlQiLDY1OiJESUFNT05EX1NUT1AiLDY2OiJUQUdFTkQiLDY3OiJUUkFQU1RBUlQiLDY4OiJUUkFQRU5EIiw2OToiSU5WVFJBUFNUQVJUIiw3MDoiSU5WVFJBUEVORCIsNzM6IlRFU1RTVFIiLDc0OiJTVEFSVF9MSU5LIiw3NToiTElOSyIsNzc6IlNUUiIsNzk6IlNUWUxFIiw4MDoiTElOS1NUWUxFIiw4MToiQ0xBU1NERUYiLDgyOiJDTEFTUyIsODM6IkNMSUNLIiw4NDoiRE9XTiIsODU6IlVQIiw4ODoiREVGQVVMVCIsOTE6IkNBTExCQUNLTkFNRSIsOTI6IkNBTExCQUNLQVJHUyIsOTM6IkhSRUYiLDk0OiJMSU5LX1RBUkdFVCIsOTU6IkhFWCIsOTc6IklOVEVSUE9MQVRFIiw5ODoiTlVNIiw5OToiQ09NTUEiLDEwMjoiTUlOVVMiLDEwMzoiVU5JVCIsMTA0OiJCUktUIiwxMDU6IkRPVCIsMTA2OiJQQ1QiLDEwNzoiVEFHU1RBUlQiLDExMToiZGlyZWN0aW9uX3RiIiwxMTI6ImRpcmVjdGlvbl9idCIsMTEzOiJkaXJlY3Rpb25fcmwiLDExNDoiZGlyZWN0aW9uX2xyIiwxMTU6IlBVTkNUVUFUSU9OIiwxMTY6IlVOSUNPREVfVEVYVCIsMTE3OiJQTFVTIiwxMTg6IkVRVUFMUyIsMTE5OiJNVUxUIiwxMjA6IlVOREVSU0NPUkUiLDEyMjoiQVJST1dfQ1JPU1MiLDEyMzoiQVJST1dfUE9JTlQiLDEyNDoiQVJST1dfQ0lSQ0xFIiwxMjU6IkFSUk9XX09QRU4iLDEyNjoiUVVPVEUifSxwcm9kdWN0aW9uc186WzAsWzMsMV0sWzMsMl0sWzUsNF0sWzUsNl0sWzYsMV0sWzcsMV0sWzExLDFdLFs4LDFdLFs0LDJdLFsxNywwXSxbMTcsMl0sWzE4LDFdLFsxOCwxXSxbMTgsMV0sWzE4LDFdLFsxOCwxXSxbMTYsMl0sWzE2LDJdLFsxNiwyXSxbMTYsM10sWzI4LDJdLFsyOCwxXSxbMjksMV0sWzI5LDFdLFsyOSwxXSxbMjcsMV0sWzI3LDFdLFsyNywyXSxbMzEsMl0sWzMxLDJdLFszMSwxXSxbMzEsMV0sWzMwLDJdLFszMCwxXSxbMTksMl0sWzE5LDJdLFsxOSwyXSxbMTksMl0sWzE5LDJdLFsxOSwyXSxbMTksOV0sWzE5LDZdLFsxOSw0XSxbMTksMV0sWzksMV0sWzksMV0sWzksMV0sWzMyLDNdLFszMiw0XSxbMzIsMl0sWzMyLDFdLFs0NSwxXSxbNDUsNV0sWzQ1LDNdLFs0Niw0XSxbNDYsNl0sWzQ2LDRdLFs0Niw0XSxbNDYsNF0sWzQ2LDhdLFs0Niw0XSxbNDYsNF0sWzQ2LDRdLFs0Niw2XSxbNDYsNF0sWzQ2LDRdLFs0Niw0XSxbNDYsNF0sWzQ2LDRdLFs0NiwxXSxbNDQsMl0sWzQ0LDNdLFs0NCwzXSxbNDQsMV0sWzQ0LDNdLFs3MSwxXSxbNzIsM10sWzM5LDFdLFszOSwyXSxbMzksMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbNzgsMV0sWzc4LDFdLFs3OCwxXSxbODYsMV0sWzg2LDJdLFszNSw1XSxbMzUsNV0sWzM2LDVdLFszNywyXSxbMzcsNF0sWzM3LDNdLFszNyw1XSxbMzcsMl0sWzM3LDRdLFszNyw0XSxbMzcsNl0sWzM3LDJdLFszNyw0XSxbMzcsMl0sWzM3LDRdLFszNyw0XSxbMzcsNl0sWzMzLDVdLFszMyw1XSxbMzQsNV0sWzM0LDVdLFszNCw5XSxbMzQsOV0sWzM0LDddLFszNCw3XSxbOTYsMV0sWzk2LDNdLFs4OSwxXSxbODksM10sWzEwMCwxXSxbMTAwLDJdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbMTAxLDFdLFsxMDEsMV0sWzEwMSwxXSxbNzYsMV0sWzc2LDFdLFs3NiwxXSxbNzYsMV0sWzc2LDFdLFs3NiwxXSxbODcsMV0sWzg3LDFdLFs4NywxXSxbODcsMV0sWzQ5LDFdLFs0OSwyXSxbOTAsMV0sWzkwLDJdLFsxMTAsMV0sWzExMCwxXSxbMTEwLDFdLFsxMTAsMV0sWzQzLDFdLFs0MywxXSxbNDMsMV0sWzQzLDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTA5LDFdLFsxMDksMV0sWzEwOSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV0sWzEyMSwxXSxbMTIxLDFdLFsxMjEsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scixpLGEsbyl7dmFyIHM9YS5sZW5ndGgtMTtzd2l0Y2goaSl7Y2FzZSA1OnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA2OnIucGFyc2VEaXJlY3RpdmUoYVtzXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDc6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDg6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiZmxvd2NoYXJ0Iik7YnJlYWs7Y2FzZSAxMDpjYXNlIDM2OmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgMTE6YVtzXSE9PVtdJiZhW3MtMV0ucHVzaChhW3NdKSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgMTI6Y2FzZSA3ODpjYXNlIDgwOmNhc2UgOTI6Y2FzZSAxNDg6Y2FzZSAxNTA6Y2FzZSAxNTE6Y2FzZSA3NDpjYXNlIDE0Njp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE5OnIuc2V0RGlyZWN0aW9uKCJUQiIpLHRoaXMuJD0iVEIiO2JyZWFrO2Nhc2UgMjA6ci5zZXREaXJlY3Rpb24oYVtzLTFdKSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgMzU6dGhpcy4kPWFbcy0xXS5ub2RlczticmVhaztjYXNlIDQxOnRoaXMuJD1yLmFkZFN1YkdyYXBoKGFbcy02XSxhW3MtMV0sYVtzLTRdKTticmVhaztjYXNlIDQyOnRoaXMuJD1yLmFkZFN1YkdyYXBoKGFbcy0zXSxhW3MtMV0sYVtzLTNdKTticmVhaztjYXNlIDQzOnRoaXMuJD1yLmFkZFN1YkdyYXBoKHZvaWQgMCxhW3MtMV0sdm9pZCAwKTticmVhaztjYXNlIDQ4OnIuYWRkTGluayhhW3MtMl0uc3RtdCxhW3NdLGFbcy0xXSksdGhpcy4kPXtzdG10OmFbc10sbm9kZXM6YVtzXS5jb25jYXQoYVtzLTJdLm5vZGVzKX07YnJlYWs7Y2FzZSA0OTpyLmFkZExpbmsoYVtzLTNdLnN0bXQsYVtzLTFdLGFbcy0yXSksdGhpcy4kPXtzdG10OmFbcy0xXSxub2RlczphW3MtMV0uY29uY2F0KGFbcy0zXS5ub2Rlcyl9O2JyZWFrO2Nhc2UgNTA6dGhpcy4kPXtzdG10OmFbcy0xXSxub2RlczphW3MtMV19O2JyZWFrO2Nhc2UgNTE6dGhpcy4kPXtzdG10OmFbc10sbm9kZXM6YVtzXX07YnJlYWs7Y2FzZSA1MjpjYXNlIDExOTpjYXNlIDEyMTp0aGlzLiQ9W2Fbc11dO2JyZWFrO2Nhc2UgNTM6dGhpcy4kPWFbcy00XS5jb25jYXQoYVtzXSk7YnJlYWs7Y2FzZSA1NDp0aGlzLiQ9W2Fbcy0yXV0sci5zZXRDbGFzcyhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sInNxdWFyZSIpO2JyZWFrO2Nhc2UgNTY6dGhpcy4kPWFbcy01XSxyLmFkZFZlcnRleChhW3MtNV0sYVtzLTJdLCJjaXJjbGUiKTticmVhaztjYXNlIDU3OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwiZWxsaXBzZSIpO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJzdGFkaXVtIik7YnJlYWs7Y2FzZSA1OTp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sInN1YnJvdXRpbmUiKTticmVhaztjYXNlIDYwOnRoaXMuJD1hW3MtN10sci5hZGRWZXJ0ZXgoYVtzLTddLGFbcy0xXSwicmVjdCIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsT2JqZWN0LmZyb21FbnRyaWVzKFtbYVtzLTVdLGFbcy0zXV1dKSk7YnJlYWs7Y2FzZSA2MTp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sImN5bGluZGVyIik7YnJlYWs7Y2FzZSA2Mjp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sInJvdW5kIik7YnJlYWs7Y2FzZSA2Mzp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sImRpYW1vbmQiKTticmVhaztjYXNlIDY0OnRoaXMuJD1hW3MtNV0sci5hZGRWZXJ0ZXgoYVtzLTVdLGFbcy0yXSwiaGV4YWdvbiIpO2JyZWFrO2Nhc2UgNjU6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJvZGQiKTticmVhaztjYXNlIDY2OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwidHJhcGV6b2lkIik7YnJlYWs7Y2FzZSA2Nzp0aGlzLiQ9YVtzLTNdLHIuYWRkVmVydGV4KGFbcy0zXSxhW3MtMV0sImludl90cmFwZXpvaWQiKTticmVhaztjYXNlIDY4OnRoaXMuJD1hW3MtM10sci5hZGRWZXJ0ZXgoYVtzLTNdLGFbcy0xXSwibGVhbl9yaWdodCIpO2JyZWFrO2Nhc2UgNjk6dGhpcy4kPWFbcy0zXSxyLmFkZFZlcnRleChhW3MtM10sYVtzLTFdLCJsZWFuX2xlZnQiKTticmVhaztjYXNlIDcwOnRoaXMuJD1hW3NdLHIuYWRkVmVydGV4KGFbc10pO2JyZWFrO2Nhc2UgNzE6YVtzLTFdLnRleHQ9YVtzXSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgNzI6Y2FzZSA3MzphW3MtMl0udGV4dD1hW3MtMV0sdGhpcy4kPWFbcy0yXTticmVhaztjYXNlIDc1OnZhciBjPXIuZGVzdHJ1Y3RMaW5rKGFbc10sYVtzLTJdKTt0aGlzLiQ9e3R5cGU6Yy50eXBlLHN0cm9rZTpjLnN0cm9rZSxsZW5ndGg6Yy5sZW5ndGgsdGV4dDphW3MtMV19O2JyZWFrO2Nhc2UgNzY6Yz1yLmRlc3RydWN0TGluayhhW3NdKSx0aGlzLiQ9e3R5cGU6Yy50eXBlLHN0cm9rZTpjLnN0cm9rZSxsZW5ndGg6Yy5sZW5ndGh9O2JyZWFrO2Nhc2UgNzc6dGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDc5OmNhc2UgOTM6Y2FzZSAxNDk6Y2FzZSAxNDc6dGhpcy4kPWFbcy0xXSsiIithW3NdO2JyZWFrO2Nhc2UgOTQ6Y2FzZSA5NTp0aGlzLiQ9YVtzLTRdLHIuYWRkQ2xhc3MoYVtzLTJdLGFbc10pO2JyZWFrO2Nhc2UgOTY6dGhpcy4kPWFbcy00XSxyLnNldENsYXNzKGFbcy0yXSxhW3NdKTticmVhaztjYXNlIDk3OmNhc2UgMTA1OnRoaXMuJD1hW3MtMV0sci5zZXRDbGlja0V2ZW50KGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDk4OmNhc2UgMTA2OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0zXSxhW3MtMl0pLHIuc2V0VG9vbHRpcChhW3MtM10sYVtzXSk7YnJlYWs7Y2FzZSA5OTp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMl0sYVtzLTFdLGFbc10pO2JyZWFrO2Nhc2UgMTAwOnRoaXMuJD1hW3MtNF0sci5zZXRDbGlja0V2ZW50KGFbcy00XSxhW3MtM10sYVtzLTJdKSxyLnNldFRvb2x0aXAoYVtzLTRdLGFbc10pO2JyZWFrO2Nhc2UgMTAxOmNhc2UgMTA3OnRoaXMuJD1hW3MtMV0sci5zZXRMaW5rKGFbcy0xXSxhW3NdKTticmVhaztjYXNlIDEwMjpjYXNlIDEwODp0aGlzLiQ9YVtzLTNdLHIuc2V0TGluayhhW3MtM10sYVtzLTJdKSxyLnNldFRvb2x0aXAoYVtzLTNdLGFbc10pO2JyZWFrO2Nhc2UgMTAzOmNhc2UgMTA5OnRoaXMuJD1hW3MtM10sci5zZXRMaW5rKGFbcy0zXSxhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAxMDQ6Y2FzZSAxMTA6dGhpcy4kPWFbcy01XSxyLnNldExpbmsoYVtzLTVdLGFbcy00XSxhW3NdKSxyLnNldFRvb2x0aXAoYVtzLTVdLGFbcy0yXSk7YnJlYWs7Y2FzZSAxMTE6dGhpcy4kPWFbcy00XSxyLmFkZFZlcnRleChhW3MtMl0sdm9pZCAwLHZvaWQgMCxhW3NdKTticmVhaztjYXNlIDExMjpjYXNlIDExNDp0aGlzLiQ9YVtzLTRdLHIudXBkYXRlTGluayhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAxMTM6dGhpcy4kPWFbcy00XSxyLnVwZGF0ZUxpbmsoW2Fbcy0yXV0sYVtzXSk7YnJlYWs7Y2FzZSAxMTU6dGhpcy4kPWFbcy04XSxyLnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZShbYVtzLTZdXSxhW3MtMl0pLHIudXBkYXRlTGluayhbYVtzLTZdXSxhW3NdKTticmVhaztjYXNlIDExNjp0aGlzLiQ9YVtzLThdLHIudXBkYXRlTGlua0ludGVycG9sYXRlKGFbcy02XSxhW3MtMl0pLHIudXBkYXRlTGluayhhW3MtNl0sYVtzXSk7YnJlYWs7Y2FzZSAxMTc6dGhpcy4kPWFbcy02XSxyLnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZShbYVtzLTRdXSxhW3NdKTticmVhaztjYXNlIDExODp0aGlzLiQ9YVtzLTZdLHIudXBkYXRlTGlua0ludGVycG9sYXRlKGFbcy00XSxhW3NdKTticmVhaztjYXNlIDEyMDpjYXNlIDEyMjphW3MtMl0ucHVzaChhW3NdKSx0aGlzLiQ9YVtzLTJdO2JyZWFrO2Nhc2UgMTI0OnRoaXMuJD1hW3MtMV0rYVtzXTticmVhaztjYXNlIDE1Mjp0aGlzLiQ9InYiO2JyZWFrO2Nhc2UgMTUzOnRoaXMuJD0iLSI7YnJlYWs7Y2FzZSAxNTQ6dGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJUQiJ9O2JyZWFrO2Nhc2UgMTU1OnRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiQlQifTticmVhaztjYXNlIDE1Njp0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IlJMIn07YnJlYWs7Y2FzZSAxNTc6dGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJMUiJ9fX0sdGFibGU6W3szOjEsNDoyLDU6Myw2OjUsMTI6ZSwxNjo0LDIxOm4sMjI6ciwyNDppfSx7MTpbM119LHsxOlsyLDFdfSx7MzoxMCw0OjIsNTozLDY6NSwxMjplLDE2OjQsMjE6biwyMjpyLDI0Oml9LHQoYSxvLHsxNzoxMX0pLHs3OjEyLDEzOlsxLDEzXX0sezE2OjE0LDIxOm4sMjI6ciwyNDppfSx7MTY6MTUsMjE6biwyMjpyLDI0Oml9LHsyNTpbMSwxNl0sMjY6WzEsMTddfSx7MTM6WzIsNV19LHsxOlsyLDJdfSx7MTpbMiw5XSwxODoxOCwxOToxOSwyMDpzLDIxOmMsMjI6dSwyMzpsLDMyOjI0LDMzOjI1LDM0OjI2LDM1OjI3LDM2OjI4LDM3OjI5LDM4OmgsNDM6MzEsNDU6MzIsNDY6NDIsNDc6Ziw0OTo0Myw1OTpkLDYwOnAsNzk6eSw4MDpnLDgxOm0sODI6diw4MzpiLDg0Ol8sODg6eCw5ODp3LDk5OmssMTAyOlQsMTA0OkUsMTA1OkMsMTA5OjQ0LDExMTpTLDExMjpBLDExMzpNLDExNDpOLDExNTpELDExNjpPLDExNzpCLDExODpMLDExOTpJLDEyMDpSfSx7ODo2MSwxMDpbMSw2Ml0sMTU6Rn0sdChbMTAsMTVdLFsyLDZdKSx0KGEsWzIsMTddKSx0KGEsWzIsMThdKSx0KGEsWzIsMTldKSx7MjA6WzEsNjVdLDIxOlsxLDY2XSwyMjpQLDI3OjY0LDMwOjY3fSx0KGosWzIsMTFdKSx0KGosWzIsMTJdKSx0KGosWzIsMTNdKSx0KGosWzIsMTRdKSx0KGosWzIsMTVdKSx0KGosWzIsMTZdKSx7OTo2OSwyMDpZLDIxOnosMjM6VSw0NDo3MCw3MTo3NCw3NDpbMSw3NV0sNzU6WzEsNzZdfSx7OTo3NywyMDpZLDIxOnosMjM6VX0sezk6NzgsMjA6WSwyMTp6LDIzOlV9LHs5Ojc5LDIwOlksMjE6eiwyMzpVfSx7OTo4MCwyMDpZLDIxOnosMjM6VX0sezk6ODEsMjA6WSwyMTp6LDIzOlV9LHs5OjgzLDIwOlksMjE6eiwyMjpbMSw4Ml0sMjM6VX0sdChqLFsyLDQ0XSksdChxLFsyLDUxXSx7MzA6ODQsMjI6UH0pLHsyMjpbMSw4NV19LHsyMjpbMSw4Nl19LHsyMjpbMSw4N119LHsyMjpbMSw4OF19LHsyNjpILDQ3OiQsNTk6Vyw2MDpWLDc3OlsxLDkyXSw4NDpHLDkwOjkxLDkxOlsxLDg5XSw5MzpbMSw5MF0sOTg6WCw5OTpaLDEwMjpRLDEwNDpLLDEwNTpKLDEwODo5NSwxMTA6OTMsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQoaixbMiwxNTRdKSx0KGosWzIsMTU1XSksdChqLFsyLDE1Nl0pLHQoaixbMiwxNTddKSx0KG90LFsyLDUyXSx7NDg6WzEsMTExXX0pLHQoc3QsWzIsNzBdLHsxMDk6MTIzLDQwOlsxLDExMl0sNDc6Ziw1MDpbMSwxMTNdLDUyOlsxLDExNF0sNTQ6WzEsMTE1XSw1NjpbMSwxMTZdLDU4OlsxLDExN10sNTk6ZCw2MDpwLDYyOlsxLDExOF0sNjQ6WzEsMTE5XSw2NjpbMSwxMjBdLDY3OlsxLDEyMV0sNjk6WzEsMTIyXSw4NDpfLDg4OngsOTg6dyw5OTprLDEwMjpULDEwNDpFLDEwNTpDLDExNTpELDExNjpPLDExNzpCLDExODpMLDExOTpJLDEyMDpSfSksdChjdCxbMiwxNDZdKSx0KGN0LFsyLDE3MV0pLHQoY3QsWzIsMTcyXSksdChjdCxbMiwxNzNdKSx0KGN0LFsyLDE3NF0pLHQoY3QsWzIsMTc1XSksdChjdCxbMiwxNzZdKSx0KGN0LFsyLDE3N10pLHQoY3QsWzIsMTc4XSksdChjdCxbMiwxNzldKSx0KGN0LFsyLDE4MF0pLHQoY3QsWzIsMTgxXSksdChjdCxbMiwxODJdKSx0KGN0LFsyLDE4M10pLHQoY3QsWzIsMTg0XSksdChjdCxbMiwxODVdKSx0KGN0LFsyLDE4Nl0pLHs5OjEyNCwyMDpZLDIxOnosMjM6VX0sezExOjEyNSwxNDpbMSwxMjZdfSx0KHV0LFsyLDhdKSx0KGEsWzIsMjBdKSx0KGEsWzIsMjZdKSx0KGEsWzIsMjddKSx7MjE6WzEsMTI3XX0sdChsdCxbMiwzNF0sezMwOjEyOCwyMjpQfSksdChqLFsyLDM1XSksezQ1OjEyOSw0Njo0Miw0NzpmLDQ5OjQzLDU5OmQsNjA6cCw4NDpfLDg4OngsOTg6dyw5OTprLDEwMjpULDEwNDpFLDEwNTpDLDEwOTo0NCwxMTU6RCwxMTY6TywxMTc6QiwxMTg6TCwxMTk6SSwxMjA6Un0sdChodCxbMiw0NV0pLHQoaHQsWzIsNDZdKSx0KGh0LFsyLDQ3XSksdChmdCxbMiw3NF0sezcyOjEzMCw2MTpbMSwxMzJdLDczOlsxLDEzMV19KSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTMzLDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjEzNCw3NzpfdCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx0KFs0Nyw1OSw2MCw2MSw3Myw4NCw4OCw5OCw5OSwxMDIsMTA0LDEwNSwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0sWzIsNzZdKSx0KGosWzIsMzZdKSx0KGosWzIsMzddKSx0KGosWzIsMzhdKSx0KGosWzIsMzldKSx0KGosWzIsNDBdKSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTU3LDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjEzNCw3NzpfdCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx0KE90LG8sezE3OjE1OH0pLHQocSxbMiw1MF0sezQ3OkJ0fSksezI2OkgsNDc6JCw1OTpXLDYwOlYsODQ6Ryw5MDoxNjAsOTU6WzEsMTYxXSw5ODpYLDk5OlosMTAyOlEsMTA0OkssMTA1OkosMTA4Ojk1LDExMDo5MywxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezg4OlsxLDE2Ml0sOTY6MTYzLDk4OlsxLDE2NF19LHsyNjpILDQ3OiQsNTk6Vyw2MDpWLDg0OkcsODg6WzEsMTY1XSw5MDoxNjYsOTg6WCw5OTpaLDEwMjpRLDEwNDpLLDEwNTpKLDEwODo5NSwxMTA6OTMsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyNjpILDQ3OiQsNTk6Vyw2MDpWLDg0OkcsOTA6MTY3LDk4OlgsOTk6WiwxMDI6USwxMDQ6SywxMDU6SiwxMDg6OTUsMTEwOjkzLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx0KHV0LFsyLDk3XSx7MjI6WzEsMTY4XSw5MjpbMSwxNjldfSksdCh1dCxbMiwxMDFdLHsyMjpbMSwxNzBdfSksdCh1dCxbMiwxMDVdLHsxMDg6OTUsMTEwOjE3MiwyMjpbMSwxNzFdLDI2OkgsNDc6JCw1OTpXLDYwOlYsODQ6Ryw5ODpYLDk5OlosMTAyOlEsMTA0OkssMTA1OkosMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9KSx0KHV0LFsyLDEwN10sezIyOlsxLDE3M119KSx0KEx0LFsyLDE0OF0pLHQoTHQsWzIsMTUwXSksdChMdCxbMiwxNTFdKSx0KEx0LFsyLDE1Ml0pLHQoTHQsWzIsMTUzXSksdChJdCxbMiwxNThdKSx0KEl0LFsyLDE1OV0pLHQoSXQsWzIsMTYwXSksdChJdCxbMiwxNjFdKSx0KEl0LFsyLDE2Ml0pLHQoSXQsWzIsMTYzXSksdChJdCxbMiwxNjRdKSx0KEl0LFsyLDE2NV0pLHQoSXQsWzIsMTY2XSksdChJdCxbMiwxNjddKSx0KEl0LFsyLDE2OF0pLHQoSXQsWzIsMTY5XSksdChJdCxbMiwxNzBdKSx7NDc6Ziw0OToxNzQsNTk6ZCw2MDpwLDg0Ol8sODg6eCw5ODp3LDk5OmssMTAyOlQsMTA0OkUsMTA1OkMsMTA5OjQ0LDExNTpELDExNjpPLDExNzpCLDExODpMLDExOTpJLDEyMDpSfSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTc1LDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjEzNCw3NzpfdCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTc3LDQyOm10LDQ3OiQsNTA6WzEsMTc2XSw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxNzgsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxNzksNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxODAsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHs1OTpbMSwxODFdfSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTgyLDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjEzNCw3NzpfdCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MTgzLDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY0OlsxLDE4NF0sNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxODUsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxODYsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToxODcsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQoY3QsWzIsMTQ3XSksdChSdCxbMiwzXSksezg6MTg4LDE1OkZ9LHsxNTpbMiw3XX0sdChhLFsyLDI4XSksdChsdCxbMiwzM10pLHQocSxbMiw0OF0sezMwOjE4OSwyMjpQfSksdChmdCxbMiw3MV0sezIyOlsxLDE5MF19KSx7MjI6WzEsMTkxXX0sezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDM5OjE5Miw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxMzQsNzc6X3QsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc1OlsxLDE5M10sNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQoSXQsWzIsNzhdKSx0KEl0LFsyLDgwXSksdChJdCxbMiwxMzZdKSx0KEl0LFsyLDEzN10pLHQoSXQsWzIsMTM4XSksdChJdCxbMiwxMzldKSx0KEl0LFsyLDE0MF0pLHQoSXQsWzIsMTQxXSksdChJdCxbMiwxNDJdKSx0KEl0LFsyLDE0M10pLHQoSXQsWzIsMTQ0XSksdChJdCxbMiwxNDVdKSx0KEl0LFsyLDgxXSksdChJdCxbMiw4Ml0pLHQoSXQsWzIsODNdKSx0KEl0LFsyLDg0XSksdChJdCxbMiw4NV0pLHQoSXQsWzIsODZdKSx0KEl0LFsyLDg3XSksdChJdCxbMiw4OF0pLHQoSXQsWzIsODldKSx0KEl0LFsyLDkwXSksdChJdCxbMiw5MV0pLHs5OjE5NiwyMDpZLDIxOnosMjI6ZHQsMjM6VSwyNDpwdCwyNjp5dCwzODpndCw0MDpbMSwxOTVdLDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjE5NCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MTg6MTgsMTk6MTksMjA6cywyMTpjLDIyOnUsMjM6bCwzMjoyNCwzMzoyNSwzNDoyNiwzNToyNywzNjoyOCwzNzoyOSwzODpoLDQyOlsxLDE5N10sNDM6MzEsNDU6MzIsNDY6NDIsNDc6Ziw0OTo0Myw1OTpkLDYwOnAsNzk6eSw4MDpnLDgxOm0sODI6diw4MzpiLDg0Ol8sODg6eCw5ODp3LDk5OmssMTAyOlQsMTA0OkUsMTA1OkMsMTA5OjQ0LDExMTpTLDExMjpBLDExMzpNLDExNDpOLDExNTpELDExNjpPLDExNzpCLDExODpMLDExOTpJLDEyMDpSfSx7MjI6UCwzMDoxOTh9LHsyMjpbMSwxOTldLDI2OkgsNDc6JCw1OTpXLDYwOlYsODQ6Ryw5ODpYLDk5OlosMTAyOlEsMTA0OkssMTA1OkosMTA4Ojk1LDExMDoxNzIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpbMSwyMDBdfSx7MjI6WzEsMjAxXX0sezIyOlsxLDIwMl0sOTk6WzEsMjAzXX0sdChGdCxbMiwxMTldKSx7MjI6WzEsMjA0XX0sezIyOlsxLDIwNV0sMjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDk4OlgsOTk6WiwxMDI6USwxMDQ6SywxMDU6SiwxMDg6OTUsMTEwOjE3MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezIyOlsxLDIwNl0sMjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDk4OlgsOTk6WiwxMDI6USwxMDQ6SywxMDU6SiwxMDg6OTUsMTEwOjE3MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezc3OlsxLDIwN119LHQodXQsWzIsOTldLHsyMjpbMSwyMDhdfSksezc3OlsxLDIwOV0sOTQ6WzEsMjEwXX0sezc3OlsxLDIxMV19LHQoTHQsWzIsMTQ5XSksezc3OlsxLDIxMl0sOTQ6WzEsMjEzXX0sdChvdCxbMiw1NF0sezEwOToxMjMsNDc6Ziw1OTpkLDYwOnAsODQ6Xyw4ODp4LDk4OncsOTk6aywxMDI6VCwxMDQ6RSwxMDU6QywxMTU6RCwxMTY6TywxMTc6QiwxMTg6TCwxMTk6SSwxMjA6Un0pLHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MTpbMSwyMTRdLDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjE5NCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsMzk6MjE1LDQyOm10LDQ3OiQsNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjEzNCw3NzpfdCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsNDI6bXQsNDc6JCw1MTpbMSwyMTZdLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxOTQsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDQyOm10LDQ3OiQsNTM6WzEsMjE3XSw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MjptdCw0NzokLDU1OlsxLDIxOF0sNTk6Vyw2MDpWLDY2OnZ0LDc0OmJ0LDc2OjE5NCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsNDI6bXQsNDc6JCw1NzpbMSwyMTldLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxOTQsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezYwOlsxLDIyMF19LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MjptdCw0NzokLDU5OlcsNjA6Viw2MzpbMSwyMjFdLDY2OnZ0LDc0OmJ0LDc2OjE5NCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjU6WzEsMjIyXSw2Njp2dCw3NDpidCw3NjoxOTQsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDM5OjIyMyw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxMzQsNzc6X3QsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDQxOlsxLDIyNF0sNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw2ODpbMSwyMjVdLDcwOlsxLDIyNl0sNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw2ODpbMSwyMjhdLDcwOlsxLDIyN10sNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHs5OjIyOSwyMDpZLDIxOnosMjM6VX0sdChxLFsyLDQ5XSx7NDc6QnR9KSx0KGZ0LFsyLDczXSksdChmdCxbMiw3Ml0pLHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCw0MjptdCw0NzokLDU5OlcsNjA6Viw2MTpbMSwyMzBdLDY2OnZ0LDc0OmJ0LDc2OjE5NCw3ODoxNDUsNzk6eHQsODA6d3QsODE6a3QsODI6VHQsODM6RXQsODQ6Q3QsODU6U3QsODc6MTM2LDg4OkF0LDk4OlgsOTk6WiwxMDI6TXQsMTA0OkssMTA1OkosMTA2Ok50LDEwNzpEdCwxMDg6MTQyLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSx0KGZ0LFsyLDc1XSksdChJdCxbMiw3OV0pLHsyMjpkdCwyNDpwdCwyNjp5dCwzODpndCwzOToyMzEsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTM0LDc3Ol90LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQoT3Qsbyx7MTc6MjMyfSksdChqLFsyLDQzXSksezQ2OjIzMyw0NzpmLDQ5OjQzLDU5OmQsNjA6cCw4NDpfLDg4OngsOTg6dyw5OTprLDEwMjpULDEwNDpFLDEwNTpDLDEwOTo0NCwxMTU6RCwxMTY6TywxMTc6QiwxMTg6TCwxMTk6SSwxMjA6Un0sezIyOlB0LDU5Omp0LDYwOll0LDc5Onp0LDg5OjIzNCw5NTpVdCw5ODpxdCwxMDA6MjM1LDEwMToyMzYsMTAyOkh0LDEwMzokdCwxMDQ6V3QsMTA1OlZ0LDEwNjpHdH0sezIyOlB0LDU5Omp0LDYwOll0LDc5Onp0LDg5OjI0OCw5NTpVdCw5ODpxdCwxMDA6MjM1LDEwMToyMzYsMTAyOkh0LDEwMzokdCwxMDQ6V3QsMTA1OlZ0LDEwNjpHdH0sezIyOlB0LDU5Omp0LDYwOll0LDc5Onp0LDg5OjI0OSw5NTpVdCw5NzpbMSwyNTBdLDk4OnF0LDEwMDoyMzUsMTAxOjIzNiwxMDI6SHQsMTAzOiR0LDEwNDpXdCwxMDU6VnQsMTA2Okd0fSx7MjI6UHQsNTk6anQsNjA6WXQsNzk6enQsODk6MjUxLDk1OlV0LDk3OlsxLDI1Ml0sOTg6cXQsMTAwOjIzNSwxMDE6MjM2LDEwMjpIdCwxMDM6JHQsMTA0Old0LDEwNTpWdCwxMDY6R3R9LHs5ODpbMSwyNTNdfSx7MjI6UHQsNTk6anQsNjA6WXQsNzk6enQsODk6MjU0LDk1OlV0LDk4OnF0LDEwMDoyMzUsMTAxOjIzNiwxMDI6SHQsMTAzOiR0LDEwNDpXdCwxMDU6VnQsMTA2Okd0fSx7MjI6UHQsNTk6anQsNjA6WXQsNzk6enQsODk6MjU1LDk1OlV0LDk4OnF0LDEwMDoyMzUsMTAxOjIzNiwxMDI6SHQsMTAzOiR0LDEwNDpXdCwxMDU6VnQsMTA2Okd0fSx7MjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDkwOjI1Niw5ODpYLDk5OlosMTAyOlEsMTA0OkssMTA1OkosMTA4Ojk1LDExMDo5MywxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sdCh1dCxbMiw5OF0pLHs3NzpbMSwyNTddfSx0KHV0LFsyLDEwMl0sezIyOlsxLDI1OF19KSx0KHV0LFsyLDEwM10pLHQodXQsWzIsMTA2XSksdCh1dCxbMiwxMDhdLHsyMjpbMSwyNTldfSksdCh1dCxbMiwxMDldKSx0KHN0LFsyLDU1XSksezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDQyOm10LDQ3OiQsNTE6WzEsMjYwXSw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQoc3QsWzIsNjJdKSx0KHN0LFsyLDU3XSksdChzdCxbMiw1OF0pLHQoc3QsWzIsNTldKSx7NTk6WzEsMjYxXX0sdChzdCxbMiw2MV0pLHQoc3QsWzIsNjNdKSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjU6WzEsMjYyXSw2Njp2dCw3NDpidCw3NjoxOTQsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sdChzdCxbMiw2NV0pLHQoc3QsWzIsNjZdKSx0KHN0LFsyLDY4XSksdChzdCxbMiw2N10pLHQoc3QsWzIsNjldKSx0KFJ0LFsyLDRdKSx0KFsyMiw0Nyw1OSw2MCw4NCw4OCw5OCw5OSwxMDIsMTA0LDEwNSwxMTUsMTE2LDExNywxMTgsMTE5LDEyMF0sWzIsNzddKSx7MjI6ZHQsMjQ6cHQsMjY6eXQsMzg6Z3QsNDE6WzEsMjYzXSw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxOTQsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezE4OjE4LDE5OjE5LDIwOnMsMjE6YywyMjp1LDIzOmwsMzI6MjQsMzM6MjUsMzQ6MjYsMzU6MjcsMzY6MjgsMzc6MjksMzg6aCw0MjpbMSwyNjRdLDQzOjMxLDQ1OjMyLDQ2OjQyLDQ3OmYsNDk6NDMsNTk6ZCw2MDpwLDc5OnksODA6Zyw4MTptLDgyOnYsODM6Yiw4NDpfLDg4OngsOTg6dyw5OTprLDEwMjpULDEwNDpFLDEwNTpDLDEwOTo0NCwxMTE6UywxMTI6QSwxMTM6TSwxMTQ6TiwxMTU6RCwxMTY6TywxMTc6QiwxMTg6TCwxMTk6SSwxMjA6Un0sdChvdCxbMiw1M10pLHQodXQsWzIsMTExXSx7OTk6WHR9KSx0KFp0LFsyLDEyMV0sezEwMToyNjYsMjI6UHQsNTk6anQsNjA6WXQsNzk6enQsOTU6VXQsOTg6cXQsMTAyOkh0LDEwMzokdCwxMDQ6V3QsMTA1OlZ0LDEwNjpHdH0pLHQoUXQsWzIsMTIzXSksdChRdCxbMiwxMjVdKSx0KFF0LFsyLDEyNl0pLHQoUXQsWzIsMTI3XSksdChRdCxbMiwxMjhdKSx0KFF0LFsyLDEyOV0pLHQoUXQsWzIsMTMwXSksdChRdCxbMiwxMzFdKSx0KFF0LFsyLDEzMl0pLHQoUXQsWzIsMTMzXSksdChRdCxbMiwxMzRdKSx0KFF0LFsyLDEzNV0pLHQodXQsWzIsMTEyXSx7OTk6WHR9KSx0KHV0LFsyLDExM10sezk5Olh0fSksezIyOlsxLDI2N119LHQodXQsWzIsMTE0XSx7OTk6WHR9KSx7MjI6WzEsMjY4XX0sdChGdCxbMiwxMjBdKSx0KHV0LFsyLDk0XSx7OTk6WHR9KSx0KHV0LFsyLDk1XSx7OTk6WHR9KSx0KHV0LFsyLDk2XSx7MTA4Ojk1LDExMDoxNzIsMjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDk4OlgsOTk6WiwxMDI6USwxMDQ6SywxMDU6SiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0pLHQodXQsWzIsMTAwXSksezk0OlsxLDI2OV19LHs5NDpbMSwyNzBdfSx7NTE6WzEsMjcxXX0sezYxOlsxLDI3Ml19LHs2NTpbMSwyNzNdfSx7OToyNzQsMjA6WSwyMTp6LDIzOlV9LHQoaixbMiw0Ml0pLHsyMjpQdCw1OTpqdCw2MDpZdCw3OTp6dCw5NTpVdCw5ODpxdCwxMDA6Mjc1LDEwMToyMzYsMTAyOkh0LDEwMzokdCwxMDQ6V3QsMTA1OlZ0LDEwNjpHdH0sdChRdCxbMiwxMjRdKSx7MjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDkwOjI3Niw5ODpYLDk5OlosMTAyOlEsMTA0OkssMTA1OkosMTA4Ojk1LDExMDo5MywxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sezI2OkgsNDc6JCw1OTpXLDYwOlYsODQ6Ryw5MDoyNzcsOTg6WCw5OTpaLDEwMjpRLDEwNDpLLDEwNTpKLDEwODo5NSwxMTA6OTMsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHQodXQsWzIsMTA0XSksdCh1dCxbMiwxMTBdKSx0KHN0LFsyLDU2XSksezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDM5OjI3OCw0MjptdCw0NzokLDU5OlcsNjA6Viw2Njp2dCw3NDpidCw3NjoxMzQsNzc6X3QsNzg6MTQ1LDc5Onh0LDgwOnd0LDgxOmt0LDgyOlR0LDgzOkV0LDg0OkN0LDg1OlN0LDg3OjEzNiw4ODpBdCw5ODpYLDk5OlosMTAyOk10LDEwNDpLLDEwNTpKLDEwNjpOdCwxMDc6RHQsMTA4OjE0MiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0sdChzdCxbMiw2NF0pLHQoT3Qsbyx7MTc6Mjc5fSksdChadCxbMiwxMjJdLHsxMDE6MjY2LDIyOlB0LDU5Omp0LDYwOll0LDc5Onp0LDk1OlV0LDk4OnF0LDEwMjpIdCwxMDM6JHQsMTA0Old0LDEwNTpWdCwxMDY6R3R9KSx0KHV0LFsyLDExN10sezEwODo5NSwxMTA6MTcyLDIyOlsxLDI4MF0sMjY6SCw0NzokLDU5OlcsNjA6Viw4NDpHLDk4OlgsOTk6WiwxMDI6USwxMDQ6SywxMDU6SiwxMTU6dHQsMTE2OmV0LDExNzpudCwxMTg6cnQsMTE5Oml0LDEyMDphdH0pLHQodXQsWzIsMTE4XSx7MTA4Ojk1LDExMDoxNzIsMjI6WzEsMjgxXSwyNjpILDQ3OiQsNTk6Vyw2MDpWLDg0OkcsOTg6WCw5OTpaLDEwMjpRLDEwNDpLLDEwNTpKLDExNTp0dCwxMTY6ZXQsMTE3Om50LDExODpydCwxMTk6aXQsMTIwOmF0fSksezIyOmR0LDI0OnB0LDI2Onl0LDM4Omd0LDQxOlsxLDI4Ml0sNDI6bXQsNDc6JCw1OTpXLDYwOlYsNjY6dnQsNzQ6YnQsNzY6MTk0LDc4OjE0NSw3OTp4dCw4MDp3dCw4MTprdCw4MjpUdCw4MzpFdCw4NDpDdCw4NTpTdCw4NzoxMzYsODg6QXQsOTg6WCw5OTpaLDEwMjpNdCwxMDQ6SywxMDU6SiwxMDY6TnQsMTA3OkR0LDEwODoxNDIsMTE1OnR0LDExNjpldCwxMTc6bnQsMTE4OnJ0LDExOTppdCwxMjA6YXR9LHsxODoxOCwxOToxOSwyMDpzLDIxOmMsMjI6dSwyMzpsLDMyOjI0LDMzOjI1LDM0OjI2LDM1OjI3LDM2OjI4LDM3OjI5LDM4OmgsNDI6WzEsMjgzXSw0MzozMSw0NTozMiw0Njo0Miw0NzpmLDQ5OjQzLDU5OmQsNjA6cCw3OTp5LDgwOmcsODE6bSw4Mjp2LDgzOmIsODQ6Xyw4ODp4LDk4OncsOTk6aywxMDI6VCwxMDQ6RSwxMDU6QywxMDk6NDQsMTExOlMsMTEyOkEsMTEzOk0sMTE0Ok4sMTE1OkQsMTE2Ok8sMTE3OkIsMTE4OkwsMTE5OkksMTIwOlJ9LHsyMjpQdCw1OTpqdCw2MDpZdCw3OTp6dCw4OToyODQsOTU6VXQsOTg6cXQsMTAwOjIzNSwxMDE6MjM2LDEwMjpIdCwxMDM6JHQsMTA0Old0LDEwNTpWdCwxMDY6R3R9LHsyMjpQdCw1OTpqdCw2MDpZdCw3OTp6dCw4OToyODUsOTU6VXQsOTg6cXQsMTAwOjIzNSwxMDE6MjM2LDEwMjpIdCwxMDM6JHQsMTA0Old0LDEwNTpWdCwxMDY6R3R9LHQoc3QsWzIsNjBdKSx0KGosWzIsNDFdKSx0KHV0LFsyLDExNV0sezk5Olh0fSksdCh1dCxbMiwxMTZdLHs5OTpYdH0pXSxkZWZhdWx0QWN0aW9uczp7MjpbMiwxXSw5OlsyLDVdLDEwOlsyLDJdLDEyNjpbMiw3XX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LEp0PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6e30scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDEyO2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwxMztjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTA7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDE1O2Nhc2UgNDpyZXR1cm4gMTQ7Y2FzZSA1OmNhc2UgNjpicmVhaztjYXNlIDc6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSA4OmNhc2UgMTc6Y2FzZSAyMDpjYXNlIDIzOmNhc2UgMjY6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgOTpyZXR1cm4iU1RSIjtjYXNlIDEwOnJldHVybiA3OTtjYXNlIDExOnJldHVybiA4ODtjYXNlIDEyOnJldHVybiA4MDtjYXNlIDEzOnJldHVybiA5NztjYXNlIDE0OnJldHVybiA4MTtjYXNlIDE1OnJldHVybiA4MjtjYXNlIDE2OnRoaXMuYmVnaW4oImhyZWYiKTticmVhaztjYXNlIDE4OnJldHVybiA5MztjYXNlIDE5OnRoaXMuYmVnaW4oImNhbGxiYWNrbmFtZSIpO2JyZWFrO2Nhc2UgMjE6dGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImNhbGxiYWNrYXJncyIpO2JyZWFrO2Nhc2UgMjI6cmV0dXJuIDkxO2Nhc2UgMjQ6cmV0dXJuIDkyO2Nhc2UgMjU6dGhpcy5iZWdpbigiY2xpY2siKTticmVhaztjYXNlIDI3OnJldHVybiA4MztjYXNlIDI4OmNhc2UgMjk6cmV0dXJuIHQubGV4LmZpcnN0R3JhcGgoKSYmdGhpcy5iZWdpbigiZGlyIiksMjQ7Y2FzZSAzMDpyZXR1cm4gMzg7Y2FzZSAzMTpyZXR1cm4gNDI7Y2FzZSAzMjpjYXNlIDMzOmNhc2UgMzQ6Y2FzZSAzNTpyZXR1cm4gOTQ7Y2FzZSAzNjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI1O2Nhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA0MTpjYXNlIDQyOmNhc2UgNDM6Y2FzZSA0NDpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwyNjtjYXNlIDQ3OnJldHVybiAxMTE7Y2FzZSA0ODpyZXR1cm4gMTEyO2Nhc2UgNDk6cmV0dXJuIDExMztjYXNlIDUwOnJldHVybiAxMTQ7Y2FzZSA1MTpyZXR1cm4gOTg7Y2FzZSA1MjpyZXR1cm4gMTA0O2Nhc2UgNTM6cmV0dXJuIDQ4O2Nhc2UgNTQ6cmV0dXJuIDYwO2Nhc2UgNTU6cmV0dXJuIDQ3O2Nhc2UgNTY6cmV0dXJuIDIwO2Nhc2UgNTc6cmV0dXJuIDk5O2Nhc2UgNTg6cmV0dXJuIDExOTtjYXNlIDU5OmNhc2UgNjA6Y2FzZSA2MTpyZXR1cm4gNzU7Y2FzZSA2MjpjYXNlIDYzOmNhc2UgNjQ6cmV0dXJuIDc0O2Nhc2UgNjU6cmV0dXJuIDUyO2Nhc2UgNjY6cmV0dXJuIDUzO2Nhc2UgNjc6cmV0dXJuIDU0O2Nhc2UgNjg6cmV0dXJuIDU1O2Nhc2UgNjk6cmV0dXJuIDU2O2Nhc2UgNzA6cmV0dXJuIDU3O2Nhc2UgNzE6cmV0dXJuIDU4O2Nhc2UgNzI6cmV0dXJuIDYyO2Nhc2UgNzM6cmV0dXJuIDYzO2Nhc2UgNzQ6cmV0dXJuIDEwMjtjYXNlIDc1OnJldHVybiAxMDU7Y2FzZSA3NjpyZXR1cm4gMTIwO2Nhc2UgNzc6cmV0dXJuIDExNztjYXNlIDc4OnJldHVybiAxMDY7Y2FzZSA3OTpjYXNlIDgwOnJldHVybiAxMTg7Y2FzZSA4MTpyZXR1cm4gMTA3O2Nhc2UgODI6cmV0dXJuIDY2O2Nhc2UgODM6cmV0dXJuIDg1O2Nhc2UgODQ6cmV0dXJuIlNFUCI7Y2FzZSA4NTpyZXR1cm4gODQ7Y2FzZSA4NjpyZXR1cm4gNTk7Y2FzZSA4NzpyZXR1cm4gNjg7Y2FzZSA4ODpyZXR1cm4gNjc7Y2FzZSA4OTpyZXR1cm4gNzA7Y2FzZSA5MDpyZXR1cm4gNjk7Y2FzZSA5MTpyZXR1cm4gMTE1O2Nhc2UgOTI6cmV0dXJuIDExNjtjYXNlIDkzOnJldHVybiA2MTtjYXNlIDk0OnJldHVybiA1MDtjYXNlIDk1OnJldHVybiA1MTtjYXNlIDk2OnJldHVybiA0MDtjYXNlIDk3OnJldHVybiA0MTtjYXNlIDk4OnJldHVybiA2NDtjYXNlIDk5OnJldHVybiA2NTtjYXNlIDEwMDpyZXR1cm4gMTI2O2Nhc2UgMTAxOnJldHVybiAyMTtjYXNlIDEwMjpyZXR1cm4gMjI7Y2FzZSAxMDM6cmV0dXJuIDIzfX0scnVsZXM6Wy9eKD86JSVceykvLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpLywvXig/OjopLywvXig/Olx9JSUpLywvXig/OigoPzooPyFcfSUlKS58XG4pKikpLywvXig/OiUlKD8hXHspW15cbl0qKS8sL14oPzpbXlx9XSUlW15cbl0qKS8sL14oPzpbIl0pLywvXig/OlsiXSkvLC9eKD86W14iXSopLywvXig/OnN0eWxlXGIpLywvXig/OmRlZmF1bHRcYikvLC9eKD86bGlua1N0eWxlXGIpLywvXig/OmludGVycG9sYXRlXGIpLywvXig/OmNsYXNzRGVmXGIpLywvXig/OmNsYXNzXGIpLywvXig/OmhyZWZbXHNdK1siXSkvLC9eKD86WyJdKS8sL14oPzpbXiJdKikvLC9eKD86Y2FsbFtcc10rKS8sL14oPzpcKFtcc10qXCkpLywvXig/OlwoKS8sL14oPzpbXihdKikvLC9eKD86XCkpLywvXig/OlteKV0qKS8sL14oPzpjbGlja1tcc10rKS8sL14oPzpbXHNcbl0pLywvXig/OlteXHNcbl0qKS8sL14oPzpncmFwaFxiKS8sL14oPzpmbG93Y2hhcnRcYikvLC9eKD86c3ViZ3JhcGhcYikvLC9eKD86ZW5kXGJccyopLywvXig/Ol9zZWxmXGIpLywvXig/Ol9ibGFua1xiKS8sL14oPzpfcGFyZW50XGIpLywvXig/Ol90b3BcYikvLC9eKD86KFxyP1xuKSpccypcbikvLC9eKD86XHMqTFJcYikvLC9eKD86XHMqUkxcYikvLC9eKD86XHMqVEJcYikvLC9eKD86XHMqQlRcYikvLC9eKD86XHMqVERcYikvLC9eKD86XHMqQlJcYikvLC9eKD86XHMqPCkvLC9eKD86XHMqPikvLC9eKD86XHMqXF4pLywvXig/OlxzKnZcYikvLC9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytCVFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytSTFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvLC9eKD86WzAtOV0rKS8sL14oPzojKS8sL14oPzo6OjopLywvXig/OjopLywvXig/OiYpLywvXig/OjspLywvXig/OiwpLywvXig/OlwqKS8sL14oPzpccypbeG88XT8tLStbLXhvPl1ccyopLywvXig/OlxzKlt4bzxdPz09K1s9eG8+XVxzKikvLC9eKD86XHMqW3hvPF0/LT9cListW3hvPl0/XHMqKS8sL14oPzpccypbeG88XT8tLVxzKikvLC9eKD86XHMqW3hvPF0/PT1ccyopLywvXig/OlxzKlt4bzxdPy1cLlxzKikvLC9eKD86XCgtKS8sL14oPzotXCkpLywvXig/OlwoXFspLywvXig/OlxdXCkpLywvXig/OlxbXFspLywvXig/OlxdXF0pLywvXig/OlxbXHwpLywvXig/OlxbXCgpLywvXig/OlwpXF0pLywvXig/Oi0pLywvXig/OlwuKS8sL14oPzpbXF9dKS8sL14oPzpcKykvLC9eKD86JSkvLC9eKD86PSkvLC9eKD86PSkvLC9eKD86PCkvLC9eKD86PikvLC9eKD86XF4pLywvXig/OlxcXHwpLywvXig/OnZcYikvLC9eKD86W0EtWmEtel0rKS8sL14oPzpcXFxdKS8sL14oPzpcW1wvKS8sL14oPzpcL1xdKS8sL14oPzpcW1xcKS8sL14oPzpbISIjJCUmJyorLC0uYD9cXF8vXSkvLC9eKD86W1x1MDBBQVx1MDBCNVx1MDBCQVx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XXxbXHUwMEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N118W1x1MDM3QS1cdTAzN0RcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVdfFtcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyN1x1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVFQV18W1x1MDVGMC1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRV18W1x1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFdfFtcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1MDhBMF18W1x1MDhBMi1cdTA4QUNcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5NzddfFtcdTA5NzktXHUwOTdGXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXXxbXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUtXHUwQTBBXXxbXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzldfFtcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOF18W1x1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ118W1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q118W1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTldfFtcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMF18W1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNEXXxbXHUwQzU4XHUwQzU5XHUwQzYwXHUwQzYxXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM118W1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMF18W1x1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENjBcdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFdfFtcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2XHUwRTgxXXxbXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4XHUwRThBXHUwRThEXHUwRTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXXxbXHUwRUE1XHUwRUE3XHUwRUFBXHUwRUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZdfFtcdTBFREMtXHUwRURGXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhDXHUxMDAwLVx1MTAyQV18W1x1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFdfFtcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXXxbXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBdfFtcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMF18W1x1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXXxbXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFdfFtcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN118W1x1MTdEQ1x1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUNdfFtcdTE5NTAtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QzEtXHUxOUM3XHUxQTAwLVx1MUExNl18W1x1MUEyMC1cdTFBNTRcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1cdTFCQTBcdTFCQUVcdTFCQUZdfFtcdTFCQkEtXHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxQ0U5LVx1MUNFQ118W1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURdfFtcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXXxbXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNdfFtcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXXxbXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XXxbXHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NF18W1x1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNdfFtcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XXxbXHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VdfFtcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NdfFtcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRF18W1x1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkNDXXxbXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQl18W1x1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjk3XHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XXxbXHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3QTAtXHVBN0FBXHVBN0Y4LVx1QTgwMVx1QTgwMy1cdUE4MDVdfFtcdUE4MDctXHVBODBBXHVBODBDLVx1QTgyMlx1QTg0MC1cdUE4NzNcdUE4ODItXHVBOEIzXHVBOEYyLVx1QThGN1x1QThGQl18W1x1QTkwQS1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBOTYwLVx1QTk3Q1x1QTk4NC1cdUE5QjJcdUE5Q0ZcdUFBMDAtXHVBQTI4XXxbXHVBQTQwLVx1QUE0Mlx1QUE0NC1cdUFBNEJcdUFBNjAtXHVBQTc2XHVBQTdBXHVBQTgwLVx1QUFBRlx1QUFCMVx1QUFCNV18W1x1QUFCNlx1QUFCOS1cdUFBQkRcdUFBQzBcdUFBQzJcdUFBREItXHVBQUREXHVBQUUwLVx1QUFFQVx1QUFGMi1cdUFBRjRdfFtcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1cdUFCMTZcdUFCMjAtXHVBQjI2XHVBQjI4LVx1QUIyRV18W1x1QUJDMC1cdUFCRTJcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXXxbXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZdfFtcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RdfFtcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ118W1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXXxbXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdKS8sL14oPzpcfCkvLC9eKD86XCgpLywvXig/OlwpKS8sL14oPzpcWykvLC9eKD86XF0pLywvXig/Olx7KS8sL14oPzpcfSkvLC9eKD86IikvLC9eKD86KFxyP1xuKSspLywvXig/OlxzKS8sL14oPzokKS9dLGNvbmRpdGlvbnM6e2Nsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSxjYWxsYmFja2FyZ3M6e3J1bGVzOlsyMywyNF0saW5jbHVzaXZlOiExfSxjYWxsYmFja25hbWU6e3J1bGVzOlsyMCwyMSwyMl0saW5jbHVzaXZlOiExfSxocmVmOntydWxlczpbMTcsMThdLGluY2x1c2l2ZTohMX0sY2xpY2s6e3J1bGVzOlsyNiwyN10saW5jbHVzaXZlOiExfSx2ZXJ0ZXg6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sZGlyOntydWxlczpbMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDZdLGluY2x1c2l2ZTohMX0sc3RyaW5nOntydWxlczpbOCw5XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE5LDI1LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwM10saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIHRlKCl7dGhpcy55eT17fX1yZXR1cm4gS3QubGV4ZXI9SnQsdGUucHJvdG90eXBlPUt0LEt0LlBhcnNlcj10ZSxuZXcgdGV9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9big1MzU0KS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDk5NTk6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDNdLG49WzEsNV0scj1bNyw5LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIyLDI5LDM0XSxpPVsxLDE1XSxhPVsxLDE2XSxvPVsxLDE3XSxzPVsxLDE4XSxjPVsxLDE5XSx1PVsxLDIwXSxsPVsxLDIxXSxoPVsxLDIyXSxmPVsxLDIzXSxkPVsxLDI1XSxwPVsxLDI3XSx5PVsxLDMwXSxnPVs1LDcsOSwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMiwyOSwzNF0sbT17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsZGlyZWN0aXZlOjQsZ2FudHQ6NSxkb2N1bWVudDo2LEVPRjo3LGxpbmU6OCxTUEFDRTo5LHN0YXRlbWVudDoxMCxOTDoxMSxkYXRlRm9ybWF0OjEyLGluY2x1c2l2ZUVuZERhdGVzOjEzLHRvcEF4aXM6MTQsYXhpc0Zvcm1hdDoxNSxleGNsdWRlczoxNixpbmNsdWRlczoxNyx0b2RheU1hcmtlcjoxOCx0aXRsZToxOSxzZWN0aW9uOjIwLGNsaWNrU3RhdGVtZW50OjIxLHRhc2tUeHQ6MjIsdGFza0RhdGE6MjMsb3BlbkRpcmVjdGl2ZToyNCx0eXBlRGlyZWN0aXZlOjI1LGNsb3NlRGlyZWN0aXZlOjI2LCI6IjoyNyxhcmdEaXJlY3RpdmU6MjgsY2xpY2s6MjksY2FsbGJhY2tuYW1lOjMwLGNhbGxiYWNrYXJnczozMSxocmVmOjMyLGNsaWNrU3RhdGVtZW50RGVidWc6MzMsb3Blbl9kaXJlY3RpdmU6MzQsdHlwZV9kaXJlY3RpdmU6MzUsYXJnX2RpcmVjdGl2ZTozNixjbG9zZV9kaXJlY3RpdmU6MzcsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDU6ImdhbnR0Iiw3OiJFT0YiLDk6IlNQQUNFIiwxMToiTkwiLDEyOiJkYXRlRm9ybWF0IiwxMzoiaW5jbHVzaXZlRW5kRGF0ZXMiLDE0OiJ0b3BBeGlzIiwxNToiYXhpc0Zvcm1hdCIsMTY6ImV4Y2x1ZGVzIiwxNzoiaW5jbHVkZXMiLDE4OiJ0b2RheU1hcmtlciIsMTk6InRpdGxlIiwyMDoic2VjdGlvbiIsMjI6InRhc2tUeHQiLDIzOiJ0YXNrRGF0YSIsMjc6IjoiLDI5OiJjbGljayIsMzA6ImNhbGxiYWNrbmFtZSIsMzE6ImNhbGxiYWNrYXJncyIsMzI6ImhyZWYiLDM0OiJvcGVuX2RpcmVjdGl2ZSIsMzU6InR5cGVfZGlyZWN0aXZlIiwzNjoiYXJnX2RpcmVjdGl2ZSIsMzc6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbMywzXSxbNiwwXSxbNiwyXSxbOCwyXSxbOCwxXSxbOCwxXSxbOCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDJdLFsxMCwxXSxbNCw0XSxbNCw2XSxbMjEsMl0sWzIxLDNdLFsyMSwzXSxbMjEsNF0sWzIxLDNdLFsyMSw0XSxbMjEsMl0sWzMzLDJdLFszMywzXSxbMzMsM10sWzMzLDRdLFszMywzXSxbMzMsNF0sWzMzLDJdLFsyNCwxXSxbMjUsMV0sWzI4LDFdLFsyNiwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDI6cmV0dXJuIGFbcy0xXTtjYXNlIDM6Y2FzZSA3OmNhc2UgODp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0OmFbcy0xXS5wdXNoKGFbc10pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA1OmNhc2UgNjp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDk6ci5zZXREYXRlRm9ybWF0KGFbc10uc3Vic3RyKDExKSksdGhpcy4kPWFbc10uc3Vic3RyKDExKTticmVhaztjYXNlIDEwOnIuZW5hYmxlSW5jbHVzaXZlRW5kRGF0ZXMoKSx0aGlzLiQ9YVtzXS5zdWJzdHIoMTgpO2JyZWFrO2Nhc2UgMTE6ci5Ub3BBeGlzKCksdGhpcy4kPWFbc10uc3Vic3RyKDgpO2JyZWFrO2Nhc2UgMTI6ci5zZXRBeGlzRm9ybWF0KGFbc10uc3Vic3RyKDExKSksdGhpcy4kPWFbc10uc3Vic3RyKDExKTticmVhaztjYXNlIDEzOnIuc2V0RXhjbHVkZXMoYVtzXS5zdWJzdHIoOSkpLHRoaXMuJD1hW3NdLnN1YnN0cig5KTticmVhaztjYXNlIDE0OnIuc2V0SW5jbHVkZXMoYVtzXS5zdWJzdHIoOSkpLHRoaXMuJD1hW3NdLnN1YnN0cig5KTticmVhaztjYXNlIDE1OnIuc2V0VG9kYXlNYXJrZXIoYVtzXS5zdWJzdHIoMTIpKSx0aGlzLiQ9YVtzXS5zdWJzdHIoMTIpO2JyZWFrO2Nhc2UgMTY6ci5zZXRUaXRsZShhW3NdLnN1YnN0cig2KSksdGhpcy4kPWFbc10uc3Vic3RyKDYpO2JyZWFrO2Nhc2UgMTc6ci5hZGRTZWN0aW9uKGFbc10uc3Vic3RyKDgpKSx0aGlzLiQ9YVtzXS5zdWJzdHIoOCk7YnJlYWs7Y2FzZSAxOTpyLmFkZFRhc2soYVtzLTFdLGFbc10pLHRoaXMuJD0idGFzayI7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9YVtzLTFdLHIuc2V0Q2xpY2tFdmVudChhW3MtMV0sYVtzXSxudWxsKTticmVhaztjYXNlIDI0OnRoaXMuJD1hW3MtMl0sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3MtMV0sYVtzXSk7YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9YVtzLTJdLHIuc2V0Q2xpY2tFdmVudChhW3MtMl0sYVtzLTFdLG51bGwpLHIuc2V0TGluayhhW3MtMl0sYVtzXSk7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9YVtzLTNdLHIuc2V0Q2xpY2tFdmVudChhW3MtM10sYVtzLTJdLGFbcy0xXSksci5zZXRMaW5rKGFbcy0zXSxhW3NdKTticmVhaztjYXNlIDI3OnRoaXMuJD1hW3MtMl0sci5zZXRDbGlja0V2ZW50KGFbcy0yXSxhW3NdLG51bGwpLHIuc2V0TGluayhhW3MtMl0sYVtzLTFdKTticmVhaztjYXNlIDI4OnRoaXMuJD1hW3MtM10sci5zZXRDbGlja0V2ZW50KGFbcy0zXSxhW3MtMV0sYVtzXSksci5zZXRMaW5rKGFbcy0zXSxhW3MtMl0pO2JyZWFrO2Nhc2UgMjk6dGhpcy4kPWFbcy0xXSxyLnNldExpbmsoYVtzLTFdLGFbc10pO2JyZWFrO2Nhc2UgMzA6Y2FzZSAzNjp0aGlzLiQ9YVtzLTFdKyIgIithW3NdO2JyZWFrO2Nhc2UgMzE6Y2FzZSAzMjpjYXNlIDM0OnRoaXMuJD1hW3MtMl0rIiAiK2Fbcy0xXSsiICIrYVtzXTticmVhaztjYXNlIDMzOmNhc2UgMzU6dGhpcy4kPWFbcy0zXSsiICIrYVtzLTJdKyIgIithW3MtMV0rIiAiK2Fbc107YnJlYWs7Y2FzZSAzNzpyLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzg6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMzk6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDQwOnIucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImdhbnR0Iil9fSx0YWJsZTpbezM6MSw0OjIsNTplLDI0OjQsMzQ6bn0sezE6WzNdfSx7Mzo2LDQ6Miw1OmUsMjQ6NCwzNDpufSx0KHIsWzIsM10sezY6N30pLHsyNTo4LDM1OlsxLDldfSx7MzU6WzIsMzddfSx7MTpbMiwxXX0sezQ6MjYsNzpbMSwxMF0sODoxMSw5OlsxLDEyXSwxMDoxMywxMTpbMSwxNF0sMTI6aSwxMzphLDE0Om8sMTU6cywxNjpjLDE3OnUsMTg6bCwxOTpoLDIwOmYsMjE6MjQsMjI6ZCwyNDo0LDI5OnAsMzQ6bn0sezI2OjI4LDI3OlsxLDI5XSwzNzp5fSx0KFsyNywzN10sWzIsMzhdKSx0KHIsWzIsOF0sezE6WzIsMl19KSx0KHIsWzIsNF0pLHs0OjI2LDEwOjMxLDEyOmksMTM6YSwxNDpvLDE1OnMsMTY6YywxNzp1LDE4OmwsMTk6aCwyMDpmLDIxOjI0LDIyOmQsMjQ6NCwyOTpwLDM0Om59LHQocixbMiw2XSksdChyLFsyLDddKSx0KHIsWzIsOV0pLHQocixbMiwxMF0pLHQocixbMiwxMV0pLHQocixbMiwxMl0pLHQocixbMiwxM10pLHQocixbMiwxNF0pLHQocixbMiwxNV0pLHQocixbMiwxNl0pLHQocixbMiwxN10pLHQocixbMiwxOF0pLHsyMzpbMSwzMl19LHQocixbMiwyMF0pLHszMDpbMSwzM10sMzI6WzEsMzRdfSx7MTE6WzEsMzVdfSx7Mjg6MzYsMzY6WzEsMzddfSx7MTE6WzIsNDBdfSx0KHIsWzIsNV0pLHQocixbMiwxOV0pLHQocixbMiwyM10sezMxOlsxLDM4XSwzMjpbMSwzOV19KSx0KHIsWzIsMjldLHszMDpbMSw0MF19KSx0KGcsWzIsMjFdKSx7MjY6NDEsMzc6eX0sezM3OlsyLDM5XX0sdChyLFsyLDI0XSx7MzI6WzEsNDJdfSksdChyLFsyLDI1XSksdChyLFsyLDI3XSx7MzE6WzEsNDNdfSksezExOlsxLDQ0XX0sdChyLFsyLDI2XSksdChyLFsyLDI4XSksdChnLFsyLDIyXSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDM3XSw2OlsyLDFdLDMwOlsyLDQwXSwzNzpbMiwzOV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSx2PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDM0O2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwzNTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMjc7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDM3O2Nhc2UgNDpyZXR1cm4gMzY7Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMTpicmVhaztjYXNlIDg6cmV0dXJuIDExO2Nhc2UgMTI6dGhpcy5iZWdpbigiaHJlZiIpO2JyZWFrO2Nhc2UgMTM6Y2FzZSAxNjpjYXNlIDE5OmNhc2UgMjI6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTQ6cmV0dXJuIDMyO2Nhc2UgMTU6dGhpcy5iZWdpbigiY2FsbGJhY2tuYW1lIik7YnJlYWs7Y2FzZSAxNzp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2thcmdzIik7YnJlYWs7Y2FzZSAxODpyZXR1cm4gMzA7Y2FzZSAyMDpyZXR1cm4gMzE7Y2FzZSAyMTp0aGlzLmJlZ2luKCJjbGljayIpO2JyZWFrO2Nhc2UgMjM6cmV0dXJuIDI5O2Nhc2UgMjQ6cmV0dXJuIDU7Y2FzZSAyNTpyZXR1cm4gMTI7Y2FzZSAyNjpyZXR1cm4gMTM7Y2FzZSAyNzpyZXR1cm4gMTQ7Y2FzZSAyODpyZXR1cm4gMTU7Y2FzZSAyOTpyZXR1cm4gMTc7Y2FzZSAzMDpyZXR1cm4gMTY7Y2FzZSAzMTpyZXR1cm4gMTg7Y2FzZSAzMjpyZXR1cm4iZGF0ZSI7Y2FzZSAzMzpyZXR1cm4gMTk7Y2FzZSAzNDpyZXR1cm4gMjA7Y2FzZSAzNTpyZXR1cm4gMjI7Y2FzZSAzNjpyZXR1cm4gMjM7Y2FzZSAzNzpyZXR1cm4gMjc7Y2FzZSAzODpyZXR1cm4gNztjYXNlIDM5OnJldHVybiJJTlZBTElEIn19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/OiUlKD8hXHspKlteXG5dKikvaSwvXig/OlteXH1dJSUqW15cbl0qKS9pLC9eKD86JSUqW15cbl0qW1xuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86aHJlZltcc10rWyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpjYWxsW1xzXSspL2ksL14oPzpcKFtcc10qXCkpL2ksL14oPzpcKCkvaSwvXig/OlteKF0qKS9pLC9eKD86XCkpL2ksL14oPzpbXildKikvaSwvXig/OmNsaWNrW1xzXSspL2ksL14oPzpbXHNcbl0pL2ksL14oPzpbXlxzXG5dKikvaSwvXig/OmdhbnR0XGIpL2ksL14oPzpkYXRlRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1c2l2ZUVuZERhdGVzXGIpL2ksL14oPzp0b3BBeGlzXGIpL2ksL14oPzpheGlzRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OmV4Y2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OnRvZGF5TWFya2VyXHNbXlxuO10rKS9pLC9eKD86XGRcZFxkXGQtXGRcZC1cZFxkXGIpL2ksL14oPzp0aXRsZVxzW14jXG47XSspL2ksL14oPzpzZWN0aW9uXHNbXiM6XG47XSspL2ksL14oPzpbXiM6XG47XSspL2ksL14oPzo6W14jXG47XSspL2ksL14oPzo6KS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e2Nsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSxjYWxsYmFja2FyZ3M6e3J1bGVzOlsxOSwyMF0saW5jbHVzaXZlOiExfSxjYWxsYmFja25hbWU6e3J1bGVzOlsxNiwxNywxOF0saW5jbHVzaXZlOiExfSxocmVmOntydWxlczpbMTMsMTRdLGluY2x1c2l2ZTohMX0sY2xpY2s6e3J1bGVzOlsyMiwyM10saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsNyw4LDksMTAsMTEsMTIsMTUsMjEsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzldLGluY2x1c2l2ZTohMH19fTtmdW5jdGlvbiBiKCl7dGhpcy55eT17fX1yZXR1cm4gbS5sZXhlcj12LGIucHJvdG90eXBlPW0sbS5QYXJzZXI9YixuZXcgYn0oKTtlLnBhcnNlcj1yLGUuUGFyc2VyPXIuUGFyc2VyLGUucGFyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZS5hcHBseShyLGFyZ3VtZW50cyl9LGUubWFpbj1mdW5jdGlvbih0KXt0WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3RbMF0rIiBGSUxFIikscHJvY2Vzcy5leGl0KDEpKTt2YXIgcj1uKDY4NzgpLnJlYWRGaWxlU3luYyhuKDY0NzApLm5vcm1hbGl6ZSh0WzFdKSwidXRmOCIpO3JldHVybiBlLnBhcnNlci5wYXJzZShyKX0sbi5jW24uc109PT10JiZlLm1haW4ocHJvY2Vzcy5hcmd2LnNsaWNlKDEpKX0sMjU1MzoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSxuLHIpe2ZvcihuPW58fHt9LHI9dC5sZW5ndGg7ci0tO25bdFtyXV09ZSk7cmV0dXJuIG59LGU9WzIsM10sbj1bMSw3XSxyPVs3LDEyLDE1LDE3LDE5LDIwLDIxXSxpPVs3LDExLDEyLDE1LDE3LDE5LDIwLDIxXSxhPVsyLDIwXSxvPVsxLDMyXSxzPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxHRzo0LCI6Ijo1LGRvY3VtZW50OjYsRU9GOjcsRElSOjgsb3B0aW9uczo5LGJvZHk6MTAsT1BUOjExLE5MOjEyLGxpbmU6MTMsc3RhdGVtZW50OjE0LENPTU1JVDoxNSxjb21taXRfYXJnOjE2LEJSQU5DSDoxNyxJRDoxOCxDSEVDS09VVDoxOSxNRVJHRToyMCxSRVNFVDoyMSxyZXNldF9hcmc6MjIsU1RSOjIzLEhFQUQ6MjQscmVzZXRfcGFyZW50czoyNSxDQVJFVDoyNiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNDoiR0ciLDU6IjoiLDc6IkVPRiIsODoiRElSIiwxMToiT1BUIiwxMjoiTkwiLDE1OiJDT01NSVQiLDE3OiJCUkFOQ0giLDE4OiJJRCIsMTk6IkNIRUNLT1VUIiwyMDoiTUVSR0UiLDIxOiJSRVNFVCIsMjM6IlNUUiIsMjQ6IkhFQUQiLDI2OiJDQVJFVCJ9LHByb2R1Y3Rpb25zXzpbMCxbMyw0XSxbMyw1XSxbNiwwXSxbNiwyXSxbOSwyXSxbOSwxXSxbMTAsMF0sWzEwLDJdLFsxMywyXSxbMTMsMV0sWzE0LDJdLFsxNCwyXSxbMTQsMl0sWzE0LDJdLFsxNCwyXSxbMTYsMF0sWzE2LDFdLFsyMiwyXSxbMjIsMl0sWzI1LDBdLFsyNSwyXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDE6cmV0dXJuIGFbcy0xXTtjYXNlIDI6cmV0dXJuIHIuc2V0RGlyZWN0aW9uKGFbcy0zXSksYVtzLTFdO2Nhc2UgNDpyLnNldE9wdGlvbnMoYVtzLTFdKSx0aGlzLiQ9YVtzXTticmVhaztjYXNlIDU6YVtzLTFdKz1hW3NdLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSA3OnRoaXMuJD1bXTticmVhaztjYXNlIDg6YVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDk6dGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDExOnIuY29tbWl0KGFbc10pO2JyZWFrO2Nhc2UgMTI6ci5icmFuY2goYVtzXSk7YnJlYWs7Y2FzZSAxMzpyLmNoZWNrb3V0KGFbc10pO2JyZWFrO2Nhc2UgMTQ6ci5tZXJnZShhW3NdKTticmVhaztjYXNlIDE1OnIucmVzZXQoYVtzXSk7YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9IiI7YnJlYWs7Y2FzZSAxNzp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDE4OnRoaXMuJD1hW3MtMV0rIjoiK2Fbc107YnJlYWs7Y2FzZSAxOTp0aGlzLiQ9YVtzLTFdKyI6IityLmNvdW50LHIuY291bnQ9MDticmVhaztjYXNlIDIwOnIuY291bnQ9MDticmVhaztjYXNlIDIxOnIuY291bnQrPTF9fSx0YWJsZTpbezM6MSw0OlsxLDJdfSx7MTpbM119LHs1OlsxLDNdLDg6WzEsNF19LHs2OjUsNzplLDk6NiwxMjpufSx7NTpbMSw4XX0sezc6WzEsOV19LHQocixbMiw3XSx7MTA6MTAsMTE6WzEsMTFdfSksdChpLFsyLDZdKSx7NjoxMiw3OmUsOTo2LDEyOm59LHsxOlsyLDFdfSx7NzpbMiw0XSwxMjpbMSwxNV0sMTM6MTMsMTQ6MTQsMTU6WzEsMTZdLDE3OlsxLDE3XSwxOTpbMSwxOF0sMjA6WzEsMTldLDIxOlsxLDIwXX0sdChpLFsyLDVdKSx7NzpbMSwyMV19LHQocixbMiw4XSksezEyOlsxLDIyXX0sdChyLFsyLDEwXSksezEyOlsyLDE2XSwxNjoyMywyMzpbMSwyNF19LHsxODpbMSwyNV19LHsxODpbMSwyNl19LHsxODpbMSwyN119LHsxODpbMSwzMF0sMjI6MjgsMjQ6WzEsMjldfSx7MTpbMiwyXX0sdChyLFsyLDldKSx7MTI6WzIsMTFdfSx7MTI6WzIsMTddfSx7MTI6WzIsMTJdfSx7MTI6WzIsMTNdfSx7MTI6WzIsMTRdfSx7MTI6WzIsMTVdfSx7MTI6YSwyNTozMSwyNjpvfSx7MTI6YSwyNTozMywyNjpvfSx7MTI6WzIsMThdfSx7MTI6YSwyNTozNCwyNjpvfSx7MTI6WzIsMTldfSx7MTI6WzIsMjFdfV0sZGVmYXVsdEFjdGlvbnM6ezk6WzIsMV0sMjE6WzIsMl0sMjM6WzIsMTFdLDI0OlsyLDE3XSwyNTpbMiwxMl0sMjY6WzIsMTNdLDI3OlsyLDE0XSwyODpbMiwxNV0sMzE6WzIsMThdLDMzOlsyLDE5XSwzNDpbMiwyMV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxjPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiAxMjtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpicmVhaztjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA1OnJldHVybiAxNTtjYXNlIDY6cmV0dXJuIDE3O2Nhc2UgNzpyZXR1cm4gMjA7Y2FzZSA4OnJldHVybiAyMTtjYXNlIDk6cmV0dXJuIDE5O2Nhc2UgMTA6Y2FzZSAxMTpyZXR1cm4gODtjYXNlIDEyOnJldHVybiA1O2Nhc2UgMTM6cmV0dXJuIDI2O2Nhc2UgMTQ6dGhpcy5iZWdpbigib3B0aW9ucyIpO2JyZWFrO2Nhc2UgMTU6Y2FzZSAxODp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxNjpyZXR1cm4gMTE7Y2FzZSAxNzp0aGlzLmJlZ2luKCJzdHJpbmciKTticmVhaztjYXNlIDE5OnJldHVybiAyMztjYXNlIDIwOnJldHVybiAxODtjYXNlIDIxOnJldHVybiA3fX0scnVsZXM6Wy9eKD86KFxyP1xuKSspL2ksL14oPzpccyspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JVteXG5dKikvaSwvXig/OmdpdEdyYXBoXGIpL2ksL14oPzpjb21taXRcYikvaSwvXig/OmJyYW5jaFxiKS9pLC9eKD86bWVyZ2VcYikvaSwvXig/OnJlc2V0XGIpL2ksL14oPzpjaGVja291dFxiKS9pLC9eKD86TFJcYikvaSwvXig/OkJUXGIpL2ksL14oPzo6KS9pLC9eKD86XF4pL2ksL14oPzpvcHRpb25zXHI/XG4pL2ksL14oPzplbmRccj9cbikvaSwvXig/OlteXG5dK1xyP1xuKS9pLC9eKD86WyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpbYS16QS1aXVstX1wuYS16QS1aMC05XSpbLV9hLXpBLVowLTldKS9pLC9eKD86JCkvaV0sY29uZGl0aW9uczp7b3B0aW9uczp7cnVsZXM6WzE1LDE2XSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzE4LDE5XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE3LDIwLDIxXSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gdSgpe3RoaXMueXk9e319cmV0dXJuIHMubGV4ZXI9Yyx1LnByb3RvdHlwZT1zLHMuUGFyc2VyPXUsbmV3IHV9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9big4MTgzKS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDY3NjU6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVs2LDksMTBdLG49e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLGluZm86NCxkb2N1bWVudDo1LEVPRjo2LGxpbmU6NyxzdGF0ZW1lbnQ6OCxOTDo5LHNob3dJbmZvOjEwLCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJpbmZvIiw2OiJFT0YiLDk6Ik5MIiwxMDoic2hvd0luZm8ifSxwcm9kdWN0aW9uc186WzAsWzMsM10sWzUsMF0sWzUsMl0sWzcsMV0sWzcsMV0sWzgsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scixpLGEsbyl7c3dpdGNoKGEubGVuZ3RoLGkpe2Nhc2UgMTpyZXR1cm4gcjtjYXNlIDQ6YnJlYWs7Y2FzZSA2OnIuc2V0SW5mbyghMCl9fSx0YWJsZTpbezM6MSw0OlsxLDJdfSx7MTpbM119LHQoZSxbMiwyXSx7NTozfSksezY6WzEsNF0sNzo1LDg6Niw5OlsxLDddLDEwOlsxLDhdfSx7MTpbMiwxXX0sdChlLFsyLDNdKSx0KGUsWzIsNF0pLHQoZSxbMiw1XSksdChlLFsyLDZdKV0sZGVmYXVsdEFjdGlvbnM6ezQ6WzIsMV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxyPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiA0O2Nhc2UgMTpyZXR1cm4gOTtjYXNlIDI6cmV0dXJuInNwYWNlIjtjYXNlIDM6cmV0dXJuIDEwO2Nhc2UgNDpyZXR1cm4gNjtjYXNlIDU6cmV0dXJuIlRYVCJ9fSxydWxlczpbL14oPzppbmZvXGIpL2ksL14oPzpbXHNcblxyXSspL2ksL14oPzpbXHNdKykvaSwvXig/OnNob3dJbmZvXGIpL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7SU5JVElBTDp7cnVsZXM6WzAsMSwyLDMsNCw1XSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gaSgpe3RoaXMueXk9e319cmV0dXJuIG4ubGV4ZXI9cixpLnByb3RvdHlwZT1uLG4uUGFyc2VyPWksbmV3IGl9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9bigxNDI4KS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDcwNjI6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDRdLG49WzEsNV0scj1bMSw2XSxpPVsxLDddLGE9WzEsOV0sbz1bMSwxMSwxMywyMCwyMSwyMiwyM10scz1bMiw1XSxjPVsxLDYsMTEsMTMsMjAsMjEsMjIsMjNdLHU9WzIwLDIxLDIyXSxsPVsyLDhdLGg9WzEsMThdLGY9WzEsMTldLGQ9WzEsMjRdLHA9WzYsMjAsMjEsMjIsMjNdLHk9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLGVvbDo0LGRpcmVjdGl2ZTo1LFBJRTo2LGRvY3VtZW50Ojcsc2hvd0RhdGE6OCxsaW5lOjksc3RhdGVtZW50OjEwLHR4dDoxMSx2YWx1ZToxMix0aXRsZToxMyx0aXRsZV92YWx1ZToxNCxvcGVuRGlyZWN0aXZlOjE1LHR5cGVEaXJlY3RpdmU6MTYsY2xvc2VEaXJlY3RpdmU6MTcsIjoiOjE4LGFyZ0RpcmVjdGl2ZToxOSxORVdMSU5FOjIwLCI7IjoyMSxFT0Y6MjIsb3Blbl9kaXJlY3RpdmU6MjMsdHlwZV9kaXJlY3RpdmU6MjQsYXJnX2RpcmVjdGl2ZToyNSxjbG9zZV9kaXJlY3RpdmU6MjYsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDY6IlBJRSIsODoic2hvd0RhdGEiLDExOiJ0eHQiLDEyOiJ2YWx1ZSIsMTM6InRpdGxlIiwxNDoidGl0bGVfdmFsdWUiLDE4OiI6IiwyMDoiTkVXTElORSIsMjE6IjsiLDIyOiJFT0YiLDIzOiJvcGVuX2RpcmVjdGl2ZSIsMjQ6InR5cGVfZGlyZWN0aXZlIiwyNToiYXJnX2RpcmVjdGl2ZSIsMjY6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbMywyXSxbMywyXSxbMywzXSxbNywwXSxbNywyXSxbOSwyXSxbMTAsMF0sWzEwLDJdLFsxMCwyXSxbMTAsMV0sWzUsM10sWzUsNV0sWzQsMV0sWzQsMV0sWzQsMV0sWzE1LDFdLFsxNiwxXSxbMTksMV0sWzE3LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIsaSxhLG8pe3ZhciBzPWEubGVuZ3RoLTE7c3dpdGNoKGkpe2Nhc2UgNDpyLnNldFNob3dEYXRhKCEwKTticmVhaztjYXNlIDc6dGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDk6ci5hZGRTZWN0aW9uKGFbcy0xXSxyLmNsZWFudXBWYWx1ZShhW3NdKSk7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9YVtzXS50cmltKCksci5zZXRUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgMTc6ci5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDE4OnIucGFyc2VEaXJlY3RpdmUoYVtzXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDE5OmFbc109YVtzXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksci5wYXJzZURpcmVjdGl2ZShhW3NdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAyMDpyLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJwaWUiKX19LHRhYmxlOlt7MzoxLDQ6Miw1OjMsNjplLDE1OjgsMjA6biwyMTpyLDIyOmksMjM6YX0sezE6WzNdfSx7MzoxMCw0OjIsNTozLDY6ZSwxNTo4LDIwOm4sMjE6ciwyMjppLDIzOmF9LHszOjExLDQ6Miw1OjMsNjplLDE1OjgsMjA6biwyMTpyLDIyOmksMjM6YX0sdChvLHMsezc6MTIsODpbMSwxM119KSx0KGMsWzIsMTRdKSx0KGMsWzIsMTVdKSx0KGMsWzIsMTZdKSx7MTY6MTQsMjQ6WzEsMTVdfSx7MjQ6WzIsMTddfSx7MTpbMiwxXX0sezE6WzIsMl19LHQodSxsLHsxNTo4LDk6MTYsMTA6MTcsNToyMCwxOlsyLDNdLDExOmgsMTM6ZiwyMzphfSksdChvLHMsezc6MjF9KSx7MTc6MjIsMTg6WzEsMjNdLDI2OmR9LHQoWzE4LDI2XSxbMiwxOF0pLHQobyxbMiw2XSksezQ6MjUsMjA6biwyMTpyLDIyOml9LHsxMjpbMSwyNl19LHsxNDpbMSwyN119LHQodSxbMiwxMV0pLHQodSxsLHsxNTo4LDk6MTYsMTA6MTcsNToyMCwxOlsyLDRdLDExOmgsMTM6ZiwyMzphfSksdChwLFsyLDEyXSksezE5OjI4LDI1OlsxLDI5XX0sdChwLFsyLDIwXSksdChvLFsyLDddKSx0KHUsWzIsOV0pLHQodSxbMiwxMF0pLHsxNzozMCwyNjpkfSx7MjY6WzIsMTldfSx0KHAsWzIsMTNdKV0sZGVmYXVsdEFjdGlvbnM6ezk6WzIsMTddLDEwOlsyLDFdLDExOlsyLDJdLDI5OlsyLDE5XX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LGc9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKHQpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IodCxlKX0sc2V0SW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy55eT1lfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lucHV0WzBdO3JldHVybiB0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQsdC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUpLHRoaXMub2Zmc2V0LT1lO3ZhciByPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLG4ubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1uLmxlbmd0aC0xKTt2YXIgaT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46bj8obi5sZW5ndGg9PT1yLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcltyLmxlbmd0aC1uLmxlbmd0aF0ubGVuZ3RoLW5bMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2lbMF0saVswXSt0aGlzLnl5bGVuZy1lXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcj8odGhpcy5fYmFja3RyYWNrPSEwLHRoaXMpOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxlc3M6ZnVuY3Rpb24odCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHQpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih0Lmxlbmd0aD4yMD8iLi4uIjoiIikrdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2g7cmV0dXJuIHQubGVuZ3RoPDIwJiYodCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtdC5sZW5ndGgpKSwodC5zdWJzdHIoMCwyMCkrKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFzdElucHV0KCksZT1uZXcgQXJyYXkodC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB0K3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIrZSsiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKGk9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoaS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSwocj10WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSkmJih0aGlzLnl5bGluZW5vKz1yLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnI/cltyLmxlbmd0aC0xXS5sZW5ndGgtcltyLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9dFswXSx0aGlzLm1hdGNoKz10WzBdLHRoaXMubWF0Y2hlcz10LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHRbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPXRbMF0sbj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxlLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLG4pcmV0dXJuIG47aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGEgaW4gaSl0aGlzW2FdPWlbYV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3ZhciB0LGUsbixyO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKSx0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBpPXRoaXMuX2N1cnJlbnRSdWxlcygpLGE9MDthPGkubGVuZ3RoO2ErKylpZigobj10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2lbYV1dKSkmJighZXx8blswXS5sZW5ndGg+ZVswXS5sZW5ndGgpKXtpZihlPW4scj1hLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKCExIT09KHQ9dGhpcy50ZXN0X21hdGNoKG4saVthXSkpKXJldHVybiB0O2lmKHRoaXMuX2JhY2t0cmFjayl7ZT0hMTtjb250aW51ZX1yZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGU/ITEhPT0odD10aGlzLnRlc3RfbWF0Y2goZSxpW3JdKSkmJnQ6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHQoKXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyh0fHwwKSk+PTA/dGhpcy5jb25kaXRpb25TdGFja1t0XToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbih0KXt0aGlzLmJlZ2luKHQpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksMjM7Y2FzZSAxOnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDI0O2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxODtjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksMjY7Y2FzZSA0OnJldHVybiAyNTtjYXNlIDU6Y2FzZSA2OmNhc2UgODpjYXNlIDk6YnJlYWs7Y2FzZSA3OnJldHVybiAyMDtjYXNlIDEwOnJldHVybiB0aGlzLmJlZ2luKCJ0aXRsZSIpLDEzO2Nhc2UgMTE6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwidGl0bGVfdmFsdWUiO2Nhc2UgMTI6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSAxMzp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxNDpyZXR1cm4idHh0IjtjYXNlIDE1OnJldHVybiA2O2Nhc2UgMTY6cmV0dXJuIDg7Y2FzZSAxNzpyZXR1cm4idmFsdWUiO2Nhc2UgMTg6cmV0dXJuIDIyfX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSUoPyFceylbXlxuXSopL2ksL14oPzpbXlx9XSUlW15cbl0qKS9pLC9eKD86W1xuXHJdKykvaSwvXig/OiUlW15cbl0qKS9pLC9eKD86W1xzXSspL2ksL14oPzp0aXRsZVxiKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86WyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpwaWVcYikvaSwvXig/OnNob3dEYXRhXGIpL2ksL14oPzo6W1xzXSpbXGRdKyg/OlwuW1xkXSspPykvaSwvXig/OiQpL2ldLGNvbmRpdGlvbnM6e2Nsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSx0aXRsZTp7cnVsZXM6WzExXSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzEzLDE0XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDgsOSwxMCwxMiwxNSwxNiwxNywxOF0saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIG0oKXt0aGlzLnl5PXt9fXJldHVybiB5LmxleGVyPWcsbS5wcm90b3R5cGU9eSx5LlBhcnNlcj1tLG5ldyBtfSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oNDU1MSkucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSwzMTc2Oih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bMSwzXSxuPVsxLDVdLHI9WzEsMTddLGk9WzIsMTBdLGE9WzEsMjFdLG89WzEsMjJdLHM9WzEsMjNdLGM9WzEsMjRdLHU9WzEsMjVdLGw9WzEsMjZdLGg9WzEsMTldLGY9WzEsMjddLGQ9WzEsMjhdLHA9WzEsMzFdLHk9WzY2LDY3XSxnPVs1LDgsMTQsMzUsMzYsMzcsMzgsMzksNDAsNDgsNTUsNTcsNjYsNjddLG09WzUsNiw4LDE0LDM1LDM2LDM3LDM4LDM5LDQwLDQ4LDY2LDY3XSx2PVsxLDUxXSxiPVsxLDUyXSxfPVsxLDUzXSx4PVsxLDU0XSx3PVsxLDU1XSxrPVsxLDU2XSxUPVsxLDU3XSxFPVs1Nyw1OF0sQz1bMSw2OV0sUz1bMSw2NV0sQT1bMSw2Nl0sTT1bMSw2N10sTj1bMSw2OF0sRD1bMSw3MF0sTz1bMSw3NF0sQj1bMSw3NV0sTD1bMSw3Ml0sST1bMSw3M10sUj1bNSw4LDE0LDM1LDM2LDM3LDM4LDM5LDQwLDQ4LDY2LDY3XSxGPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxkaXJlY3RpdmU6NCxORVdMSU5FOjUsUkQ6NixkaWFncmFtOjcsRU9GOjgsb3BlbkRpcmVjdGl2ZTo5LHR5cGVEaXJlY3RpdmU6MTAsY2xvc2VEaXJlY3RpdmU6MTEsIjoiOjEyLGFyZ0RpcmVjdGl2ZToxMyxvcGVuX2RpcmVjdGl2ZToxNCx0eXBlX2RpcmVjdGl2ZToxNSxhcmdfZGlyZWN0aXZlOjE2LGNsb3NlX2RpcmVjdGl2ZToxNyxyZXF1aXJlbWVudERlZjoxOCxlbGVtZW50RGVmOjE5LHJlbGF0aW9uc2hpcERlZjoyMCxyZXF1aXJlbWVudFR5cGU6MjEscmVxdWlyZW1lbnROYW1lOjIyLFNUUlVDVF9TVEFSVDoyMyxyZXF1aXJlbWVudEJvZHk6MjQsSUQ6MjUsQ09MT05TRVA6MjYsaWQ6MjcsVEVYVDoyOCx0ZXh0OjI5LFJJU0s6MzAscmlza0xldmVsOjMxLFZFUklGWU1USEQ6MzIsdmVyaWZ5VHlwZTozMyxTVFJVQ1RfU1RPUDozNCxSRVFVSVJFTUVOVDozNSxGVU5DVElPTkFMX1JFUVVJUkVNRU5UOjM2LElOVEVSRkFDRV9SRVFVSVJFTUVOVDozNyxQRVJGT1JNQU5DRV9SRVFVSVJFTUVOVDozOCxQSFlTSUNBTF9SRVFVSVJFTUVOVDozOSxERVNJR05fQ09OU1RSQUlOVDo0MCxMT1dfUklTSzo0MSxNRURfUklTSzo0MixISUdIX1JJU0s6NDMsVkVSSUZZX0FOQUxZU0lTOjQ0LFZFUklGWV9ERU1PTlNUUkFUSU9OOjQ1LFZFUklGWV9JTlNQRUNUSU9OOjQ2LFZFUklGWV9URVNUOjQ3LEVMRU1FTlQ6NDgsZWxlbWVudE5hbWU6NDksZWxlbWVudEJvZHk6NTAsVFlQRTo1MSx0eXBlOjUyLERPQ1JFRjo1MyxyZWY6NTQsRU5EX0FSUk9XX0w6NTUscmVsYXRpb25zaGlwOjU2LExJTkU6NTcsRU5EX0FSUk9XX1I6NTgsQ09OVEFJTlM6NTksQ09QSUVTOjYwLERFUklWRVM6NjEsU0FUSVNGSUVTOjYyLFZFUklGSUVTOjYzLFJFRklORVM6NjQsVFJBQ0VTOjY1LHVucVN0cmluZzo2NixxU3RyaW5nOjY3LCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw1OiJORVdMSU5FIiw2OiJSRCIsODoiRU9GIiwxMjoiOiIsMTQ6Im9wZW5fZGlyZWN0aXZlIiwxNToidHlwZV9kaXJlY3RpdmUiLDE2OiJhcmdfZGlyZWN0aXZlIiwxNzoiY2xvc2VfZGlyZWN0aXZlIiwyMzoiU1RSVUNUX1NUQVJUIiwyNToiSUQiLDI2OiJDT0xPTlNFUCIsMjg6IlRFWFQiLDMwOiJSSVNLIiwzMjoiVkVSSUZZTVRIRCIsMzQ6IlNUUlVDVF9TVE9QIiwzNToiUkVRVUlSRU1FTlQiLDM2OiJGVU5DVElPTkFMX1JFUVVJUkVNRU5UIiwzNzoiSU5URVJGQUNFX1JFUVVJUkVNRU5UIiwzODoiUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQiLDM5OiJQSFlTSUNBTF9SRVFVSVJFTUVOVCIsNDA6IkRFU0lHTl9DT05TVFJBSU5UIiw0MToiTE9XX1JJU0siLDQyOiJNRURfUklTSyIsNDM6IkhJR0hfUklTSyIsNDQ6IlZFUklGWV9BTkFMWVNJUyIsNDU6IlZFUklGWV9ERU1PTlNUUkFUSU9OIiw0NjoiVkVSSUZZX0lOU1BFQ1RJT04iLDQ3OiJWRVJJRllfVEVTVCIsNDg6IkVMRU1FTlQiLDUxOiJUWVBFIiw1MzoiRE9DUkVGIiw1NToiRU5EX0FSUk9XX0wiLDU3OiJMSU5FIiw1ODoiRU5EX0FSUk9XX1IiLDU5OiJDT05UQUlOUyIsNjA6IkNPUElFUyIsNjE6IkRFUklWRVMiLDYyOiJTQVRJU0ZJRVMiLDYzOiJWRVJJRklFUyIsNjQ6IlJFRklORVMiLDY1OiJUUkFDRVMiLDY2OiJ1bnFTdHJpbmciLDY3OiJxU3RyaW5nIn0scHJvZHVjdGlvbnNfOlswLFszLDNdLFszLDJdLFszLDRdLFs0LDNdLFs0LDVdLFs5LDFdLFsxMCwxXSxbMTMsMV0sWzExLDFdLFs3LDBdLFs3LDJdLFs3LDJdLFs3LDJdLFs3LDJdLFs3LDJdLFsxOCw1XSxbMjQsNV0sWzI0LDVdLFsyNCw1XSxbMjQsNV0sWzI0LDJdLFsyNCwxXSxbMjEsMV0sWzIxLDFdLFsyMSwxXSxbMjEsMV0sWzIxLDFdLFsyMSwxXSxbMzEsMV0sWzMxLDFdLFszMSwxXSxbMzMsMV0sWzMzLDFdLFszMywxXSxbMzMsMV0sWzE5LDVdLFs1MCw1XSxbNTAsNV0sWzUwLDJdLFs1MCwxXSxbMjAsNV0sWzIwLDVdLFs1NiwxXSxbNTYsMV0sWzU2LDFdLFs1NiwxXSxbNTYsMV0sWzU2LDFdLFs1NiwxXSxbMjIsMV0sWzIyLDFdLFsyNywxXSxbMjcsMV0sWzI5LDFdLFsyOSwxXSxbNDksMV0sWzQ5LDFdLFs1MiwxXSxbNTIsMV0sWzU0LDFdLFs1NCwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDY6ci5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDc6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgODphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgOTpyLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJwaWUiKTticmVhaztjYXNlIDEwOnRoaXMuJD1bXTticmVhaztjYXNlIDE2OnIuYWRkUmVxdWlyZW1lbnQoYVtzLTNdLGFbcy00XSk7YnJlYWs7Y2FzZSAxNzpyLnNldE5ld1JlcUlkKGFbcy0yXSk7YnJlYWs7Y2FzZSAxODpyLnNldE5ld1JlcVRleHQoYVtzLTJdKTticmVhaztjYXNlIDE5OnIuc2V0TmV3UmVxUmlzayhhW3MtMl0pO2JyZWFrO2Nhc2UgMjA6ci5zZXROZXdSZXFWZXJpZnlNZXRob2QoYVtzLTJdKTticmVhaztjYXNlIDIzOnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5SRVFVSVJFTUVOVDticmVhaztjYXNlIDI0OnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5GVU5DVElPTkFMX1JFUVVJUkVNRU5UO2JyZWFrO2Nhc2UgMjU6dGhpcy4kPXIuUmVxdWlyZW1lbnRUeXBlLklOVEVSRkFDRV9SRVFVSVJFTUVOVDticmVhaztjYXNlIDI2OnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5QRVJGT1JNQU5DRV9SRVFVSVJFTUVOVDticmVhaztjYXNlIDI3OnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5QSFlTSUNBTF9SRVFVSVJFTUVOVDticmVhaztjYXNlIDI4OnRoaXMuJD1yLlJlcXVpcmVtZW50VHlwZS5ERVNJR05fQ09OU1RSQUlOVDticmVhaztjYXNlIDI5OnRoaXMuJD1yLlJpc2tMZXZlbC5MT1dfUklTSzticmVhaztjYXNlIDMwOnRoaXMuJD1yLlJpc2tMZXZlbC5NRURfUklTSzticmVhaztjYXNlIDMxOnRoaXMuJD1yLlJpc2tMZXZlbC5ISUdIX1JJU0s7YnJlYWs7Y2FzZSAzMjp0aGlzLiQ9ci5WZXJpZnlUeXBlLlZFUklGWV9BTkFMWVNJUzticmVhaztjYXNlIDMzOnRoaXMuJD1yLlZlcmlmeVR5cGUuVkVSSUZZX0RFTU9OU1RSQVRJT047YnJlYWs7Y2FzZSAzNDp0aGlzLiQ9ci5WZXJpZnlUeXBlLlZFUklGWV9JTlNQRUNUSU9OO2JyZWFrO2Nhc2UgMzU6dGhpcy4kPXIuVmVyaWZ5VHlwZS5WRVJJRllfVEVTVDticmVhaztjYXNlIDM2OnIuYWRkRWxlbWVudChhW3MtM10pO2JyZWFrO2Nhc2UgMzc6ci5zZXROZXdFbGVtZW50VHlwZShhW3MtMl0pO2JyZWFrO2Nhc2UgMzg6ci5zZXROZXdFbGVtZW50RG9jUmVmKGFbcy0yXSk7YnJlYWs7Y2FzZSA0MTpyLmFkZFJlbGF0aW9uc2hpcChhW3MtMl0sYVtzXSxhW3MtNF0pO2JyZWFrO2Nhc2UgNDI6ci5hZGRSZWxhdGlvbnNoaXAoYVtzLTJdLGFbcy00XSxhW3NdKTticmVhaztjYXNlIDQzOnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuQ09OVEFJTlM7YnJlYWs7Y2FzZSA0NDp0aGlzLiQ9ci5SZWxhdGlvbnNoaXBzLkNPUElFUzticmVhaztjYXNlIDQ1OnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuREVSSVZFUzticmVhaztjYXNlIDQ2OnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuU0FUSVNGSUVTO2JyZWFrO2Nhc2UgNDc6dGhpcy4kPXIuUmVsYXRpb25zaGlwcy5WRVJJRklFUzticmVhaztjYXNlIDQ4OnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuUkVGSU5FUzticmVhaztjYXNlIDQ5OnRoaXMuJD1yLlJlbGF0aW9uc2hpcHMuVFJBQ0VTfX0sdGFibGU6W3szOjEsNDoyLDY6ZSw5OjQsMTQ6bn0sezE6WzNdfSx7Mzo3LDQ6Miw1OlsxLDZdLDY6ZSw5OjQsMTQ6bn0sezU6WzEsOF19LHsxMDo5LDE1OlsxLDEwXX0sezE1OlsyLDZdfSx7MzoxMSw0OjIsNjplLDk6NCwxNDpufSx7MTpbMiwyXX0sezQ6MTYsNTpyLDc6MTIsODppLDk6NCwxNDpuLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE4LDI3OjIwLDM1OmEsMzY6bywzNzpzLDM4OmMsMzk6dSw0MDpsLDQ4OmgsNjY6Ziw2NzpkfSx7MTE6MjksMTI6WzEsMzBdLDE3OnB9LHQoWzEyLDE3XSxbMiw3XSksezE6WzIsMV19LHs4OlsxLDMyXX0sezQ6MTYsNTpyLDc6MzMsODppLDk6NCwxNDpuLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE4LDI3OjIwLDM1OmEsMzY6bywzNzpzLDM4OmMsMzk6dSw0MDpsLDQ4OmgsNjY6Ziw2NzpkfSx7NDoxNiw1OnIsNzozNCw4OmksOTo0LDE0Om4sMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTgsMjc6MjAsMzU6YSwzNjpvLDM3OnMsMzg6YywzOTp1LDQwOmwsNDg6aCw2NjpmLDY3OmR9LHs0OjE2LDU6ciw3OjM1LDg6aSw5OjQsMTQ6biwxODoxMywxOToxNCwyMDoxNSwyMToxOCwyNzoyMCwzNTphLDM2Om8sMzc6cywzODpjLDM5OnUsNDA6bCw0ODpoLDY2OmYsNjc6ZH0sezQ6MTYsNTpyLDc6MzYsODppLDk6NCwxNDpuLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE4LDI3OjIwLDM1OmEsMzY6bywzNzpzLDM4OmMsMzk6dSw0MDpsLDQ4OmgsNjY6Ziw2NzpkfSx7NDoxNiw1OnIsNzozNyw4OmksOTo0LDE0Om4sMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTgsMjc6MjAsMzU6YSwzNjpvLDM3OnMsMzg6YywzOTp1LDQwOmwsNDg6aCw2NjpmLDY3OmR9LHsyMjozOCw2NjpbMSwzOV0sNjc6WzEsNDBdfSx7NDk6NDEsNjY6WzEsNDJdLDY3OlsxLDQzXX0sezU1OlsxLDQ0XSw1NzpbMSw0NV19LHQoeSxbMiwyM10pLHQoeSxbMiwyNF0pLHQoeSxbMiwyNV0pLHQoeSxbMiwyNl0pLHQoeSxbMiwyN10pLHQoeSxbMiwyOF0pLHQoZyxbMiw1Ml0pLHQoZyxbMiw1M10pLHQobSxbMiw0XSksezEzOjQ2LDE2OlsxLDQ3XX0sdChtLFsyLDldKSx7MTpbMiwzXX0sezg6WzIsMTFdfSx7ODpbMiwxMl19LHs4OlsyLDEzXX0sezg6WzIsMTRdfSx7ODpbMiwxNV19LHsyMzpbMSw0OF19LHsyMzpbMiw1MF19LHsyMzpbMiw1MV19LHsyMzpbMSw0OV19LHsyMzpbMiw1Nl19LHsyMzpbMiw1N119LHs1Njo1MCw1OTp2LDYwOmIsNjE6Xyw2Mjp4LDYzOncsNjQ6ayw2NTpUfSx7NTY6NTgsNTk6diw2MDpiLDYxOl8sNjI6eCw2Mzp3LDY0OmssNjU6VH0sezExOjU5LDE3OnB9LHsxNzpbMiw4XX0sezU6WzEsNjBdfSx7NTpbMSw2MV19LHs1NzpbMSw2Ml19LHQoRSxbMiw0M10pLHQoRSxbMiw0NF0pLHQoRSxbMiw0NV0pLHQoRSxbMiw0Nl0pLHQoRSxbMiw0N10pLHQoRSxbMiw0OF0pLHQoRSxbMiw0OV0pLHs1ODpbMSw2M119LHQobSxbMiw1XSksezU6QywyNDo2NCwyNTpTLDI4OkEsMzA6TSwzMjpOLDM0OkR9LHs1Ok8sMzQ6Qiw1MDo3MSw1MTpMLDUzOkl9LHsyNzo3Niw2NjpmLDY3OmR9LHsyNzo3Nyw2NjpmLDY3OmR9LHQoUixbMiwxNl0pLHsyNjpbMSw3OF19LHsyNjpbMSw3OV19LHsyNjpbMSw4MF19LHsyNjpbMSw4MV19LHs1OkMsMjQ6ODIsMjU6UywyODpBLDMwOk0sMzI6TiwzNDpEfSx0KFIsWzIsMjJdKSx0KFIsWzIsMzZdKSx7MjY6WzEsODNdfSx7MjY6WzEsODRdfSx7NTpPLDM0OkIsNTA6ODUsNTE6TCw1MzpJfSx0KFIsWzIsNDBdKSx0KFIsWzIsNDFdKSx0KFIsWzIsNDJdKSx7Mjc6ODYsNjY6Ziw2NzpkfSx7Mjk6ODcsNjY6WzEsODhdLDY3OlsxLDg5XX0sezMxOjkwLDQxOlsxLDkxXSw0MjpbMSw5Ml0sNDM6WzEsOTNdfSx7MzM6OTQsNDQ6WzEsOTVdLDQ1OlsxLDk2XSw0NjpbMSw5N10sNDc6WzEsOThdfSx0KFIsWzIsMjFdKSx7NTI6OTksNjY6WzEsMTAwXSw2NzpbMSwxMDFdfSx7NTQ6MTAyLDY2OlsxLDEwM10sNjc6WzEsMTA0XX0sdChSLFsyLDM5XSksezU6WzEsMTA1XX0sezU6WzEsMTA2XX0sezU6WzIsNTRdfSx7NTpbMiw1NV19LHs1OlsxLDEwN119LHs1OlsyLDI5XX0sezU6WzIsMzBdfSx7NTpbMiwzMV19LHs1OlsxLDEwOF19LHs1OlsyLDMyXX0sezU6WzIsMzNdfSx7NTpbMiwzNF19LHs1OlsyLDM1XX0sezU6WzEsMTA5XX0sezU6WzIsNThdfSx7NTpbMiw1OV19LHs1OlsxLDExMF19LHs1OlsyLDYwXX0sezU6WzIsNjFdfSx7NTpDLDI0OjExMSwyNTpTLDI4OkEsMzA6TSwzMjpOLDM0OkR9LHs1OkMsMjQ6MTEyLDI1OlMsMjg6QSwzMDpNLDMyOk4sMzQ6RH0sezU6QywyNDoxMTMsMjU6UywyODpBLDMwOk0sMzI6TiwzNDpEfSx7NTpDLDI0OjExNCwyNTpTLDI4OkEsMzA6TSwzMjpOLDM0OkR9LHs1Ok8sMzQ6Qiw1MDoxMTUsNTE6TCw1MzpJfSx7NTpPLDM0OkIsNTA6MTE2LDUxOkwsNTM6SX0sdChSLFsyLDE3XSksdChSLFsyLDE4XSksdChSLFsyLDE5XSksdChSLFsyLDIwXSksdChSLFsyLDM3XSksdChSLFsyLDM4XSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDZdLDc6WzIsMl0sMTE6WzIsMV0sMzI6WzIsM10sMzM6WzIsMTFdLDM0OlsyLDEyXSwzNTpbMiwxM10sMzY6WzIsMTRdLDM3OlsyLDE1XSwzOTpbMiw1MF0sNDA6WzIsNTFdLDQyOlsyLDU2XSw0MzpbMiw1N10sNDc6WzIsOF0sODg6WzIsNTRdLDg5OlsyLDU1XSw5MTpbMiwyOV0sOTI6WzIsMzBdLDkzOlsyLDMxXSw5NTpbMiwzMl0sOTY6WzIsMzNdLDk3OlsyLDM0XSw5ODpbMiwzNV0sMTAwOlsyLDU4XSwxMDE6WzIsNTldLDEwMzpbMiw2MF0sMTA0OlsyLDYxXX0scGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCFlLnJlY292ZXJhYmxlKXt2YXIgbj1uZXcgRXJyb3IodCk7dGhyb3cgbi5oYXNoPWUsbn10aGlzLnRyYWNlKHQpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49WzBdLHI9W10saT1bbnVsbF0sYT1bXSxvPXRoaXMudGFibGUscz0iIixjPTAsdT0wLGw9MCxoPTIsZj0xLGQ9YS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikseT17eXk6e319O2Zvcih2YXIgZyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGcpJiYoeS55eVtnXT10aGlzLnl5W2ddKTtwLnNldElucHV0KHQseS55eSkseS55eS5sZXhlcj1wLHkueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09cC55eWxsb2MmJihwLnl5bGxvYz17fSk7dmFyIG09cC55eWxsb2M7YS5wdXNoKG0pO3ZhciB2PXAub3B0aW9ucyYmcC5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiBiKCl7dmFyIHQ7cmV0dXJuIm51bWJlciIhPXR5cGVvZih0PXIucG9wKCl8fHAubGV4KCl8fGYpJiYodCBpbnN0YW5jZW9mIEFycmF5JiYodD0ocj10KS5wb3AoKSksdD1lLnN5bWJvbHNfW3RdfHx0KSx0fSJmdW5jdGlvbiI9PXR5cGVvZiB5Lnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPXkueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBfLHgsdyxrLFQsRSxDLFMsQSxNPXt9Ozspe2lmKHc9bltuLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3ddP2s9dGhpcy5kZWZhdWx0QWN0aW9uc1t3XToobnVsbD09XyYmKF89YigpKSxrPW9bd10mJm9bd11bX10pLHZvaWQgMD09PWt8fCFrLmxlbmd0aHx8IWtbMF0pe3ZhciBOPSIiO2ZvcihFIGluIEE9W10sb1t3XSl0aGlzLnRlcm1pbmFsc19bRV0mJkU+aCYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRV0rIiciKTtOPXAuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrcC5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoXz09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciKSx0aGlzLnBhcnNlRXJyb3IoTix7dGV4dDpwLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tfXXx8XyxsaW5lOnAueXlsaW5lbm8sbG9jOm0sZXhwZWN0ZWQ6QX0pfWlmKGtbMF1pbnN0YW5jZW9mIEFycmF5JiZrLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdysiLCB0b2tlbjogIitfKTtzd2l0Y2goa1swXSl7Y2FzZSAxOm4ucHVzaChfKSxpLnB1c2gocC55eXRleHQpLGEucHVzaChwLnl5bGxvYyksbi5wdXNoKGtbMV0pLF89bnVsbCx4PyhfPXgseD1udWxsKToodT1wLnl5bGVuZyxzPXAueXl0ZXh0LGM9cC55eWxpbmVubyxtPXAueXlsbG9jLGw+MCYmbC0tKTticmVhaztjYXNlIDI6aWYoQz10aGlzLnByb2R1Y3Rpb25zX1trWzFdXVsxXSxNLiQ9aVtpLmxlbmd0aC1DXSxNLl8kPXtmaXJzdF9saW5lOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTphW2EubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjphW2EubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2JiYoTS5fJC5yYW5nZT1bYVthLmxlbmd0aC0oQ3x8MSldLnJhbmdlWzBdLGFbYS5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0oVD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoTSxbcyx1LGMseS55eSxrWzFdLGksYV0uY29uY2F0KGQpKSkpcmV0dXJuIFQ7QyYmKG49bi5zbGljZSgwLC0xKkMqMiksaT1pLnNsaWNlKDAsLTEqQyksYT1hLnNsaWNlKDAsLTEqQykpLG4ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1trWzFdXVswXSksaS5wdXNoKE0uJCksYS5wdXNoKE0uXyQpLFM9b1tuW24ubGVuZ3RoLTJdXVtuW24ubGVuZ3RoLTFdXSxuLnB1c2goUyk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LFA9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKHQpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IodCxlKX0sc2V0SW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy55eT1lfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lucHV0WzBdO3JldHVybiB0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQsdC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLG49dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUpLHRoaXMub2Zmc2V0LT1lO3ZhciByPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLG4ubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1uLmxlbmd0aC0xKTt2YXIgaT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46bj8obi5sZW5ndGg9PT1yLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcltyLmxlbmd0aC1uLmxlbmd0aF0ubGVuZ3RoLW5bMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2lbMF0saVswXSt0aGlzLnl5bGVuZy1lXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcj8odGhpcy5fYmFja3RyYWNrPSEwLHRoaXMpOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxlc3M6ZnVuY3Rpb24odCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHQpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih0Lmxlbmd0aD4yMD8iLi4uIjoiIikrdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2g7cmV0dXJuIHQubGVuZ3RoPDIwJiYodCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtdC5sZW5ndGgpKSwodC5zdWJzdHIoMCwyMCkrKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFzdElucHV0KCksZT1uZXcgQXJyYXkodC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB0K3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIrZSsiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKGk9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoaS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSwocj10WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSkmJih0aGlzLnl5bGluZW5vKz1yLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnI/cltyLmxlbmd0aC0xXS5sZW5ndGgtcltyLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9dFswXSx0aGlzLm1hdGNoKz10WzBdLHRoaXMubWF0Y2hlcz10LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHRbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPXRbMF0sbj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxlLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLG4pcmV0dXJuIG47aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGEgaW4gaSl0aGlzW2FdPWlbYV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3ZhciB0LGUsbixyO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKSx0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBpPXRoaXMuX2N1cnJlbnRSdWxlcygpLGE9MDthPGkubGVuZ3RoO2ErKylpZigobj10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2lbYV1dKSkmJighZXx8blswXS5sZW5ndGg+ZVswXS5sZW5ndGgpKXtpZihlPW4scj1hLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKCExIT09KHQ9dGhpcy50ZXN0X21hdGNoKG4saVthXSkpKXJldHVybiB0O2lmKHRoaXMuX2JhY2t0cmFjayl7ZT0hMTtjb250aW51ZX1yZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGU/ITEhPT0odD10aGlzLnRlc3RfbWF0Y2goZSxpW3JdKSkmJnQ6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHQoKXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyh0fHwwKSk+PTA/dGhpcy5jb25kaXRpb25TdGFja1t0XToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbih0KXt0aGlzLmJlZ2luKHQpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLHIpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksMTQ7Y2FzZSAxOnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDE1O2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxMjtjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksMTc7Y2FzZSA0OnJldHVybiAxNjtjYXNlIDU6cmV0dXJuIDU7Y2FzZSA2OmNhc2UgNzpjYXNlIDg6YnJlYWs7Y2FzZSA5OnJldHVybiA4O2Nhc2UgMTA6cmV0dXJuIDY7Y2FzZSAxMTpyZXR1cm4gMjM7Y2FzZSAxMjpyZXR1cm4gMzQ7Y2FzZSAxMzpyZXR1cm4gMjY7Y2FzZSAxNDpyZXR1cm4gMjU7Y2FzZSAxNTpyZXR1cm4gMjg7Y2FzZSAxNjpyZXR1cm4gMzA7Y2FzZSAxNzpyZXR1cm4gMzI7Y2FzZSAxODpyZXR1cm4gMzU7Y2FzZSAxOTpyZXR1cm4gMzY7Y2FzZSAyMDpyZXR1cm4gMzc7Y2FzZSAyMTpyZXR1cm4gMzg7Y2FzZSAyMjpyZXR1cm4gMzk7Y2FzZSAyMzpyZXR1cm4gNDA7Y2FzZSAyNDpyZXR1cm4gNDE7Y2FzZSAyNTpyZXR1cm4gNDI7Y2FzZSAyNjpyZXR1cm4gNDM7Y2FzZSAyNzpyZXR1cm4gNDQ7Y2FzZSAyODpyZXR1cm4gNDU7Y2FzZSAyOTpyZXR1cm4gNDY7Y2FzZSAzMDpyZXR1cm4gNDc7Y2FzZSAzMTpyZXR1cm4gNDg7Y2FzZSAzMjpyZXR1cm4gNTk7Y2FzZSAzMzpyZXR1cm4gNjA7Y2FzZSAzNDpyZXR1cm4gNjE7Y2FzZSAzNTpyZXR1cm4gNjI7Y2FzZSAzNjpyZXR1cm4gNjM7Y2FzZSAzNzpyZXR1cm4gNjQ7Y2FzZSAzODpyZXR1cm4gNjU7Y2FzZSAzOTpyZXR1cm4gNTE7Y2FzZSA0MDpyZXR1cm4gNTM7Y2FzZSA0MTpyZXR1cm4gNTU7Y2FzZSA0MjpyZXR1cm4gNTg7Y2FzZSA0MzpyZXR1cm4gNTc7Y2FzZSA0NDp0aGlzLmJlZ2luKCJzdHJpbmciKTticmVhaztjYXNlIDQ1OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDQ2OnJldHVybiJxU3RyaW5nIjtjYXNlIDQ3OnJldHVybiBlLnl5dGV4dD1lLnl5dGV4dC50cmltKCksNjZ9fSxydWxlczpbL14oPzolJVx7KS9pLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpL2ksL14oPzo6KS9pLC9eKD86XH0lJSkvaSwvXig/OigoPzooPyFcfSUlKS58XG4pKikpL2ksL14oPzooXHI/XG4pKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86JCkvaSwvXig/OnJlcXVpcmVtZW50RGlhZ3JhbVxiKS9pLC9eKD86XHspL2ksL14oPzpcfSkvaSwvXig/OjopL2ksL14oPzppZFxiKS9pLC9eKD86dGV4dFxiKS9pLC9eKD86cmlza1xiKS9pLC9eKD86dmVyaWZ5TWV0aG9kXGIpL2ksL14oPzpyZXF1aXJlbWVudFxiKS9pLC9eKD86ZnVuY3Rpb25hbFJlcXVpcmVtZW50XGIpL2ksL14oPzppbnRlcmZhY2VSZXF1aXJlbWVudFxiKS9pLC9eKD86cGVyZm9ybWFuY2VSZXF1aXJlbWVudFxiKS9pLC9eKD86cGh5c2ljYWxSZXF1aXJlbWVudFxiKS9pLC9eKD86ZGVzaWduQ29uc3RyYWludFxiKS9pLC9eKD86bG93XGIpL2ksL14oPzptZWRpdW1cYikvaSwvXig/OmhpZ2hcYikvaSwvXig/OmFuYWx5c2lzXGIpL2ksL14oPzpkZW1vbnN0cmF0aW9uXGIpL2ksL14oPzppbnNwZWN0aW9uXGIpL2ksL14oPzp0ZXN0XGIpL2ksL14oPzplbGVtZW50XGIpL2ksL14oPzpjb250YWluc1xiKS9pLC9eKD86Y29waWVzXGIpL2ksL14oPzpkZXJpdmVzXGIpL2ksL14oPzpzYXRpc2ZpZXNcYikvaSwvXig/OnZlcmlmaWVzXGIpL2ksL14oPzpyZWZpbmVzXGIpL2ksL14oPzp0cmFjZXNcYikvaSwvXig/OnR5cGVcYikvaSwvXig/OmRvY3JlZlxiKS9pLC9eKD86PC0pL2ksL14oPzotPikvaSwvXig/Oi0pL2ksL14oPzpbIl0pL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/Oltcd11bXlxyXG5ce1w8XD5cLVw9XSopL2ldLGNvbmRpdGlvbnM6e2Nsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSx1bnFTdHJpbmc6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sdG9rZW46e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sc3RyaW5nOntydWxlczpbNDUsNDZdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ3XSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gaigpe3RoaXMueXk9e319cmV0dXJuIEYubGV4ZXI9UCxqLnByb3RvdHlwZT1GLEYuUGFyc2VyPWosbmV3IGp9KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9big4ODAwKS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDY4NzY6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDJdLG49WzEsM10scj1bMSw1XSxpPVsxLDddLGE9WzIsNV0sbz1bMSwxNV0scz1bMSwxN10sYz1bMSwxOF0sdT1bMSwxOV0sbD1bMSwyMV0saD1bMSwyMl0sZj1bMSwyM10sZD1bMSwyOV0scD1bMSwzMF0seT1bMSwzMV0sZz1bMSwzMl0sbT1bMSwzM10sdj1bMSwzNF0sYj1bMSwzN10sXz1bMSwzOF0seD1bMSwzOV0sdz1bMSw0MF0saz1bMSw0MV0sVD1bMSw0Ml0sRT1bMSw0NV0sQz1bMSw0LDUsMTYsMjAsMjIsMjMsMjQsMzAsMzIsMzMsMzQsMzUsMzYsMzgsNDAsNDEsNDIsNDYsNDcsNDgsNDksNTcsNjddLFM9WzEsNThdLEE9WzQsNSwxNiwyMCwyMiwyMywyNCwzMCwzMiwzMywzNCwzNSwzNiwzOCw0Miw0Niw0Nyw0OCw0OSw1Nyw2N10sTT1bNCw1LDE2LDIwLDIyLDIzLDI0LDMwLDMyLDMzLDM0LDM1LDM2LDM4LDQxLDQyLDQ2LDQ3LDQ4LDQ5LDU3LDY3XSxOPVs0LDUsMTYsMjAsMjIsMjMsMjQsMzAsMzIsMzMsMzQsMzUsMzYsMzgsNDAsNDIsNDYsNDcsNDgsNDksNTcsNjddLEQ9WzU1LDU2LDU3XSxPPVsxLDQsNSw3LDE2LDIwLDIyLDIzLDI0LDMwLDMyLDMzLDM0LDM1LDM2LDM4LDQwLDQxLDQyLDQ2LDQ3LDQ4LDQ5LDU3LDY3XSxCPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxTUEFDRTo0LE5FV0xJTkU6NSxkaXJlY3RpdmU6NixTRDo3LGRvY3VtZW50OjgsbGluZTo5LHN0YXRlbWVudDoxMCxvcGVuRGlyZWN0aXZlOjExLHR5cGVEaXJlY3RpdmU6MTIsY2xvc2VEaXJlY3RpdmU6MTMsIjoiOjE0LGFyZ0RpcmVjdGl2ZToxNSxwYXJ0aWNpcGFudDoxNixhY3RvcjoxNyxBUzoxOCxyZXN0T2ZMaW5lOjE5LHBhcnRpY2lwYW50X2FjdG9yOjIwLHNpZ25hbDoyMSxhdXRvbnVtYmVyOjIyLGFjdGl2YXRlOjIzLGRlYWN0aXZhdGU6MjQsbm90ZV9zdGF0ZW1lbnQ6MjUsbGlua3Nfc3RhdGVtZW50OjI2LGxpbmtfc3RhdGVtZW50OjI3LHByb3BlcnRpZXNfc3RhdGVtZW50OjI4LGRldGFpbHNfc3RhdGVtZW50OjI5LHRpdGxlOjMwLHRleHQyOjMxLGxvb3A6MzIsZW5kOjMzLHJlY3Q6MzQsb3B0OjM1LGFsdDozNixlbHNlX3NlY3Rpb25zOjM3LHBhcjozOCxwYXJfc2VjdGlvbnM6MzksYW5kOjQwLGVsc2U6NDEsbm90ZTo0MixwbGFjZW1lbnQ6NDMsb3Zlcjo0NCxhY3Rvcl9wYWlyOjQ1LGxpbmtzOjQ2LGxpbms6NDcscHJvcGVydGllczo0OCxkZXRhaWxzOjQ5LHNwYWNlTGlzdDo1MCwiLCI6NTEsbGVmdF9vZjo1MixyaWdodF9vZjo1MyxzaWduYWx0eXBlOjU0LCIrIjo1NSwiLSI6NTYsQUNUT1I6NTcsU09MSURfT1BFTl9BUlJPVzo1OCxET1RURURfT1BFTl9BUlJPVzo1OSxTT0xJRF9BUlJPVzo2MCxET1RURURfQVJST1c6NjEsU09MSURfQ1JPU1M6NjIsRE9UVEVEX0NST1NTOjYzLFNPTElEX1BPSU5UOjY0LERPVFRFRF9QT0lOVDo2NSxUWFQ6NjYsb3Blbl9kaXJlY3RpdmU6NjcsdHlwZV9kaXJlY3RpdmU6NjgsYXJnX2RpcmVjdGl2ZTo2OSxjbG9zZV9kaXJlY3RpdmU6NzAsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6IlNQQUNFIiw1OiJORVdMSU5FIiw3OiJTRCIsMTQ6IjoiLDE2OiJwYXJ0aWNpcGFudCIsMTg6IkFTIiwxOToicmVzdE9mTGluZSIsMjA6InBhcnRpY2lwYW50X2FjdG9yIiwyMjoiYXV0b251bWJlciIsMjM6ImFjdGl2YXRlIiwyNDoiZGVhY3RpdmF0ZSIsMzA6InRpdGxlIiwzMjoibG9vcCIsMzM6ImVuZCIsMzQ6InJlY3QiLDM1OiJvcHQiLDM2OiJhbHQiLDM4OiJwYXIiLDQwOiJhbmQiLDQxOiJlbHNlIiw0Mjoibm90ZSIsNDQ6Im92ZXIiLDQ2OiJsaW5rcyIsNDc6ImxpbmsiLDQ4OiJwcm9wZXJ0aWVzIiw0OToiZGV0YWlscyIsNTE6IiwiLDUyOiJsZWZ0X29mIiw1MzoicmlnaHRfb2YiLDU1OiIrIiw1NjoiLSIsNTc6IkFDVE9SIiw1ODoiU09MSURfT1BFTl9BUlJPVyIsNTk6IkRPVFRFRF9PUEVOX0FSUk9XIiw2MDoiU09MSURfQVJST1ciLDYxOiJET1RURURfQVJST1ciLDYyOiJTT0xJRF9DUk9TUyIsNjM6IkRPVFRFRF9DUk9TUyIsNjQ6IlNPTElEX1BPSU5UIiw2NToiRE9UVEVEX1BPSU5UIiw2NjoiVFhUIiw2Nzoib3Blbl9kaXJlY3RpdmUiLDY4OiJ0eXBlX2RpcmVjdGl2ZSIsNjk6ImFyZ19kaXJlY3RpdmUiLDcwOiJjbG9zZV9kaXJlY3RpdmUifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzMsMl0sWzMsMl0sWzMsMl0sWzgsMF0sWzgsMl0sWzksMl0sWzksMV0sWzksMV0sWzYsNF0sWzYsNl0sWzEwLDVdLFsxMCwzXSxbMTAsNV0sWzEwLDNdLFsxMCwyXSxbMTAsMV0sWzEwLDNdLFsxMCwzXSxbMTAsMl0sWzEwLDJdLFsxMCwyXSxbMTAsMl0sWzEwLDJdLFsxMCwzXSxbMTAsNF0sWzEwLDRdLFsxMCw0XSxbMTAsNF0sWzEwLDRdLFsxMCwxXSxbMzksMV0sWzM5LDRdLFszNywxXSxbMzcsNF0sWzI1LDRdLFsyNSw0XSxbMjYsM10sWzI3LDNdLFsyOCwzXSxbMjksM10sWzUwLDJdLFs1MCwxXSxbNDUsM10sWzQ1LDFdLFs0MywxXSxbNDMsMV0sWzIxLDVdLFsyMSw1XSxbMjEsNF0sWzE3LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzMxLDFdLFsxMSwxXSxbMTIsMV0sWzE1LDFdLFsxMywxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDQ6cmV0dXJuIHIuYXBwbHkoYVtzXSksYVtzXTtjYXNlIDU6Y2FzZSA5OnRoaXMuJD1bXTticmVhaztjYXNlIDY6YVtzLTFdLnB1c2goYVtzXSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDc6Y2FzZSA4OmNhc2UgNDU6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAxMjphW3MtM10udHlwZT0iYWRkUGFydGljaXBhbnQiLGFbcy0zXS5kZXNjcmlwdGlvbj1yLnBhcnNlTWVzc2FnZShhW3MtMV0pLHRoaXMuJD1hW3MtM107YnJlYWs7Y2FzZSAxMzphW3MtMV0udHlwZT0iYWRkUGFydGljaXBhbnQiLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAxNDphW3MtM10udHlwZT0iYWRkQWN0b3IiLGFbcy0zXS5kZXNjcmlwdGlvbj1yLnBhcnNlTWVzc2FnZShhW3MtMV0pLHRoaXMuJD1hW3MtM107YnJlYWs7Y2FzZSAxNTphW3MtMV0udHlwZT0iYWRkQWN0b3IiLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAxNzpyLmVuYWJsZVNlcXVlbmNlTnVtYmVycygpO2JyZWFrO2Nhc2UgMTg6dGhpcy4kPXt0eXBlOiJhY3RpdmVTdGFydCIsc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkFDVElWRV9TVEFSVCxhY3RvcjphW3MtMV19O2JyZWFrO2Nhc2UgMTk6dGhpcy4kPXt0eXBlOiJhY3RpdmVFbmQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BQ1RJVkVfRU5ELGFjdG9yOmFbcy0xXX07YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9W3t0eXBlOiJzZXRUaXRsZSIsdGV4dDphW3MtMV19XTticmVhaztjYXNlIDI2OmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJsb29wU3RhcnQiLGxvb3BUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkxPT1BfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToibG9vcEVuZCIsbG9vcFRleHQ6YVtzLTJdLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5MT09QX0VORH0pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAyNzphW3MtMV0udW5zaGlmdCh7dHlwZToicmVjdFN0YXJ0Iixjb2xvcjpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5SRUNUX1NUQVJUfSksYVtzLTFdLnB1c2goe3R5cGU6InJlY3RFbmQiLGNvbG9yOnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLlJFQ1RfRU5EfSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDI4OmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJvcHRTdGFydCIsb3B0VGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5PUFRfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToib3B0RW5kIixvcHRUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLk9QVF9FTkR9KSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgMjk6YVtzLTFdLnVuc2hpZnQoe3R5cGU6ImFsdFN0YXJ0IixhbHRUZXh0OnIucGFyc2VNZXNzYWdlKGFbcy0yXSksc2lnbmFsVHlwZTpyLkxJTkVUWVBFLkFMVF9TVEFSVH0pLGFbcy0xXS5wdXNoKHt0eXBlOiJhbHRFbmQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BTFRfRU5EfSksdGhpcy4kPWFbcy0xXTticmVhaztjYXNlIDMwOmFbcy0xXS51bnNoaWZ0KHt0eXBlOiJwYXJTdGFydCIscGFyVGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMl0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5QQVJfU1RBUlR9KSxhW3MtMV0ucHVzaCh7dHlwZToicGFyRW5kIixzaWduYWxUeXBlOnIuTElORVRZUEUuUEFSX0VORH0pLHRoaXMuJD1hW3MtMV07YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9YVtzLTNdLmNvbmNhdChbe3R5cGU6ImFuZCIscGFyVGV4dDpyLnBhcnNlTWVzc2FnZShhW3MtMV0pLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5QQVJfQU5EfSxhW3NdXSk7YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9YVtzLTNdLmNvbmNhdChbe3R5cGU6ImVsc2UiLGFsdFRleHQ6ci5wYXJzZU1lc3NhZ2UoYVtzLTFdKSxzaWduYWxUeXBlOnIuTElORVRZUEUuQUxUX0VMU0V9LGFbc11dKTticmVhaztjYXNlIDM2OnRoaXMuJD1bYVtzLTFdLHt0eXBlOiJhZGROb3RlIixwbGFjZW1lbnQ6YVtzLTJdLGFjdG9yOmFbcy0xXS5hY3Rvcix0ZXh0OmFbc119XTticmVhaztjYXNlIDM3OmFbcy0yXT1bXS5jb25jYXQoYVtzLTFdLGFbcy0xXSkuc2xpY2UoMCwyKSxhW3MtMl1bMF09YVtzLTJdWzBdLmFjdG9yLGFbcy0yXVsxXT1hW3MtMl1bMV0uYWN0b3IsdGhpcy4kPVthW3MtMV0se3R5cGU6ImFkZE5vdGUiLHBsYWNlbWVudDpyLlBMQUNFTUVOVC5PVkVSLGFjdG9yOmFbcy0yXS5zbGljZSgwLDIpLHRleHQ6YVtzXX1dO2JyZWFrO2Nhc2UgMzg6dGhpcy4kPVthW3MtMV0se3R5cGU6ImFkZExpbmtzIixhY3RvcjphW3MtMV0uYWN0b3IsdGV4dDphW3NdfV07YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9W2Fbcy0xXSx7dHlwZToiYWRkQUxpbmsiLGFjdG9yOmFbcy0xXS5hY3Rvcix0ZXh0OmFbc119XTticmVhaztjYXNlIDQwOnRoaXMuJD1bYVtzLTFdLHt0eXBlOiJhZGRQcm9wZXJ0aWVzIixhY3RvcjphW3MtMV0uYWN0b3IsdGV4dDphW3NdfV07YnJlYWs7Y2FzZSA0MTp0aGlzLiQ9W2Fbcy0xXSx7dHlwZToiYWRkRGV0YWlscyIsYWN0b3I6YVtzLTFdLmFjdG9yLHRleHQ6YVtzXX1dO2JyZWFrO2Nhc2UgNDQ6dGhpcy4kPVthW3MtMl0sYVtzXV07YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9ci5QTEFDRU1FTlQuTEVGVE9GO2JyZWFrO2Nhc2UgNDc6dGhpcy4kPXIuUExBQ0VNRU5ULlJJR0hUT0Y7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9W2Fbcy00XSxhW3MtMV0se3R5cGU6ImFkZE1lc3NhZ2UiLGZyb206YVtzLTRdLmFjdG9yLHRvOmFbcy0xXS5hY3RvcixzaWduYWxUeXBlOmFbcy0zXSxtc2c6YVtzXX0se3R5cGU6ImFjdGl2ZVN0YXJ0IixzaWduYWxUeXBlOnIuTElORVRZUEUuQUNUSVZFX1NUQVJULGFjdG9yOmFbcy0xXX1dO2JyZWFrO2Nhc2UgNDk6dGhpcy4kPVthW3MtNF0sYVtzLTFdLHt0eXBlOiJhZGRNZXNzYWdlIixmcm9tOmFbcy00XS5hY3Rvcix0bzphW3MtMV0uYWN0b3Isc2lnbmFsVHlwZTphW3MtM10sbXNnOmFbc119LHt0eXBlOiJhY3RpdmVFbmQiLHNpZ25hbFR5cGU6ci5MSU5FVFlQRS5BQ1RJVkVfRU5ELGFjdG9yOmFbcy00XX1dO2JyZWFrO2Nhc2UgNTA6dGhpcy4kPVthW3MtM10sYVtzLTFdLHt0eXBlOiJhZGRNZXNzYWdlIixmcm9tOmFbcy0zXS5hY3Rvcix0bzphW3MtMV0uYWN0b3Isc2lnbmFsVHlwZTphW3MtMl0sbXNnOmFbc119XTticmVhaztjYXNlIDUxOnRoaXMuJD17dHlwZToiYWRkUGFydGljaXBhbnQiLGFjdG9yOmFbc119O2JyZWFrO2Nhc2UgNTI6dGhpcy4kPXIuTElORVRZUEUuU09MSURfT1BFTjticmVhaztjYXNlIDUzOnRoaXMuJD1yLkxJTkVUWVBFLkRPVFRFRF9PUEVOO2JyZWFrO2Nhc2UgNTQ6dGhpcy4kPXIuTElORVRZUEUuU09MSUQ7YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9ci5MSU5FVFlQRS5ET1RURUQ7YnJlYWs7Y2FzZSA1Njp0aGlzLiQ9ci5MSU5FVFlQRS5TT0xJRF9DUk9TUzticmVhaztjYXNlIDU3OnRoaXMuJD1yLkxJTkVUWVBFLkRPVFRFRF9DUk9TUzticmVhaztjYXNlIDU4OnRoaXMuJD1yLkxJTkVUWVBFLlNPTElEX1BPSU5UO2JyZWFrO2Nhc2UgNTk6dGhpcy4kPXIuTElORVRZUEUuRE9UVEVEX1BPSU5UO2JyZWFrO2Nhc2UgNjA6dGhpcy4kPXIucGFyc2VNZXNzYWdlKGFbc10udHJpbSgpLnN1YnN0cmluZygxKSk7YnJlYWs7Y2FzZSA2MTpyLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNjI6ci5wYXJzZURpcmVjdGl2ZShhW3NdLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNjM6YVtzXT1hW3NdLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSxyLnBhcnNlRGlyZWN0aXZlKGFbc10sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDY0OnIucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsInNlcXVlbmNlIil9fSx0YWJsZTpbezM6MSw0OmUsNTpuLDY6NCw3OnIsMTE6Niw2NzppfSx7MTpbM119LHszOjgsNDplLDU6biw2OjQsNzpyLDExOjYsNjc6aX0sezM6OSw0OmUsNTpuLDY6NCw3OnIsMTE6Niw2NzppfSx7MzoxMCw0OmUsNTpuLDY6NCw3OnIsMTE6Niw2NzppfSx0KFsxLDQsNSwxNiwyMCwyMiwyMywyNCwzMCwzMiwzNCwzNSwzNiwzOCw0Miw0Niw0Nyw0OCw0OSw1Nyw2N10sYSx7ODoxMX0pLHsxMjoxMiw2ODpbMSwxM119LHs2ODpbMiw2MV19LHsxOlsyLDFdfSx7MTpbMiwyXX0sezE6WzIsM119LHsxOlsyLDRdLDQ6byw1OnMsNjozNSw5OjE0LDEwOjE2LDExOjYsMTY6YywxNzozNiwyMDp1LDIxOjIwLDIyOmwsMjM6aCwyNDpmLDI1OjI0LDI2OjI1LDI3OjI2LDI4OjI3LDI5OjI4LDMwOmQsMzI6cCwzNDp5LDM1OmcsMzY6bSwzODp2LDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHsxMzo0MywxNDpbMSw0NF0sNzA6RX0sdChbMTQsNzBdLFsyLDYyXSksdChDLFsyLDZdKSx7NjozNSwxMDo0NiwxMTo2LDE2OmMsMTc6MzYsMjA6dSwyMToyMCwyMjpsLDIzOmgsMjQ6ZiwyNToyNCwyNjoyNSwyNzoyNiwyODoyNywyOToyOCwzMDpkLDMyOnAsMzQ6eSwzNTpnLDM2Om0sMzg6diw0MjpiLDQ2Ol8sNDc6eCw0ODp3LDQ5OmssNTc6VCw2NzppfSx0KEMsWzIsOF0pLHQoQyxbMiw5XSksezE3OjQ3LDU3OlR9LHsxNzo0OCw1NzpUfSx7NTpbMSw0OV19LHQoQyxbMiwxN10pLHsxNzo1MCw1NzpUfSx7MTc6NTEsNTc6VH0sezU6WzEsNTJdfSx7NTpbMSw1M119LHs1OlsxLDU0XX0sezU6WzEsNTVdfSx7NTpbMSw1Nl19LHszMTo1Nyw2NjpTfSx7MTk6WzEsNTldfSx7MTk6WzEsNjBdfSx7MTk6WzEsNjFdfSx7MTk6WzEsNjJdfSx7MTk6WzEsNjNdfSx0KEMsWzIsMzFdKSx7NTQ6NjQsNTg6WzEsNjVdLDU5OlsxLDY2XSw2MDpbMSw2N10sNjE6WzEsNjhdLDYyOlsxLDY5XSw2MzpbMSw3MF0sNjQ6WzEsNzFdLDY1OlsxLDcyXX0sezQzOjczLDQ0OlsxLDc0XSw1MjpbMSw3NV0sNTM6WzEsNzZdfSx7MTc6NzcsNTc6VH0sezE3Ojc4LDU3OlR9LHsxNzo3OSw1NzpUfSx7MTc6ODAsNTc6VH0sdChbNSwxOCw1MSw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Nl0sWzIsNTFdKSx7NTpbMSw4MV19LHsxNTo4Miw2OTpbMSw4M119LHs1OlsyLDY0XX0sdChDLFsyLDddKSx7NTpbMSw4NV0sMTg6WzEsODRdfSx7NTpbMSw4N10sMTg6WzEsODZdfSx0KEMsWzIsMTZdKSx7NTpbMSw4OF19LHs1OlsxLDg5XX0sdChDLFsyLDIwXSksdChDLFsyLDIxXSksdChDLFsyLDIyXSksdChDLFsyLDIzXSksdChDLFsyLDI0XSksezU6WzEsOTBdfSx7NTpbMiw2MF19LHQoQSxhLHs4OjkxfSksdChBLGEsezg6OTJ9KSx0KEEsYSx7ODo5M30pLHQoTSxhLHszNzo5NCw4Ojk1fSksdChOLGEsezM5Ojk2LDg6OTd9KSx7MTc6MTAwLDU1OlsxLDk4XSw1NjpbMSw5OV0sNTc6VH0sdChELFsyLDUyXSksdChELFsyLDUzXSksdChELFsyLDU0XSksdChELFsyLDU1XSksdChELFsyLDU2XSksdChELFsyLDU3XSksdChELFsyLDU4XSksdChELFsyLDU5XSksezE3OjEwMSw1NzpUfSx7MTc6MTAzLDQ1OjEwMiw1NzpUfSx7NTc6WzIsNDZdfSx7NTc6WzIsNDddfSx7MzE6MTA0LDY2OlN9LHszMToxMDUsNjY6U30sezMxOjEwNiw2NjpTfSx7MzE6MTA3LDY2OlN9LHQoTyxbMiwxMF0pLHsxMzoxMDgsNzA6RX0sezcwOlsyLDYzXX0sezE5OlsxLDEwOV19LHQoQyxbMiwxM10pLHsxOTpbMSwxMTBdfSx0KEMsWzIsMTVdKSx0KEMsWzIsMThdKSx0KEMsWzIsMTldKSx0KEMsWzIsMjVdKSx7NDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDMzOlsxLDExMV0sMzQ6eSwzNTpnLDM2Om0sMzg6diw0MjpiLDQ2Ol8sNDc6eCw0ODp3LDQ5OmssNTc6VCw2NzppfSx7NDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDMzOlsxLDExMl0sMzQ6eSwzNTpnLDM2Om0sMzg6diw0MjpiLDQ2Ol8sNDc6eCw0ODp3LDQ5OmssNTc6VCw2NzppfSx7NDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDMzOlsxLDExM10sMzQ6eSwzNTpnLDM2Om0sMzg6diw0MjpiLDQ2Ol8sNDc6eCw0ODp3LDQ5OmssNTc6VCw2NzppfSx7MzM6WzEsMTE0XX0sezQ6byw1OnMsNjozNSw5OjE0LDEwOjE2LDExOjYsMTY6YywxNzozNiwyMDp1LDIxOjIwLDIyOmwsMjM6aCwyNDpmLDI1OjI0LDI2OjI1LDI3OjI2LDI4OjI3LDI5OjI4LDMwOmQsMzI6cCwzMzpbMiwzNF0sMzQ6eSwzNTpnLDM2Om0sMzg6diw0MTpbMSwxMTVdLDQyOmIsNDY6Xyw0Nzp4LDQ4OncsNDk6ayw1NzpULDY3Oml9LHszMzpbMSwxMTZdfSx7NDpvLDU6cyw2OjM1LDk6MTQsMTA6MTYsMTE6NiwxNjpjLDE3OjM2LDIwOnUsMjE6MjAsMjI6bCwyMzpoLDI0OmYsMjU6MjQsMjY6MjUsMjc6MjYsMjg6MjcsMjk6MjgsMzA6ZCwzMjpwLDMzOlsyLDMyXSwzNDp5LDM1OmcsMzY6bSwzODp2LDQwOlsxLDExN10sNDI6Yiw0NjpfLDQ3OngsNDg6dyw0OTprLDU3OlQsNjc6aX0sezE3OjExOCw1NzpUfSx7MTc6MTE5LDU3OlR9LHszMToxMjAsNjY6U30sezMxOjEyMSw2NjpTfSx7MzE6MTIyLDY2OlN9LHs1MTpbMSwxMjNdLDY2OlsyLDQ1XX0sezU6WzIsMzhdfSx7NTpbMiwzOV19LHs1OlsyLDQwXX0sezU6WzIsNDFdfSx7NTpbMSwxMjRdfSx7NTpbMSwxMjVdfSx7NTpbMSwxMjZdfSx0KEMsWzIsMjZdKSx0KEMsWzIsMjddKSx0KEMsWzIsMjhdKSx0KEMsWzIsMjldKSx7MTk6WzEsMTI3XX0sdChDLFsyLDMwXSksezE5OlsxLDEyOF19LHszMToxMjksNjY6U30sezMxOjEzMCw2NjpTfSx7NTpbMiw1MF19LHs1OlsyLDM2XX0sezU6WzIsMzddfSx7MTc6MTMxLDU3OlR9LHQoTyxbMiwxMV0pLHQoQyxbMiwxMl0pLHQoQyxbMiwxNF0pLHQoTSxhLHs4Ojk1LDM3OjEzMn0pLHQoTixhLHs4Ojk3LDM5OjEzM30pLHs1OlsyLDQ4XX0sezU6WzIsNDldfSx7NjY6WzIsNDRdfSx7MzM6WzIsMzVdfSx7MzM6WzIsMzNdfV0sZGVmYXVsdEFjdGlvbnM6ezc6WzIsNjFdLDg6WzIsMV0sOTpbMiwyXSwxMDpbMiwzXSw0NTpbMiw2NF0sNTg6WzIsNjBdLDc1OlsyLDQ2XSw3NjpbMiw0N10sODM6WzIsNjNdLDEwNDpbMiwzOF0sMTA1OlsyLDM5XSwxMDY6WzIsNDBdLDEwNzpbMiw0MV0sMTIwOlsyLDUwXSwxMjE6WzIsMzZdLDEyMjpbMiwzN10sMTI5OlsyLDQ4XSwxMzA6WzIsNDldLDEzMTpbMiw0NF0sMTMyOlsyLDM1XSwxMzM6WzIsMzNdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIWUucmVjb3ZlcmFibGUpe3ZhciBuPW5ldyBFcnJvcih0KTt0aHJvdyBuLmhhc2g9ZSxufXRoaXMudHJhY2UodCl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bMF0scj1bXSxpPVtudWxsXSxhPVtdLG89dGhpcy50YWJsZSxzPSIiLGM9MCx1PTAsbD0wLGg9MixmPTEsZD1hLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHA9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSx5PXt5eTp7fX07Zm9yKHZhciBnIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksZykmJih5Lnl5W2ddPXRoaXMueXlbZ10pO3Auc2V0SW5wdXQodCx5Lnl5KSx5Lnl5LmxleGVyPXAseS55eS5wYXJzZXI9dGhpcyx2b2lkIDA9PT1wLnl5bGxvYyYmKHAueXlsbG9jPXt9KTt2YXIgbT1wLnl5bGxvYzthLnB1c2gobSk7dmFyIHY9cC5vcHRpb25zJiZwLm9wdGlvbnMucmFuZ2VzO2Z1bmN0aW9uIGIoKXt2YXIgdDtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mKHQ9ci5wb3AoKXx8cC5sZXgoKXx8ZikmJih0IGluc3RhbmNlb2YgQXJyYXkmJih0PShyPXQpLnBvcCgpKSx0PWUuc3ltYm9sc19bdF18fHQpLHR9ImZ1bmN0aW9uIj09dHlwZW9mIHkueXkucGFyc2VFcnJvcj90aGlzLnBhcnNlRXJyb3I9eS55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmb3IodmFyIF8seCx3LGssVCxFLEMsUyxBLE09e307Oyl7aWYodz1uW24ubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbd10/az10aGlzLmRlZmF1bHRBY3Rpb25zW3ddOihudWxsPT1fJiYoXz1iKCkpLGs9b1t3XSYmb1t3XVtfXSksdm9pZCAwPT09a3x8IWsubGVuZ3RofHwha1swXSl7dmFyIE49IiI7Zm9yKEUgaW4gQT1bXSxvW3ddKXRoaXMudGVybWluYWxzX1tFXSYmRT5oJiZBLnB1c2goIiciK3RoaXMudGVybWluYWxzX1tFXSsiJyIpO049cC5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOlxuIitwLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK0Euam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tfXXx8XykrIiciOiJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjogVW5leHBlY3RlZCAiKyhfPT1mPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyIpLHRoaXMucGFyc2VFcnJvcihOLHt0ZXh0OnAubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW19dfHxfLGxpbmU6cC55eWxpbmVubyxsb2M6bSxleHBlY3RlZDpBfSl9aWYoa1swXWluc3RhbmNlb2YgQXJyYXkmJmsubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIit3KyIsIHRva2VuOiAiK18pO3N3aXRjaChrWzBdKXtjYXNlIDE6bi5wdXNoKF8pLGkucHVzaChwLnl5dGV4dCksYS5wdXNoKHAueXlsbG9jKSxuLnB1c2goa1sxXSksXz1udWxsLHg/KF89eCx4PW51bGwpOih1PXAueXlsZW5nLHM9cC55eXRleHQsYz1wLnl5bGluZW5vLG09cC55eWxsb2MsbD4wJiZsLS0pO2JyZWFrO2Nhc2UgMjppZihDPXRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzFdLE0uJD1pW2kubGVuZ3RoLUNdLE0uXyQ9e2ZpcnN0X2xpbmU6YVthLmxlbmd0aC0oQ3x8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmFbYS5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOmFbYS5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LHYmJihNLl8kLnJhbmdlPVthW2EubGVuZ3RoLShDfHwxKV0ucmFuZ2VbMF0sYVthLmxlbmd0aC0xXS5yYW5nZVsxXV0pLHZvaWQgMCE9PShUPXRoaXMucGVyZm9ybUFjdGlvbi5hcHBseShNLFtzLHUsYyx5Lnl5LGtbMV0saSxhXS5jb25jYXQoZCkpKSlyZXR1cm4gVDtDJiYobj1uLnNsaWNlKDAsLTEqQyoyKSxpPWkuc2xpY2UoMCwtMSpDKSxhPWEuc2xpY2UoMCwtMSpDKSksbi5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2tbMV1dWzBdKSxpLnB1c2goTS4kKSxhLnB1c2goTS5fJCksUz1vW25bbi5sZW5ndGgtMl1dW25bbi5sZW5ndGgtMV1dLG4ucHVzaChTKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0sTD17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnl5LnBhcnNlcil0aHJvdyBuZXcgRXJyb3IodCk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcih0LGUpfSxzZXRJbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnl5PWV8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PXQsdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW5wdXRbMF07cmV0dXJuIHRoaXMueXl0ZXh0Kz10LHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz10LHRoaXMubWF0Y2hlZCs9dCx0Lm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksdH0sdW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbj10LnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9dCt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtZSksdGhpcy5vZmZzZXQtPWU7dmFyIHI9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksbi5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPW4ubGVuZ3RoLTEpO3ZhciBpPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpuPyhuLmxlbmd0aD09PXIubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStyW3IubGVuZ3RoLW4ubGVuZ3RoXS5sZW5ndGgtblswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baVswXSxpWzBdK3RoaXMueXlsZW5nLWVdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyPyh0aGlzLl9iYWNrdHJhY2s9ITAsdGhpcyk6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGVzczpmdW5jdGlvbih0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UodCkpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSt0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaDtyZXR1cm4gdC5sZW5ndGg8MjAmJih0Kz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC10Lmxlbmd0aCkpLCh0LnN1YnN0cigwLDIwKSsodC5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXN0SW5wdXQoKSxlPW5ldyBBcnJheSh0Lmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHQrdGhpcy51cGNvbWluZ0lucHV0KCkrIlxuIitlKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoaT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihpLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLChyPXRbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpKSYmKHRoaXMueXlsaW5lbm8rPXIubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46cj9yW3IubGVuZ3RoLTFdLmxlbmd0aC1yW3IubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rdFswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz10WzBdLHRoaXMubWF0Y2grPXRbMF0sdGhpcy5tYXRjaGVzPXQsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UodFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9dFswXSxuPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLGUsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksbilyZXR1cm4gbjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgYSBpbiBpKXRoaXNbYV09aVthXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dmFyIHQsZSxuLHI7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApLHRoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGk9dGhpcy5fY3VycmVudFJ1bGVzKCksYT0wO2E8aS5sZW5ndGg7YSsrKWlmKChuPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbaVthXV0pKSYmKCFlfHxuWzBdLmxlbmd0aD5lWzBdLmxlbmd0aCkpe2lmKGU9bixyPWEsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoITEhPT0odD10aGlzLnRlc3RfbWF0Y2gobixpW2FdKSkpcmV0dXJuIHQ7aWYodGhpcy5fYmFja3RyYWNrKXtlPSExO2NvbnRpbnVlfXJldHVybiExfWlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gZT8hMSE9PSh0PXRoaXMudGVzdF9tYXRjaChlLGlbcl0pKSYmdDoiIj09PXRoaXMuX2lucHV0P3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gVW5yZWNvZ25pemVkIHRleHQuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dCgpfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbih0KXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2godCl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKHR8fDApKT49MD90aGlzLmNvbmRpdGlvblN0YWNrW3RdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYmVnaW4odCl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSw2NztjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksNjg7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDE0O2Nhc2UgMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSw3MDtjYXNlIDQ6cmV0dXJuIDY5O2Nhc2UgNTpjYXNlIDM5OmNhc2UgNTI6cmV0dXJuIDU7Y2FzZSA2OmNhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6YnJlYWs7Y2FzZSAxMTpyZXR1cm4gdGhpcy5iZWdpbigiSUQiKSwxNjtjYXNlIDEyOnJldHVybiB0aGlzLmJlZ2luKCJJRCIpLDIwO2Nhc2UgMTM6cmV0dXJuIGUueXl0ZXh0PWUueXl0ZXh0LnRyaW0oKSx0aGlzLmJlZ2luKCJBTElBUyIpLDU3O2Nhc2UgMTQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiTElORSIpLDE4O2Nhc2UgMTU6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksNTtjYXNlIDE2OnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksMzI7Y2FzZSAxNzpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDM0O2Nhc2UgMTg6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSwzNTtjYXNlIDE5OnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksMzY7Y2FzZSAyMDpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDQxO2Nhc2UgMjE6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSwzODtjYXNlIDIyOnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksNDA7Y2FzZSAyMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE5O2Nhc2UgMjQ6cmV0dXJuIDMzO2Nhc2UgMjU6cmV0dXJuIDUyO2Nhc2UgMjY6cmV0dXJuIDUzO2Nhc2UgMjc6cmV0dXJuIDQ2O2Nhc2UgMjg6cmV0dXJuIDQ3O2Nhc2UgMjk6cmV0dXJuIDQ4O2Nhc2UgMzA6cmV0dXJuIDQ5O2Nhc2UgMzE6cmV0dXJuIDQ0O2Nhc2UgMzI6cmV0dXJuIDQyO2Nhc2UgMzM6cmV0dXJuIHRoaXMuYmVnaW4oIklEIiksMjM7Y2FzZSAzNDpyZXR1cm4gdGhpcy5iZWdpbigiSUQiKSwyNDtjYXNlIDM1OnJldHVybiAzMDtjYXNlIDM2OnJldHVybiA3O2Nhc2UgMzc6cmV0dXJuIDIyO2Nhc2UgMzg6cmV0dXJuIDUxO2Nhc2UgNDA6cmV0dXJuIGUueXl0ZXh0PWUueXl0ZXh0LnRyaW0oKSw1NztjYXNlIDQxOnJldHVybiA2MDtjYXNlIDQyOnJldHVybiA2MTtjYXNlIDQzOnJldHVybiA1ODtjYXNlIDQ0OnJldHVybiA1OTtjYXNlIDQ1OnJldHVybiA2MjtjYXNlIDQ2OnJldHVybiA2MztjYXNlIDQ3OnJldHVybiA2NDtjYXNlIDQ4OnJldHVybiA2NTtjYXNlIDQ5OnJldHVybiA2NjtjYXNlIDUwOnJldHVybiA1NTtjYXNlIDUxOnJldHVybiA1NjtjYXNlIDUzOnJldHVybiJJTlZBTElEIn19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/Oltcbl0rKS9pLC9eKD86XHMrKS9pLC9eKD86KCg/IVxuKVxzKSspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpwYXJ0aWNpcGFudFxiKS9pLC9eKD86YWN0b3JcYikvaSwvXig/OlteXC0+OlxuLDtdKz8oPz0oKD8hXG4pXHMpK2FzKD8hXG4pXHN8WyNcbjtdfCQpKS9pLC9eKD86YXNcYikvaSwvXig/Oig/OikpL2ksL14oPzpsb29wXGIpL2ksL14oPzpyZWN0XGIpL2ksL14oPzpvcHRcYikvaSwvXig/OmFsdFxiKS9pLC9eKD86ZWxzZVxiKS9pLC9eKD86cGFyXGIpL2ksL14oPzphbmRcYikvaSwvXig/Oig/Ols6XT8oPzpubyk/d3JhcCk/W14jXG47XSopL2ksL14oPzplbmRcYikvaSwvXig/OmxlZnQgb2ZcYikvaSwvXig/OnJpZ2h0IG9mXGIpL2ksL14oPzpsaW5rc1xiKS9pLC9eKD86bGlua1xiKS9pLC9eKD86cHJvcGVydGllc1xiKS9pLC9eKD86ZGV0YWlsc1xiKS9pLC9eKD86b3ZlclxiKS9pLC9eKD86bm90ZVxiKS9pLC9eKD86YWN0aXZhdGVcYikvaSwvXig/OmRlYWN0aXZhdGVcYikvaSwvXig/OnRpdGxlXGIpL2ksL14oPzpzZXF1ZW5jZURpYWdyYW1cYikvaSwvXig/OmF1dG9udW1iZXJcYikvaSwvXig/OiwpL2ksL14oPzo7KS9pLC9eKD86W15cK1wtPjpcbiw7XSsoKD8hKC14fC0teHwtXCl8LS1cKSkpW1wtXSpbXlwrXC0+OlxuLDtdKykqKS9pLC9eKD86LT4+KS9pLC9eKD86LS0+PikvaSwvXig/Oi0+KS9pLC9eKD86LS0+KS9pLC9eKD86LVt4XSkvaSwvXig/Oi0tW3hdKS9pLC9eKD86LVtcKV0pL2ksL14oPzotLVtcKV0pL2ksL14oPzo6KD86KD86bm8pP3dyYXApP1teI1xuO10rKS9pLC9eKD86XCspL2ksL14oPzotKS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e29wZW5fZGlyZWN0aXZlOntydWxlczpbMSw4XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzLDhdLGluY2x1c2l2ZTohMX0sYXJnX2RpcmVjdGl2ZTp7cnVsZXM6WzMsNCw4XSxpbmNsdXNpdmU6ITF9LElEOntydWxlczpbNyw4LDEzXSxpbmNsdXNpdmU6ITF9LEFMSUFTOntydWxlczpbNyw4LDE0LDE1XSxpbmNsdXNpdmU6ITF9LExJTkU6e3J1bGVzOls3LDgsMjNdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw2LDgsOSwxMCwxMSwxMiwxNiwxNywxOCwxOSwyMCwyMSwyMiwyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1M10saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIEkoKXt0aGlzLnl5PXt9fXJldHVybiBCLmxleGVyPUwsSS5wcm90b3R5cGU9QixCLlBhcnNlcj1JLG5ldyBJfSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oMTk5MykucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSwzNTg0Oih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKG49bnx8e30scj10Lmxlbmd0aDtyLS07blt0W3JdXT1lKTtyZXR1cm4gbn0sZT1bMSwyXSxuPVsxLDNdLHI9WzEsNV0saT1bMSw3XSxhPVsyLDVdLG89WzEsMTVdLHM9WzEsMTddLGM9WzEsMTldLHU9WzEsMjBdLGw9WzEsMjFdLGg9WzEsMjJdLGY9WzEsMzBdLGQ9WzEsMjNdLHA9WzEsMjRdLHk9WzEsMjVdLGc9WzEsMjZdLG09WzEsMjddLHY9WzEsMzJdLGI9WzEsMzNdLF89WzEsMzRdLHg9WzEsMzVdLHc9WzEsMzFdLGs9WzEsMzhdLFQ9WzEsNCw1LDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDM2LDM3LDM4LDM5LDQyLDQ1XSxFPVsxLDQsNSwxMiwxMywxNCwxNSwxNywxOSwyMCwyMiwyMywyNCwyNSwyNiwyNywzNiwzNywzOCwzOSw0Miw0NV0sQz1bMSw0LDUsNywxNCwxNSwxNywxOSwyMCwyMiwyMywyNCwyNSwyNiwyNywzNiwzNywzOCwzOSw0Miw0NV0sUz1bNCw1LDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDM2LDM3LDM4LDM5LDQyLDQ1XSxBPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxTUEFDRTo0LE5MOjUsZGlyZWN0aXZlOjYsU0Q6Nyxkb2N1bWVudDo4LGxpbmU6OSxzdGF0ZW1lbnQ6MTAsaWRTdGF0ZW1lbnQ6MTEsREVTQ1I6MTIsIi0tXHgzZSI6MTMsSElERV9FTVBUWToxNCxzY2FsZToxNSxXSURUSDoxNixDT01QT1NJVF9TVEFURToxNyxTVFJVQ1RfU1RBUlQ6MTgsU1RSVUNUX1NUT1A6MTksU1RBVEVfREVTQ1I6MjAsQVM6MjEsSUQ6MjIsRk9SSzoyMyxKT0lOOjI0LENIT0lDRToyNSxDT05DVVJSRU5UOjI2LG5vdGU6Mjcsbm90ZVBvc2l0aW9uOjI4LE5PVEVfVEVYVDoyOSxkaXJlY3Rpb246MzAsb3BlbkRpcmVjdGl2ZTozMSx0eXBlRGlyZWN0aXZlOjMyLGNsb3NlRGlyZWN0aXZlOjMzLCI6IjozNCxhcmdEaXJlY3RpdmU6MzUsZGlyZWN0aW9uX3RiOjM2LGRpcmVjdGlvbl9idDozNyxkaXJlY3Rpb25fcmw6MzgsZGlyZWN0aW9uX2xyOjM5LGVvbDo0MCwiOyI6NDEsRURHRV9TVEFURTo0MixsZWZ0X29mOjQzLHJpZ2h0X29mOjQ0LG9wZW5fZGlyZWN0aXZlOjQ1LHR5cGVfZGlyZWN0aXZlOjQ2LGFyZ19kaXJlY3RpdmU6NDcsY2xvc2VfZGlyZWN0aXZlOjQ4LCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJTUEFDRSIsNToiTkwiLDc6IlNEIiwxMjoiREVTQ1IiLDEzOiItLVx4M2UiLDE0OiJISURFX0VNUFRZIiwxNToic2NhbGUiLDE2OiJXSURUSCIsMTc6IkNPTVBPU0lUX1NUQVRFIiwxODoiU1RSVUNUX1NUQVJUIiwxOToiU1RSVUNUX1NUT1AiLDIwOiJTVEFURV9ERVNDUiIsMjE6IkFTIiwyMjoiSUQiLDIzOiJGT1JLIiwyNDoiSk9JTiIsMjU6IkNIT0lDRSIsMjY6IkNPTkNVUlJFTlQiLDI3OiJub3RlIiwyOToiTk9URV9URVhUIiwzNDoiOiIsMzY6ImRpcmVjdGlvbl90YiIsMzc6ImRpcmVjdGlvbl9idCIsMzg6ImRpcmVjdGlvbl9ybCIsMzk6ImRpcmVjdGlvbl9sciIsNDE6IjsiLDQyOiJFREdFX1NUQVRFIiw0MzoibGVmdF9vZiIsNDQ6InJpZ2h0X29mIiw0NToib3Blbl9kaXJlY3RpdmUiLDQ2OiJ0eXBlX2RpcmVjdGl2ZSIsNDc6ImFyZ19kaXJlY3RpdmUiLDQ4OiJjbG9zZV9kaXJlY3RpdmUifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzMsMl0sWzMsMl0sWzMsMl0sWzgsMF0sWzgsMl0sWzksMl0sWzksMV0sWzksMV0sWzEwLDFdLFsxMCwyXSxbMTAsM10sWzEwLDRdLFsxMCwxXSxbMTAsMl0sWzEwLDFdLFsxMCw0XSxbMTAsM10sWzEwLDZdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsNF0sWzEwLDRdLFsxMCwxXSxbMTAsMV0sWzYsM10sWzYsNV0sWzMwLDFdLFszMCwxXSxbMzAsMV0sWzMwLDFdLFs0MCwxXSxbNDAsMV0sWzExLDFdLFsxMSwxXSxbMjgsMV0sWzI4LDFdLFszMSwxXSxbMzIsMV0sWzM1LDFdLFszMywxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcz1hLmxlbmd0aC0xO3N3aXRjaChpKXtjYXNlIDQ6cmV0dXJuIHIuc2V0Um9vdERvYyhhW3NdKSxhW3NdO2Nhc2UgNTp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2OiJubCIhPWFbc10mJihhW3MtMV0ucHVzaChhW3NdKSx0aGlzLiQ9YVtzLTFdKTticmVhaztjYXNlIDc6Y2FzZSA4OmNhc2UgMzY6Y2FzZSAzNzp0aGlzLiQ9YVtzXTticmVhaztjYXNlIDk6dGhpcy4kPSJubCI7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDphW3NdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIifTticmVhaztjYXNlIDExOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbcy0xXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjpyLnRyaW1Db2xvbihhW3NdKX07YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9e3N0bXQ6InJlbGF0aW9uIixzdGF0ZTE6e3N0bXQ6InN0YXRlIixpZDphW3MtMl0sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9LHN0YXRlMjp7c3RtdDoic3RhdGUiLGlkOmFbc10sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9fTticmVhaztjYXNlIDEzOnRoaXMuJD17c3RtdDoicmVsYXRpb24iLHN0YXRlMTp7c3RtdDoic3RhdGUiLGlkOmFbcy0zXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiIn0sc3RhdGUyOntzdG10OiJzdGF0ZSIsaWQ6YVtzLTFdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIifSxkZXNjcmlwdGlvbjphW3NdLnN1YnN0cigxKS50cmltKCl9O2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6YVtzLTNdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIiLGRvYzphW3MtMV19O2JyZWFrO2Nhc2UgMTg6dmFyIGM9YVtzXSx1PWFbcy0yXS50cmltKCk7aWYoYVtzXS5tYXRjaCgiOiIpKXt2YXIgbD1hW3NdLnNwbGl0KCI6Iik7Yz1sWzBdLHU9W3UsbFsxXV19dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6Yyx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjp1fTticmVhaztjYXNlIDE5OnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbcy0zXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjphW3MtNV0sZG9jOmFbcy0xXX07YnJlYWs7Y2FzZSAyMDp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDphW3NdLHR5cGU6ImZvcmsifTticmVhaztjYXNlIDIxOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmFbc10sdHlwZToiam9pbiJ9O2JyZWFrO2Nhc2UgMjI6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6YVtzXSx0eXBlOiJjaG9pY2UifTticmVhaztjYXNlIDIzOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOnIuZ2V0RGl2aWRlcklkKCksdHlwZToiZGl2aWRlciJ9O2JyZWFrO2Nhc2UgMjQ6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6YVtzLTFdLnRyaW0oKSxub3RlOntwb3NpdGlvbjphW3MtMl0udHJpbSgpLHRleHQ6YVtzXS50cmltKCl9fTticmVhaztjYXNlIDMwOnIuc2V0RGlyZWN0aW9uKCJUQiIpLHRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiVEIifTticmVhaztjYXNlIDMxOnIuc2V0RGlyZWN0aW9uKCJCVCIpLHRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiQlQifTticmVhaztjYXNlIDMyOnIuc2V0RGlyZWN0aW9uKCJSTCIpLHRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiUkwifTticmVhaztjYXNlIDMzOnIuc2V0RGlyZWN0aW9uKCJMUiIpLHRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiTFIifTticmVhaztjYXNlIDQwOnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA0MTpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA0MjphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNDM6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwic3RhdGUiKX19LHRhYmxlOlt7MzoxLDQ6ZSw1Om4sNjo0LDc6ciwzMTo2LDQ1Oml9LHsxOlszXX0sezM6OCw0OmUsNTpuLDY6NCw3OnIsMzE6Niw0NTppfSx7Mzo5LDQ6ZSw1Om4sNjo0LDc6ciwzMTo2LDQ1Oml9LHszOjEwLDQ6ZSw1Om4sNjo0LDc6ciwzMTo2LDQ1Oml9LHQoWzEsNCw1LDE0LDE1LDE3LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDM2LDM3LDM4LDM5LDQyLDQ1XSxhLHs4OjExfSksezMyOjEyLDQ2OlsxLDEzXX0sezQ2OlsyLDQwXX0sezE6WzIsMV19LHsxOlsyLDJdfSx7MTpbMiwzXX0sezE6WzIsNF0sNDpvLDU6cyw2OjI4LDk6MTQsMTA6MTYsMTE6MTgsMTQ6YywxNTp1LDE3OmwsMjA6aCwyMjpmLDIzOmQsMjQ6cCwyNTp5LDI2OmcsMjc6bSwzMDoyOSwzMTo2LDM2OnYsMzc6YiwzODpfLDM5OngsNDI6dyw0NTppfSx7MzM6MzYsMzQ6WzEsMzddLDQ4Omt9LHQoWzM0LDQ4XSxbMiw0MV0pLHQoVCxbMiw2XSksezY6MjgsMTA6MzksMTE6MTgsMTQ6YywxNTp1LDE3OmwsMjA6aCwyMjpmLDIzOmQsMjQ6cCwyNTp5LDI2OmcsMjc6bSwzMDoyOSwzMTo2LDM2OnYsMzc6YiwzODpfLDM5OngsNDI6dyw0NTppfSx0KFQsWzIsOF0pLHQoVCxbMiw5XSksdChULFsyLDEwXSx7MTI6WzEsNDBdLDEzOlsxLDQxXX0pLHQoVCxbMiwxNF0pLHsxNjpbMSw0Ml19LHQoVCxbMiwxNl0sezE4OlsxLDQzXX0pLHsyMTpbMSw0NF19LHQoVCxbMiwyMF0pLHQoVCxbMiwyMV0pLHQoVCxbMiwyMl0pLHQoVCxbMiwyM10pLHsyODo0NSwyOTpbMSw0Nl0sNDM6WzEsNDddLDQ0OlsxLDQ4XX0sdChULFsyLDI2XSksdChULFsyLDI3XSksdChFLFsyLDM2XSksdChFLFsyLDM3XSksdChULFsyLDMwXSksdChULFsyLDMxXSksdChULFsyLDMyXSksdChULFsyLDMzXSksdChDLFsyLDI4XSksezM1OjQ5LDQ3OlsxLDUwXX0sdChDLFsyLDQzXSksdChULFsyLDddKSx0KFQsWzIsMTFdKSx7MTE6NTEsMjI6Ziw0Mjp3fSx0KFQsWzIsMTVdKSx0KFMsYSx7ODo1Mn0pLHsyMjpbMSw1M119LHsyMjpbMSw1NF19LHsyMTpbMSw1NV19LHsyMjpbMiwzOF19LHsyMjpbMiwzOV19LHszMzo1Niw0ODprfSx7NDg6WzIsNDJdfSx0KFQsWzIsMTJdLHsxMjpbMSw1N119KSx7NDpvLDU6cyw2OjI4LDk6MTQsMTA6MTYsMTE6MTgsMTQ6YywxNTp1LDE3OmwsMTk6WzEsNThdLDIwOmgsMjI6ZiwyMzpkLDI0OnAsMjU6eSwyNjpnLDI3Om0sMzA6MjksMzE6NiwzNjp2LDM3OmIsMzg6XywzOTp4LDQyOncsNDU6aX0sdChULFsyLDE4XSx7MTg6WzEsNTldfSksezI5OlsxLDYwXX0sezIyOlsxLDYxXX0sdChDLFsyLDI5XSksdChULFsyLDEzXSksdChULFsyLDE3XSksdChTLGEsezg6NjJ9KSx0KFQsWzIsMjRdKSx0KFQsWzIsMjVdKSx7NDpvLDU6cyw2OjI4LDk6MTQsMTA6MTYsMTE6MTgsMTQ6YywxNTp1LDE3OmwsMTk6WzEsNjNdLDIwOmgsMjI6ZiwyMzpkLDI0OnAsMjU6eSwyNjpnLDI3Om0sMzA6MjksMzE6NiwzNjp2LDM3OmIsMzg6XywzOTp4LDQyOncsNDU6aX0sdChULFsyLDE5XSldLGRlZmF1bHRBY3Rpb25zOns3OlsyLDQwXSw4OlsyLDFdLDk6WzIsMl0sMTA6WzIsM10sNDc6WzIsMzhdLDQ4OlsyLDM5XSw1MDpbMiw0Ml19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxNPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOmNhc2UgMjY6cmV0dXJuIDM2O2Nhc2UgMTpjYXNlIDI3OnJldHVybiAzNztjYXNlIDI6Y2FzZSAyODpyZXR1cm4gMzg7Y2FzZSAzOmNhc2UgMjk6cmV0dXJuIDM5O2Nhc2UgNDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSw0NTtjYXNlIDU6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksNDY7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDM0O2Nhc2UgNzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSw0ODtjYXNlIDg6cmV0dXJuIDQ3O2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTI6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAzOTpjYXNlIDQ1OmJyZWFrO2Nhc2UgMTE6Y2FzZSA1OTpyZXR1cm4gNTtjYXNlIDE2OnJldHVybiB0aGlzLnB1c2hTdGF0ZSgiU0NBTEUiKSwxNTtjYXNlIDE3OnJldHVybiAxNjtjYXNlIDE4OmNhc2UgMzM6Y2FzZSAzNjp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxOTp0aGlzLnB1c2hTdGF0ZSgiU1RBVEUiKTticmVhaztjYXNlIDIwOmNhc2UgMjM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSxlLnl5dGV4dD1lLnl5dGV4dC5zbGljZSgwLC04KS50cmltKCksMjM7Y2FzZSAyMTpjYXNlIDI0OnJldHVybiB0aGlzLnBvcFN0YXRlKCksZS55eXRleHQ9ZS55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDI0O2Nhc2UgMjI6Y2FzZSAyNTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLGUueXl0ZXh0PWUueXl0ZXh0LnNsaWNlKDAsLTEwKS50cmltKCksMjU7Y2FzZSAzMDp0aGlzLmJlZ2luKCJTVEFURV9TVFJJTkciKTticmVhaztjYXNlIDMxOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIlNUQVRFX0lEIiksIkFTIjtjYXNlIDMyOmNhc2UgNDc6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiSUQiO2Nhc2UgMzQ6cmV0dXJuIlNUQVRFX0RFU0NSIjtjYXNlIDM1OnJldHVybiAxNztjYXNlIDM3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoInN0cnVjdCIpLDE4O2Nhc2UgMzg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxOTtjYXNlIDQwOnJldHVybiB0aGlzLmJlZ2luKCJOT1RFIiksMjc7Y2FzZSA0MTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX0lEIiksNDM7Y2FzZSA0MjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX0lEIiksNDQ7Y2FzZSA0Mzp0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIkZMT0FUSU5HX05PVEUiKTticmVhaztjYXNlIDQ0OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wdXNoU3RhdGUoIkZMT0FUSU5HX05PVEVfSUQiKSwiQVMiO2Nhc2UgNDY6cmV0dXJuIk5PVEVfVEVYVCI7Y2FzZSA0ODpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX1RFWFQiKSwyMjtjYXNlIDQ5OnJldHVybiB0aGlzLnBvcFN0YXRlKCksZS55eXRleHQ9ZS55eXRleHQuc3Vic3RyKDIpLnRyaW0oKSwyOTtjYXNlIDUwOnJldHVybiB0aGlzLnBvcFN0YXRlKCksZS55eXRleHQ9ZS55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDI5O2Nhc2UgNTE6Y2FzZSA1MjpyZXR1cm4gNztjYXNlIDUzOnJldHVybiAxNDtjYXNlIDU0OnJldHVybiA0MjtjYXNlIDU1OnJldHVybiAyMjtjYXNlIDU2OnJldHVybiBlLnl5dGV4dD1lLnl5dGV4dC50cmltKCksMTI7Y2FzZSA1NzpyZXR1cm4gMTM7Y2FzZSA1ODpyZXR1cm4gMjY7Y2FzZSA2MDpyZXR1cm4iSU5WQUxJRCJ9fSxydWxlczpbL14oPzouKmRpcmVjdGlvblxzK1RCW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytCVFteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrUkxbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK0xSW15cbl0qKS9pLC9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSUoPyFceylbXlxuXSopL2ksL14oPzpbXlx9XSUlW15cbl0qKS9pLC9eKD86W1xuXSspL2ksL14oPzpbXHNdKykvaSwvXig/OigoPyFcbilccykrKS9pLC9eKD86I1teXG5dKikvaSwvXig/OiVbXlxuXSopL2ksL14oPzpzY2FsZVxzKykvaSwvXig/OlxkKykvaSwvXig/OlxzK3dpZHRoXGIpL2ksL14oPzpzdGF0ZVxzKykvaSwvXig/Oi4qPDxmb3JrPj4pL2ksL14oPzouKjw8am9pbj4+KS9pLC9eKD86Lio8PGNob2ljZT4+KS9pLC9eKD86LipcW1xbZm9ya1xdXF0pL2ksL14oPzouKlxbXFtqb2luXF1cXSkvaSwvXig/Oi4qXFtcW2Nob2ljZVxdXF0pL2ksL14oPzouKmRpcmVjdGlvblxzK1RCW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytCVFteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrUkxbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK0xSW15cbl0qKS9pLC9eKD86WyJdKS9pLC9eKD86XHMqYXNccyspL2ksL14oPzpbXlxuXHtdKikvaSwvXig/OlsiXSkvaSwvXig/OlteIl0qKS9pLC9eKD86W15cblxzXHtdKykvaSwvXig/OlxuKS9pLC9eKD86XHspL2ksL14oPzpcfSkvaSwvXig/Oltcbl0pL2ksL14oPzpub3RlXHMrKS9pLC9eKD86bGVmdCBvZlxiKS9pLC9eKD86cmlnaHQgb2ZcYikvaSwvXig/OiIpL2ksL14oPzpccyphc1xzKikvaSwvXig/OlsiXSkvaSwvXig/OlteIl0qKS9pLC9eKD86W15cbl0qKS9pLC9eKD86XHMqW146XG5cc1wtXSspL2ksL14oPzpccyo6W146XG47XSspL2ksL14oPzpbXHNcU10qP2VuZCBub3RlXGIpL2ksL14oPzpzdGF0ZURpYWdyYW1ccyspL2ksL14oPzpzdGF0ZURpYWdyYW0tdjJccyspL2ksL14oPzpoaWRlIGVtcHR5IGRlc2NyaXB0aW9uXGIpL2ksL14oPzpcW1wqXF0pL2ksL14oPzpbXjpcblxzXC1ce10rKS9pLC9eKD86XHMqOlteOlxuO10rKS9pLC9eKD86LS0+KS9pLC9eKD86LS0pL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7TElORTp7cnVsZXM6WzEzLDE0XSxpbmNsdXNpdmU6ITF9LGNsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6WzEzLDE0XSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOls3LDgsMTMsMTRdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOls2LDcsMTMsMTRdLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOls1LDEzLDE0XSxpbmNsdXNpdmU6ITF9LHN0cnVjdDp7cnVsZXM6WzEzLDE0LDE5LDI2LDI3LDI4LDI5LDM4LDM5LDQwLDU0LDU1LDU2LDU3LDU4XSxpbmNsdXNpdmU6ITF9LEZMT0FUSU5HX05PVEVfSUQ6e3J1bGVzOls0N10saW5jbHVzaXZlOiExfSxGTE9BVElOR19OT1RFOntydWxlczpbNDQsNDUsNDZdLGluY2x1c2l2ZTohMX0sTk9URV9URVhUOntydWxlczpbNDksNTBdLGluY2x1c2l2ZTohMX0sTk9URV9JRDp7cnVsZXM6WzQ4XSxpbmNsdXNpdmU6ITF9LE5PVEU6e3J1bGVzOls0MSw0Miw0M10saW5jbHVzaXZlOiExfSxTQ0FMRTp7cnVsZXM6WzE3LDE4XSxpbmNsdXNpdmU6ITF9LEFMSUFTOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LFNUQVRFX0lEOntydWxlczpbMzJdLGluY2x1c2l2ZTohMX0sU1RBVEVfU1RSSU5HOntydWxlczpbMzMsMzRdLGluY2x1c2l2ZTohMX0sRk9SS19TVEFURTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxTVEFURTp7cnVsZXM6WzEzLDE0LDIwLDIxLDIyLDIzLDI0LDI1LDMwLDMxLDM1LDM2LDM3XSxpbmNsdXNpdmU6ITF9LElEOntydWxlczpbMTMsMTRdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsMSwyLDMsNCw5LDEwLDExLDEyLDE0LDE1LDE2LDE5LDM3LDQwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU5LDYwXSxpbmNsdXNpdmU6ITB9fX07ZnVuY3Rpb24gTigpe3RoaXMueXk9e319cmV0dXJuIEEubGV4ZXI9TSxOLnByb3RvdHlwZT1BLEEuUGFyc2VyPU4sbmV3IE59KCk7ZS5wYXJzZXI9cixlLlBhcnNlcj1yLlBhcnNlcixlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2UuYXBwbHkocixhcmd1bWVudHMpfSxlLm1haW49ZnVuY3Rpb24odCl7dFsxXXx8KGNvbnNvbGUubG9nKCJVc2FnZTogIit0WzBdKyIgRklMRSIpLHByb2Nlc3MuZXhpdCgxKSk7dmFyIHI9bigzMDY5KS5yZWFkRmlsZVN5bmMobig2NDcwKS5ub3JtYWxpemUodFsxXSksInV0ZjgiKTtyZXR1cm4gZS5wYXJzZXIucGFyc2Uocil9LG4uY1tuLnNdPT09dCYmZS5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSl9LDk3NjM6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUsbixyKXtmb3Iobj1ufHx7fSxyPXQubGVuZ3RoO3ItLTtuW3Rbcl1dPWUpO3JldHVybiBufSxlPVsxLDJdLG49WzEsNV0scj1bNiw5LDExLDE3LDE4LDE5LDIxXSxpPVsxLDE1XSxhPVsxLDE2XSxvPVsxLDE3XSxzPVsxLDIxXSxjPVs0LDYsOSwxMSwxNywxOCwxOSwyMV0sdT17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsam91cm5leTo0LGRvY3VtZW50OjUsRU9GOjYsZGlyZWN0aXZlOjcsbGluZTo4LFNQQUNFOjksc3RhdGVtZW50OjEwLE5FV0xJTkU6MTEsb3BlbkRpcmVjdGl2ZToxMix0eXBlRGlyZWN0aXZlOjEzLGNsb3NlRGlyZWN0aXZlOjE0LCI6IjoxNSxhcmdEaXJlY3RpdmU6MTYsdGl0bGU6MTcsc2VjdGlvbjoxOCx0YXNrTmFtZToxOSx0YXNrRGF0YToyMCxvcGVuX2RpcmVjdGl2ZToyMSx0eXBlX2RpcmVjdGl2ZToyMixhcmdfZGlyZWN0aXZlOjIzLGNsb3NlX2RpcmVjdGl2ZToyNCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNDoiam91cm5leSIsNjoiRU9GIiw5OiJTUEFDRSIsMTE6Ik5FV0xJTkUiLDE1OiI6IiwxNzoidGl0bGUiLDE4OiJzZWN0aW9uIiwxOToidGFza05hbWUiLDIwOiJ0YXNrRGF0YSIsMjE6Im9wZW5fZGlyZWN0aXZlIiwyMjoidHlwZV9kaXJlY3RpdmUiLDIzOiJhcmdfZGlyZWN0aXZlIiwyNDoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDNdLFszLDJdLFs1LDBdLFs1LDJdLFs4LDJdLFs4LDFdLFs4LDFdLFs4LDFdLFs3LDRdLFs3LDZdLFsxMCwxXSxbMTAsMV0sWzEwLDJdLFsxMCwxXSxbMTIsMV0sWzEzLDFdLFsxNiwxXSxbMTQsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLG4scixpLGEsbyl7dmFyIHM9YS5sZW5ndGgtMTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBhW3MtMV07Y2FzZSAzOmNhc2UgNzpjYXNlIDg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDphW3MtMV0ucHVzaChhW3NdKSx0aGlzLiQ9YVtzLTFdO2JyZWFrO2Nhc2UgNTpjYXNlIDY6dGhpcy4kPWFbc107YnJlYWs7Y2FzZSAxMTpyLnNldFRpdGxlKGFbc10uc3Vic3RyKDYpKSx0aGlzLiQ9YVtzXS5zdWJzdHIoNik7YnJlYWs7Y2FzZSAxMjpyLmFkZFNlY3Rpb24oYVtzXS5zdWJzdHIoOCkpLHRoaXMuJD1hW3NdLnN1YnN0cig4KTticmVhaztjYXNlIDEzOnIuYWRkVGFzayhhW3MtMV0sYVtzXSksdGhpcy4kPSJ0YXNrIjticmVhaztjYXNlIDE1OnIucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxNjpyLnBhcnNlRGlyZWN0aXZlKGFbc10sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxNzphW3NdPWFbc10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLHIucGFyc2VEaXJlY3RpdmUoYVtzXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTg6ci5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiam91cm5leSIpfX0sdGFibGU6W3szOjEsNDplLDc6MywxMjo0LDIxOm59LHsxOlszXX0sdChyLFsyLDNdLHs1OjZ9KSx7Mzo3LDQ6ZSw3OjMsMTI6NCwyMTpufSx7MTM6OCwyMjpbMSw5XX0sezIyOlsyLDE1XX0sezY6WzEsMTBdLDc6MTgsODoxMSw5OlsxLDEyXSwxMDoxMywxMTpbMSwxNF0sMTI6NCwxNzppLDE4OmEsMTk6bywyMTpufSx7MTpbMiwyXX0sezE0OjE5LDE1OlsxLDIwXSwyNDpzfSx0KFsxNSwyNF0sWzIsMTZdKSx0KHIsWzIsOF0sezE6WzIsMV19KSx0KHIsWzIsNF0pLHs3OjE4LDEwOjIyLDEyOjQsMTc6aSwxODphLDE5Om8sMjE6bn0sdChyLFsyLDZdKSx0KHIsWzIsN10pLHQocixbMiwxMV0pLHQocixbMiwxMl0pLHsyMDpbMSwyM119LHQocixbMiwxNF0pLHsxMTpbMSwyNF19LHsxNjoyNSwyMzpbMSwyNl19LHsxMTpbMiwxOF19LHQocixbMiw1XSksdChyLFsyLDEzXSksdChjLFsyLDldKSx7MTQ6MjcsMjQ6c30sezI0OlsyLDE3XX0sezExOlsxLDI4XX0sdChjLFsyLDEwXSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDE1XSw3OlsyLDJdLDIxOlsyLDE4XSwyNjpbMiwxN119LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxlKXtpZighZS5yZWNvdmVyYWJsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Rocm93IG4uaGFzaD1lLG59dGhpcy50cmFjZSh0KX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVswXSxyPVtdLGk9W251bGxdLGE9W10sbz10aGlzLnRhYmxlLHM9IiIsYz0wLHU9MCxsPTAsaD0yLGY9MSxkPWEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLHk9e3l5Ont9fTtmb3IodmFyIGcgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxnKSYmKHkueXlbZ109dGhpcy55eVtnXSk7cC5zZXRJbnB1dCh0LHkueXkpLHkueXkubGV4ZXI9cCx5Lnl5LnBhcnNlcj10aGlzLHZvaWQgMD09PXAueXlsbG9jJiYocC55eWxsb2M9e30pO3ZhciBtPXAueXlsbG9jO2EucHVzaChtKTt2YXIgdj1wLm9wdGlvbnMmJnAub3B0aW9ucy5yYW5nZXM7ZnVuY3Rpb24gYigpe3ZhciB0O3JldHVybiJudW1iZXIiIT10eXBlb2YodD1yLnBvcCgpfHxwLmxleCgpfHxmKSYmKHQgaW5zdGFuY2VvZiBBcnJheSYmKHQ9KHI9dCkucG9wKCkpLHQ9ZS5zeW1ib2xzX1t0XXx8dCksdH0iZnVuY3Rpb24iPT10eXBlb2YgeS55eS5wYXJzZUVycm9yP3RoaXMucGFyc2VFcnJvcj15Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Zvcih2YXIgXyx4LHcsayxULEUsQyxTLEEsTT17fTs7KXtpZih3PW5bbi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1t3XT9rPXRoaXMuZGVmYXVsdEFjdGlvbnNbd106KG51bGw9PV8mJihfPWIoKSksaz1vW3ddJiZvW3ddW19dKSx2b2lkIDA9PT1rfHwhay5sZW5ndGh8fCFrWzBdKXt2YXIgTj0iIjtmb3IoRSBpbiBBPVtdLG9bd10pdGhpcy50ZXJtaW5hbHNfW0VdJiZFPmgmJkEucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW0VdKyInIik7Tj1wLnNob3dQb3NpdGlvbj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6XG4iK3Auc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQS5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW19dfHxfKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYysxKSsiOiBVbmV4cGVjdGVkICIrKF89PWY/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bX118fF8pKyInIiksdGhpcy5wYXJzZUVycm9yKE4se3RleHQ6cC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bX118fF8sbGluZTpwLnl5bGluZW5vLGxvYzptLGV4cGVjdGVkOkF9KX1pZihrWzBdaW5zdGFuY2VvZiBBcnJheSYmay5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3crIiwgdG9rZW46ICIrXyk7c3dpdGNoKGtbMF0pe2Nhc2UgMTpuLnB1c2goXyksaS5wdXNoKHAueXl0ZXh0KSxhLnB1c2gocC55eWxsb2MpLG4ucHVzaChrWzFdKSxfPW51bGwseD8oXz14LHg9bnVsbCk6KHU9cC55eWxlbmcscz1wLnl5dGV4dCxjPXAueXlsaW5lbm8sbT1wLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKEM9dGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMV0sTS4kPWlbaS5sZW5ndGgtQ10sTS5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShDfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKEN8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdiYmKE0uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKEN8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdm9pZCAwIT09KFQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KE0sW3MsdSxjLHkueXksa1sxXSxpLGFdLmNvbmNhdChkKSkpKXJldHVybiBUO0MmJihuPW4uc2xpY2UoMCwtMSpDKjIpLGk9aS5zbGljZSgwLC0xKkMpLGE9YS5zbGljZSgwLC0xKkMpKSxuLnB1c2godGhpcy5wcm9kdWN0aW9uc19ba1sxXV1bMF0pLGkucHVzaChNLiQpLGEucHVzaChNLl8kKSxTPW9bbltuLmxlbmd0aC0yXV1bbltuLmxlbmd0aC0xXV0sbi5wdXNoKFMpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxsPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueXk9ZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTtyZXR1cm4gdGhpcy55eXRleHQrPXQsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPXQsdGhpcy5tYXRjaGVkKz10LHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx0fSx1bnB1dDpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxuPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD10K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1lKSx0aGlzLm9mZnNldC09ZTt2YXIgcj10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxuLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09bi5sZW5ndGgtMSk7dmFyIGk9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOm4/KG4ubGVuZ3RoPT09ci5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3Jbci5sZW5ndGgtbi5sZW5ndGhdLmxlbmd0aC1uWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtpWzBdLGlbMF0rdGhpcy55eWxlbmctZV0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXI/KHRoaXMuX2JhY2t0cmFjaz0hMCx0aGlzKTp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXNzOmZ1bmN0aW9uKHQpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZSh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4odC5sZW5ndGg+MjA/Ii4uLiI6IiIpK3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoO3JldHVybiB0Lmxlbmd0aDwyMCYmKHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLXQubGVuZ3RoKSksKHQuc3Vic3RyKDAsMjApKyh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhc3RJbnB1dCgpLGU9bmV3IEFycmF5KHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gdCt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2UrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihpPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGkueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksKHI9dFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykpJiYodGhpcy55eWxpbmVubys9ci5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpyP3Jbci5sZW5ndGgtMV0ubGVuZ3RoLXJbci5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbit0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXRbMF0sdGhpcy5tYXRjaCs9dFswXSx0aGlzLm1hdGNoZXM9dCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSh0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz10WzBdLG49dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxuKXJldHVybiBuO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBhIGluIGkpdGhpc1thXT1pW2FdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt2YXIgdCxlLG4scjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCksdGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaT10aGlzLl9jdXJyZW50UnVsZXMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoKG49dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tpW2FdXSkpJiYoIWV8fG5bMF0ubGVuZ3RoPmVbMF0ubGVuZ3RoKSl7aWYoZT1uLHI9YSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZighMSE9PSh0PXRoaXMudGVzdF9tYXRjaChuLGlbYV0pKSlyZXR1cm4gdDtpZih0aGlzLl9iYWNrdHJhY2spe2U9ITE7Y29udGludWV9cmV0dXJuITF9aWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlPyExIT09KHQ9dGhpcy50ZXN0X21hdGNoKGUsaVtyXSkpJiZ0OiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCl8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKHQpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaCh0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybih0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModHx8MCkpPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbdF06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24odCl7dGhpcy5iZWdpbih0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LGUsbixyKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDIxO2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwyMjtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTU7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDI0O2Nhc2UgNDpyZXR1cm4gMjM7Y2FzZSA1OmNhc2UgNjpjYXNlIDg6Y2FzZSA5OmJyZWFrO2Nhc2UgNzpyZXR1cm4gMTE7Y2FzZSAxMDpyZXR1cm4gNDtjYXNlIDExOnJldHVybiAxNztjYXNlIDEyOnJldHVybiAxODtjYXNlIDEzOnJldHVybiAxOTtjYXNlIDE0OnJldHVybiAyMDtjYXNlIDE1OnJldHVybiAxNTtjYXNlIDE2OnJldHVybiA2O2Nhc2UgMTc6cmV0dXJuIklOVkFMSUQifX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzpqb3VybmV5XGIpL2ksL14oPzp0aXRsZVxzW14jXG47XSspL2ksL14oPzpzZWN0aW9uXHNbXiM6XG47XSspL2ksL14oPzpbXiM6XG47XSspL2ksL14oPzo6W14jXG47XSspL2ksL14oPzo6KS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e29wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSx0eXBlX2RpcmVjdGl2ZTp7cnVsZXM6WzIsM10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxN10saW5jbHVzaXZlOiEwfX19O2Z1bmN0aW9uIGgoKXt0aGlzLnl5PXt9fXJldHVybiB1LmxleGVyPWwsaC5wcm90b3R5cGU9dSx1LlBhcnNlcj1oLG5ldyBofSgpO2UucGFyc2VyPXIsZS5QYXJzZXI9ci5QYXJzZXIsZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiByLnBhcnNlLmFwcGx5KHIsYXJndW1lbnRzKX0sZS5tYWluPWZ1bmN0aW9uKHQpe3RbMV18fChjb25zb2xlLmxvZygiVXNhZ2U6ICIrdFswXSsiIEZJTEUiKSxwcm9jZXNzLmV4aXQoMSkpO3ZhciByPW4oOTE0MykucmVhZEZpbGVTeW5jKG4oNjQ3MCkubm9ybWFsaXplKHRbMV0pLCJ1dGY4Iik7cmV0dXJuIGUucGFyc2VyLnBhcnNlKHIpfSxuLmNbbi5zXT09PXQmJmUubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpfSw5NjA5OnQ9PnsidXNlIHN0cmljdCI7dmFyIGU9L14oJTIwfFxzKSooamF2YXNjcmlwdHxkYXRhKS9pbSxuPS9bXlx4MjAtXHg3RV0vZ2ltLHI9L14oW146XSspOi9nbSxpPVsiLiIsIi8iXTt0LmV4cG9ydHM9e3Nhbml0aXplVXJsOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiJhYm91dDpibGFuayI7dmFyIGEsbyxzPXQucmVwbGFjZShuLCIiKS50cmltKCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLmluZGV4T2YodFswXSk+LTF9KHMpP3M6KG89cy5tYXRjaChyKSk/KGE9b1swXSxlLnRlc3QoYSk/ImFib3V0OmJsYW5rIjpzKToiYWJvdXQ6YmxhbmsifX19LDM4NDE6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmludGVyc2VjdChlKX19LDc0NTg6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtuLmQoZSx7ZGVmYXVsdDooKT0+bEN9KTt2YXIgcj1uKDE5NDEpLGk9bi5uKHIpLGE9e2RlYnVnOjEsaW5mbzoyLHdhcm46MyxlcnJvcjo0LGZhdGFsOjV9LG89e2RlYnVnOmZ1bmN0aW9uKCl7fSxpbmZvOmZ1bmN0aW9uKCl7fSx3YXJuOmZ1bmN0aW9uKCl7fSxlcnJvcjpmdW5jdGlvbigpe30sZmF0YWw6ZnVuY3Rpb24oKXt9fSxzPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJmYXRhbCI7aXNOYU4odCkmJih0PXQudG9Mb3dlckNhc2UoKSx2b2lkIDAhPT1hW3RdJiYodD1hW3RdKSksby50cmFjZT1mdW5jdGlvbigpe30sby5kZWJ1Zz1mdW5jdGlvbigpe30sby5pbmZvPWZ1bmN0aW9uKCl7fSxvLndhcm49ZnVuY3Rpb24oKXt9LG8uZXJyb3I9ZnVuY3Rpb24oKXt9LG8uZmF0YWw9ZnVuY3Rpb24oKXt9LHQ8PWEuZmF0YWwmJihvLmZhdGFsPWNvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUsYygiRkFUQUwiKSwiY29sb3I6IG9yYW5nZSIpOmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwiG1szNW0iLGMoIkZBVEFMIikpKSx0PD1hLmVycm9yJiYoby5lcnJvcj1jb25zb2xlLmVycm9yP2NvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlLGMoIkVSUk9SIiksImNvbG9yOiBvcmFuZ2UiKTpjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIhtbMzFtIixjKCJFUlJPUiIpKSksdDw9YS53YXJuJiYoby53YXJuPWNvbnNvbGUud2Fybj9jb25zb2xlLndhcm4uYmluZChjb25zb2xlLGMoIldBUk4iKSwiY29sb3I6IG9yYW5nZSIpOmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwiG1szM20iLGMoIldBUk4iKSkpLHQ8PWEuaW5mbyYmKG8uaW5mbz1jb25zb2xlLmluZm8/Y29uc29sZS5pbmZvLmJpbmQoY29uc29sZSxjKCJJTkZPIiksImNvbG9yOiBsaWdodGJsdWUiKTpjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIhtbMzRtIixjKCJJTkZPIikpKSx0PD1hLmRlYnVnJiYoby5kZWJ1Zz1jb25zb2xlLmRlYnVnP2NvbnNvbGUuZGVidWcuYmluZChjb25zb2xlLGMoIkRFQlVHIiksImNvbG9yOiBsaWdodGdyZWVuIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCIbWzMybSIsYygiREVCVUciKSkpfSxjPWZ1bmN0aW9uKHQpe3ZhciBlPWkoKSgpLmZvcm1hdCgic3MuU1NTIik7cmV0dXJuIiVjIi5jb25jYXQoZSwiIDogIikuY29uY2F0KHQsIiA6ICIpfTtmdW5jdGlvbiB1KHQsZSl7bGV0IG47aWYodm9pZCAwPT09ZSlmb3IoY29uc3QgZSBvZiB0KW51bGwhPWUmJihuPGV8fHZvaWQgMD09PW4mJmU+PWUpJiYobj1lKTtlbHNle2xldCByPS0xO2ZvcihsZXQgaSBvZiB0KW51bGwhPShpPWUoaSwrK3IsdCkpJiYobjxpfHx2b2lkIDA9PT1uJiZpPj1pKSYmKG49aSl9cmV0dXJuIG59ZnVuY3Rpb24gbCh0LGUpe2xldCBuO2lmKHZvaWQgMD09PWUpZm9yKGNvbnN0IGUgb2YgdCludWxsIT1lJiYobj5lfHx2b2lkIDA9PT1uJiZlPj1lKSYmKG49ZSk7ZWxzZXtsZXQgcj0tMTtmb3IobGV0IGkgb2YgdCludWxsIT0oaT1lKGksKytyLHQpKSYmKG4+aXx8dm9pZCAwPT09biYmaT49aSkmJihuPWkpfXJldHVybiBufWZ1bmN0aW9uIGgodCl7cmV0dXJuIHR9dmFyIGY9MWUtNjtmdW5jdGlvbiBkKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0KyIsMCkifWZ1bmN0aW9uIHAodCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrdCsiKSJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gZT0+K3QoZSl9ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0yKmUpLzIsdC5yb3VuZCgpJiYoZT1NYXRoLnJvdW5kKGUpKSxuPT4rdChuKStlfWZ1bmN0aW9uIG0oKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gdih0LGUpe3ZhciBuPVtdLHI9bnVsbCxpPW51bGwsYT02LG89NixzPTMsYz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmRldmljZVBpeGVsUmF0aW8+MT8wOi41LHU9MT09PXR8fDQ9PT10Py0xOjEsbD00PT09dHx8Mj09PXQ/IngiOiJ5Iix2PTE9PT10fHwzPT09dD9kOnA7ZnVuY3Rpb24gYihkKXt2YXIgcD1udWxsPT1yP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6cixiPW51bGw9PWk/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOmg6aSxfPU1hdGgubWF4KGEsMCkrcyx4PWUucmFuZ2UoKSx3PSt4WzBdK2Msaz0reFt4Lmxlbmd0aC0xXStjLFQ9KGUuYmFuZHdpZHRoP2c6eSkoZS5jb3B5KCksYyksRT1kLnNlbGVjdGlvbj9kLnNlbGVjdGlvbigpOmQsQz1FLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSxTPUUuc2VsZWN0QWxsKCIudGljayIpLmRhdGEocCxlKS5vcmRlcigpLEE9Uy5leGl0KCksTT1TLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTj1TLnNlbGVjdCgibGluZSIpLEQ9Uy5zZWxlY3QoInRleHQiKTtDPUMubWVyZ2UoQy5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSksUz1TLm1lcmdlKE0pLE49Ti5tZXJnZShNLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIobCsiMiIsdSphKSksRD1ELm1lcmdlKE0uYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIobCx1Kl8pLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGQhPT1FJiYoQz1DLnRyYW5zaXRpb24oZCksUz1TLnRyYW5zaXRpb24oZCksTj1OLnRyYW5zaXRpb24oZCksRD1ELnRyYW5zaXRpb24oZCksQT1BLnRyYW5zaXRpb24oZCkuYXR0cigib3BhY2l0eSIsZikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9VCh0KSk/dih0K2MpOnRoaXMuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKX0pKSxNLmF0dHIoIm9wYWNpdHkiLGYpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHYoKGUmJmlzRmluaXRlKGU9ZSh0KSk/ZTpUKHQpKStjKX0pKSksQS5yZW1vdmUoKSxDLmF0dHIoImQiLDQ9PT10fHwyPT09dD9vPyJNIit1Km8rIiwiK3crIkgiK2MrIlYiK2srIkgiK3UqbzoiTSIrYysiLCIrdysiViIrazpvPyJNIit3KyIsIit1Km8rIlYiK2MrIkgiK2srIlYiK3UqbzoiTSIrdysiLCIrYysiSCIrayksUy5hdHRyKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gdihUKHQpK2MpfSkpLE4uYXR0cihsKyIyIix1KmEpLEQuYXR0cihsLHUqXykudGV4dChiKSxFLmZpbHRlcihtKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxFLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9VH0pKX1yZXR1cm4gYi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGIpOmV9LGIudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1BcnJheS5mcm9tKGFyZ3VtZW50cyksYn0sYi50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106QXJyYXkuZnJvbSh0KSxiKTpuLnNsaWNlKCl9LGIudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10P251bGw6QXJyYXkuZnJvbSh0KSxiKTpyJiZyLnNsaWNlKCl9LGIudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGIpOml9LGIudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bz0rdCxiKTphfSxiLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsYik6YX0sYi50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGIpOm99LGIudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsYik6c30sYi5vZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsYik6Y30sYn1mdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIF8odCl7cmV0dXJuIG51bGw9PXQ/YjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIHgodCl7cmV0dXJuIG51bGw9PXQ/W106QXJyYXkuaXNBcnJheSh0KT90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gdygpe3JldHVybltdfWZ1bmN0aW9uIGsodCl7cmV0dXJuIG51bGw9PXQ/dzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIFQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2hlcyh0KX19dmFyIEM9QXJyYXkucHJvdG90eXBlLmZpbmQ7ZnVuY3Rpb24gUygpe3JldHVybiB0aGlzLmZpcnN0RWxlbWVudENoaWxkfXZhciBBPUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gTSgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pfWZ1bmN0aW9uIE4odCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gRCh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiBPKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBCKHQsZSxuLHIsaSxhKXtmb3IodmFyIG8scz0wLGM9ZS5sZW5ndGgsdT1hLmxlbmd0aDtzPHU7KytzKShvPWVbc10pPyhvLl9fZGF0YV9fPWFbc10scltzXT1vKTpuW3NdPW5ldyBEKHQsYVtzXSk7Zm9yKDtzPGM7KytzKShvPWVbc10pJiYoaVtzXT1vKX1mdW5jdGlvbiBMKHQsZSxuLHIsaSxhLG8pe3ZhciBzLGMsdSxsPW5ldyBNYXAsaD1lLmxlbmd0aCxmPWEubGVuZ3RoLGQ9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmKGRbc109dT1vLmNhbGwoYyxjLl9fZGF0YV9fLHMsZSkrIiIsbC5oYXModSk/aVtzXT1jOmwuc2V0KHUsYykpO2ZvcihzPTA7czxmOysrcyl1PW8uY2FsbCh0LGFbc10scyxhKSsiIiwoYz1sLmdldCh1KSk/KHJbc109YyxjLl9fZGF0YV9fPWFbc10sbC5kZWxldGUodSkpOm5bc109bmV3IEQodCxhW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGM9ZVtzXSkmJmwuZ2V0KGRbc10pPT09YyYmKGlbc109Yyl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4gdC5fX2RhdGFfX31mdW5jdGlvbiBSKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBGKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfUQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpELGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O3ZhciBQPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtjb25zdCBqPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpQLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gWSh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxqLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpqW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24geih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gVSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHEodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBIKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIFcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gVih0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBYKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gWih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxyLG4pfX1mdW5jdGlvbiBRKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8Vih0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBLKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBKKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiB0dCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBldCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gbnQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgcnQodCl9ZnVuY3Rpb24gcnQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWV0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gaXQodCxlKXtmb3IodmFyIG49bnQodCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLmFkZChlW3JdKX1mdW5jdGlvbiBhdCh0LGUpe2Zvcih2YXIgbj1udCh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4ucmVtb3ZlKGVbcl0pfWZ1bmN0aW9uIG90KHQpe3JldHVybiBmdW5jdGlvbigpe2l0KHRoaXMsdCl9fWZ1bmN0aW9uIHN0KHQpe3JldHVybiBmdW5jdGlvbigpe2F0KHRoaXMsdCl9fWZ1bmN0aW9uIGN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2l0OmF0KSh0aGlzLHQpfX1mdW5jdGlvbiB1dCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBodCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZnQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBkdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHl0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGd0KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gbXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1QJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1QP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBidCh0KXt2YXIgZT1ZKHQpO3JldHVybihlLmxvY2FsP3Z0Om10KShlKX1mdW5jdGlvbiBfdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHh0KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gd3QoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGt0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBUdCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBFdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLHI9MCxpPS0xLGE9ZS5sZW5ndGg7cjxhOysrciluPWVbcl0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5vcHRpb25zKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gQ3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByLGk9dGhpcy5fX29uLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUsdGhpcy5fX2RhdGFfXyl9fShlKTtpZihpKWZvcih2YXIgbz0wLHM9aS5sZW5ndGg7bzxzOysrbylpZigocj1pW29dKS50eXBlPT09dC50eXBlJiZyLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcixyLm9wdGlvbnMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcj1hLHIub3B0aW9ucz1uKSx2b2lkKHIudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxhLG4pLHI9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YSxvcHRpb25zOm59LGk/aS5wdXNoKHIpOnRoaXMuX19vbj1bcl19fWZ1bmN0aW9uIFN0KHQsZSxuKXt2YXIgcj1WKHQpLGk9ci5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaT9pPW5ldyBpKGUsbik6KGk9ci5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhpLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLGkuZGV0YWlsPW4uZGV0YWlsKTppLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIEF0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFN0KHRoaXMsdCxlKX19ZnVuY3Rpb24gTXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gU3QodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19cnQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgTnQ9W251bGxdO2Z1bmN0aW9uIER0KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIE90KCl7cmV0dXJuIG5ldyBEdChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLE50KX1EdC5wcm90b3R5cGU9T3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpEdCxzZWxlY3Q6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PV8odCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbyxzPWVbaV0sYz1zLmxlbmd0aCx1PXJbaV09bmV3IEFycmF5KGMpLGw9MDtsPGM7KytsKShhPXNbbF0pJiYobz10LmNhbGwoYSxhLl9fZGF0YV9fLGwscykpJiYoIl9fZGF0YV9fImluIGEmJihvLl9fZGF0YV9fPWEuX19kYXRhX18pLHVbbF09byk7cmV0dXJuIG5ldyBEdChyLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7dD0iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4geCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSh0KTprKHQpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciBvLHM9ZVthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiYoci5wdXNoKHQuY2FsbChvLG8uX19kYXRhX18sdSxzKSksaS5wdXNoKG8pKTtyZXR1cm4gbmV3IER0KHIsaSl9LHNlbGVjdENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdChudWxsPT10P1M6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEMuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFKHQpKSl9LHNlbGVjdENoaWxkcmVuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdEFsbChudWxsPT10P006ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFKHQpKSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9VCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvPWVbaV0scz1vLmxlbmd0aCxjPXJbaV09W10sdT0wO3U8czsrK3UpKGE9b1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxvKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgRHQocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbih0LGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBBcnJheS5mcm9tKHRoaXMsSSk7dmFyIG49ZT9MOkIscj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1PKHQpKTtmb3IodmFyIGE9aS5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBsPXJbdV0saD1pW3VdLGY9aC5sZW5ndGgsZD1SKHQuY2FsbChsLGwmJmwuX19kYXRhX18sdSxyKSkscD1kLmxlbmd0aCx5PXNbdV09bmV3IEFycmF5KHApLGc9b1t1XT1uZXcgQXJyYXkocCksbT1jW3VdPW5ldyBBcnJheShmKTtuKGwsaCx5LGcsbSxkLGUpO2Zvcih2YXIgdixiLF89MCx4PTA7XzxwOysrXylpZih2PXlbX10pe2ZvcihfPj14JiYoeD1fKzEpOyEoYj1nW3hdKSYmKyt4PHA7KTt2Ll9uZXh0PWJ8fG51bGx9fXJldHVybihvPW5ldyBEdChvLHIpKS5fZW50ZXI9cyxvLl9leGl0PWMsb30sZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IER0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKE4pLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEdCh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKE4pLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmVudGVyKCksaT10aGlzLGE9dGhpcy5leGl0KCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/KHI9dChyKSkmJihyPXIuc2VsZWN0aW9uKCkpOnI9ci5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKGk9ZShpKSkmJihpPWkuc2VsZWN0aW9uKCkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLHImJmk/ci5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQsbj10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsaT1uLmxlbmd0aCxhPXIubGVuZ3RoLG89TWF0aC5taW4oaSxhKSxzPW5ldyBBcnJheShpKSxjPTA7YzxvOysrYylmb3IodmFyIHUsbD1uW2NdLGg9cltjXSxmPWwubGVuZ3RoLGQ9c1tjXT1uZXcgQXJyYXkoZikscD0wO3A8ZjsrK3ApKHU9bFtwXXx8aFtwXSkmJihkW3BdPXUpO2Zvcig7YzxpOysrYylzW2NdPW5bY107cmV0dXJuIG5ldyBEdChzLHRoaXMuX3BhcmVudHMpfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sb3JkZXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciByLGk9dFtlXSxhPWkubGVuZ3RoLTEsbz1pW2FdOy0tYT49MDspKHI9aVthXSkmJihvJiY0XnIuY29tcGFyZURvY3VtZW50UG9zaXRpb24obykmJm8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixvKSxvPXIpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9Rik7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxyPW4ubGVuZ3RoLGk9bmV3IEFycmF5KHIpLGE9MDthPHI7KythKXtmb3IodmFyIG8scz1uW2FdLGM9cy5sZW5ndGgsdT1pW2FdPW5ldyBBcnJheShjKSxsPTA7bDxjOysrbCkobz1zW2xdKSYmKHVbbF09byk7dS5zb3J0KGUpfXJldHVybiBuZXcgRHQoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfSxub2RlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgcj10W2VdLGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpe3ZhciBvPXJbaV07aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbigpe2xldCB0PTA7Zm9yKGNvbnN0IGUgb2YgdGhpcykrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLHI9ZS5sZW5ndGg7bjxyOysrbilmb3IodmFyIGksYT1lW25dLG89MCxzPWEubGVuZ3RoO288czsrK28pKGk9YVtvXSkmJnQuY2FsbChpLGkuX19kYXRhX18sbyxhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbih0LGUpe3ZhciBuPVkodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcj10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9yLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ci5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP1U6ejoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP1c6JDpuLmxvY2FsP0g6cSkobixlKSl9LHN0eWxlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9HOiJmdW5jdGlvbiI9PXR5cGVvZiBlP1o6WCkodCxlLG51bGw9PW4/IiI6bikpOlEodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/SzoiZnVuY3Rpb24iPT10eXBlb2YgZT90dDpKKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbih0LGUpe3ZhciBuPWV0KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByPW50KHRoaXMubm9kZSgpKSxpPS0xLGE9bi5sZW5ndGg7KytpPGE7KWlmKCFyLmNvbnRhaW5zKG5baV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2N0OmU/b3Q6c3QpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3V0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9odDpsdCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2Z0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9wdDpkdCkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKHl0KX0sbG93ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGd0KX0sYXBwZW5kOmZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YnQodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpidCh0KSxyPW51bGw9PWU/X3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpfKGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKHh0KX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/a3Q6d3QpfSxkYXR1bTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9VHQodCsiIiksbz1hLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/Q3Q6RXQscj0wO3I8bzsrK3IpdGhpcy5lYWNoKHMoYVtyXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBjLHU9MCxsPXMubGVuZ3RoO3U8bDsrK3UpZm9yKHI9MCxjPXNbdV07cjxvOysrcilpZigoaT1hW3JdKS50eXBlPT09Yy50eXBlJiZpLm5hbWU9PT1jLm5hbWUpcmV0dXJuIGMudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/TXQ6QXQpKHQsZSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpmdW5jdGlvbiooKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByLGk9dFtlXSxhPTAsbz1pLmxlbmd0aDthPG87KythKShyPWlbYV0pJiYoeWllbGQgcil9fTtjb25zdCBCdD1PdDt2YXIgTHQ9e3ZhbHVlOigpPT57fX07ZnVuY3Rpb24gSXQoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxyPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIHJ8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtyW3RdPVtdfXJldHVybiBuZXcgUnQocil9ZnVuY3Rpb24gUnQodCl7dGhpcy5fPXR9ZnVuY3Rpb24gRnQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixyPXQuaW5kZXhPZigiLiIpO2lmKHI+PTAmJihuPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFB0KHQsZSl7Zm9yKHZhciBuLHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYoKG49dFtyXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24ganQodCxlLG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZih0W3JdLm5hbWU9PT1lKXt0W3JdPUx0LHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1SdC5wcm90b3R5cGU9SXQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpSdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcy5fLGk9RnQodCsiIixyKSxhPS0xLG89aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8bzspaWYobj0odD1pW2FdKS50eXBlKXJbbl09anQocltuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIHIpcltuXT1qdChyW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxvOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49UHQocltuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgUnQodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLHIsaT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0ocj10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKXJbYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXJbaV0udmFsdWUuYXBwbHkoZSxuKX19O2NvbnN0IFl0PUl0O3ZhciB6dCxVdCxxdD0wLEh0PTAsJHQ9MCxXdD0wLFZ0PTAsR3Q9MCxYdD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxadD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBRdCgpe3JldHVybiBWdHx8KFp0KEt0KSxWdD1YdC5ub3coKStHdCl9ZnVuY3Rpb24gS3QoKXtWdD0wfWZ1bmN0aW9uIEp0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiB0ZSh0LGUsbil7dmFyIHI9bmV3IEp0O3JldHVybiByLnJlc3RhcnQodCxlLG4pLHJ9ZnVuY3Rpb24gZWUoKXtWdD0oV3Q9WHQubm93KCkpK0d0LHF0PUh0PTA7dHJ5eyFmdW5jdGlvbigpe1F0KCksKytxdDtmb3IodmFyIHQsZT16dDtlOykodD1WdC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKHZvaWQgMCx0KSxlPWUuX25leHQ7LS1xdH0oKX1maW5hbGx5e3F0PTAsZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxuPXp0LHI9MS8wO247KW4uX2NhbGw/KHI+bi5fdGltZSYmKHI9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTp6dD1lKTtVdD10LHJlKHIpfSgpLFZ0PTB9fWZ1bmN0aW9uIG5lKCl7dmFyIHQ9WHQubm93KCksZT10LVd0O2U+MWUzJiYoR3QtPWUsV3Q9dCl9ZnVuY3Rpb24gcmUodCl7cXR8fChIdCYmKEh0PWNsZWFyVGltZW91dChIdCkpLHQtVnQ+MjQ/KHQ8MS8wJiYoSHQ9c2V0VGltZW91dChlZSx0LVh0Lm5vdygpLUd0KSksJHQmJigkdD1jbGVhckludGVydmFsKCR0KSkpOigkdHx8KFd0PVh0Lm5vdygpLCR0PXNldEludGVydmFsKG5lLDFlMykpLHF0PTEsWnQoZWUpKSl9ZnVuY3Rpb24gaWUodCxlLG4pe3ZhciByPW5ldyBKdDtyZXR1cm4gZT1udWxsPT1lPzA6K2Usci5yZXN0YXJ0KChuPT57ci5zdG9wKCksdChuK2UpfSksZSxuKSxyfUp0LnByb3RvdHlwZT10ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkp0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9RdCgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxVdD09PXRoaXN8fChVdD9VdC5fbmV4dD10aGlzOnp0PXRoaXMsVXQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixyZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxyZSgpKX19O3ZhciBhZT1ZdCgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxvZT1bXTtmdW5jdGlvbiBzZSh0LGUsbixyLGksYSl7dmFyIG89dC5fX3RyYW5zaXRpb247aWYobyl7aWYobiBpbiBvKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbih0LGUsbil7dmFyIHIsaT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKGMpe3ZhciB1LGwsaCxmO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKHUgaW4gaSlpZigoZj1pW3VdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09Zi5zdGF0ZSlyZXR1cm4gaWUoYSk7ND09PWYuc3RhdGU/KGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pOit1PGUmJihmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKX1pZihpZSgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbyhjKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLHI9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLHU9MCxsPS0xO3U8aDsrK3UpKGY9bi50d2Vlblt1XS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKHJbKytsXT1mKTtyLmxlbmd0aD1sKzF9fWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciBpPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksYT0tMSxvPXIubGVuZ3RoOysrYTxvOylyW2FdLmNhbGwodCxpKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIHIgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSBpW2VdLGkpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1pW2VdPW4sbi50aW1lcj10ZSgoZnVuY3Rpb24odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KHQsbix7bmFtZTplLGluZGV4OnIsZ3JvdXA6aSxvbjphZSx0d2VlbjpvZSx0aW1lOmEudGltZSxkZWxheTphLmRlbGF5LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzZTphLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gY2UodCxlKXt2YXIgbj1sZSh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHVlKHQsZSl7dmFyIG49bGUodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gbGUodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBoZSh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX12YXIgZmUsZGU9MTgwL01hdGguUEkscGU9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24geWUodCxlLG4scixpLGEpe3ZhciBvLHMsYztyZXR1cm4obz1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89byxlLz1vKSwoYz10Km4rZSpyKSYmKG4tPXQqYyxyLT1lKmMpLChzPU1hdGguc3FydChuKm4rcipyKSkmJihuLz1zLHIvPXMsYy89cyksdCpyPGUqbiYmKHQ9LXQsZT0tZSxjPS1jLG89LW8pLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTphLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqZGUsc2tld1g6TWF0aC5hdGFuKGMpKmRlLHNjYWxlWDpvLHNjYWxlWTpzfX1mdW5jdGlvbiBnZSh0LGUsbixyKXtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oYSxvKXt2YXIgcz1bXSxjPVtdO3JldHVybiBhPXQoYSksbz10KG8pLGZ1bmN0aW9uKHQscixpLGEsbyxzKXtpZih0IT09aXx8ciE9PWEpe3ZhciBjPW8ucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmMtNCx4OmhlKHQsaSl9LHtpOmMtMix4OmhlKHIsYSl9KX1lbHNlKGl8fGEpJiZvLnB1c2goInRyYW5zbGF0ZSgiK2krZSthK24pfShhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVkscyxjKSxmdW5jdGlvbih0LGUsbixhKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksYS5wdXNoKHtpOm4ucHVzaChpKG4pKyJyb3RhdGUoIixudWxsLHIpLTIseDpoZSh0LGUpfSkpOmUmJm4ucHVzaChpKG4pKyJyb3RhdGUoIitlK3IpfShhLnJvdGF0ZSxvLnJvdGF0ZSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lP2EucHVzaCh7aTpuLnB1c2goaShuKSsic2tld1goIixudWxsLHIpLTIseDpoZSh0LGUpfSk6ZSYmbi5wdXNoKGkobikrInNrZXdYKCIrZStyKX0oYS5za2V3WCxvLnNrZXdYLHMsYyksZnVuY3Rpb24odCxlLG4scixhLG8pe2lmKHQhPT1ufHxlIT09cil7dmFyIHM9YS5wdXNoKGkoYSkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO28ucHVzaCh7aTpzLTQseDpoZSh0LG4pfSx7aTpzLTIseDpoZShlLHIpfSl9ZWxzZSAxPT09biYmMT09PXJ8fGEucHVzaChpKGEpKyJzY2FsZSgiK24rIiwiK3IrIikiKX0oYS5zY2FsZVgsYS5zY2FsZVksby5zY2FsZVgsby5zY2FsZVkscyxjKSxhPW89bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxyPWMubGVuZ3RoOysrbjxyOylzWyhlPWNbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBtZT1nZSgoZnVuY3Rpb24odCl7Y29uc3QgZT1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIERPTU1hdHJpeD9ET01NYXRyaXg6V2ViS2l0Q1NTTWF0cml4KSh0KyIiKTtyZXR1cm4gZS5pc0lkZW50aXR5P3BlOnllKGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHZlPWdlKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9wZTooZmV8fChmZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxmZS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9ZmUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/eWUoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6cGUpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBiZSh0LGUpe3ZhciBuLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9dWUodGhpcyx0KSxhPWkudHdlZW47aWYoYSE9PW4pZm9yKHZhciBvPTAscz0ocj1uPWEpLmxlbmd0aDtvPHM7KytvKWlmKHJbb10ubmFtZT09PWUpeyhyPXIuc2xpY2UoKSkuc3BsaWNlKG8sMSk7YnJlYWt9aS50d2Vlbj1yfX1mdW5jdGlvbiBfZSh0LGUsbil7dmFyIHIsaTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dWUodGhpcyx0KSxvPWEudHdlZW47aWYobyE9PXIpe2k9KHI9bykuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxjPTAsdT1pLmxlbmd0aDtjPHU7KytjKWlmKGlbY10ubmFtZT09PWUpe2lbY109czticmVha31jPT09dSYmaS5wdXNoKHMpfWEudHdlZW49aX19ZnVuY3Rpb24geGUodCxlLG4pe3ZhciByPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9dWUodGhpcyxyKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gbGUodCxyKS52YWx1ZVtlXX19ZnVuY3Rpb24gd2UodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIGtlKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIFRlKCl7fXZhciBFZT0uNyxDZT0xL0VlLFNlPSJcXHMqKFsrLV0/XFxkKylcXHMqIixBZT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixNZT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsTmU9L14jKFswLTlhLWZdezMsOH0pJC8sRGU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1NlLFNlLFNlXSsiXFwpJCIpLE9lPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tNZSxNZSxNZV0rIlxcKSQiKSxCZT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1NlLFNlLFNlLEFlXSsiXFwpJCIpLExlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbTWUsTWUsTWUsQWVdKyJcXCkkIiksSWU9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW0FlLE1lLE1lXSsiXFwpJCIpLFJlPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbQWUsTWUsTWUsQWVdKyJcXCkkIiksRmU9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gUGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBqZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFllKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPU5lLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/emUoZSk6Mz09PW4/bmV3ICRlKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9VZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9VZShlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPURlLmV4ZWModCkpP25ldyAkZShlWzFdLGVbMl0sZVszXSwxKTooZT1PZS5leGVjKHQpKT9uZXcgJGUoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9QmUuZXhlYyh0KSk/VWUoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9TGUuZXhlYyh0KSk/VWUoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9SWUuZXhlYyh0KSk/WGUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1SZS5leGVjKHQpKT9YZShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOkZlLmhhc093blByb3BlcnR5KHQpP3plKEZlW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgJGUoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gbmV3ICRlKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBVZSh0LGUsbixyKXtyZXR1cm4gcjw9MCYmKHQ9ZT1uPU5hTiksbmV3ICRlKHQsZSxuLHIpfWZ1bmN0aW9uIHFlKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVGV8fCh0PVllKHQpKSx0P25ldyAkZSgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgJGV9ZnVuY3Rpb24gSGUodCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3FlKHQpOm5ldyAkZSh0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gJGUodCxlLG4scil7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIFdlKCl7cmV0dXJuIiMiK0dlKHRoaXMucikrR2UodGhpcy5nKStHZSh0aGlzLmIpfWZ1bmN0aW9uIFZlKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gR2UodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBYZSh0LGUsbixyKXtyZXR1cm4gcjw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IFFlKHQsZSxuLHIpfWZ1bmN0aW9uIFplKHQpe2lmKHQgaW5zdGFuY2VvZiBRZSlyZXR1cm4gbmV3IFFlKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIFRlfHwodD1ZZSh0KSksIXQpcmV0dXJuIG5ldyBRZTtpZih0IGluc3RhbmNlb2YgUWUpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LHI9dC5iLzI1NSxpPU1hdGgubWluKGUsbixyKSxhPU1hdGgubWF4KGUsbixyKSxvPU5hTixzPWEtaSxjPShhK2kpLzI7cmV0dXJuIHM/KG89ZT09PWE/KG4tcikvcys2KihuPHIpOm49PT1hPyhyLWUpL3MrMjooZS1uKS9zKzQscy89YzwuNT9hK2k6Mi1hLWksbyo9NjApOnM9Yz4wJiZjPDE/MDpvLG5ldyBRZShvLHMsYyx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFFlKHQsZSxuLHIpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBLZSh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gSmUodCxlLG4scixpKXt2YXIgYT10KnQsbz1hKnQ7cmV0dXJuKCgxLTMqdCszKmEtbykqZSsoNC02KmErMypvKSpuKygxKzMqdCszKmEtMypvKSpyK28qaSkvNn13ZShUZSxZZSx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpQZSxmb3JtYXRIZXg6UGUsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIFplKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6amUsdG9TdHJpbmc6amV9KSx3ZSgkZSxIZSxrZShUZSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9DZTpNYXRoLnBvdyhDZSx0KSxuZXcgJGUodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/RWU6TWF0aC5wb3coRWUsdCksbmV3ICRlKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6V2UsZm9ybWF0SGV4OldlLGZvcm1hdFJnYjpWZSx0b1N0cmluZzpWZX0pKSx3ZShRZSwoZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1plKHQpOm5ldyBRZSh0LGUsbixudWxsPT1yPzE6cil9KSxrZShUZSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9DZTpNYXRoLnBvdyhDZSx0KSxuZXcgUWUodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9FZTpNYXRoLnBvdyhFZSx0KSxuZXcgUWUodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwscj1uKyhuPC41P246MS1uKSplLGk9MipuLXI7cmV0dXJuIG5ldyAkZShLZSh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxyKSxLZSh0LGksciksS2UodDwxMjA/dCsyNDA6dC0xMjAsaSxyKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTtjb25zdCB0bj10PT4oKT0+dDtmdW5jdGlvbiBlbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSh0LG4pOnRuKGlzTmFOKHQpP2U6dCl9Y29uc3Qgbm49ZnVuY3Rpb24gdChlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gMT09KHQ9K3QpP2VuOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKmUsbil9fShlLG4sdCk6dG4oaXNOYU4oZSk/bjplKX19KGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgcj1uKCh0PUhlKHQpKS5yLChlPUhlKGUpKS5yKSxpPW4odC5nLGUuZyksYT1uKHQuYixlLmIpLG89ZW4odC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9cihlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIHJuKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixyLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKXI9SGUoZVtuXSksYVtuXT1yLnJ8fDAsb1tuXT1yLmd8fDAsc1tuXT1yLmJ8fDA7cmV0dXJuIGE9dChhKSxvPXQobykscz10KHMpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9YSh0KSxyLmc9byh0KSxyLmI9cyh0KSxyKyIifX19cm4oKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBKZSgobi1yL2UpKmUsbyxpLGEscyl9fSkpLHJuKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpLGk9dFsocitlLTEpJWVdLGE9dFtyJWVdLG89dFsocisxKSVlXSxzPXRbKHIrMiklZV07cmV0dXJuIEplKChuLXIvZSkqZSxpLGEsbyxzKX19KSk7dmFyIGFuPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxvbj1uZXcgUmVnRXhwKGFuLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIHNuKHQsZSl7dmFyIG4scixpLGE9YW4ubGFzdEluZGV4PW9uLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1hbi5leGVjKHQpKSYmKHI9b24uZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4OmhlKG4scil9KSksYT1vbi5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGNuKHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9oZTplIGluc3RhbmNlb2YgWWU/bm46KG49WWUoZSkpPyhlPW4sbm4pOnNuKSh0LGUpfWZ1bmN0aW9uIHVuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBsbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGhuKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIGZuKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX1mdW5jdGlvbiBkbih0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBwbih0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWMrIiIpP251bGw6bz09PXImJnM9PT1pP2E6KGk9cyxhPWUocj1vLGMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHluKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBnbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIG1uKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYmZ24odCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIHZuKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYmeW4odCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIGJuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Y2UodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIF9uKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtjZSh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIHhuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dWUodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHduKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXt1ZSh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIGtuKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3VlKHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBUbih0LGUsbil7dmFyIHIsaSxhPWZ1bmN0aW9uKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0oZSk/Y2U6dWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YSh0aGlzLHQpLHM9by5vbjtzIT09ciYmKGk9KHI9cykuY29weSgpKS5vbihlLG4pLG8ub249aX19dmFyIEVuPUJ0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBDbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBTbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxyKSxuKX19ZnVuY3Rpb24gQW4odCxlLG4pe3ZhciByLGk7ZnVuY3Rpb24gYSgpe3ZhciBhPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhIT09aSYmKHI9KGk9YSkmJlNuKHQsYSxuKSkscn1yZXR1cm4gYS5fdmFsdWU9ZSxhfWZ1bmN0aW9uIE1uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBObih0KXt2YXIgZSxuO2Z1bmN0aW9uIHIoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PW4mJihlPShuPXIpJiZNbihyKSksZX1yZXR1cm4gci5fdmFsdWU9dCxyfXZhciBEbj0wO2Z1bmN0aW9uIE9uKHQsZSxuLHIpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9cn1mdW5jdGlvbiBCbigpe3JldHVybisrRG59dmFyIExuPUJ0LnByb3RvdHlwZTtPbi5wcm90b3R5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIEJ0KCkudHJhbnNpdGlvbih0KX0ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPbixzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1fKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pZm9yKHZhciBzLGMsdT1yW29dLGw9dS5sZW5ndGgsaD1hW29dPW5ldyBBcnJheShsKSxmPTA7ZjxsOysrZikocz11W2ZdKSYmKGM9dC5jYWxsKHMscy5fX2RhdGFfXyxmLHUpKSYmKCJfX2RhdGFfXyJpbiBzJiYoYy5fX2RhdGFfXz1zLl9fZGF0YV9fKSxoW2ZdPWMsc2UoaFtmXSxlLG4sZixoLGxlKHMsbikpKTtyZXR1cm4gbmV3IE9uKGEsdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1rKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT1bXSxvPVtdLHM9MDtzPGk7KytzKWZvcih2YXIgYyx1PXJbc10sbD11Lmxlbmd0aCxoPTA7aDxsOysraClpZihjPXVbaF0pe2Zvcih2YXIgZixkPXQuY2FsbChjLGMuX19kYXRhX18saCx1KSxwPWxlKGMsbikseT0wLGc9ZC5sZW5ndGg7eTxnOysreSkoZj1kW3ldKSYmc2UoZixlLG4seSxkLHApO2EucHVzaChkKSxvLnB1c2goYyl9cmV0dXJuIG5ldyBPbihhLG8sZSxuKX0sc2VsZWN0Q2hpbGQ6TG4uc2VsZWN0Q2hpbGQsc2VsZWN0Q2hpbGRyZW46TG4uc2VsZWN0Q2hpbGRyZW4sZmlsdGVyOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1UKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBPbihyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyBPbihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgRW4odGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUJuKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpaWYobz1zW3VdKXt2YXIgbD1sZShvLGUpO3NlKG8sdCxuLHUscyx7dGltZTpsLnRpbWUrbC5kZWxheStsLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246bC5kdXJhdGlvbixlYXNlOmwuZWFzZX0pfXJldHVybiBuZXcgT24ocix0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6TG4uY2FsbCxub2RlczpMbi5ub2Rlcyxub2RlOkxuLm5vZGUsc2l6ZTpMbi5zaXplLGVtcHR5OkxuLmVtcHR5LGVhY2g6TG4uZWFjaCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/bGUodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKFRuKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1ZKHQpLHI9InRyYW5zZm9ybSI9PT1uP3ZlOmNuO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3BuOmRuKShuLHIseGUodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/bG46dW4pKG4pOihuLmxvY2FsP2ZuOmhuKShuLHIsZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24odCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciByPVkodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoci5sb2NhbD9tbjp2bikocixlKSl9LHN0eWxlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0idHJhbnNmb3JtIj09KHQrPSIiKT9tZTpjbjtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCxmdW5jdGlvbih0LGUpe3ZhciBuLHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1RKHRoaXMsdCksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxRKHRoaXMsdCkpO3JldHVybiBhPT09bz9udWxsOmE9PT1uJiZvPT09cj9pOmk9ZShuPWEscj1vKX19KHQscikpLm9uKCJlbmQuc3R5bGUuIit0LENuKHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCxmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPVEodGhpcyx0KSxzPW4odGhpcyksYz1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxjPXM9USh0aGlzLHQpKSxvPT09Yz9udWxsOm89PT1yJiZjPT09aT9hOihpPWMsYT1lKHI9byxzKSl9fSh0LHIseGUodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhLG89InN0eWxlLiIrZSxzPSJlbmQuIitvO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXVlKHRoaXMsdCksdT1jLm9uLGw9bnVsbD09Yy52YWx1ZVtvXT9hfHwoYT1DbihlKSk6dm9pZCAwO3U9PT1uJiZpPT09bHx8KHI9KG49dSkuY29weSgpKS5vbihzLGk9bCksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1RKHRoaXMsdCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX0odCxyLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4ocj10aGlzLnR3ZWVuKHIpKSYmci5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihyLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihyLEFuKHQsZSxudWxsPT1uPyIiOm4pKX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KHhlKHRoaXMsInRleHQiLHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxObih0KSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09dClyZXR1cm47ZSYmZS5yZW1vdmVDaGlsZCh0aGlzKX19KHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHIsaT1sZSh0aGlzLm5vZGUoKSxuKS50d2VlbixhPTAsbz1pLmxlbmd0aDthPG87KythKWlmKChyPWlbYV0pLm5hbWU9PT10KXJldHVybiByLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/YmU6X2UpKG4sdCxlKSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/Ym46X24pKGUsdCkpOmxlKHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3huOnduKShlLHQpKTpsZSh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goa24oZSx0KSk6bGUodGhpcy5ub2RlKCksZSkuZWFzZX0sZWFzZVZhcnlpbmc6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7dWUodGhpcyx0KS5lYXNlPW59fSh0aGlzLl9pZCx0KSl9LGVuZDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbyl7dmFyIHM9e3ZhbHVlOm99LGM9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49dWUodGhpcyxyKSxpPW4ub247aSE9PXQmJigoZT0odD1pKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChjKSksbi5vbj1lfSkpLDA9PT1pJiZhKCl9KSl9LFtTeW1ib2wuaXRlcmF0b3JdOkxuW1N5bWJvbC5pdGVyYXRvcl19O3ZhciBJbj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6ZnVuY3Rpb24odCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9fTtmdW5jdGlvbiBSbih0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXRocm93IG5ldyBFcnJvcihgdHJhbnNpdGlvbiAke2V9IG5vdCBmb3VuZGApO3JldHVybiBufUJ0LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgbixyLGksYT10Ll9fdHJhbnNpdGlvbixvPSEwO2lmKGEpe2ZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsYSkobj1hW2ldKS5uYW1lPT09ZT8ocj1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKHI/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIGFbaV0pOm89ITE7byYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX0odGhpcyx0KX0pKX0sQnQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgT24/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1CbigpLChuPUluKS50aW1lPVF0KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgbyxzPXJbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSkobz1zW3VdKSYmc2Uobyx0LGUsdSxzLG58fFJuKG8sZSkpO3JldHVybiBuZXcgT24ocix0aGlzLl9wYXJlbnRzLHQsZSl9O2NvbnN0e2FiczpGbixtYXg6UG4sbWluOmpufT1NYXRoO2Z1bmN0aW9uIFluKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIHpuKHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBVbih0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgciBpbiBlKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBxbigpe31bInciLCJlIl0ubWFwKFluKSxbIm4iLCJzIl0ubWFwKFluKSxbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChZbik7dmFyIEhuPS43LCRuPTEvSG4sV249IlxccyooWystXT9cXGQrKVxccyoiLFZuPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLEduPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixYbj0vXiMoWzAtOWEtZl17Myw4fSkkLyxabj1uZXcgUmVnRXhwKCJecmdiXFwoIitbV24sV24sV25dKyJcXCkkIiksUW49bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0duLEduLEduXSsiXFwpJCIpLEtuPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbV24sV24sV24sVm5dKyJcXCkkIiksSm49bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tHbixHbixHbixWbl0rIlxcKSQiKSx0cj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVm4sR24sR25dKyJcXCkkIiksZXI9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tWbixHbixHbixWbl0rIlxcKSQiKSxucj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBycigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIGlyKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gYXIodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9WG4uZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9vcihlKTozPT09bj9uZXcgbHIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3NyKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3NyKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9Wm4uZXhlYyh0KSk/bmV3IGxyKGVbMV0sZVsyXSxlWzNdLDEpOihlPVFuLmV4ZWModCkpP25ldyBscigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1Lbi5leGVjKHQpKT9zcihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1Kbi5leGVjKHQpKT9zcigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT10ci5leGVjKHQpKT9wcihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPWVyLmV4ZWModCkpP3ByKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6bnIuaGFzT3duUHJvcGVydHkodCk/b3IobnJbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBscihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIG9yKHQpe3JldHVybiBuZXcgbHIodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHNyKHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgbHIodCxlLG4scil9ZnVuY3Rpb24gY3IodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBxbnx8KHQ9YXIodCkpLHQ/bmV3IGxyKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBscn1mdW5jdGlvbiB1cih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Y3IodCk6bmV3IGxyKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBscih0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gaHIoKXtyZXR1cm4iIyIrZHIodGhpcy5yKStkcih0aGlzLmcpK2RyKHRoaXMuYil9ZnVuY3Rpb24gZnIoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBkcih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHByKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgZ3IodCxlLG4scil9ZnVuY3Rpb24geXIodCl7aWYodCBpbnN0YW5jZW9mIGdyKXJldHVybiBuZXcgZ3IodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgcW58fCh0PWFyKHQpKSwhdClyZXR1cm4gbmV3IGdyO2lmKHQgaW5zdGFuY2VvZiBncilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IGdyKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gZ3IodCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIG1yKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX16bihxbixhcix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpycixmb3JtYXRIZXg6cnIsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIHlyKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6aXIsdG9TdHJpbmc6aXJ9KSx6bihscix1cixVbihxbix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8kbjpNYXRoLnBvdygkbix0KSxuZXcgbHIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SG46TWF0aC5wb3coSG4sdCksbmV3IGxyKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6aHIsZm9ybWF0SGV4OmhyLGZvcm1hdFJnYjpmcix0b1N0cmluZzpmcn0pKSx6bihnciwoZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3lyKHQpOm5ldyBncih0LGUsbixudWxsPT1yPzE6cil9KSxVbihxbix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8kbjpNYXRoLnBvdygkbix0KSxuZXcgZ3IodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9IbjpNYXRoLnBvdyhIbix0KSxuZXcgZ3IodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwscj1uKyhuPC41P246MS1uKSplLGk9MipuLXI7cmV0dXJuIG5ldyBscihtcih0Pj0yNDA/dC0yNDA6dCsxMjAsaSxyKSxtcih0LGksciksbXIodDwxMjA/dCsyNDA6dC0xMjAsaSxyKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTtjb25zdCB2cj1NYXRoLlBJLzE4MCxicj0xODAvTWF0aC5QSSxfcj0uOTY0MjIseHI9LjgyNTIxLHdyPTQvMjksa3I9Ni8yOSxUcj0zKmtyKmtyO2Z1bmN0aW9uIEVyKHQpe2lmKHQgaW5zdGFuY2VvZiBDcilyZXR1cm4gbmV3IENyKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIEJyKXJldHVybiBMcih0KTt0IGluc3RhbmNlb2YgbHJ8fCh0PWNyKHQpKTt2YXIgZSxuLHI9TnIodC5yKSxpPU5yKHQuZyksYT1Ocih0LmIpLG89U3IoKC4yMjI1MDQ1KnIrLjcxNjg3ODYqaSsuMDYwNjE2OSphKS8xKTtyZXR1cm4gcj09PWkmJmk9PT1hP2U9bj1vOihlPVNyKCguNDM2MDc0NypyKy4zODUwNjQ5KmkrLjE0MzA4MDQqYSkvX3IpLG49U3IoKC4wMTM5MzIyKnIrLjA5NzEwNDUqaSsuNzE0MTczMyphKS94cikpLG5ldyBDcigxMTYqby0xNiw1MDAqKGUtbyksMjAwKihvLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24gQ3IodCxlLG4scil7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIFNyKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvVHIrd3J9ZnVuY3Rpb24gQXIodCl7cmV0dXJuIHQ+a3I/dCp0KnQ6VHIqKHQtd3IpfWZ1bmN0aW9uIE1yKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gTnIodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gRHIodCl7aWYodCBpbnN0YW5jZW9mIEJyKXJldHVybiBuZXcgQnIodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgQ3J8fCh0PUVyKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgQnIoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqYnI7cmV0dXJuIG5ldyBCcihlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBPcih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RHIodCk6bmV3IEJyKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBCcih0LGUsbixyKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gTHIodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IENyKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqdnI7cmV0dXJuIG5ldyBDcih0LmwsTWF0aC5jb3MoZSkqdC5jLE1hdGguc2luKGUpKnQuYyx0Lm9wYWNpdHkpfXpuKENyLChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RXIodCk6bmV3IENyKHQsZSxuLG51bGw9PXI/MTpyKX0pLFVuKHFuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IENyKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQ3IodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLG49aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IGxyKE1yKDMuMTMzODU2MSooZT1fcipBcihlKSktMS42MTY4NjY3Kih0PTEqQXIodCkpLS40OTA2MTQ2KihuPXhyKkFyKG4pKSksTXIoLS45Nzg3Njg0KmUrMS45MTYxNDE1KnQrLjAzMzQ1NCpuKSxNciguMDcxOTQ1MyplLS4yMjg5OTE0KnQrMS40MDUyNDI3Km4pLHRoaXMub3BhY2l0eSl9fSkpLHpuKEJyLE9yLFVuKHFuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEJyKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQnIodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gTHIodGhpcykucmdiKCl9fSkpO2NvbnN0IElyPXQ9PigpPT50O2Z1bmN0aW9uIFJyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gRnIodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/UnIodCxuKTpJcihpc05hTih0KT9lOnQpfWZ1bmN0aW9uIFByKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPXQoKGU9T3IoZSkpLmgsKG49T3IobikpLmgpLGk9RnIoZS5jLG4uYyksYT1GcihlLmwsbi5sKSxvPUZyKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5jPWkodCksZS5sPWEodCksZS5vcGFjaXR5PW8odCksZSsiIn19fWNvbnN0IGpyPVByKChmdW5jdGlvbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9Scih0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6SXIoaXNOYU4odCk/ZTp0KX0pKTtQcihGcik7dmFyIFlyPU1hdGguc3FydCg1MCksenI9TWF0aC5zcXJ0KDEwKSxVcj1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gcXIodCxlLG4pe3ZhciByPShlLXQpL01hdGgubWF4KDAsbiksaT1NYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCksYT1yL01hdGgucG93KDEwLGkpO3JldHVybiBpPj0wPyhhPj1Zcj8xMDphPj16cj81OmE+PVVyPzI6MSkqTWF0aC5wb3coMTAsaSk6LU1hdGgucG93KDEwLC1pKS8oYT49WXI/MTA6YT49enI/NTphPj1Vcj8yOjEpfWZ1bmN0aW9uIEhyKHQsZSxuKXt2YXIgcj1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbiksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCkpLGE9ci9pO3JldHVybiBhPj1Zcj9pKj0xMDphPj16cj9pKj01OmE+PVVyJiYoaSo9MiksZTx0Py1pOml9ZnVuY3Rpb24gJHIodCxlKXtyZXR1cm4gbnVsbD09dHx8bnVsbD09ZT9OYU46dDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gV3IodCl7bGV0IGU9dCxuPXQscj10O2Z1bmN0aW9uIGkodCxlLGk9MCxhPXQubGVuZ3RoKXtpZihpPGEpe2lmKDAhPT1uKGUsZSkpcmV0dXJuIGE7ZG97Y29uc3Qgbj1pK2E+Pj4xO3IodFtuXSxlKTwwP2k9bisxOmE9bn13aGlsZShpPGEpfXJldHVybiBpfXJldHVybiAyIT09dC5sZW5ndGgmJihlPShlLG4pPT50KGUpLW4sbj0kcixyPShlLG4pPT4kcih0KGUpLG4pKSx7bGVmdDppLGNlbnRlcjpmdW5jdGlvbih0LG4scj0wLGE9dC5sZW5ndGgpe2NvbnN0IG89aSh0LG4scixhLTEpO3JldHVybiBvPnImJmUodFtvLTFdLG4pPi1lKHRbb10sbik/by0xOm99LHJpZ2h0OmZ1bmN0aW9uKHQsZSxpPTAsYT10Lmxlbmd0aCl7aWYoaTxhKXtpZigwIT09bihlLGUpKXJldHVybiBhO2Rve2NvbnN0IG49aSthPj4+MTtyKHRbbl0sZSk8PTA/aT1uKzE6YT1ufXdoaWxlKGk8YSl9cmV0dXJuIGl9fX1jb25zdCBWcj1XcigkciksR3I9VnIucmlnaHQsWHI9KFZyLmxlZnQsV3IoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9KSkuY2VudGVyLEdyKTtmdW5jdGlvbiBacih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gUXIodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gZSluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gS3IoKXt9dmFyIEpyPS43LHRpPTEuNDI4NTcxNDI4NTcxNDI4NixlaT0iXFxzKihbKy1dP1xcZCspXFxzKiIsbmk9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIscmk9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGlpPS9eIyhbMC05YS1mXXszLDh9KSQvLGFpPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tlaSxlaSxlaV0rIlxcKSQiKSxvaT1uZXcgUmVnRXhwKCJecmdiXFwoIitbcmkscmkscmldKyJcXCkkIiksc2k9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tlaSxlaSxlaSxuaV0rIlxcKSQiKSxjaT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW3JpLHJpLHJpLG5pXSsiXFwpJCIpLHVpPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tuaSxyaSxyaV0rIlxcKSQiKSxsaT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW25pLHJpLHJpLG5pXSsiXFwpJCIpLGhpPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIGZpKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gZGkoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBwaSh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1paS5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP3lpKGUpOjM9PT1uP25ldyBiaShlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/Z2koZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/Z2koZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1haS5leGVjKHQpKT9uZXcgYmkoZVsxXSxlWzJdLGVbM10sMSk6KGU9b2kuZXhlYyh0KSk/bmV3IGJpKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPXNpLmV4ZWModCkpP2dpKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPWNpLmV4ZWModCkpP2dpKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXVpLmV4ZWModCkpP2tpKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9bGkuZXhlYyh0KSk/a2koZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpoaS5oYXNPd25Qcm9wZXJ0eSh0KT95aShoaVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IGJpKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24geWkodCl7cmV0dXJuIG5ldyBiaSh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gZ2kodCxlLG4scil7cmV0dXJuIHI8PTAmJih0PWU9bj1OYU4pLG5ldyBiaSh0LGUsbixyKX1mdW5jdGlvbiBtaSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEtyfHwodD1waSh0KSksdD9uZXcgYmkoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IGJpfWZ1bmN0aW9uIHZpKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9taSh0KTpuZXcgYmkodCxlLG4sbnVsbD09cj8xOnIpfWZ1bmN0aW9uIGJpKHQsZSxuLHIpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBfaSgpe3JldHVybiIjIit3aSh0aGlzLnIpK3dpKHRoaXMuZykrd2kodGhpcy5iKX1mdW5jdGlvbiB4aSgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIHdpKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24ga2kodCxlLG4scil7cmV0dXJuIHI8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBFaSh0LGUsbixyKX1mdW5jdGlvbiBUaSh0KXtpZih0IGluc3RhbmNlb2YgRWkpcmV0dXJuIG5ldyBFaSh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBLcnx8KHQ9cGkodCkpLCF0KXJldHVybiBuZXcgRWk7aWYodCBpbnN0YW5jZW9mIEVpKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxyPXQuYi8yNTUsaT1NYXRoLm1pbihlLG4sciksYT1NYXRoLm1heChlLG4sciksbz1OYU4scz1hLWksYz0oYStpKS8yO3JldHVybiBzPyhvPWU9PT1hPyhuLXIpL3MrNioobjxyKTpuPT09YT8oci1lKS9zKzI6KGUtbikvcys0LHMvPWM8LjU/YStpOjItYS1pLG8qPTYwKTpzPWM+MCYmYzwxPzA6byxuZXcgRWkobyxzLGMsdC5vcGFjaXR5KX1mdW5jdGlvbiBFaSh0LGUsbixyKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gQ2kodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfWZ1bmN0aW9uIFNpKHQsZSxuLHIsaSl7dmFyIGE9dCp0LG89YSp0O3JldHVybigoMS0zKnQrMyphLW8pKmUrKDQtNiphKzMqbykqbisoMSszKnQrMyphLTMqbykqcitvKmkpLzZ9WnIoS3IscGkse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6ZmksZm9ybWF0SGV4OmZpLGZvcm1hdEhzbDpmdW5jdGlvbigpe3JldHVybiBUaSh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOmRpLHRvU3RyaW5nOmRpfSksWnIoYmksdmksUXIoS3Ise2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dGk6TWF0aC5wb3codGksdCksbmV3IGJpKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0pyOk1hdGgucG93KEpyLHQpLG5ldyBiaSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4Ol9pLGZvcm1hdEhleDpfaSxmb3JtYXRSZ2I6eGksdG9TdHJpbmc6eGl9KSksWnIoRWksKGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9UaSh0KTpuZXcgRWkodCxlLG4sbnVsbD09cj8xOnIpfSksUXIoS3Ise2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dGk6TWF0aC5wb3codGksdCksbmV3IEVpKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SnI6TWF0aC5wb3coSnIsdCksbmV3IEVpKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLHI9bisobjwuNT9uOjEtbikqZSxpPTIqbi1yO3JldHVybiBuZXcgYmkoQ2kodD49MjQwP3QtMjQwOnQrMTIwLGksciksQ2kodCxpLHIpLENpKHQ8MTIwP3QrMjQwOnQtMTIwLGksciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7Y29uc3QgQWk9dD0+KCk9PnQ7ZnVuY3Rpb24gTWkodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0odCxuKTpBaShpc05hTih0KT9lOnQpfWNvbnN0IE5pPWZ1bmN0aW9uIHQoZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIDE9PSh0PSt0KT9NaTpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHQrciplLG4pfX0oZSxuLHQpOkFpKGlzTmFOKGUpP246ZSl9fShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIHI9bigodD12aSh0KSkuciwoZT12aShlKSkuciksaT1uKHQuZyxlLmcpLGE9bih0LmIsZS5iKSxvPU1pKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPXIoZSksdC5nPWkoZSksdC5iPWEoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSgxKTtmdW5jdGlvbiBEaSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4scixpPWUubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilyPXZpKGVbbl0pLGFbbl09ci5yfHwwLG9bbl09ci5nfHwwLHNbbl09ci5ifHwwO3JldHVybiBhPXQoYSksbz10KG8pLHM9dChzKSxyLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gci5yPWEodCksci5nPW8odCksci5iPXModCkscisiIn19fWZ1bmN0aW9uIE9pKHQsZSl7dmFyIG4scj1lP2UubGVuZ3RoOjAsaT10P01hdGgubWluKHIsdC5sZW5ndGgpOjAsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPGk7KytuKWFbbl09WWkodFtuXSxlW25dKTtmb3IoO248cjsrK24pb1tuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pb1tuXT1hW25dKHQpO3JldHVybiBvfX1mdW5jdGlvbiBCaSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIG4uc2V0VGltZSh0KigxLXIpK2Uqciksbn19ZnVuY3Rpb24gTGkodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gSWkodCxlKXt2YXIgbixyPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9yW25dPVlpKHRbbl0sZVtuXSk6aVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiByKWlbbl09cltuXSh0KTtyZXR1cm4gaX19RGkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBTaSgobi1yL2UpKmUsbyxpLGEscyl9fSkpLERpKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpLGk9dFsocitlLTEpJWVdLGE9dFtyJWVdLG89dFsocisxKSVlXSxzPXRbKHIrMiklZV07cmV0dXJuIFNpKChuLXIvZSkqZSxpLGEsbyxzKX19KSk7dmFyIFJpPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxGaT1uZXcgUmVnRXhwKFJpLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFBpKHQsZSl7dmFyIG4scixpLGE9UmkubGFzdEluZGV4PUZpLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1SaS5leGVjKHQpKSYmKHI9RmkuZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4OkxpKG4scil9KSksYT1GaS5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGppKHQsZSl7ZXx8KGU9W10pO3ZhciBuLHI9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxpPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24oYSl7Zm9yKG49MDtuPHI7KytuKWlbbl09dFtuXSooMS1hKStlW25dKmE7cmV0dXJuIGl9fWZ1bmN0aW9uIFlpKHQsZSl7dmFyIG4scixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP0FpKGUpOigibnVtYmVyIj09PWk/TGk6InN0cmluZyI9PT1pPyhuPXBpKGUpKT8oZT1uLE5pKTpQaTplIGluc3RhbmNlb2YgcGk/Tmk6ZSBpbnN0YW5jZW9mIERhdGU/Qmk6KHI9ZSwhQXJyYXlCdWZmZXIuaXNWaWV3KHIpfHxyIGluc3RhbmNlb2YgRGF0YVZpZXc/QXJyYXkuaXNBcnJheShlKT9PaToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/SWk6TGk6amkpKSh0LGUpfWZ1bmN0aW9uIHppKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLW4pK2Uqbil9fWZ1bmN0aW9uIFVpKHQpe3JldHVybit0fXZhciBxaT1bMCwxXTtmdW5jdGlvbiBIaSh0KXtyZXR1cm4gdH1mdW5jdGlvbiAkaSh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfToobj1pc05hTihlKT9OYU46LjUsZnVuY3Rpb24oKXtyZXR1cm4gbn0pO3ZhciBufWZ1bmN0aW9uIFdpKHQsZSxuKXt2YXIgcj10WzBdLGk9dFsxXSxhPWVbMF0sbz1lWzFdO3JldHVybiBpPHI/KHI9JGkoaSxyKSxhPW4obyxhKSk6KHI9JGkocixpKSxhPW4oYSxvKSksZnVuY3Rpb24odCl7cmV0dXJuIGEocih0KSl9fWZ1bmN0aW9uIFZpKHQsZSxuKXt2YXIgcj1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCktMSxpPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxvPS0xO2Zvcih0W3JdPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTsrK288cjspaVtvXT0kaSh0W29dLHRbbysxXSksYVtvXT1uKGVbb10sZVtvKzFdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49WHIodCxlLDEsciktMTtyZXR1cm4gYVtuXShpW25dKGUpKX19ZnVuY3Rpb24gR2kodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gWGkoKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdCxlLG4scixpLGEsbz1xaSxzPXFpLGM9WWksdT1IaTtmdW5jdGlvbiBsKCl7dmFyIHQsZSxuLGM9TWF0aC5taW4oby5sZW5ndGgscy5sZW5ndGgpO3JldHVybiB1IT09SGkmJih0PW9bMF0sZT1vW2MtMV0sdD5lJiYobj10LHQ9ZSxlPW4pLHU9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSl9KSxyPWM+Mj9WaTpXaSxpPWE9bnVsbCxofWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG51bGw9PWV8fGlzTmFOKGU9K2UpP246KGl8fChpPXIoby5tYXAodCkscyxjKSkpKHQodShlKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gdShlKChhfHwoYT1yKHMsby5tYXAodCksTGkpKSkobikpKX0saC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89QXJyYXkuZnJvbSh0LFVpKSxsKCkpOm8uc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1BcnJheS5mcm9tKHQpLGwoKSk6cy5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHM9QXJyYXkuZnJvbSh0KSxjPXppLGwoKX0saC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0hIXR8fEhpLGwoKSk6dSE9PUhpfSxoLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQsbCgpKTpjfSxoLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxoKTpufSxmdW5jdGlvbihuLHIpe3JldHVybiB0PW4sZT1yLGwoKX19KCkoSGksSGkpfWZ1bmN0aW9uIFppKHQsZSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dGhpcy5yYW5nZSh0KTticmVhaztkZWZhdWx0OnRoaXMucmFuZ2UoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBRaSxLaT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBKaSh0KXtpZighKGU9S2kuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IHRhKHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIHRhKHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIGVhKHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLHI9dC5zbGljZSgwLG4pO3JldHVybltyLmxlbmd0aD4xP3JbMF0rci5zbGljZSgyKTpyLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIG5hKHQpe3JldHVybih0PWVhKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59ZnVuY3Rpb24gcmEodCxlKXt2YXIgbj1lYSh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciByPW5bMF0saT1uWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStyOnIubGVuZ3RoPmkrMT9yLnNsaWNlKDAsaSsxKSsiLiIrci5zbGljZShpKzEpOnIrbmV3IEFycmF5KGktci5sZW5ndGgrMikuam9pbigiMCIpfUppLnByb3RvdHlwZT10YS5wcm90b3R5cGUsdGEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07Y29uc3QgaWE9eyIlIjoodCxlKT0+KDEwMCp0KS50b0ZpeGVkKGUpLGI6dD0+TWF0aC5yb3VuZCh0KS50b1N0cmluZygyKSxjOnQ9PnQrIiIsZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModD1NYXRoLnJvdW5kKHQpKT49MWUyMT90LnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6dC50b1N0cmluZygxMCl9LGU6KHQsZSk9PnQudG9FeHBvbmVudGlhbChlKSxmOih0LGUpPT50LnRvRml4ZWQoZSksZzoodCxlKT0+dC50b1ByZWNpc2lvbihlKSxvOnQ9Pk1hdGgucm91bmQodCkudG9TdHJpbmcoOCkscDoodCxlKT0+cmEoMTAwKnQsZSkscjpyYSxzOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZWEodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgcj1uWzBdLGk9blsxXSxhPWktKFFpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGkvMykpKSkrMSxvPXIubGVuZ3RoO3JldHVybiBhPT09bz9yOmE+bz9yK25ldyBBcnJheShhLW8rMSkuam9pbigiMCIpOmE+MD9yLnNsaWNlKDAsYSkrIi4iK3Iuc2xpY2UoYSk6IjAuIituZXcgQXJyYXkoMS1hKS5qb2luKCIwIikrZWEodCxNYXRoLm1heCgwLGUrYS0xKSlbMF19LFg6dD0+TWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSx4OnQ9Pk1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfTtmdW5jdGlvbiBhYSh0KXtyZXR1cm4gdH12YXIgb2Esc2EsY2EsdWE9QXJyYXkucHJvdG90eXBlLm1hcCxsYT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gaGEodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiBmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhLG8scz0tMTtpZihuPStuLCh0PSt0KT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChyPWU8dCkmJihpPXQsdD1lLGU9aSksMD09PShvPXFyKHQsZSxuKSl8fCFpc0Zpbml0ZShvKSlyZXR1cm5bXTtpZihvPjApe2xldCBuPU1hdGgucm91bmQodC9vKSxyPU1hdGgucm91bmQoZS9vKTtmb3IobipvPHQmJisrbixyKm8+ZSYmLS1yLGE9bmV3IEFycmF5KGk9ci1uKzEpOysrczxpOylhW3NdPShuK3MpKm99ZWxzZXtvPS1vO2xldCBuPU1hdGgucm91bmQodCpvKSxyPU1hdGgucm91bmQoZSpvKTtmb3Iobi9vPHQmJisrbixyL28+ZSYmLS1yLGE9bmV3IEFycmF5KGk9ci1uKzEpOysrczxpOylhW3NdPShuK3MpL299cmV0dXJuIHImJmEucmV2ZXJzZSgpLGF9KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKCk7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpLGE9SHIodCxlLG4pO3N3aXRjaCgocj1KaShudWxsPT1yPyIsZiI6cikpLnR5cGUpe2Nhc2UicyI6dmFyIG89TWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpO3JldHVybiBudWxsIT1yLnByZWNpc2lvbnx8aXNOYU4oaT1mdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKG5hKGUpLzMpKSktbmEoTWF0aC5hYnModCkpKX0oYSxvKSl8fChyLnByZWNpc2lvbj1pKSxjYShyLG8pO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPXIucHJlY2lzaW9ufHxpc05hTihpPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsbmEoZSktbmEodCkpKzF9KGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChyLnByZWNpc2lvbj1pLSgiZSI9PT1yLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsLW5hKE1hdGguYWJzKHQpKSl9KGEpKXx8KHIucHJlY2lzaW9uPWktMiooIiUiPT09ci50eXBlKSl9cmV0dXJuIHNhKHIpfShyWzBdLHJbci5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciByLGksYT1lKCksbz0wLHM9YS5sZW5ndGgtMSxjPWFbb10sdT1hW3NdLGw9MTA7Zm9yKHU8YyYmKGk9YyxjPXUsdT1pLGk9byxvPXMscz1pKTtsLS0gPjA7KXtpZigoaT1xcihjLHUsbikpPT09cilyZXR1cm4gYVtvXT1jLGFbc109dSxlKGEpO2lmKGk+MCljPU1hdGguZmxvb3IoYy9pKSppLHU9TWF0aC5jZWlsKHUvaSkqaTtlbHNle2lmKCEoaTwwKSlicmVhaztjPU1hdGguY2VpbChjKmkpL2ksdT1NYXRoLmZsb29yKHUqaSkvaX1yPWl9cmV0dXJuIHR9LHR9ZnVuY3Rpb24gZmEoKXt2YXIgdD1YaSgpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gR2kodCxmYSgpKX0sWmkuYXBwbHkodCxhcmd1bWVudHMpLGhhKHQpfW9hPWZ1bmN0aW9uKHQpe3ZhciBlLG4scj12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9hYTooZT11YS5jYWxsKHQuZ3JvdXBpbmcsTnVtYmVyKSxuPXQudGhvdXNhbmRzKyIiLGZ1bmN0aW9uKHQscil7Zm9yKHZhciBpPXQubGVuZ3RoLGE9W10sbz0wLHM9ZVswXSxjPTA7aT4wJiZzPjAmJihjK3MrMT5yJiYocz1NYXRoLm1heCgxLHItYykpLGEucHVzaCh0LnN1YnN0cmluZyhpLT1zLGkrcykpLCEoKGMrPXMrMSk+cikpOylzPWVbbz0obysxKSVlLmxlbmd0aF07cmV0dXJuIGEucmV2ZXJzZSgpLmpvaW4obil9KSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixhPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLHM9dm9pZCAwPT09dC5udW1lcmFscz9hYTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0odWEuY2FsbCh0Lm51bWVyYWxzLFN0cmluZykpLGM9dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIsdT12b2lkIDA9PT10Lm1pbnVzPyLiiJIiOnQubWludXMrIiIsbD12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBoKHQpe3ZhciBlPSh0PUppKHQpKS5maWxsLG49dC5hbGlnbixoPXQuc2lnbixmPXQuc3ltYm9sLGQ9dC56ZXJvLHA9dC53aWR0aCx5PXQuY29tbWEsZz10LnByZWNpc2lvbixtPXQudHJpbSx2PXQudHlwZTsibiI9PT12Pyh5PSEwLHY9ImciKTppYVt2XXx8KHZvaWQgMD09PWcmJihnPTEyKSxtPSEwLHY9ImciKSwoZHx8IjAiPT09ZSYmIj0iPT09bikmJihkPSEwLGU9IjAiLG49Ij0iKTt2YXIgYj0iJCI9PT1mP2k6IiMiPT09ZiYmL1tib3hYXS8udGVzdCh2KT8iMCIrdi50b0xvd2VyQ2FzZSgpOiIiLF89IiQiPT09Zj9hOi9bJXBdLy50ZXN0KHYpP2M6IiIseD1pYVt2XSx3PS9bZGVmZ3BycyVdLy50ZXN0KHYpO2Z1bmN0aW9uIGsodCl7dmFyIGksYSxjLGY9YixrPV87aWYoImMiPT09dilrPXgodCkrayx0PSIiO2Vsc2V7dmFyIFQ9KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/bDp4KE1hdGguYWJzKHQpLGcpLG0mJih0PWZ1bmN0aW9uKHQpe3Q6Zm9yKHZhciBlLG49dC5sZW5ndGgscj0xLGk9LTE7cjxuOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjppPWU9cjticmVhaztjYXNlIjAiOjA9PT1pJiYoaT1yKSxlPXI7YnJlYWs7ZGVmYXVsdDppZighK3Rbcl0pYnJlYWsgdDtpPjAmJihpPTApfXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UoZSsxKTp0fSh0KSksVCYmMD09K3QmJiIrIiE9PWgmJihUPSExKSxmPShUPyIoIj09PWg/aDp1OiItIj09PWh8fCIoIj09PWg/IiI6aCkrZixrPSgicyI9PT12P2xhWzgrUWkvM106IiIpK2srKFQmJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLGE9dC5sZW5ndGg7KytpPGE7KWlmKDQ4PihjPXQuY2hhckNvZGVBdChpKSl8fGM+NTcpe2s9KDQ2PT09Yz9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStrLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX15JiYhZCYmKHQ9cih0LDEvMCkpO3ZhciBFPWYubGVuZ3RoK3QubGVuZ3RoK2subGVuZ3RoLEM9RTxwP25ldyBBcnJheShwLUUrMSkuam9pbihlKToiIjtzd2l0Y2goeSYmZCYmKHQ9cihDK3QsQy5sZW5ndGg/cC1rLmxlbmd0aDoxLzApLEM9IiIpLG4pe2Nhc2UiPCI6dD1mK3QraytDO2JyZWFrO2Nhc2UiPSI6dD1mK0MrdCtrO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsRT1DLmxlbmd0aD4+MSkrZit0K2srQy5zbGljZShFKTticmVhaztkZWZhdWx0OnQ9QytmK3Qra31yZXR1cm4gcyh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh2KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxrLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LGt9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbih0LGUpe3ZhciBuPWgoKCh0PUppKHQpKS50eXBlPSJmIix0KSkscj0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihuYShlKS8zKSkpLGk9TWF0aC5wb3coMTAsLXIpLGE9bGFbOCtyLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihpKnQpK2F9fX19KHt0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pLHNhPW9hLmZvcm1hdCxjYT1vYS5mb3JtYXRQcmVmaXg7Y2xhc3MgZGEgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IodCxlPXlhKXtpZihzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse19pbnRlcm46e3ZhbHVlOm5ldyBNYXB9LF9rZXk6e3ZhbHVlOmV9fSksbnVsbCE9dClmb3IoY29uc3RbZSxuXW9mIHQpdGhpcy5zZXQoZSxuKX1nZXQodCl7cmV0dXJuIHN1cGVyLmdldChwYSh0aGlzLHQpKX1oYXModCl7cmV0dXJuIHN1cGVyLmhhcyhwYSh0aGlzLHQpKX1zZXQodCxlKXtyZXR1cm4gc3VwZXIuc2V0KGZ1bmN0aW9uKHtfaW50ZXJuOnQsX2tleTplfSxuKXtjb25zdCByPWUobik7cmV0dXJuIHQuaGFzKHIpP3QuZ2V0KHIpOih0LnNldChyLG4pLG4pfSh0aGlzLHQpLGUpfWRlbGV0ZSh0KXtyZXR1cm4gc3VwZXIuZGVsZXRlKGZ1bmN0aW9uKHtfaW50ZXJuOnQsX2tleTplfSxuKXtjb25zdCByPWUobik7cmV0dXJuIHQuaGFzKHIpJiYobj10LmdldChyKSx0LmRlbGV0ZShyKSksbn0odGhpcyx0KSl9fWZ1bmN0aW9uIHBhKHtfaW50ZXJuOnQsX2tleTplfSxuKXtjb25zdCByPWUobik7cmV0dXJuIHQuaGFzKHIpP3QuZ2V0KHIpOm59ZnVuY3Rpb24geWEodCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQ/dC52YWx1ZU9mKCk6dH1TZXQ7Y29uc3QgZ2E9U3ltYm9sKCJpbXBsaWNpdCIpO2Z1bmN0aW9uIG1hKCl7dmFyIHQ9bmV3IGRhLGU9W10sbj1bXSxyPWdhO2Z1bmN0aW9uIGkoaSl7bGV0IGE9dC5nZXQoaSk7aWYodm9pZCAwPT09YSl7aWYociE9PWdhKXJldHVybiByO3Quc2V0KGksYT1lLnB1c2goaSktMSl9cmV0dXJuIG5bYSVuLmxlbmd0aF19cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKG4pe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXSx0PW5ldyBkYTtmb3IoY29uc3QgciBvZiBuKXQuaGFzKHIpfHx0LnNldChyLGUucHVzaChyKS0xKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1BcnJheS5mcm9tKHQpLGkpOm4uc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSk6cn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIG1hKGUsbikudW5rbm93bihyKX0sWmkuYXBwbHkoaSxhcmd1bWVudHMpLGl9Y29uc3QgdmE9MWUzLGJhPTZlNCxfYT0zNmU1LHhhPTg2NGU1LHdhPTYwNDhlNSxrYT0zMTUzNmU2O3ZhciBUYT1uZXcgRGF0ZSxFYT1uZXcgRGF0ZTtmdW5jdGlvbiBDYSh0LGUsbixyKXtmdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxpLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxpLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj1pLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxpLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxpLnJhbmdlPWZ1bmN0aW9uKG4scixhKXt2YXIgbyxzPVtdO2lmKG49aS5jZWlsKG4pLGE9bnVsbD09YT8xOk1hdGguZmxvb3IoYSksIShuPHImJmE+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKG89bmV3IERhdGUoK24pKSxlKG4sYSksdChuKX13aGlsZShvPG4mJm48cik7cmV0dXJuIHN9LGkuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBDYSgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQscil7aWYodD49dClpZihyPDApZm9yKDsrK3I8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLXI+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoaS5jb3VudD1mdW5jdGlvbihlLHIpe3JldHVybiBUYS5zZXRUaW1lKCtlKSxFYS5zZXRUaW1lKCtyKSx0KFRhKSx0KEVhKSxNYXRoLmZsb29yKG4oVGEsRWEpKX0saS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2kuZmlsdGVyKHI/ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY291bnQoMCxlKSV0PT0wfSk6aTpudWxsfSksaX12YXIgU2E9Q2EoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtTYS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP0NhKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOlNhOm51bGx9O2NvbnN0IEFhPVNhO1NhLnJhbmdlO3ZhciBNYT1DYSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp2YSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS92YX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSk7Y29uc3QgTmE9TWE7TWEucmFuZ2U7dmFyIERhPUNhKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKnZhKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmJhKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2JhfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKTtjb25zdCBPYT1EYTtEYS5yYW5nZTt2YXIgQmE9Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqdmEtdC5nZXRNaW51dGVzKCkqYmEpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqX2EpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvX2F9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKTtjb25zdCBMYT1CYTtCYS5yYW5nZTt2YXIgSWE9Q2EoKHQ9PnQuc2V0SG91cnMoMCwwLDAsMCkpLCgodCxlKT0+dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpKSwoKHQsZSk9PihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmJhKS94YSksKHQ9PnQuZ2V0RGF0ZSgpLTEpKTtjb25zdCBSYT1JYTtmdW5jdGlvbiBGYSh0KXtyZXR1cm4gQ2EoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmJhKS93YX0pKX1JYS5yYW5nZTt2YXIgUGE9RmEoMCksamE9RmEoMSksWWE9RmEoMiksemE9RmEoMyksVWE9RmEoNCkscWE9RmEoNSksSGE9RmEoNiksJGE9KFBhLnJhbmdlLGphLnJhbmdlLFlhLnJhbmdlLHphLnJhbmdlLFVhLnJhbmdlLHFhLnJhbmdlLEhhLnJhbmdlLENhKChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSkpO2NvbnN0IFdhPSRhOyRhLnJhbmdlO3ZhciBWYT1DYSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7VmEuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9DYSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07Y29uc3QgR2E9VmE7VmEucmFuZ2U7dmFyIFhhPUNhKChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmJhKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2JhfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKTtjb25zdCBaYT1YYTtYYS5yYW5nZTt2YXIgUWE9Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpfYSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9fYX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpO2NvbnN0IEthPVFhO1FhLnJhbmdlO3ZhciBKYT1DYSgoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3hhfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2NvbnN0IHRvPUphO2Z1bmN0aW9uIGVvKHQpe3JldHVybiBDYSgoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvd2F9KSl9SmEucmFuZ2U7dmFyIG5vPWVvKDApLHJvPWVvKDEpLGlvPWVvKDIpLGFvPWVvKDMpLG9vPWVvKDQpLHNvPWVvKDUpLGNvPWVvKDYpLHVvPShuby5yYW5nZSxyby5yYW5nZSxpby5yYW5nZSxhby5yYW5nZSxvby5yYW5nZSxzby5yYW5nZSxjby5yYW5nZSxDYSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpKTtjb25zdCBsbz11bzt1by5yYW5nZTt2YXIgaG89Q2EoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO2hvLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/Q2EoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IGZvPWhvO2Z1bmN0aW9uIHBvKHQsZSxuLHIsaSxhKXtjb25zdCBvPVtbTmEsMSx2YV0sW05hLDUsNWUzXSxbTmEsMTUsMTVlM10sW05hLDMwLDNlNF0sW2EsMSxiYV0sW2EsNSwzZTVdLFthLDE1LDllNV0sW2EsMzAsMThlNV0sW2ksMSxfYV0sW2ksMywxMDhlNV0sW2ksNiwyMTZlNV0sW2ksMTIsNDMyZTVdLFtyLDEseGFdLFtyLDIsMTcyOGU1XSxbbiwxLHdhXSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsa2FdXTtmdW5jdGlvbiBzKGUsbixyKXtjb25zdCBpPU1hdGguYWJzKG4tZSkvcixhPVdyKCgoWywsdF0pPT50KSkucmlnaHQobyxpKTtpZihhPT09by5sZW5ndGgpcmV0dXJuIHQuZXZlcnkoSHIoZS9rYSxuL2thLHIpKTtpZigwPT09YSlyZXR1cm4gQWEuZXZlcnkoTWF0aC5tYXgoSHIoZSxuLHIpLDEpKTtjb25zdFtzLGNdPW9baS9vW2EtMV1bMl08b1thXVsyXS9pP2EtMTphXTtyZXR1cm4gcy5ldmVyeShjKX1yZXR1cm5bZnVuY3Rpb24odCxlLG4pe2NvbnN0IHI9ZTx0O3ImJihbdCxlXT1bZSx0XSk7Y29uc3QgaT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5yYW5nZT9uOnModCxlLG4pLGE9aT9pLnJhbmdlKHQsK2UrMSk6W107cmV0dXJuIHI/YS5yZXZlcnNlKCk6YX0sc119aG8ucmFuZ2U7Y29uc3RbeW8sZ29dPXBvKGZvLGxvLG5vLHRvLEthLFphKSxbbW8sdm9dPXBvKEdhLFdhLFBhLFJhLExhLE9hKTtmdW5jdGlvbiBibyh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gX28odCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24geG8odCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fXZhciB3byxrbyxUbz17Ii0iOiIiLF86IiAiLDA6IjAifSxFbz0vXlxzKlxkKy8sQ289L14lLyxTbz0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gQW8odCxlLG4pe3ZhciByPXQ8MD8iLSI6IiIsaT0ocj8tdDp0KSsiIixhPWkubGVuZ3RoO3JldHVybiByKyhhPG4/bmV3IEFycmF5KG4tYSsxKS5qb2luKGUpK2k6aSl9ZnVuY3Rpb24gTW8odCl7cmV0dXJuIHQucmVwbGFjZShTbywiXFwkJiIpfWZ1bmN0aW9uIE5vKHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChNbykuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIERvKHQpe3JldHVybiBuZXcgTWFwKHQubWFwKCgodCxlKT0+W3QudG9Mb3dlckNhc2UoKSxlXSkpKX1mdW5jdGlvbiBPbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/KHQudz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/KHQudT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuVT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuVj0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuVz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIHI/KHQueT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQbyh0LGUsbil7dmFyIHI9RW8uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQueT0rclswXSsoK3JbMF0+Njg/MTkwMDoyZTMpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGpvKHQsZSxuKXt2YXIgcj0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KHQuWj1yWzFdPzA6LShyWzJdKyhyWzNdfHwiMDAiKSksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWW8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0LnE9MypyWzBdLTMsbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gem8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lm09clswXS0xLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFVvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5kPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHFvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8odC5tPTAsdC5kPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEhvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5IPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uICRvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5NPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFdvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5TPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFZvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8odC5MPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEdvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gcj8odC5MPU1hdGguZmxvb3IoclswXS8xZTMpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFhvKHQsZSxuKXt2YXIgcj1Dby5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj9uK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIFpvKHQsZSxuKXt2YXIgcj1Fby5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LlE9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUW8odCxlLG4pe3ZhciByPUVvLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQucz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBLbyh0LGUpe3JldHVybiBBbyh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIEpvKHQsZSl7cmV0dXJuIEFvKHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIHRzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBlcyh0LGUpe3JldHVybiBBbygxK1JhLmNvdW50KEdhKHQpLHQpLGUsMyl9ZnVuY3Rpb24gbnModCxlKXtyZXR1cm4gQW8odC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIHJzKHQsZSl7cmV0dXJuIG5zKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gaXModCxlKXtyZXR1cm4gQW8odC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBhcyh0LGUpe3JldHVybiBBbyh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIG9zKHQsZSl7cmV0dXJuIEFvKHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gc3ModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGNzKHQsZSl7cmV0dXJuIEFvKFBhLmNvdW50KEdhKHQpLTEsdCksZSwyKX1mdW5jdGlvbiB1cyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiBlPj00fHwwPT09ZT9VYSh0KTpVYS5jZWlsKHQpfWZ1bmN0aW9uIGxzKHQsZSl7cmV0dXJuIHQ9dXModCksQW8oVWEuY291bnQoR2EodCksdCkrKDQ9PT1HYSh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBocyh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBmcyh0LGUpe3JldHVybiBBbyhqYS5jb3VudChHYSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gZHModCxlKXtyZXR1cm4gQW8odC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHBzKHQsZSl7cmV0dXJuIEFvKCh0PXVzKHQpKS5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHlzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBncyh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIEFvKCh0PW4+PTR8fDA9PT1uP1VhKHQpOlVhLmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gbXModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStBbyhlLzYwfDAsIjAiLDIpK0FvKGUlNjAsIjAiLDIpfWZ1bmN0aW9uIHZzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gYnModCxlKXtyZXR1cm4gQW8odC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gX3ModCxlKXtyZXR1cm4gQW8odC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIHhzKHQsZSl7cmV0dXJuIEFvKDErdG8uY291bnQoZm8odCksdCksZSwzKX1mdW5jdGlvbiB3cyh0LGUpe3JldHVybiBBbyh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24ga3ModCxlKXtyZXR1cm4gd3ModCxlKSsiMDAwIn1mdW5jdGlvbiBUcyh0LGUpe3JldHVybiBBbyh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIEVzKHQsZSl7cmV0dXJuIEFvKHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gQ3ModCxlKXtyZXR1cm4gQW8odC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBTcyh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gQXModCxlKXtyZXR1cm4gQW8obm8uY291bnQoZm8odCktMSx0KSxlLDIpfWZ1bmN0aW9uIE1zKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP29vKHQpOm9vLmNlaWwodCl9ZnVuY3Rpb24gTnModCxlKXtyZXR1cm4gdD1Ncyh0KSxBbyhvby5jb3VudChmbyh0KSx0KSsoND09PWZvKHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uIERzKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIE9zKHQsZSl7cmV0dXJuIEFvKHJvLmNvdW50KGZvKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBCcyh0LGUpe3JldHVybiBBbyh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gTHModCxlKXtyZXR1cm4gQW8oKHQ9TXModCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gSXModCxlKXtyZXR1cm4gQW8odC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIFJzKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gQW8oKHQ9bj49NHx8MD09PW4/b28odCk6b28uY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBGcygpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gUHMoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24ganModCl7cmV0dXJuK3R9ZnVuY3Rpb24gWXModCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB6cyh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gVXModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gcXModCxlLG4scixpLGEsbyxzLGMsdSl7dmFyIGw9WGkoKSxoPWwuaW52ZXJ0LGY9bC5kb21haW4sZD11KCIuJUwiKSxwPXUoIjolUyIpLHk9dSgiJUk6JU0iKSxnPXUoIiVJICVwIiksbT11KCIlYSAlZCIpLHY9dSgiJWIgJWQiKSxiPXUoIiVCIiksXz11KCIlWSIpO2Z1bmN0aW9uIHgodCl7cmV0dXJuKGModCk8dD9kOnModCk8dD9wOm8odCk8dD95OmEodCk8dD9nOnIodCk8dD9pKHQpPHQ/bTp2Om4odCk8dD9iOl8pKHQpfXJldHVybiBsLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUoaCh0KSl9LGwuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2YoQXJyYXkuZnJvbSh0LFVzKSk6ZigpLm1hcCh6cyl9LGwudGlja3M9ZnVuY3Rpb24oZSl7dmFyIG49ZigpO3JldHVybiB0KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT1lPzEwOmUpfSxsLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT94OnUoZSl9LGwubmljZT1mdW5jdGlvbih0KXt2YXIgbj1mKCk7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJhbmdlfHwodD1lKG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpKSx0P2YoZnVuY3Rpb24odCxlKXt2YXIgbixyPTAsaT0odD10LnNsaWNlKCkpLmxlbmd0aC0xLGE9dFtyXSxvPXRbaV07cmV0dXJuIG88YSYmKG49cixyPWksaT1uLG49YSxhPW8sbz1uKSx0W3JdPWUuZmxvb3IoYSksdFtpXT1lLmNlaWwobyksdH0obix0KSk6bH0sbC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEdpKGwscXModCxlLG4scixpLGEsbyxzLGMsdSkpfSxsfWZ1bmN0aW9uIEhzKCl7fWZ1bmN0aW9uICRzKHQpe3JldHVybiBudWxsPT10P0hzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gV3ModCl7cmV0dXJuIG51bGw9PXQ/W106QXJyYXkuaXNBcnJheSh0KT90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gVnMoKXtyZXR1cm5bXX1mdW5jdGlvbiBHcyh0KXtyZXR1cm4gbnVsbD09dD9WczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIFhzKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIFpzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRjaGVzKHQpfX13bz1mdW5jdGlvbih0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLHI9dC50aW1lLGk9dC5wZXJpb2RzLGE9dC5kYXlzLG89dC5zaG9ydERheXMscz10Lm1vbnRocyxjPXQuc2hvcnRNb250aHMsdT1ObyhpKSxsPURvKGkpLGg9Tm8oYSksZj1EbyhhKSxkPU5vKG8pLHA9RG8obykseT1ObyhzKSxnPURvKHMpLG09Tm8oYyksdj1EbyhjKSxiPXthOmZ1bmN0aW9uKHQpe3JldHVybiBvW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBjW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24odCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6S28sZTpLbyxmOnJzLGc6cHMsRzpncyxIOkpvLEk6dHMsajplcyxMOm5zLG06aXMsTTphcyxwOmZ1bmN0aW9uKHQpe3JldHVybiBpWysodC5nZXRIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpqcyxzOllzLFM6b3MsdTpzcyxVOmNzLFY6bHMsdzpocyxXOmZzLHg6bnVsbCxYOm51bGwseTpkcyxZOnlzLFo6bXMsIiUiOlBzfSxfPXthOmZ1bmN0aW9uKHQpe3JldHVybiBvW3QuZ2V0VVRDRGF5KCldfSxBOmZ1bmN0aW9uKHQpe3JldHVybiBhW3QuZ2V0VVRDRGF5KCldfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBjW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24odCl7cmV0dXJuIHNbdC5nZXRVVENNb250aCgpXX0sYzpudWxsLGQ6dnMsZTp2cyxmOmtzLGc6THMsRzpScyxIOmJzLEk6X3Msajp4cyxMOndzLG06VHMsTTpFcyxwOmZ1bmN0aW9uKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uKHQpe3JldHVybiAxK35+KHQuZ2V0VVRDTW9udGgoKS8zKX0sUTpqcyxzOllzLFM6Q3MsdTpTcyxVOkFzLFY6TnMsdzpEcyxXOk9zLHg6bnVsbCxYOm51bGwseTpCcyxZOklzLFo6RnMsIiUiOlBzfSx4PXthOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQudz1wLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1oLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQudz1mLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQubT12LmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj15LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQubT1nLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gVCh0LGUsbixyKX0sZDpVbyxlOlVvLGY6R28sZzpQbyxHOkZvLEg6SG8sSTpIbyxqOnFvLEw6Vm8sbTp6byxNOiRvLHA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5wPWwuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksbityWzBdLmxlbmd0aCk6LTF9LHE6WW8sUTpabyxzOlFvLFM6V28sdTpCbyxVOkxvLFY6SW8sdzpPbyxXOlJvLHg6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBUKHQsbixlLHIpfSxYOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gVCh0LHIsZSxuKX0seTpQbyxZOkZvLFo6am8sIiUiOlhvfTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYSxvPVtdLHM9LTEsYz0wLHU9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczx1OykzNz09PXQuY2hhckNvZGVBdChzKSYmKG8ucHVzaCh0LnNsaWNlKGMscykpLG51bGwhPShpPVRvW3I9dC5jaGFyQXQoKytzKV0pP3I9dC5jaGFyQXQoKytzKTppPSJlIj09PXI/IiAiOiIwIiwoYT1lW3JdKSYmKHI9YShuLGkpKSxvLnB1c2gociksYz1zKzEpO3JldHVybiBvLnB1c2godC5zbGljZShjLHMpKSxvLmpvaW4oIiIpfX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYT14bygxOTAwLHZvaWQgMCwxKTtpZihUKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0ocj1fbyh4byhhLnksMCwxKSkpLmdldFVUQ0RheSgpLHI9aT40fHwwPT09aT9yby5jZWlsKHIpOnJvKHIpLHI9dG8ub2Zmc2V0KHIsNyooYS5WLTEpKSxhLnk9ci5nZXRVVENGdWxsWWVhcigpLGEubT1yLmdldFVUQ01vbnRoKCksYS5kPXIuZ2V0VVRDRGF0ZSgpKyhhLncrNiklNyk6KGk9KHI9Ym8oeG8oYS55LDAsMSkpKS5nZXREYXkoKSxyPWk+NHx8MD09PWk/amEuY2VpbChyKTpqYShyKSxyPVJhLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0RnVsbFllYXIoKSxhLm09ci5nZXRNb250aCgpLGEuZD1yLmdldERhdGUoKSsoYS53KzYpJTcpfWVsc2UoIlciaW4gYXx8IlUiaW4gYSkmJigidyJpbiBhfHwoYS53PSJ1ImluIGE/YS51JTc6IlciaW4gYT8xOjApLGk9IloiaW4gYT9fbyh4byhhLnksMCwxKSkuZ2V0VVRDRGF5KCk6Ym8oeG8oYS55LDAsMSkpLmdldERheSgpLGEubT0wLGEuZD0iVyJpbiBhPyhhLncrNiklNys3KmEuVy0oaSs1KSU3OmEudys3KmEuVS0oaSs2KSU3KTtyZXR1cm4iWiJpbiBhPyhhLkgrPWEuWi8xMDB8MCxhLk0rPWEuWiUxMDAsX28oYSkpOmJvKGEpfX1mdW5jdGlvbiBUKHQsZSxuLHIpe2Zvcih2YXIgaSxhLG89MCxzPWUubGVuZ3RoLGM9bi5sZW5ndGg7bzxzOyl7aWYocj49YylyZXR1cm4tMTtpZigzNz09PShpPWUuY2hhckNvZGVBdChvKyspKSl7aWYoaT1lLmNoYXJBdChvKyspLCEoYT14W2kgaW4gVG8/ZS5jaGFyQXQobysrKTppXSl8fChyPWEodCxuLHIpKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9bi5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9cmV0dXJuIGIueD13KG4sYiksYi5YPXcocixiKSxiLmM9dyhlLGIpLF8ueD13KG4sXyksXy5YPXcocixfKSxfLmM9dyhlLF8pLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixiKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixfKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19KHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSksa289d28uZm9ybWF0LHdvLnBhcnNlLHdvLnV0Y0Zvcm1hdCx3by51dGNQYXJzZTt2YXIgUXM9QXJyYXkucHJvdG90eXBlLmZpbmQ7ZnVuY3Rpb24gS3MoKXtyZXR1cm4gdGhpcy5maXJzdEVsZW1lbnRDaGlsZH12YXIgSnM9QXJyYXkucHJvdG90eXBlLmZpbHRlcjtmdW5jdGlvbiB0Yygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pfWZ1bmN0aW9uIGVjKHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIG5jKHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIHJjKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBpYyh0LGUsbixyLGksYSl7Zm9yKHZhciBvLHM9MCxjPWUubGVuZ3RoLHU9YS5sZW5ndGg7czx1Oysrcykobz1lW3NdKT8oby5fX2RhdGFfXz1hW3NdLHJbc109byk6bltzXT1uZXcgbmModCxhW3NdKTtmb3IoO3M8YzsrK3MpKG89ZVtzXSkmJihpW3NdPW8pfWZ1bmN0aW9uIGFjKHQsZSxuLHIsaSxhLG8pe3ZhciBzLGMsdSxsPW5ldyBNYXAsaD1lLmxlbmd0aCxmPWEubGVuZ3RoLGQ9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmKGRbc109dT1vLmNhbGwoYyxjLl9fZGF0YV9fLHMsZSkrIiIsbC5oYXModSk/aVtzXT1jOmwuc2V0KHUsYykpO2ZvcihzPTA7czxmOysrcyl1PW8uY2FsbCh0LGFbc10scyxhKSsiIiwoYz1sLmdldCh1KSk/KHJbc109YyxjLl9fZGF0YV9fPWFbc10sbC5kZWxldGUodSkpOm5bc109bmV3IG5jKHQsYVtzXSk7Zm9yKHM9MDtzPGg7KytzKShjPWVbc10pJiZsLmdldChkW3NdKT09PWMmJihpW3NdPWMpfWZ1bmN0aW9uIG9jKHQpe3JldHVybiB0Ll9fZGF0YV9ffWZ1bmN0aW9uIHNjKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBjYyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1uYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm5jLGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O3ZhciB1Yz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7Y29uc3QgbGM9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnVjLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gaGModCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksbGMuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmxjW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gZmModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGRjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcGModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiB5Yyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBnYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gbWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gdmModCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGJjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIF9jKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24geGModCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQscixuKX19ZnVuY3Rpb24gd2ModCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHx2Yyh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBrYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gVGModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIEVjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIENjKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBTYyh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBBYyh0KX1mdW5jdGlvbiBBYyh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9Q2ModC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBNYyh0LGUpe2Zvcih2YXIgbj1TYyh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4uYWRkKGVbcl0pfWZ1bmN0aW9uIE5jKHQsZSl7Zm9yKHZhciBuPVNjKHQpLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspbi5yZW1vdmUoZVtyXSl9ZnVuY3Rpb24gRGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7TWModGhpcyx0KX19ZnVuY3Rpb24gT2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7TmModGhpcyx0KX19ZnVuY3Rpb24gQmModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/TWM6TmMpKHRoaXMsdCl9fWZ1bmN0aW9uIExjKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBJYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFJjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBGYygpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIFBjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIGpjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gWWMoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gemMoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBVYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PXVjJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT11Yz9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gcWModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gSGModCl7dmFyIGU9aGModCk7cmV0dXJuKGUubG9jYWw/cWM6VWMpKGUpfWZ1bmN0aW9uICRjKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gV2MoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBWYygpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gR2MoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFhjKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFpjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4scj0wLGk9LTEsYT1lLmxlbmd0aDtyPGE7KytyKW49ZVtyXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytpXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLm9wdGlvbnMpOysraT9lLmxlbmd0aD1pOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBRYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsaT10aGlzLl9fb24sYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5jYWxsKHRoaXMsZSx0aGlzLl9fZGF0YV9fKX19KGUpO2lmKGkpZm9yKHZhciBvPTAscz1pLmxlbmd0aDtvPHM7KytvKWlmKChyPWlbb10pLnR5cGU9PT10LnR5cGUmJnIubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHIudHlwZSxyLmxpc3RlbmVyLHIub3B0aW9ucyksdGhpcy5hZGRFdmVudExpc3RlbmVyKHIudHlwZSxyLmxpc3RlbmVyPWEsci5vcHRpb25zPW4pLHZvaWQoci52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGEsbikscj17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjphLG9wdGlvbnM6bn0saT9pLnB1c2gocik6dGhpcy5fX29uPVtyXX19ZnVuY3Rpb24gS2ModCxlLG4pe3ZhciByPXZjKHQpLGk9ci5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaT9pPW5ldyBpKGUsbik6KGk9ci5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhpLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLGkuZGV0YWlsPW4uZGV0YWlsKTppLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIEpjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEtjKHRoaXMsdCxlKX19ZnVuY3Rpb24gdHUodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gS2ModGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19QWMucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgZXU9W251bGxdO2Z1bmN0aW9uIG51KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIHJ1KCl7cmV0dXJuIG5ldyBudShbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGV1KX1udS5wcm90b3R5cGU9cnUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpudSxzZWxlY3Q6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PSRzKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG8scz1lW2ldLGM9cy5sZW5ndGgsdT1yW2ldPW5ldyBBcnJheShjKSxsPTA7bDxjOysrbCkoYT1zW2xdKSYmKG89dC5jYWxsKGEsYS5fX2RhdGFfXyxsLHMpKSYmKCJfX2RhdGFfXyJpbiBhJiYoby5fX2RhdGFfXz1hLl9fZGF0YV9fKSx1W2xdPW8pO3JldHVybiBuZXcgbnUocix0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3Q9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFdzKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19KHQpOkdzKHQpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciBvLHM9ZVthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiYoci5wdXNoKHQuY2FsbChvLG8uX19kYXRhX18sdSxzKSksaS5wdXNoKG8pKTtyZXR1cm4gbmV3IG51KHIsaSl9LHNlbGVjdENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdChudWxsPT10P0tzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBRcy5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90OlpzKHQpKSl9LHNlbGVjdENoaWxkcmVuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdEFsbChudWxsPT10P3RjOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBKcy5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90OlpzKHQpKSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WHModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbz1lW2ldLHM9by5sZW5ndGgsYz1yW2ldPVtdLHU9MDt1PHM7Kyt1KShhPW9bdV0pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLHUsbykmJmMucHVzaChhKTtyZXR1cm4gbmV3IG51KHIsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24odCxlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLG9jKTt2YXIgbj1lP2FjOmljLHI9dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cmModCkpO2Zvcih2YXIgYT1pLmxlbmd0aCxvPW5ldyBBcnJheShhKSxzPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGw9clt1XSxoPWlbdV0sZj1oLmxlbmd0aCxkPXNjKHQuY2FsbChsLGwmJmwuX19kYXRhX18sdSxyKSkscD1kLmxlbmd0aCx5PXNbdV09bmV3IEFycmF5KHApLGc9b1t1XT1uZXcgQXJyYXkocCksbT1jW3VdPW5ldyBBcnJheShmKTtuKGwsaCx5LGcsbSxkLGUpO2Zvcih2YXIgdixiLF89MCx4PTA7XzxwOysrXylpZih2PXlbX10pe2ZvcihfPj14JiYoeD1fKzEpOyEoYj1nW3hdKSYmKyt4PHA7KTt2Ll9uZXh0PWJ8fG51bGx9fXJldHVybihvPW5ldyBudShvLHIpKS5fZW50ZXI9cyxvLl9leGl0PWMsb30sZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG51KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGVjKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbigpe3JldHVybiBuZXcgbnUodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChlYyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD8ocj10KHIpKSYmKHI9ci5zZWxlY3Rpb24oKSk6cj1yLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYoaT1lKGkpKSYmKGk9aS5zZWxlY3Rpb24oKSksbnVsbD09bj9hLnJlbW92ZSgpOm4oYSksciYmaT9yLm1lcmdlKGkpLm9yZGVyKCk6aX0sbWVyZ2U6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dCxuPXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxpPW4ubGVuZ3RoLGE9ci5sZW5ndGgsbz1NYXRoLm1pbihpLGEpLHM9bmV3IEFycmF5KGkpLGM9MDtjPG87KytjKWZvcih2YXIgdSxsPW5bY10saD1yW2NdLGY9bC5sZW5ndGgsZD1zW2NdPW5ldyBBcnJheShmKSxwPTA7cDxmOysrcCkodT1sW3BdfHxoW3BdKSYmKGRbcF09dSk7Zm9yKDtjPGk7KytjKXNbY109bltjXTtyZXR1cm4gbmV3IG51KHMsdGhpcy5fcGFyZW50cyl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxvcmRlcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIHIsaT10W2VdLGE9aS5sZW5ndGgtMSxvPWlbYV07LS1hPj0wOykocj1pW2FdKSYmKG8mJjReci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKSYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLG8pLG89cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1jYyk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxyPW4ubGVuZ3RoLGk9bmV3IEFycmF5KHIpLGE9MDthPHI7KythKXtmb3IodmFyIG8scz1uW2FdLGM9cy5sZW5ndGgsdT1pW2FdPW5ldyBBcnJheShjKSxsPTA7bDxjOysrbCkobz1zW2xdKSYmKHVbbF09byk7dS5zb3J0KGUpfXJldHVybiBuZXcgbnUoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfSxub2RlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgcj10W2VdLGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpe3ZhciBvPXJbaV07aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbigpe2xldCB0PTA7Zm9yKGNvbnN0IGUgb2YgdGhpcykrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLHI9ZS5sZW5ndGg7bjxyOysrbilmb3IodmFyIGksYT1lW25dLG89MCxzPWEubGVuZ3RoO288czsrK28pKGk9YVtvXSkmJnQuY2FsbChpLGkuX19kYXRhX18sbyxhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbih0LGUpe3ZhciBuPWhjKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHI9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/ci5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnIuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9kYzpmYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP21jOmdjOm4ubG9jYWw/eWM6cGMpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/YmM6ImZ1bmN0aW9uIj09dHlwZW9mIGU/eGM6X2MpKHQsZSxudWxsPT1uPyIiOm4pKTp3Yyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9rYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9FYzpUYykodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1DYyh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcj1TYyh0aGlzLm5vZGUoKSksaT0tMSxhPW4ubGVuZ3RoOysraTxhOylpZighci5jb250YWlucyhuW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9CYzplP0RjOk9jKShuLGUpKX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9MYzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UmM6SWMpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9GYzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/amM6UGMpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChZYyl9LGxvd2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaCh6Yyl9LGFwcGVuZDpmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhjKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGModCkscj1udWxsPT1lPyRjOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6JHMoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goV2MpfSxjbG9uZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9HYzpWYyl9LGRhdHVtOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYT1YYyh0KyIiKSxvPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9RYzpaYyxyPTA7cjxvOysrcil0aGlzLmVhY2gocyhhW3JdLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGMsdT0wLGw9cy5sZW5ndGg7dTxsOysrdSlmb3Iocj0wLGM9c1t1XTtyPG87KytyKWlmKChpPWFbcl0pLnR5cGU9PT1jLnR5cGUmJmkubmFtZT09PWMubmFtZSlyZXR1cm4gYy52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT90dTpKYykodCxlKSl9LFtTeW1ib2wuaXRlcmF0b3JdOmZ1bmN0aW9uKigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIHIsaT10W2VdLGE9MCxvPWkubGVuZ3RoO2E8bzsrK2EpKHI9aVthXSkmJih5aWVsZCByKX19O2NvbnN0IGl1PXJ1O2Z1bmN0aW9uIGF1KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgbnUoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBudShbW3RdXSxldSl9ZnVuY3Rpb24gb3UodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBudShbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBudShbV3ModCldLGV1KX1jb25zdCBzdT1NYXRoLlBJLGN1PTIqc3UsdXU9MWUtNixsdT1jdS11dTtmdW5jdGlvbiBodSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIGZ1KCl7cmV0dXJuIG5ldyBodX1odS5wcm90b3R5cGU9ZnUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpodSxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4scil7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0rcil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyArcisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4scixpKXt0PSt0LGU9K2Usbj0rbixyPStyLGk9K2k7dmFyIGE9dGhpcy5feDEsbz10aGlzLl95MSxzPW4tdCxjPXItZSx1PWEtdCxsPW8tZSxoPXUqdStsKmw7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+dXUpaWYoTWF0aC5hYnMobCpzLWMqdSk+dXUmJmkpe3ZhciBmPW4tYSxkPXItbyxwPXMqcytjKmMseT1mKmYrZCpkLGc9TWF0aC5zcXJ0KHApLG09TWF0aC5zcXJ0KGgpLHY9aSpNYXRoLnRhbigoc3UtTWF0aC5hY29zKChwK2gteSkvKDIqZyptKSkpLzIpLGI9di9tLF89di9nO01hdGguYWJzKGItMSk+dXUmJih0aGlzLl8rPSJMIisodCtiKnUpKyIsIisoZStiKmwpKSx0aGlzLl8rPSJBIitpKyIsIitpKyIsMCwwLCIrICsobCpmPnUqZCkrIiwiKyh0aGlzLl94MT10K18qcykrIiwiKyh0aGlzLl95MT1lK18qYyl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt0PSt0LGU9K2UsYT0hIWE7dmFyIG89KG49K24pKk1hdGguY29zKHIpLHM9bipNYXRoLnNpbihyKSxjPXQrbyx1PWUrcyxsPTFeYSxoPWE/ci1pOmktcjtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2MrIiwiK3U6KE1hdGguYWJzKHRoaXMuX3gxLWMpPnV1fHxNYXRoLmFicyh0aGlzLl95MS11KT51dSkmJih0aGlzLl8rPSJMIitjKyIsIit1KSxuJiYoaDwwJiYoaD1oJWN1K2N1KSxoPmx1P3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodC1vKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodGhpcy5feDE9YykrIiwiKyh0aGlzLl95MT11KTpoPnV1JiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1zdSkrIiwiK2wrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLHIpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtyKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2NvbnN0IGR1PWZ1O2Z1bmN0aW9uIHB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgeXU9TWF0aC5hYnMsZ3U9TWF0aC5hdGFuMixtdT1NYXRoLmNvcyx2dT1NYXRoLm1heCxidT1NYXRoLm1pbixfdT1NYXRoLnNpbix4dT1NYXRoLnNxcnQsd3U9MWUtMTIsa3U9TWF0aC5QSSxUdT1rdS8yLEV1PTIqa3U7ZnVuY3Rpb24gQ3UodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/a3U6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIFN1KHQpe3JldHVybiB0Pj0xP1R1OnQ8PS0xPy1UdTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gQXUodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gTXUodCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gTnUodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBEdSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBPdSh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiBCdSh0LGUsbixyLGksYSxvLHMpe3ZhciBjPW4tdCx1PXItZSxsPW8taSxoPXMtYSxmPWgqYy1sKnU7aWYoIShmKmY8d3UpKXJldHVyblt0KyhmPShsKihlLWEpLWgqKHQtaSkpL2YpKmMsZStmKnVdfWZ1bmN0aW9uIEx1KHQsZSxuLHIsaSxhLG8pe3ZhciBzPXQtbixjPWUtcix1PShvP2E6LWEpL3h1KHMqcytjKmMpLGw9dSpjLGg9LXUqcyxmPXQrbCxkPWUraCxwPW4rbCx5PXIraCxnPShmK3ApLzIsbT0oZCt5KS8yLHY9cC1mLGI9eS1kLF89dip2K2IqYix4PWktYSx3PWYqeS1wKmQsaz0oYjwwPy0xOjEpKnh1KHZ1KDAseCp4Kl8tdyp3KSksVD0odypiLXYqaykvXyxFPSgtdyp2LWIqaykvXyxDPSh3KmIrdiprKS9fLFM9KC13KnYrYiprKS9fLEE9VC1nLE09RS1tLE49Qy1nLEQ9Uy1tO3JldHVybiBBKkErTSpNPk4qTitEKkQmJihUPUMsRT1TKSx7Y3g6VCxjeTpFLHgwMTotbCx5MDE6LWgseDExOlQqKGkveC0xKSx5MTE6RSooaS94LTEpfX1mdW5jdGlvbiBJdSgpe3ZhciB0PUF1LGU9TXUsbj1wdSgwKSxyPW51bGwsaT1OdSxhPUR1LG89T3Uscz1udWxsO2Z1bmN0aW9uIGMoKXt2YXIgYyx1LGw9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGY9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyktVHUsZD1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1UdSxwPXl1KGQtZikseT1kPmY7aWYoc3x8KHM9Yz1kdSgpKSxoPGwmJih1PWgsaD1sLGw9dSksaD53dSlpZihwPkV1LXd1KXMubW92ZVRvKGgqbXUoZiksaCpfdShmKSkscy5hcmMoMCwwLGgsZixkLCF5KSxsPnd1JiYocy5tb3ZlVG8obCptdShkKSxsKl91KGQpKSxzLmFyYygwLDAsbCxkLGYseSkpO2Vsc2V7dmFyIGcsbSx2PWYsYj1kLF89Zix4PWQsdz1wLGs9cCxUPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1UPnd1JiYocj8rci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6eHUobCpsK2gqaCkpLEM9YnUoeXUoaC1sKS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksUz1DLEE9QztpZihFPnd1KXt2YXIgTT1TdShFL2wqX3UoVCkpLE49U3UoRS9oKl91KFQpKTsody09MipNKT53dT8oXys9TSo9eT8xOi0xLHgtPU0pOih3PTAsXz14PShmK2QpLzIpLChrLT0yKk4pPnd1Pyh2Kz1OKj15PzE6LTEsYi09Tik6KGs9MCx2PWI9KGYrZCkvMil9dmFyIEQ9aCptdSh2KSxPPWgqX3UodiksQj1sKm11KHgpLEw9bCpfdSh4KTtpZihDPnd1KXt2YXIgSSxSPWgqbXUoYiksRj1oKl91KGIpLFA9bCptdShfKSxqPWwqX3UoXyk7aWYocDxrdSYmKEk9QnUoRCxPLFAsaixSLEYsQixMKSkpe3ZhciBZPUQtSVswXSx6PU8tSVsxXSxVPVItSVswXSxxPUYtSVsxXSxIPTEvX3UoQ3UoKFkqVSt6KnEpLyh4dShZKlkreip6KSp4dShVKlUrcSpxKSkpLzIpLCQ9eHUoSVswXSpJWzBdK0lbMV0qSVsxXSk7Uz1idShDLChsLSQpLyhILTEpKSxBPWJ1KEMsKGgtJCkvKEgrMSkpfX1rPnd1P0E+d3U/KGc9THUoUCxqLEQsTyxoLEEseSksbT1MdShSLEYsQixMLGgsQSx5KSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8Qz9zLmFyYyhnLmN4LGcuY3ksQSxndShnLnkwMSxnLngwMSksZ3UobS55MDEsbS54MDEpLCF5KToocy5hcmMoZy5jeCxnLmN5LEEsZ3UoZy55MDEsZy54MDEpLGd1KGcueTExLGcueDExKSwheSkscy5hcmMoMCwwLGgsZ3UoZy5jeStnLnkxMSxnLmN4K2cueDExKSxndShtLmN5K20ueTExLG0uY3grbS54MTEpLCF5KSxzLmFyYyhtLmN4LG0uY3ksQSxndShtLnkxMSxtLngxMSksZ3UobS55MDEsbS54MDEpLCF5KSkpOihzLm1vdmVUbyhELE8pLHMuYXJjKDAsMCxoLHYsYiwheSkpOnMubW92ZVRvKEQsTyksbD53dSYmdz53dT9TPnd1PyhnPUx1KEIsTCxSLEYsbCwtUyx5KSxtPUx1KEQsTyxQLGosbCwtUyx5KSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLFM8Qz9zLmFyYyhnLmN4LGcuY3ksUyxndShnLnkwMSxnLngwMSksZ3UobS55MDEsbS54MDEpLCF5KToocy5hcmMoZy5jeCxnLmN5LFMsZ3UoZy55MDEsZy54MDEpLGd1KGcueTExLGcueDExKSwheSkscy5hcmMoMCwwLGwsZ3UoZy5jeStnLnkxMSxnLmN4K2cueDExKSxndShtLmN5K20ueTExLG0uY3grbS54MTEpLHkpLHMuYXJjKG0uY3gsbS5jeSxTLGd1KG0ueTExLG0ueDExKSxndShtLnkwMSxtLngwMSksIXkpKSk6cy5hcmMoMCwwLGwseCxfLHkpOnMubGluZVRvKEIsTCl9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksYylyZXR1cm4gcz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGMuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIscj0oK2kuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIta3UvMjtyZXR1cm5bbXUocikqbixfdShyKSpuXX0sYy5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnB1KCtlKSxjKTp0fSxjLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLGMpOmV9LGMuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLGMpOm59LGMucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxjKTpyfSxjLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksYyk6aX0sYy5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxjKTphfSxjLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLGMpOm99LGMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxjKTpzfSxjfWZ1bmN0aW9uIFJ1KHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBGdSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUHUodCl7cmV0dXJuIG5ldyBGdSh0KX1mdW5jdGlvbiBqdSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBZdSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiB6dSh0LGUpe3ZhciBuPXB1KCEwKSxyPW51bGwsaT1QdSxhPW51bGw7ZnVuY3Rpb24gbyhvKXt2YXIgcyxjLHUsbD0obz1SdShvKSkubGVuZ3RoLGg9ITE7Zm9yKG51bGw9PXImJihhPWkodT1kdSgpKSkscz0wO3M8PWw7KytzKSEoczxsJiZuKGM9b1tzXSxzLG8pKT09PWgmJigoaD0haCk/YS5saW5lU3RhcnQoKTphLmxpbmVFbmQoKSksaCYmYS5wb2ludCgrdChjLHMsbyksK2UoYyxzLG8pKTtpZih1KXJldHVybiBhPW51bGwsdSsiInx8bnVsbH1yZXR1cm4gdD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnZvaWQgMD09PXQ/anU6cHUodCksZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnZvaWQgMD09PWU/WXU6cHUoZSksby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cHUoK2UpLG8pOnR9LG8ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxvKTplfSxvLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSghIXQpLG8pOm59LG8uY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxudWxsIT1yJiYoYT1pKHIpKSxvKTppfSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cj1hPW51bGw6YT1pKHI9dCksbyk6cn0sb31mdW5jdGlvbiBVdSh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBxdSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBIdSgpe31mdW5jdGlvbiAkdSh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24gV3UodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFZ1KHQpe3JldHVybiBuZXcgV3UodCl9ZnVuY3Rpb24gR3UodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFh1KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBadSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUXUodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIEt1KHQsZSxuKXt2YXIgcj10Ll94MS10Ll94MCxpPWUtdC5feDEsYT0odC5feTEtdC5feTApLyhyfHxpPDAmJi0wKSxvPShuLXQuX3kxKS8oaXx8cjwwJiYtMCkscz0oYSppK28qcikvKHIraSk7cmV0dXJuKFF1KGEpK1F1KG8pKSpNYXRoLm1pbihNYXRoLmFicyhhKSxNYXRoLmFicyhvKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gSnUodCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIHRsKHQsZSxuKXt2YXIgcj10Ll94MCxpPXQuX3kwLGE9dC5feDEsbz10Ll95MSxzPShhLXIpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIrcyxpK3MqZSxhLXMsby1zKm4sYSxvKX1mdW5jdGlvbiBlbCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gbmwodCl7dGhpcy5fY29udGV4dD1uZXcgcmwodCl9ZnVuY3Rpb24gcmwodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGlsKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBhbCh0KXt2YXIgZSxuLHI9dC5sZW5ndGgtMSxpPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxvPW5ldyBBcnJheShyKTtmb3IoaVswXT0wLGFbMF09MixvWzBdPXRbMF0rMip0WzFdLGU9MTtlPHItMTsrK2UpaVtlXT0xLGFbZV09NCxvW2VdPTQqdFtlXSsyKnRbZSsxXTtmb3IoaVtyLTFdPTIsYVtyLTFdPTcsb1tyLTFdPTgqdFtyLTFdK3Rbcl0sZT0xO2U8cjsrK2Upbj1pW2VdL2FbZS0xXSxhW2VdLT1uLG9bZV0tPW4qb1tlLTFdO2ZvcihpW3ItMV09b1tyLTFdL2Fbci0xXSxlPXItMjtlPj0wOy0tZSlpW2VdPShvW2VdLWlbZSsxXSkvYVtlXTtmb3IoYVtyLTFdPSh0W3JdK2lbci0xXSkvMixlPTA7ZTxyLTE7KytlKWFbZV09Mip0W2UrMV0taVtlKzFdO3JldHVybltpLGFdfWZ1bmN0aW9uIG9sKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1BcnJheS5wcm90b3R5cGUuc2xpY2UsRnUucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX0sV3UucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzokdSh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDokdSh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sR3UucHJvdG90eXBlPXthcmVhU3RhcnQ6SHUsYXJlYUVuZDpIdSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6JHUodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LFh1LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYscj0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLHIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6JHUodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LFp1LnByb3RvdHlwZT17YXJlYVN0YXJ0Okh1LGFyZWFFbmQ6SHUsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sZWwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOnRsKHRoaXMsdGhpcy5fdDAsSnUodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRsKHRoaXMsSnUodGhpcyxuPUt1KHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDp0bCh0aGlzLHRoaXMuX3QwLG49S3UodGhpcyx0LGUpKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWUsdGhpcy5fdDA9bn19fSwobmwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZWwucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxlKXtlbC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLGUsdCl9LHJsLnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixyLGksYSl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxyLG4sYSxpKX19LGlsLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGg7aWYobilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sZVswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxlWzBdKSwyPT09bil0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLGVbMV0pO2Vsc2UgZm9yKHZhciByPWFsKHQpLGk9YWwoZSksYT0wLG89MTtvPG47KythLCsrbyl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oclswXVthXSxpWzBdW2FdLHJbMV1bYV0saVsxXVthXSx0W29dLGVbb10pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LG9sLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsZSksdGhpcy5fY29udGV4dC5saW5lVG8odCxlKTtlbHNle3ZhciBuPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKG4sdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8obixlKX19dGhpcy5feD10LHRoaXMuX3k9ZX19O3ZhciBzbD1uZXcgRGF0ZSxjbD1uZXcgRGF0ZTtmdW5jdGlvbiB1bCh0LGUsbixyKXtmdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxpLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxpLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj1pLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxpLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxpLnJhbmdlPWZ1bmN0aW9uKG4scixhKXt2YXIgbyxzPVtdO2lmKG49aS5jZWlsKG4pLGE9bnVsbD09YT8xOk1hdGguZmxvb3IoYSksIShuPHImJmE+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKG89bmV3IERhdGUoK24pKSxlKG4sYSksdChuKX13aGlsZShvPG4mJm48cik7cmV0dXJuIHN9LGkuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiB1bCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQscil7aWYodD49dClpZihyPDApZm9yKDsrK3I8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLXI+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoaS5jb3VudD1mdW5jdGlvbihlLHIpe3JldHVybiBzbC5zZXRUaW1lKCtlKSxjbC5zZXRUaW1lKCtyKSx0KHNsKSx0KGNsKSxNYXRoLmZsb29yKG4oc2wsY2wpKX0saS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2kuZmlsdGVyKHI/ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY291bnQoMCxlKSV0PT0wfSk6aTpudWxsfSksaX1jb25zdCBsbD04NjRlNSxobD02MDQ4ZTU7ZnVuY3Rpb24gZmwodCl7cmV0dXJuIHVsKChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9obH0pKX12YXIgZGw9ZmwoMCkscGw9ZmwoMSkseWw9ZmwoMiksZ2w9ZmwoMyksbWw9ZmwoNCksdmw9ZmwoNSksYmw9ZmwoNiksX2w9KGRsLnJhbmdlLHBsLnJhbmdlLHlsLnJhbmdlLGdsLnJhbmdlLG1sLnJhbmdlLHZsLnJhbmdlLGJsLnJhbmdlLHVsKChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbGx9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSkpO2NvbnN0IHhsPV9sO2Z1bmN0aW9uIHdsKHQpe3JldHVybiB1bCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC02ZTQqKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKS9obH0pKX1fbC5yYW5nZTt2YXIga2w9d2woMCksVGw9d2woMSksRWw9d2woMiksQ2w9d2woMyksU2w9d2woNCksQWw9d2woNSksTWw9d2woNiksTmw9KGtsLnJhbmdlLFRsLnJhbmdlLEVsLnJhbmdlLENsLnJhbmdlLFNsLnJhbmdlLEFsLnJhbmdlLE1sLnJhbmdlLHVsKCh0PT50LnNldEhvdXJzKDAsMCwwLDApKSwoKHQsZSk9PnQuc2V0RGF0ZSh0LmdldERhdGUoKStlKSksKCh0LGUpPT4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL2xsKSwodD0+dC5nZXREYXRlKCktMSkpKTtjb25zdCBEbD1ObDtObC5yYW5nZTt2YXIgT2w9dWwoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO09sLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dWwoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IEJsPU9sO09sLnJhbmdlO3ZhciBMbD11bCgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7TGwuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD91bCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07Y29uc3QgSWw9TGw7ZnVuY3Rpb24gUmwodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEZsKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIFBsKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX1MbC5yYW5nZTt2YXIgamwsWWwsemw9eyItIjoiIixfOiIgIiwwOiIwIn0sVWw9L15ccypcZCsvLHFsPS9eJS8sSGw9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uICRsKHQsZSxuKXt2YXIgcj10PDA/Ii0iOiIiLGk9KHI/LXQ6dCkrIiIsYT1pLmxlbmd0aDtyZXR1cm4gcisoYTxuP25ldyBBcnJheShuLWErMSkuam9pbihlKStpOmkpfWZ1bmN0aW9uIFdsKHQpe3JldHVybiB0LnJlcGxhY2UoSGwsIlxcJCYiKX1mdW5jdGlvbiBWbCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoV2wpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBHbCh0KXtyZXR1cm4gbmV3IE1hcCh0Lm1hcCgoKHQsZSk9Plt0LnRvTG93ZXJDYXNlKCksZV0pKSl9ZnVuY3Rpb24gWGwodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWmwodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0LnU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUWwodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS2wodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlY9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSmwodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Llc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdGgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiByPyh0Lnk9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZWgodCxlLG4pe3ZhciByPVVsLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBuaCh0LGUsbil7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHJoKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC5xPTMqclswXS0zLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGloKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBzaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1aCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBsaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KHQuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmaCh0LGUsbil7dmFyIHI9cWwuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/bityWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBkaCh0LGUsbil7dmFyIHI9VWwuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5RPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHBoKHQsZSxuKXt2YXIgcj1VbC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LnM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geWgodCxlKXtyZXR1cm4gJGwodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBnaCh0LGUpe3JldHVybiAkbCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBtaCh0LGUpe3JldHVybiAkbCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gdmgodCxlKXtyZXR1cm4gJGwoMStEbC5jb3VudChCbCh0KSx0KSxlLDMpfWZ1bmN0aW9uIGJoKHQsZSl7cmV0dXJuICRsKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBfaCh0LGUpe3JldHVybiBiaCh0LGUpKyIwMDAifWZ1bmN0aW9uIHhoKHQsZSl7cmV0dXJuICRsKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gd2godCxlKXtyZXR1cm4gJGwodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBraCh0LGUpe3JldHVybiAkbCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIFRoKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBFaCh0LGUpe3JldHVybiAkbChrbC5jb3VudChCbCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gQ2godCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/U2wodCk6U2wuY2VpbCh0KX1mdW5jdGlvbiBTaCh0LGUpe3JldHVybiB0PUNoKHQpLCRsKFNsLmNvdW50KEJsKHQpLHQpKyg0PT09QmwodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gQWgodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gTWgodCxlKXtyZXR1cm4gJGwoVGwuY291bnQoQmwodCktMSx0KSxlLDIpfWZ1bmN0aW9uIE5oKHQsZSl7cmV0dXJuICRsKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBEaCh0LGUpe3JldHVybiAkbCgodD1DaCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBPaCh0LGUpe3JldHVybiAkbCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gQmgodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiAkbCgodD1uPj00fHwwPT09bj9TbCh0KTpTbC5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIExoKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrJGwoZS82MHwwLCIwIiwyKSskbChlJTYwLCIwIiwyKX1mdW5jdGlvbiBJaCh0LGUpe3JldHVybiAkbCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIFJoKHQsZSl7cmV0dXJuICRsKHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIEZoKHQsZSl7cmV0dXJuICRsKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBQaCh0LGUpe3JldHVybiAkbCgxK3hsLmNvdW50KElsKHQpLHQpLGUsMyl9ZnVuY3Rpb24gamgodCxlKXtyZXR1cm4gJGwodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIFloKHQsZSl7cmV0dXJuIGpoKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gemgodCxlKXtyZXR1cm4gJGwodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBVaCh0LGUpe3JldHVybiAkbCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIHFoKHQsZSl7cmV0dXJuICRsKHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gSGgodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uICRoKHQsZSl7cmV0dXJuICRsKGRsLmNvdW50KElsKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBXaCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9tbCh0KTptbC5jZWlsKHQpfWZ1bmN0aW9uIFZoKHQsZSl7cmV0dXJuIHQ9V2godCksJGwobWwuY291bnQoSWwodCksdCkrKDQ9PT1JbCh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBHaCh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBYaCh0LGUpe3JldHVybiAkbChwbC5jb3VudChJbCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gWmgodCxlKXtyZXR1cm4gJGwodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIFFoKHQsZSl7cmV0dXJuICRsKCh0PVdoKHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEtoKHQsZSl7cmV0dXJuICRsKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBKaCh0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuICRsKCh0PW4+PTR8fDA9PT1uP21sKHQpOm1sLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdGYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIGVmKCl7cmV0dXJuIiUifWZ1bmN0aW9uIG5mKHQpe3JldHVybit0fWZ1bmN0aW9uIHJmKHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9amw9ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxyPXQudGltZSxpPXQucGVyaW9kcyxhPXQuZGF5cyxvPXQuc2hvcnREYXlzLHM9dC5tb250aHMsYz10LnNob3J0TW9udGhzLHU9VmwoaSksbD1HbChpKSxoPVZsKGEpLGY9R2woYSksZD1WbChvKSxwPUdsKG8pLHk9VmwocyksZz1HbChzKSxtPVZsKGMpLHY9R2woYyksYj17YTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldERheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiBzW3QuZ2V0TW9udGgoKV19LGM6bnVsbCxkOnloLGU6eWgsZjpfaCxnOkRoLEc6QmgsSDpnaCxJOm1oLGo6dmgsTDpiaCxtOnhoLE06d2gscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6bmYsczpyZixTOmtoLHU6VGgsVTpFaCxWOlNoLHc6QWgsVzpNaCx4Om51bGwsWDpudWxsLHk6TmgsWTpPaCxaOkxoLCIlIjplZn0sXz17YTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiBzW3QuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOkloLGU6SWgsZjpZaCxnOlFoLEc6SmgsSDpSaCxJOkZoLGo6UGgsTDpqaCxtOnpoLE06VWgscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6bmYsczpyZixTOnFoLHU6SGgsVTokaCxWOlZoLHc6R2gsVzpYaCx4Om51bGwsWDpudWxsLHk6WmgsWTpLaCxaOnRmLCIlIjplZn0seD17YTpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9cC5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LGUsbil7dmFyIHI9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9Zi5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lm09di5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lm09Zy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxuK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LG4scil7cmV0dXJuIFQodCxlLG4scil9LGQ6YWgsZTphaCxmOmhoLGc6ZWgsRzp0aCxIOnNoLEk6c2gsajpvaCxMOmxoLG06aWgsTTpjaCxwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj11LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQucD1sLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLG4rclswXS5sZW5ndGgpOi0xfSxxOnJoLFE6ZGgsczpwaCxTOnVoLHU6WmwsVTpRbCxWOktsLHc6WGwsVzpKbCx4OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gVCh0LG4sZSxyKX0sWDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIFQodCxyLGUsbil9LHk6ZWgsWTp0aCxaOm5oLCIlIjpmaH07ZnVuY3Rpb24gdyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixpLGEsbz1bXSxzPS0xLGM9MCx1PXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8dTspMzc9PT10LmNoYXJDb2RlQXQocykmJihvLnB1c2godC5zbGljZShjLHMpKSxudWxsIT0oaT16bFtyPXQuY2hhckF0KCsrcyldKT9yPXQuY2hhckF0KCsrcyk6aT0iZSI9PT1yPyIgIjoiMCIsKGE9ZVtyXSkmJihyPWEobixpKSksby5wdXNoKHIpLGM9cysxKTtyZXR1cm4gby5wdXNoKHQuc2xpY2UoYyxzKSksby5qb2luKCIiKX19ZnVuY3Rpb24gayh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixpLGE9UGwoMTkwMCx2b2lkIDAsMSk7aWYoVChhLHQsbis9IiIsMCkhPW4ubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIGEpcmV0dXJuIG5ldyBEYXRlKGEuUSk7aWYoInMiaW4gYSlyZXR1cm4gbmV3IERhdGUoMWUzKmEucysoIkwiaW4gYT9hLkw6MCkpO2lmKGUmJiEoIloiaW4gYSkmJihhLlo9MCksInAiaW4gYSYmKGEuSD1hLkglMTIrMTIqYS5wKSx2b2lkIDA9PT1hLm0mJihhLm09InEiaW4gYT9hLnE6MCksIlYiaW4gYSl7aWYoYS5WPDF8fGEuVj41MylyZXR1cm4gbnVsbDsidyJpbiBhfHwoYS53PTEpLCJaImluIGE/KGk9KHI9RmwoUGwoYS55LDAsMSkpKS5nZXRVVENEYXkoKSxyPWk+NHx8MD09PWk/cGwuY2VpbChyKTpwbChyKSxyPXhsLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0VVRDRnVsbFllYXIoKSxhLm09ci5nZXRVVENNb250aCgpLGEuZD1yLmdldFVUQ0RhdGUoKSsoYS53KzYpJTcpOihpPShyPVJsKFBsKGEueSwwLDEpKSkuZ2V0RGF5KCkscj1pPjR8fDA9PT1pP1RsLmNlaWwocik6VGwocikscj1EbC5vZmZzZXQociw3KihhLlYtMSkpLGEueT1yLmdldEZ1bGxZZWFyKCksYS5tPXIuZ2V0TW9udGgoKSxhLmQ9ci5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/RmwoUGwoYS55LDAsMSkpLmdldFVUQ0RheSgpOlJsKFBsKGEueSwwLDEpKS5nZXREYXkoKSxhLm09MCxhLmQ9IlciaW4gYT8oYS53KzYpJTcrNyphLlctKGkrNSklNzphLncrNyphLlUtKGkrNiklNyk7cmV0dXJuIloiaW4gYT8oYS5IKz1hLlovMTAwfDAsYS5NKz1hLlolMTAwLEZsKGEpKTpSbChhKX19ZnVuY3Rpb24gVCh0LGUsbixyKXtmb3IodmFyIGksYSxvPTAscz1lLmxlbmd0aCxjPW4ubGVuZ3RoO288czspe2lmKHI+PWMpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQobysrKSkpe2lmKGk9ZS5jaGFyQXQobysrKSwhKGE9eFtpIGluIHpsP2UuY2hhckF0KG8rKyk6aV0pfHwocj1hKHQsbixyKSk8MClyZXR1cm4tMX1lbHNlIGlmKGkhPW4uY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfXJldHVybiBiLng9dyhuLGIpLGIuWD13KHIsYiksYi5jPXcoZSxiKSxfLng9dyhuLF8pLF8uWD13KHIsXyksXy5jPXcoZSxfKSx7Zm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPXcodCs9IiIsYik7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9ayh0Kz0iIiwhMSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPXcodCs9IiIsXyk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9ayh0Kz0iIiwhMCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pLFlsPWpsLmZvcm1hdCxqbC5wYXJzZSxqbC51dGNGb3JtYXQsamwudXRjUGFyc2U7dmFyIGFmPXt2YWx1ZTooKT0+e319O2Z1bmN0aW9uIG9mKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgscj17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiByfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7clt0XT1bXX1yZXR1cm4gbmV3IHNmKHIpfWZ1bmN0aW9uIHNmKHQpe3RoaXMuXz10fWZ1bmN0aW9uIGNmKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIscj10LmluZGV4T2YoIi4iKTtpZihyPj0wJiYobj10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiB1Zih0LGUpe2Zvcih2YXIgbixyPTAsaT10Lmxlbmd0aDtyPGk7KytyKWlmKChuPXRbcl0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGxmKHQsZSxuKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYodFtyXS5uYW1lPT09ZSl7dFtyXT1hZix0PXQuc2xpY2UoMCxyKS5jb25jYXQodC5zbGljZShyKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9c2YucHJvdG90eXBlPW9mLnByb3RvdHlwZT17Y29uc3RydWN0b3I6c2Ysb246ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMuXyxpPWNmKHQrIiIsciksYT0tMSxvPWkubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KythPG87KWlmKG49KHQ9aVthXSkudHlwZSlyW25dPWxmKHJbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiByKXJbbl09bGYocltuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK2E8bzspaWYoKG49KHQ9aVthXSkudHlwZSkmJihuPXVmKHJbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IHNmKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixyLGk9bmV3IEFycmF5KG4pLGE9MDthPG47KythKWlbYV09YXJndW1lbnRzW2ErMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IoYT0wLG49KHI9dGhpcy5fW3RdKS5sZW5ndGg7YTxuOysrYSlyW2FdLnZhbHVlLmFwcGx5KGUsaSl9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgcj10aGlzLl9bdF0saT0wLGE9ci5sZW5ndGg7aTxhOysraSlyW2ldLnZhbHVlLmFwcGx5KGUsbil9fTtjb25zdCBoZj1vZjt2YXIgZmYsZGYscGY9MCx5Zj0wLGdmPTAsbWY9MCx2Zj0wLGJmPTAsX2Y9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUseGY9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gd2YoKXtyZXR1cm4gdmZ8fCh4ZihrZiksdmY9X2Yubm93KCkrYmYpfWZ1bmN0aW9uIGtmKCl7dmY9MH1mdW5jdGlvbiBUZigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gRWYodCxlLG4pe3ZhciByPW5ldyBUZjtyZXR1cm4gci5yZXN0YXJ0KHQsZSxuKSxyfWZ1bmN0aW9uIENmKCl7dmY9KG1mPV9mLm5vdygpKStiZixwZj15Zj0wO3RyeXshZnVuY3Rpb24oKXt3ZigpLCsrcGY7Zm9yKHZhciB0LGU9ZmY7ZTspKHQ9dmYtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbCh2b2lkIDAsdCksZT1lLl9uZXh0Oy0tcGZ9KCl9ZmluYWxseXtwZj0wLGZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbj1mZixyPTEvMDtuOyluLl9jYWxsPyhyPm4uX3RpbWUmJihyPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6ZmY9ZSk7ZGY9dCxBZihyKX0oKSx2Zj0wfX1mdW5jdGlvbiBTZigpe3ZhciB0PV9mLm5vdygpLGU9dC1tZjtlPjFlMyYmKGJmLT1lLG1mPXQpfWZ1bmN0aW9uIEFmKHQpe3BmfHwoeWYmJih5Zj1jbGVhclRpbWVvdXQoeWYpKSx0LXZmPjI0Pyh0PDEvMCYmKHlmPXNldFRpbWVvdXQoQ2YsdC1fZi5ub3coKS1iZikpLGdmJiYoZ2Y9Y2xlYXJJbnRlcnZhbChnZikpKTooZ2Z8fChtZj1fZi5ub3coKSxnZj1zZXRJbnRlcnZhbChTZiwxZTMpKSxwZj0xLHhmKENmKSkpfWZ1bmN0aW9uIE1mKHQsZSxuKXt2YXIgcj1uZXcgVGY7cmV0dXJuIGU9bnVsbD09ZT8wOitlLHIucmVzdGFydCgobj0+e3Iuc3RvcCgpLHQobitlKX0pLGUsbikscn1UZi5wcm90b3R5cGU9RWYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUZixyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/d2YoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8ZGY9PT10aGlzfHwoZGY/ZGYuX25leHQ9dGhpczpmZj10aGlzLGRmPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sQWYoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsQWYoKSl9fTt2YXIgTmY9aGYoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksRGY9W107ZnVuY3Rpb24gT2YodCxlLG4scixpLGEpe3ZhciBvPXQuX190cmFuc2l0aW9uO2lmKG8pe2lmKG4gaW4gbylyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshZnVuY3Rpb24odCxlLG4pe3ZhciByLGk9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gYShjKXt2YXIgdSxsLGgsZjtpZigxIT09bi5zdGF0ZSlyZXR1cm4gcygpO2Zvcih1IGluIGkpaWYoKGY9aVt1XSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWYuc3RhdGUpcmV0dXJuIE1mKGEpOzQ9PT1mLnN0YXRlPyhmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKTordTxlJiYoZi5zdGF0ZT02LGYudGltZXIuc3RvcCgpLGYub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZi5pbmRleCxmLmdyb3VwKSxkZWxldGUgaVt1XSl9aWYoTWYoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KG8sbi5kZWxheSxuLnRpbWUpLG8oYykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxyPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSx1PTAsbD0tMTt1PGg7Kyt1KShmPW4udHdlZW5bdV0udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihyWysrbF09Zik7ci5sZW5ndGg9bCsxfX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgaT1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQocyksbi5zdGF0ZT01LDEpLGE9LTEsbz1yLmxlbmd0aDsrK2E8bzspclthXS5jYWxsKHQsaSk7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkscygpKX1mdW5jdGlvbiBzKCl7Zm9yKHZhciByIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtlXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtlXT1uLG4udGltZXI9RWYoKGZ1bmN0aW9uKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfSksMCxuLnRpbWUpfSh0LG4se25hbWU6ZSxpbmRleDpyLGdyb3VwOmksb246TmYsdHdlZW46RGYsdGltZTphLnRpbWUsZGVsYXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIEJmKHQsZSl7dmFyIG49SWYodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBMZih0LGUpe3ZhciBuPUlmKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIElmKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gUmYodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIEZmLFBmPTE4MC9NYXRoLlBJLGpmPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIFlmKHQsZSxuLHIsaSxhKXt2YXIgbyxzLGM7cmV0dXJuKG89TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPW8sZS89byksKGM9dCpuK2UqcikmJihuLT10KmMsci09ZSpjKSwocz1NYXRoLnNxcnQobipuK3IqcikpJiYobi89cyxyLz1zLGMvPXMpLHQqcjxlKm4mJih0PS10LGU9LWUsYz0tYyxvPS1vKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6YSxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlBmLHNrZXdYOk1hdGguYXRhbihjKSpQZixzY2FsZVg6byxzY2FsZVk6c319ZnVuY3Rpb24gemYodCxlLG4scil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKGEsbyl7dmFyIHM9W10sYz1bXTtyZXR1cm4gYT10KGEpLG89dChvKSxmdW5jdGlvbih0LHIsaSxhLG8scyl7aWYodCE9PWl8fHIhPT1hKXt2YXIgYz1vLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpjLTQseDpSZih0LGkpfSx7aTpjLTIseDpSZihyLGEpfSl9ZWxzZShpfHxhKSYmby5wdXNoKCJ0cmFuc2xhdGUoIitpK2UrYStuKX0oYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLGEucHVzaCh7aTpuLnB1c2goaShuKSsicm90YXRlKCIsbnVsbCxyKS0yLHg6UmYodCxlKX0pKTplJiZuLnB1c2goaShuKSsicm90YXRlKCIrZStyKX0oYS5yb3RhdGUsby5yb3RhdGUscyxjKSxmdW5jdGlvbih0LGUsbixhKXt0IT09ZT9hLnB1c2goe2k6bi5wdXNoKGkobikrInNrZXdYKCIsbnVsbCxyKS0yLHg6UmYodCxlKX0pOmUmJm4ucHVzaChpKG4pKyJza2V3WCgiK2Urcil9KGEuc2tld1gsby5za2V3WCxzLGMpLGZ1bmN0aW9uKHQsZSxuLHIsYSxvKXtpZih0IT09bnx8ZSE9PXIpe3ZhciBzPWEucHVzaChpKGEpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtvLnB1c2goe2k6cy00LHg6UmYodCxuKX0se2k6cy0yLHg6UmYoZSxyKX0pfWVsc2UgMT09PW4mJjE9PT1yfHxhLnB1c2goaShhKSsic2NhbGUoIituKyIsIityKyIpIil9KGEuc2NhbGVYLGEuc2NhbGVZLG8uc2NhbGVYLG8uc2NhbGVZLHMsYyksYT1vPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEscj1jLmxlbmd0aDsrK248cjspc1soZT1jW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgVWY9emYoKGZ1bmN0aW9uKHQpe2NvbnN0IGU9bmV3KCJmdW5jdGlvbiI9PXR5cGVvZiBET01NYXRyaXg/RE9NTWF0cml4OldlYktpdENTU01hdHJpeCkodCsiIik7cmV0dXJuIGUuaXNJZGVudGl0eT9qZjpZZihlLmEsZS5iLGUuYyxlLmQsZS5lLGUuZil9KSwicHgsICIsInB4KSIsImRlZykiKSxxZj16ZigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/amY6KEZmfHwoRmY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksRmYuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PUZmLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP1lmKCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOmpmKX0pLCIsICIsIikiLCIpIik7ZnVuY3Rpb24gSGYodCxlKXt2YXIgbixyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPUxmKHRoaXMsdCksYT1pLnR3ZWVuO2lmKGEhPT1uKWZvcih2YXIgbz0wLHM9KHI9bj1hKS5sZW5ndGg7bzxzOysrbylpZihyW29dLm5hbWU9PT1lKXsocj1yLnNsaWNlKCkpLnNwbGljZShvLDEpO2JyZWFrfWkudHdlZW49cn19ZnVuY3Rpb24gJGYodCxlLG4pe3ZhciByLGk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPUxmKHRoaXMsdCksbz1hLnR3ZWVuO2lmKG8hPT1yKXtpPShyPW8pLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sYz0wLHU9aS5sZW5ndGg7Yzx1OysrYylpZihpW2NdLm5hbWU9PT1lKXtpW2NdPXM7YnJlYWt9Yz09PXUmJmkucHVzaChzKX1hLnR3ZWVuPWl9fWZ1bmN0aW9uIFdmKHQsZSxuKXt2YXIgcj10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PUxmKHRoaXMscik7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIElmKHQscikudmFsdWVbZV19fWZ1bmN0aW9uIFZmKHQsZSxuLHIsaSl7dmFyIGE9dCp0LG89YSp0O3JldHVybigoMS0zKnQrMyphLW8pKmUrKDQtNiphKzMqbykqbisoMSszKnQrMyphLTMqbykqcitvKmkpLzZ9Y29uc3QgR2Y9ZnVuY3Rpb24gdChlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gMT09KHQ9K3QpP0ZyOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKmUsbil9fShlLG4sdCk6SXIoaXNOYU4oZSk/bjplKX19KGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgcj1uKCh0PXVyKHQpKS5yLChlPXVyKGUpKS5yKSxpPW4odC5nLGUuZyksYT1uKHQuYixlLmIpLG89RnIodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9cihlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIFhmKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixyLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKXI9dXIoZVtuXSksYVtuXT1yLnJ8fDAsb1tuXT1yLmd8fDAsc1tuXT1yLmJ8fDA7cmV0dXJuIGE9dChhKSxvPXQobykscz10KHMpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9YSh0KSxyLmc9byh0KSxyLmI9cyh0KSxyKyIifX19WGYoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBWZigobi1yL2UpKmUsbyxpLGEscyl9fSkpLFhmKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpLGk9dFsocitlLTEpJWVdLGE9dFtyJWVdLG89dFsocisxKSVlXSxzPXRbKHIrMiklZV07cmV0dXJuIFZmKChuLXIvZSkqZSxpLGEsbyxzKX19KSk7dmFyIFpmPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxRZj1uZXcgUmVnRXhwKFpmLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEtmKHQsZSl7dmFyIG4scixpLGE9WmYubGFzdEluZGV4PVFmLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1aZi5leGVjKHQpKSYmKHI9UWYuZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4OlJmKG4scil9KSksYT1RZi5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIEpmKHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9SZjplIGluc3RhbmNlb2YgYXI/R2Y6KG49YXIoZSkpPyhlPW4sR2YpOktmKSh0LGUpfWZ1bmN0aW9uIHRkKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBlZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIG5kKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIHJkKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX1mdW5jdGlvbiBpZCh0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBhZCh0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLHMsYz1uKHRoaXMpO2lmKG51bGwhPWMpcmV0dXJuKG89dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWMrIiIpP251bGw6bz09PXImJnM9PT1pP2E6KGk9cyxhPWUocj1vLGMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIG9kKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBzZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGNkKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYmc2QodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIHVkKHQsZSl7dmFyIG4scjtmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYobj0ocj1pKSYmb2QodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIGxkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QmYodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGhkKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtCZih0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIGZkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7TGYodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGRkKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtMZih0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIHBkKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe0xmKHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiB5ZCh0LGUsbil7dmFyIHIsaSxhPWZ1bmN0aW9uKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0oZSk/QmY6TGY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YSh0aGlzLHQpLHM9by5vbjtzIT09ciYmKGk9KHI9cykuY29weSgpKS5vbihlLG4pLG8ub249aX19dmFyIGdkPWl1LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBtZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiB2ZCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxyKSxuKX19ZnVuY3Rpb24gYmQodCxlLG4pe3ZhciByLGk7ZnVuY3Rpb24gYSgpe3ZhciBhPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhIT09aSYmKHI9KGk9YSkmJnZkKHQsYSxuKSkscn1yZXR1cm4gYS5fdmFsdWU9ZSxhfWZ1bmN0aW9uIF9kKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiB4ZCh0KXt2YXIgZSxuO2Z1bmN0aW9uIHIoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PW4mJihlPShuPXIpJiZfZChyKSksZX1yZXR1cm4gci5fdmFsdWU9dCxyfXZhciB3ZD0wO2Z1bmN0aW9uIGtkKHQsZSxuLHIpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9cn1mdW5jdGlvbiBUZCgpe3JldHVybisrd2R9dmFyIEVkPWl1LnByb3RvdHlwZTtrZC5wcm90b3R5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIGl1KCkudHJhbnNpdGlvbih0KX0ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprZCxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0kcyh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgcyxjLHU9cltvXSxsPXUubGVuZ3RoLGg9YVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpKHM9dVtmXSkmJihjPXQuY2FsbChzLHMuX19kYXRhX18sZix1KSkmJigiX19kYXRhX18iaW4gcyYmKGMuX19kYXRhX189cy5fX2RhdGFfXyksaFtmXT1jLE9mKGhbZl0sZSxuLGYsaCxJZihzLG4pKSk7cmV0dXJuIG5ldyBrZChhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9R3ModCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPVtdLG89W10scz0wO3M8aTsrK3MpZm9yKHZhciBjLHU9cltzXSxsPXUubGVuZ3RoLGg9MDtoPGw7KytoKWlmKGM9dVtoXSl7Zm9yKHZhciBmLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxoLHUpLHA9SWYoYyxuKSx5PTAsZz1kLmxlbmd0aDt5PGc7Kyt5KShmPWRbeV0pJiZPZihmLGUsbix5LGQscCk7YS5wdXNoKGQpLG8ucHVzaChjKX1yZXR1cm4gbmV3IGtkKGEsbyxlLG4pfSxzZWxlY3RDaGlsZDpFZC5zZWxlY3RDaGlsZCxzZWxlY3RDaGlsZHJlbjpFZC5zZWxlY3RDaGlsZHJlbixmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhzKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBrZChyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyBrZChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgZ2QodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPVRkKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpaWYobz1zW3VdKXt2YXIgbD1JZihvLGUpO09mKG8sdCxuLHUscyx7dGltZTpsLnRpbWUrbC5kZWxheStsLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246bC5kdXJhdGlvbixlYXNlOmwuZWFzZX0pfXJldHVybiBuZXcga2Qocix0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6RWQuY2FsbCxub2RlczpFZC5ub2Rlcyxub2RlOkVkLm5vZGUsc2l6ZTpFZC5zaXplLGVtcHR5OkVkLmVtcHR5LGVhY2g6RWQuZWFjaCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/SWYodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKHlkKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1oYyh0KSxyPSJ0cmFuc2Zvcm0iPT09bj9xZjpKZjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9hZDppZCkobixyLFdmKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP2VkOnRkKShuKToobi5sb2NhbD9yZDpuZCkobixyLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgcj1oYyh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChyLmxvY2FsP2NkOnVkKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP1VmOkpmO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXdjKHRoaXMsdCksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSx3Yyh0aGlzLHQpKTtyZXR1cm4gYT09PW8/bnVsbDphPT09biYmbz09PXI/aTppPWUobj1hLHI9byl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxtZCh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz13Yyh0aGlzLHQpLHM9bih0aGlzKSxjPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9cz13Yyh0aGlzLHQpKSxvPT09Yz9udWxsOm89PT1yJiZjPT09aT9hOihpPWMsYT1lKHI9byxzKSl9fSh0LHIsV2YodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhLG89InN0eWxlLiIrZSxzPSJlbmQuIitvO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUxmKHRoaXMsdCksdT1jLm9uLGw9bnVsbD09Yy52YWx1ZVtvXT9hfHwoYT1tZChlKSk6dm9pZCAwO3U9PT1uJiZpPT09bHx8KHI9KG49dSkuY29weSgpKS5vbihzLGk9bCksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz13Yyh0aGlzLHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19KHQscixlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixiZCh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fShXZih0aGlzLCJ0ZXh0Iix0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0obnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUseGQodCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PXQpcmV0dXJuO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByLGk9SWYodGhpcy5ub2RlKCksbikudHdlZW4sYT0wLG89aS5sZW5ndGg7YTxvOysrYSlpZigocj1pW2FdKS5uYW1lPT09dClyZXR1cm4gci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP0hmOiRmKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P2xkOmhkKShlLHQpKTpJZih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mZDpkZCkoZSx0KSk6SWYodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKHBkKGUsdCkpOklmKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVhc2VWYXJ5aW5nOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO0xmKHRoaXMsdCkuZWFzZT1ufX0odGhpcy5faWQsdCkpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcyxyPW4uX2lkLGk9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBzPXt2YWx1ZTpvfSxjPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0taSYmYSgpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUxmKHRoaXMsciksaT1uLm9uO2khPT10JiYoKGU9KHQ9aSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2goYykpLG4ub249ZX0pKSwwPT09aSYmYSgpfSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpFZFtTeW1ib2wuaXRlcmF0b3JdfTt2YXIgQ2Q9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOmZ1bmN0aW9uKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfX07ZnVuY3Rpb24gU2QodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSl0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gbn1mdW5jdGlvbiBBZCgpe31mdW5jdGlvbiBNZCh0KXtyZXR1cm4gbnVsbD09dD9BZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIE5kKHQpe3JldHVybiBudWxsPT10P1tdOkFycmF5LmlzQXJyYXkodCk/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIERkKCl7cmV0dXJuW119ZnVuY3Rpb24gT2QodCl7cmV0dXJuIG51bGw9PXQ/RGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBCZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBMZCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2hlcyh0KX19aXUucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhPXQuX190cmFuc2l0aW9uLG89ITA7aWYoYSl7Zm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixhKShuPWFbaV0pLm5hbWU9PT1lPyhyPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgYVtpXSk6bz0hMTtvJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fSh0aGlzLHQpfSkpfSxpdS5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBrZD8oZT10Ll9pZCx0PXQuX25hbWUpOihlPVRkKCksKG49Q2QpLnRpbWU9d2YoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiZPZihvLHQsZSx1LHMsbnx8U2QobyxlKSk7cmV0dXJuIG5ldyBrZChyLHRoaXMuX3BhcmVudHMsdCxlKX07dmFyIElkPUFycmF5LnByb3RvdHlwZS5maW5kO2Z1bmN0aW9uIFJkKCl7cmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGR9dmFyIEZkPUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gUGQoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKX1mdW5jdGlvbiBqZCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBZZCh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiB6ZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gVWQodCxlLG4scixpLGEpe2Zvcih2YXIgbyxzPTAsYz1lLmxlbmd0aCx1PWEubGVuZ3RoO3M8dTsrK3MpKG89ZVtzXSk/KG8uX19kYXRhX189YVtzXSxyW3NdPW8pOm5bc109bmV3IFlkKHQsYVtzXSk7Zm9yKDtzPGM7KytzKShvPWVbc10pJiYoaVtzXT1vKX1mdW5jdGlvbiBxZCh0LGUsbixyLGksYSxvKXt2YXIgcyxjLHUsbD1uZXcgTWFwLGg9ZS5sZW5ndGgsZj1hLmxlbmd0aCxkPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGM9ZVtzXSkmJihkW3NdPXU9by5jYWxsKGMsYy5fX2RhdGFfXyxzLGUpKyIiLGwuaGFzKHUpP2lbc109YzpsLnNldCh1LGMpKTtmb3Iocz0wO3M8ZjsrK3MpdT1vLmNhbGwodCxhW3NdLHMsYSkrIiIsKGM9bC5nZXQodSkpPyhyW3NdPWMsYy5fX2RhdGFfXz1hW3NdLGwuZGVsZXRlKHUpKTpuW3NdPW5ldyBZZCh0LGFbc10pO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmbC5nZXQoZFtzXSk9PT1jJiYoaVtzXT1jKX1mdW5jdGlvbiBIZCh0KXtyZXR1cm4gdC5fX2RhdGFfX31mdW5jdGlvbiAkZCh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJsZW5ndGgiaW4gdD90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gV2QodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59WWQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZZCxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTt2YXIgVmQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IEdkPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpWZCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIFhkKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLEdkLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpHZFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIFpkKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBRZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEtkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gSmQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gdHAodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIGVwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIG5wKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBycCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBpcCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIGFwKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsbil9fWZ1bmN0aW9uIG9wKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8bnAodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gc3AodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGNwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiB1cCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBscCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gaHAodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgZnAodCl9ZnVuY3Rpb24gZnAodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWxwKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gZHAodCxlKXtmb3IodmFyIG49aHAodCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLmFkZChlW3JdKX1mdW5jdGlvbiBwcCh0LGUpe2Zvcih2YXIgbj1ocCh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4ucmVtb3ZlKGVbcl0pfWZ1bmN0aW9uIHlwKHQpe3JldHVybiBmdW5jdGlvbigpe2RwKHRoaXMsdCl9fWZ1bmN0aW9uIGdwKHQpe3JldHVybiBmdW5jdGlvbigpe3BwKHRoaXMsdCl9fWZ1bmN0aW9uIG1wKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2RwOnBwKSh0aGlzLHQpfX1mdW5jdGlvbiB2cCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gYnAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBfcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24geHAoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiB3cCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBrcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIFRwKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIEVwKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gQ3AodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1WZCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09VmQ/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIFNwKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEFwKHQpe3ZhciBlPVhkKHQpO3JldHVybihlLmxvY2FsP1NwOkNwKShlKX1mdW5jdGlvbiBNcCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIE5wKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gRHAoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIE9wKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBCcCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBMcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLHI9MCxpPS0xLGE9ZS5sZW5ndGg7cjxhOysrciluPWVbcl0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5vcHRpb25zKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gSXAodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByLGk9dGhpcy5fX29uLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUsdGhpcy5fX2RhdGFfXyl9fShlKTtpZihpKWZvcih2YXIgbz0wLHM9aS5sZW5ndGg7bzxzOysrbylpZigocj1pW29dKS50eXBlPT09dC50eXBlJiZyLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcixyLm9wdGlvbnMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyLnR5cGUsci5saXN0ZW5lcj1hLHIub3B0aW9ucz1uKSx2b2lkKHIudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxhLG4pLHI9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YSxvcHRpb25zOm59LGk/aS5wdXNoKHIpOnRoaXMuX19vbj1bcl19fWZ1bmN0aW9uIFJwKHQsZSxuKXt2YXIgcj1ucCh0KSxpPXIuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIGk/aT1uZXcgaShlLG4pOihpPXIuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oaS5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxpLmRldGFpbD1uLmRldGFpbCk6aS5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBGcCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBScCh0aGlzLHQsZSl9fWZ1bmN0aW9uIFBwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFJwKHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZwLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIGpwPVtudWxsXTtmdW5jdGlvbiBZcCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiB6cCgpe3JldHVybiBuZXcgWXAoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxqcCl9WXAucHJvdG90eXBlPXpwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WXAsc2VsZWN0OmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1NZCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvLHM9ZVtpXSxjPXMubGVuZ3RoLHU9cltpXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKGE9c1tsXSkmJihvPXQuY2FsbChhLGEuX19kYXRhX18sbCxzKSkmJigiX19kYXRhX18iaW4gYSYmKG8uX19kYXRhX189YS5fX2RhdGFfXyksdVtsXT1vKTtyZXR1cm4gbmV3IFlwKHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXt0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBOZCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSh0KTpPZCh0KTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1bXSxpPVtdLGE9MDthPG47KythKWZvcih2YXIgbyxzPWVbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSkobz1zW3VdKSYmKHIucHVzaCh0LmNhbGwobyxvLl9fZGF0YV9fLHUscykpLGkucHVzaChvKSk7cmV0dXJuIG5ldyBZcChyLGkpfSxzZWxlY3RDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QobnVsbD09dD9SZDpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSWQuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMZCh0KSkpfSxzZWxlY3RDaGlsZHJlbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3RBbGwobnVsbD09dD9QZDpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRmQuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMZCh0KSkpfSxmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUJkKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBZcChyLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uKHQsZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIEFycmF5LmZyb20odGhpcyxIZCk7dmFyIG49ZT9xZDpVZCxyPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXpkKHQpKTtmb3IodmFyIGE9aS5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBsPXJbdV0saD1pW3VdLGY9aC5sZW5ndGgsZD0kZCh0LmNhbGwobCxsJiZsLl9fZGF0YV9fLHUscikpLHA9ZC5sZW5ndGgseT1zW3VdPW5ldyBBcnJheShwKSxnPW9bdV09bmV3IEFycmF5KHApLG09Y1t1XT1uZXcgQXJyYXkoZik7bihsLGgseSxnLG0sZCxlKTtmb3IodmFyIHYsYixfPTAseD0wO188cDsrK18paWYodj15W19dKXtmb3IoXz49eCYmKHg9XysxKTshKGI9Z1t4XSkmJisreDxwOyk7di5fbmV4dD1ifHxudWxsfX1yZXR1cm4obz1uZXcgWXAobyxyKSkuX2VudGVyPXMsby5fZXhpdD1jLG99LGVudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChqZCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFlwKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoamQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmVudGVyKCksaT10aGlzLGE9dGhpcy5leGl0KCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/KHI9dChyKSkmJihyPXIuc2VsZWN0aW9uKCkpOnI9ci5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKGk9ZShpKSkmJihpPWkuc2VsZWN0aW9uKCkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLHImJmk/ci5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQsbj10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsaT1uLmxlbmd0aCxhPXIubGVuZ3RoLG89TWF0aC5taW4oaSxhKSxzPW5ldyBBcnJheShpKSxjPTA7YzxvOysrYylmb3IodmFyIHUsbD1uW2NdLGg9cltjXSxmPWwubGVuZ3RoLGQ9c1tjXT1uZXcgQXJyYXkoZikscD0wO3A8ZjsrK3ApKHU9bFtwXXx8aFtwXSkmJihkW3BdPXUpO2Zvcig7YzxpOysrYylzW2NdPW5bY107cmV0dXJuIG5ldyBZcChzLHRoaXMuX3BhcmVudHMpfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sb3JkZXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciByLGk9dFtlXSxhPWkubGVuZ3RoLTEsbz1pW2FdOy0tYT49MDspKHI9aVthXSkmJihvJiY0XnIuY29tcGFyZURvY3VtZW50UG9zaXRpb24obykmJm8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixvKSxvPXIpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9V2QpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMscj1uLmxlbmd0aCxpPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSl7Zm9yKHZhciBvLHM9blthXSxjPXMubGVuZ3RoLHU9aVthXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKG89c1tsXSkmJih1W2xdPW8pO3Uuc29ydChlKX1yZXR1cm4gbmV3IFlwKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzKX0sbm9kZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIHI9dFtlXSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXt2YXIgbz1yW2ldO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24oKXtsZXQgdD0wO2Zvcihjb25zdCBlIG9mIHRoaXMpKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxyPWUubGVuZ3RoO248cjsrK24pZm9yKHZhciBpLGE9ZVtuXSxvPTAscz1hLmxlbmd0aDtvPHM7KytvKShpPWFbb10pJiZ0LmNhbGwoaSxpLl9fZGF0YV9fLG8sYSk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1YZCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/UWQ6WmQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9lcDp0cDpuLmxvY2FsP0pkOktkKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3JwOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2FwOmlwKSh0LGUsbnVsbD09bj8iIjpuKSk6b3AodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/c3A6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dXA6Y3ApKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49bHAodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9aHAodGhpcy5ub2RlKCkpLGk9LTEsYT1uLmxlbmd0aDsrK2k8YTspaWYoIXIuY29udGFpbnMobltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/bXA6ZT95cDpncCkobixlKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/dnA6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P19wOmJwKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/eHA6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2twOndwKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goVHApfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goRXApfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFwKHQpLHI9bnVsbD09ZT9NcDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOk1kKGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKE5wKX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/T3A6RHApfSxkYXR1bTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9QnAodCsiIiksbz1hLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/SXA6THAscj0wO3I8bzsrK3IpdGhpcy5lYWNoKHMoYVtyXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBjLHU9MCxsPXMubGVuZ3RoO3U8bDsrK3UpZm9yKHI9MCxjPXNbdV07cjxvOysrcilpZigoaT1hW3JdKS50eXBlPT09Yy50eXBlJiZpLm5hbWU9PT1jLm5hbWUpcmV0dXJuIGMudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/UHA6RnApKHQsZSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpmdW5jdGlvbiooKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByLGk9dFtlXSxhPTAsbz1pLmxlbmd0aDthPG87KythKShyPWlbYV0pJiYoeWllbGQgcil9fTtjb25zdCBVcD16cDt2YXIgcXA9e3ZhbHVlOigpPT57fX07ZnVuY3Rpb24gSHAoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxyPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIHJ8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtyW3RdPVtdfXJldHVybiBuZXcgJHAocil9ZnVuY3Rpb24gJHAodCl7dGhpcy5fPXR9ZnVuY3Rpb24gV3AodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixyPXQuaW5kZXhPZigiLiIpO2lmKHI+PTAmJihuPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFZwKHQsZSl7Zm9yKHZhciBuLHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYoKG49dFtyXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gR3AodCxlLG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZih0W3JdLm5hbWU9PT1lKXt0W3JdPXFwLHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH0kcC5wcm90b3R5cGU9SHAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokcCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcy5fLGk9V3AodCsiIixyKSxhPS0xLG89aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8bzspaWYobj0odD1pW2FdKS50eXBlKXJbbl09R3AocltuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIHIpcltuXT1HcChyW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxvOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49VnAocltuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgJHAodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLHIsaT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0ocj10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKXJbYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXJbaV0udmFsdWUuYXBwbHkoZSxuKX19O2NvbnN0IFhwPUhwO3ZhciBacCxRcCxLcD0wLEpwPTAsdHk9MCxleT0wLG55PTAscnk9MCxpeT0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxheT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBveSgpe3JldHVybiBueXx8KGF5KHN5KSxueT1peS5ub3coKStyeSl9ZnVuY3Rpb24gc3koKXtueT0wfWZ1bmN0aW9uIGN5KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiB1eSh0LGUsbil7dmFyIHI9bmV3IGN5O3JldHVybiByLnJlc3RhcnQodCxlLG4pLHJ9ZnVuY3Rpb24gbHkoKXtueT0oZXk9aXkubm93KCkpK3J5LEtwPUpwPTA7dHJ5eyFmdW5jdGlvbigpe295KCksKytLcDtmb3IodmFyIHQsZT1acDtlOykodD1ueS1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKHZvaWQgMCx0KSxlPWUuX25leHQ7LS1LcH0oKX1maW5hbGx5e0twPTAsZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxuPVpwLHI9MS8wO247KW4uX2NhbGw/KHI+bi5fdGltZSYmKHI9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpacD1lKTtRcD10LGZ5KHIpfSgpLG55PTB9fWZ1bmN0aW9uIGh5KCl7dmFyIHQ9aXkubm93KCksZT10LWV5O2U+MWUzJiYocnktPWUsZXk9dCl9ZnVuY3Rpb24gZnkodCl7S3B8fChKcCYmKEpwPWNsZWFyVGltZW91dChKcCkpLHQtbnk+MjQ/KHQ8MS8wJiYoSnA9c2V0VGltZW91dChseSx0LWl5Lm5vdygpLXJ5KSksdHkmJih0eT1jbGVhckludGVydmFsKHR5KSkpOih0eXx8KGV5PWl5Lm5vdygpLHR5PXNldEludGVydmFsKGh5LDFlMykpLEtwPTEsYXkobHkpKSl9ZnVuY3Rpb24gZHkodCxlLG4pe3ZhciByPW5ldyBjeTtyZXR1cm4gZT1udWxsPT1lPzA6K2Usci5yZXN0YXJ0KChuPT57ci5zdG9wKCksdChuK2UpfSksZSxuKSxyfWN5LnByb3RvdHlwZT11eS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmN5LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9veSgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxRcD09PXRoaXN8fChRcD9RcC5fbmV4dD10aGlzOlpwPXRoaXMsUXA9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixmeSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxmeSgpKX19O3ZhciBweT1YcCgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSx5eT1bXTtmdW5jdGlvbiBneSh0LGUsbixyLGksYSl7dmFyIG89dC5fX3RyYW5zaXRpb247aWYobyl7aWYobiBpbiBvKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbih0LGUsbil7dmFyIHIsaT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKGMpe3ZhciB1LGwsaCxmO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKHUgaW4gaSlpZigoZj1pW3VdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09Zi5zdGF0ZSlyZXR1cm4gZHkoYSk7ND09PWYuc3RhdGU/KGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pOit1PGUmJihmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKX1pZihkeSgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbyhjKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLHI9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLHU9MCxsPS0xO3U8aDsrK3UpKGY9bi50d2Vlblt1XS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKHJbKytsXT1mKTtyLmxlbmd0aD1sKzF9fWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciBpPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksYT0tMSxvPXIubGVuZ3RoOysrYTxvOylyW2FdLmNhbGwodCxpKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIHIgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSBpW2VdLGkpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1pW2VdPW4sbi50aW1lcj11eSgoZnVuY3Rpb24odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KHQsbix7bmFtZTplLGluZGV4OnIsZ3JvdXA6aSxvbjpweSx0d2Vlbjp5eSx0aW1lOmEudGltZSxkZWxheTphLmRlbGF5LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzZTphLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gbXkodCxlKXt2YXIgbj1ieSh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHZ5KHQsZSl7dmFyIG49YnkodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gYnkodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBfeSh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX12YXIgeHksd3k9MTgwL01hdGguUEksa3k9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gVHkodCxlLG4scixpLGEpe3ZhciBvLHMsYztyZXR1cm4obz1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89byxlLz1vKSwoYz10Km4rZSpyKSYmKG4tPXQqYyxyLT1lKmMpLChzPU1hdGguc3FydChuKm4rcipyKSkmJihuLz1zLHIvPXMsYy89cyksdCpyPGUqbiYmKHQ9LXQsZT0tZSxjPS1jLG89LW8pLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTphLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqd3ksc2tld1g6TWF0aC5hdGFuKGMpKnd5LHNjYWxlWDpvLHNjYWxlWTpzfX1mdW5jdGlvbiBFeSh0LGUsbixyKXtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oYSxvKXt2YXIgcz1bXSxjPVtdO3JldHVybiBhPXQoYSksbz10KG8pLGZ1bmN0aW9uKHQscixpLGEsbyxzKXtpZih0IT09aXx8ciE9PWEpe3ZhciBjPW8ucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmMtNCx4Ol95KHQsaSl9LHtpOmMtMix4Ol95KHIsYSl9KX1lbHNlKGl8fGEpJiZvLnB1c2goInRyYW5zbGF0ZSgiK2krZSthK24pfShhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVkscyxjKSxmdW5jdGlvbih0LGUsbixhKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksYS5wdXNoKHtpOm4ucHVzaChpKG4pKyJyb3RhdGUoIixudWxsLHIpLTIseDpfeSh0LGUpfSkpOmUmJm4ucHVzaChpKG4pKyJyb3RhdGUoIitlK3IpfShhLnJvdGF0ZSxvLnJvdGF0ZSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lP2EucHVzaCh7aTpuLnB1c2goaShuKSsic2tld1goIixudWxsLHIpLTIseDpfeSh0LGUpfSk6ZSYmbi5wdXNoKGkobikrInNrZXdYKCIrZStyKX0oYS5za2V3WCxvLnNrZXdYLHMsYyksZnVuY3Rpb24odCxlLG4scixhLG8pe2lmKHQhPT1ufHxlIT09cil7dmFyIHM9YS5wdXNoKGkoYSkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO28ucHVzaCh7aTpzLTQseDpfeSh0LG4pfSx7aTpzLTIseDpfeShlLHIpfSl9ZWxzZSAxPT09biYmMT09PXJ8fGEucHVzaChpKGEpKyJzY2FsZSgiK24rIiwiK3IrIikiKX0oYS5zY2FsZVgsYS5zY2FsZVksby5zY2FsZVgsby5zY2FsZVkscyxjKSxhPW89bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxyPWMubGVuZ3RoOysrbjxyOylzWyhlPWNbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBDeT1FeSgoZnVuY3Rpb24odCl7Y29uc3QgZT1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIERPTU1hdHJpeD9ET01NYXRyaXg6V2ViS2l0Q1NTTWF0cml4KSh0KyIiKTtyZXR1cm4gZS5pc0lkZW50aXR5P2t5OlR5KGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLFN5PUV5KChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9reTooeHl8fCh4eT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx4eS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9eHkudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/VHkoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6a3kpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBBeSh0LGUpe3ZhciBuLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9dnkodGhpcyx0KSxhPWkudHdlZW47aWYoYSE9PW4pZm9yKHZhciBvPTAscz0ocj1uPWEpLmxlbmd0aDtvPHM7KytvKWlmKHJbb10ubmFtZT09PWUpeyhyPXIuc2xpY2UoKSkuc3BsaWNlKG8sMSk7YnJlYWt9aS50d2Vlbj1yfX1mdW5jdGlvbiBNeSh0LGUsbil7dmFyIHIsaTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dnkodGhpcyx0KSxvPWEudHdlZW47aWYobyE9PXIpe2k9KHI9bykuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxjPTAsdT1pLmxlbmd0aDtjPHU7KytjKWlmKGlbY10ubmFtZT09PWUpe2lbY109czticmVha31jPT09dSYmaS5wdXNoKHMpfWEudHdlZW49aX19ZnVuY3Rpb24gTnkodCxlLG4pe3ZhciByPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9dnkodGhpcyxyKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gYnkodCxyKS52YWx1ZVtlXX19ZnVuY3Rpb24gRHkodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIE95KHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIEJ5KCl7fXZhciBMeT0uNyxJeT0xLjQyODU3MTQyODU3MTQyODYsUnk9IlxccyooWystXT9cXGQrKVxccyoiLEZ5PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFB5PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixqeT0vXiMoWzAtOWEtZl17Myw4fSkkLyxZeT1uZXcgUmVnRXhwKCJecmdiXFwoIitbUnksUnksUnldKyJcXCkkIiksenk9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1B5LFB5LFB5XSsiXFwpJCIpLFV5PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbUnksUnksUnksRnldKyJcXCkkIikscXk9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tQeSxQeSxQeSxGeV0rIlxcKSQiKSxIeT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRnksUHksUHldKyJcXCkkIiksJHk9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tGeSxQeSxQeSxGeV0rIlxcKSQiKSxXeT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBWeSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEd5KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gWHkodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9ankuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9aeShlKTozPT09bj9uZXcgdGcoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP1F5KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP1F5KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9WXkuZXhlYyh0KSk/bmV3IHRnKGVbMV0sZVsyXSxlWzNdLDEpOihlPXp5LmV4ZWModCkpP25ldyB0ZygyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1VeS5leGVjKHQpKT9ReShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1xeS5leGVjKHQpKT9ReSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1IeS5leGVjKHQpKT9pZyhlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPSR5LmV4ZWModCkpP2lnKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6V3kuaGFzT3duUHJvcGVydHkodCk/WnkoV3lbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyB0ZyhOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFp5KHQpe3JldHVybiBuZXcgdGcodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFF5KHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgdGcodCxlLG4scil9ZnVuY3Rpb24gS3kodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBCeXx8KHQ9WHkodCkpLHQ/bmV3IHRnKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyB0Z31mdW5jdGlvbiBKeSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/S3kodCk6bmV3IHRnKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiB0Zyh0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gZWcoKXtyZXR1cm4iIyIrcmcodGhpcy5yKStyZyh0aGlzLmcpK3JnKHRoaXMuYil9ZnVuY3Rpb24gbmcoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiByZyh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGlnKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgb2codCxlLG4scil9ZnVuY3Rpb24gYWcodCl7aWYodCBpbnN0YW5jZW9mIG9nKXJldHVybiBuZXcgb2codC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgQnl8fCh0PVh5KHQpKSwhdClyZXR1cm4gbmV3IG9nO2lmKHQgaW5zdGFuY2VvZiBvZylyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IG9nKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gb2codCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIHNnKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBjZyh0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fUR5KEJ5LFh5LHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OlZ5LGZvcm1hdEhleDpWeSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4gYWcodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpHeSx0b1N0cmluZzpHeX0pLER5KHRnLEp5LE95KEJ5LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0l5Ok1hdGgucG93KEl5LHQpLG5ldyB0Zyh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9MeTpNYXRoLnBvdyhMeSx0KSxuZXcgdGcodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDplZyxmb3JtYXRIZXg6ZWcsZm9ybWF0UmdiOm5nLHRvU3RyaW5nOm5nfSkpLER5KG9nLChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/YWcodCk6bmV3IG9nKHQsZSxuLG51bGw9PXI/MTpyKX0pLE95KEJ5LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0l5Ok1hdGgucG93KEl5LHQpLG5ldyBvZyh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0x5Ok1hdGgucG93KEx5LHQpLG5ldyBvZyh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxyPW4rKG48LjU/bjoxLW4pKmUsaT0yKm4tcjtyZXR1cm4gbmV3IHRnKHNnKHQ+PTI0MD90LTI0MDp0KzEyMCxpLHIpLHNnKHQsaSxyKSxzZyh0PDEyMD90KzI0MDp0LTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO2NvbnN0IHVnPXQ9PigpPT50O2Z1bmN0aW9uIGxnKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KHQsbik6dWcoaXNOYU4odCk/ZTp0KX1jb25zdCBoZz1mdW5jdGlvbiB0KGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT0odD0rdCk/bGc6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnBvdyh0K3IqZSxuKX19KGUsbix0KTp1Zyhpc05hTihlKT9uOmUpfX0oZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciByPW4oKHQ9SnkodCkpLnIsKGU9SnkoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYiksbz1sZyh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1yKGUpLHQuZz1pKGUpLHQuYj1hKGUpLHQub3BhY2l0eT1vKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0oMSk7ZnVuY3Rpb24gZmcodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLHIsaT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pcj1KeShlW25dKSxhW25dPXIucnx8MCxvW25dPXIuZ3x8MCxzW25dPXIuYnx8MDtyZXR1cm4gYT10KGEpLG89dChvKSxzPXQocyksci5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIHIucj1hKHQpLHIuZz1vKHQpLHIuYj1zKHQpLHIrIiJ9fX1mZygoZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLGk9dFtyXSxhPXRbcisxXSxvPXI+MD90W3ItMV06MippLWEscz1yPGUtMT90W3IrMl06MiphLWk7cmV0dXJuIGNnKChuLXIvZSkqZSxvLGksYSxzKX19KSksZmcoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSksaT10WyhyK2UtMSklZV0sYT10W3IlZV0sbz10WyhyKzEpJWVdLHM9dFsocisyKSVlXTtyZXR1cm4gY2coKG4tci9lKSplLGksYSxvLHMpfX0pKTt2YXIgZGc9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLHBnPW5ldyBSZWdFeHAoZGcuc291cmNlLCJnIik7ZnVuY3Rpb24geWcodCxlKXt2YXIgbixyLGksYT1kZy5sYXN0SW5kZXg9cGcubGFzdEluZGV4PTAsbz0tMSxzPVtdLGM9W107Zm9yKHQrPSIiLGUrPSIiOyhuPWRnLmV4ZWModCkpJiYocj1wZy5leGVjKGUpKTspKGk9ci5pbmRleCk+YSYmKGk9ZS5zbGljZShhLGkpLHNbb10/c1tvXSs9aTpzWysrb109aSksKG49blswXSk9PT0ocj1yWzBdKT9zW29dP3Nbb10rPXI6c1srK29dPXI6KHNbKytvXT1udWxsLGMucHVzaCh7aTpvLHg6X3kobixyKX0pKSxhPXBnLmxhc3RJbmRleDtyZXR1cm4gYTxlLmxlbmd0aCYmKGk9ZS5zbGljZShhKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLHMubGVuZ3RoPDI/Y1swXT9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fShjWzBdLngpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0oZSk6KGU9Yy5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLHI9MDtyPGU7KytyKXNbKG49Y1tyXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gZ2codCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP195OmUgaW5zdGFuY2VvZiBYeT9oZzoobj1YeShlKSk/KGU9bixoZyk6eWcpKHQsZSl9ZnVuY3Rpb24gbWcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHZnKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gYmcodCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19ZnVuY3Rpb24gX2codCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIHhnKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1jKyIiKT9udWxsOm89PT1yJiZzPT09aT9hOihpPXMsYT1lKHI9byxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHdnKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24ga2codCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIFRnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gRWcodCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZUZyh0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gQ2codCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZrZyh0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gU2codCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtteSh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gQWcodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe215KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gTWcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2eSh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTmcodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3Z5KHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gRGcodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dnkodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIE9nKHQsZSxuKXt2YXIgcixpLGE9ZnVuY3Rpb24odCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfShlKT9teTp2eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1hKHRoaXMsdCkscz1vLm9uO3MhPT1yJiYoaT0ocj1zKS5jb3B5KCkpLm9uKGUsbiksby5vbj1pfX12YXIgQmc9VXAucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIExnKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIElnKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLHIpLG4pfX1mdW5jdGlvbiBSZyh0LGUsbil7dmFyIHIsaTtmdW5jdGlvbiBhKCl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYocj0oaT1hKSYmSWcodCxhLG4pKSxyfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIFBnKHQpe3ZhciBlLG47ZnVuY3Rpb24gcigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09biYmKGU9KG49cikmJkZnKHIpKSxlfXJldHVybiByLl92YWx1ZT10LHJ9dmFyIGpnPTA7ZnVuY3Rpb24gWWcodCxlLG4scil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1yfWZ1bmN0aW9uIHpnKCl7cmV0dXJuKytqZ312YXIgVWc9VXAucHJvdG90eXBlO1lnLnByb3RvdHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gVXAoKS50cmFuc2l0aW9uKHQpfS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOllnLHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PU1kKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pZm9yKHZhciBzLGMsdT1yW29dLGw9dS5sZW5ndGgsaD1hW29dPW5ldyBBcnJheShsKSxmPTA7ZjxsOysrZikocz11W2ZdKSYmKGM9dC5jYWxsKHMscy5fX2RhdGFfXyxmLHUpKSYmKCJfX2RhdGFfXyJpbiBzJiYoYy5fX2RhdGFfXz1zLl9fZGF0YV9fKSxoW2ZdPWMsZ3koaFtmXSxlLG4sZixoLGJ5KHMsbikpKTtyZXR1cm4gbmV3IFlnKGEsdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1PZCh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9W10sbz1bXSxzPTA7czxpOysrcylmb3IodmFyIGMsdT1yW3NdLGw9dS5sZW5ndGgsaD0wO2g8bDsrK2gpaWYoYz11W2hdKXtmb3IodmFyIGYsZD10LmNhbGwoYyxjLl9fZGF0YV9fLGgsdSkscD1ieShjLG4pLHk9MCxnPWQubGVuZ3RoO3k8ZzsrK3kpKGY9ZFt5XSkmJmd5KGYsZSxuLHksZCxwKTthLnB1c2goZCksby5wdXNoKGMpfXJldHVybiBuZXcgWWcoYSxvLGUsbil9LHNlbGVjdENoaWxkOlVnLnNlbGVjdENoaWxkLHNlbGVjdENoaWxkcmVuOlVnLnNlbGVjdENoaWxkcmVuLGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9QmQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbz1lW2ldLHM9by5sZW5ndGgsYz1yW2ldPVtdLHU9MDt1PHM7Kyt1KShhPW9bdV0pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLHUsbykmJmMucHVzaChhKTtyZXR1cm4gbmV3IFlnKHIsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24odCl7aWYodC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxyPWUubGVuZ3RoLGk9bi5sZW5ndGgsYT1NYXRoLm1pbihyLGkpLG89bmV3IEFycmF5KHIpLHM9MDtzPGE7KytzKWZvcih2YXIgYyx1PWVbc10sbD1uW3NdLGg9dS5sZW5ndGgsZj1vW3NdPW5ldyBBcnJheShoKSxkPTA7ZDxoOysrZCkoYz11W2RdfHxsW2RdKSYmKGZbZF09Yyk7Zm9yKDtzPHI7KytzKW9bc109ZVtzXTtyZXR1cm4gbmV3IFlnKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBCZyh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49emcoKSxyPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgbyxzPXJbYV0sYz1zLmxlbmd0aCx1PTA7dTxjOysrdSlpZihvPXNbdV0pe3ZhciBsPWJ5KG8sZSk7Z3kobyx0LG4sdSxzLHt0aW1lOmwudGltZStsLmRlbGF5K2wuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjpsLmR1cmF0aW9uLGVhc2U6bC5lYXNlfSl9cmV0dXJuIG5ldyBZZyhyLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpVZy5jYWxsLG5vZGVzOlVnLm5vZGVzLG5vZGU6VWcubm9kZSxzaXplOlVnLnNpemUsZW1wdHk6VWcuZW1wdHksZWFjaDpVZy5lYWNoLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9ieSh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goT2cobix0LGUpKX0sYXR0cjpmdW5jdGlvbih0LGUpe3ZhciBuPVhkKHQpLHI9InRyYW5zZm9ybSI9PT1uP1N5OmdnO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3dnOnhnKShuLHIsTnkodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/dmc6bWcpKG4pOihuLmxvY2FsP19nOmJnKShuLHIsZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24odCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciByPVhkKHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKHIubG9jYWw/RWc6Q2cpKHIsZSkpfSxzdHlsZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9InRyYW5zZm9ybSI9PSh0Kz0iIik/Q3k6Z2c7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9b3AodGhpcyx0KSxvPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLG9wKHRoaXMsdCkpO3JldHVybiBhPT09bz9udWxsOmE9PT1uJiZvPT09cj9pOmk9ZShuPWEscj1vKX19KHQscikpLm9uKCJlbmQuc3R5bGUuIit0LExnKHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCxmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPW9wKHRoaXMsdCkscz1uKHRoaXMpLGM9cysiIjtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksYz1zPW9wKHRoaXMsdCkpLG89PT1jP251bGw6bz09PXImJmM9PT1pP2E6KGk9YyxhPWUocj1vLHMpKX19KHQscixOeSh0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpLGEsbz0ic3R5bGUuIitlLHM9ImVuZC4iK287cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9dnkodGhpcyx0KSx1PWMub24sbD1udWxsPT1jLnZhbHVlW29dP2F8fChhPUxnKGUpKTp2b2lkIDA7dT09PW4mJmk9PT1sfHwocj0obj11KS5jb3B5KCkpLm9uKHMsaT1sKSxjLm9uPXJ9fSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPW9wKHRoaXMsdCk7cmV0dXJuIG89PT1hP251bGw6bz09PXI/aTppPWUocj1vLG4pfX0odCxyLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4ocj10aGlzLnR3ZWVuKHIpKSYmci5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihyLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihyLFJnKHQsZSxudWxsPT1uPyIiOm4pKX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KE55KHRoaXMsInRleHQiLHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxQZyh0KSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09dClyZXR1cm47ZSYmZS5yZW1vdmVDaGlsZCh0aGlzKX19KHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHIsaT1ieSh0aGlzLm5vZGUoKSxuKS50d2VlbixhPTAsbz1pLmxlbmd0aDthPG87KythKWlmKChyPWlbYV0pLm5hbWU9PT10KXJldHVybiByLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/QXk6TXkpKG4sdCxlKSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/U2c6QWcpKGUsdCkpOmJ5KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P01nOk5nKShlLHQpKTpieSh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goRGcoZSx0KSk6YnkodGhpcy5ub2RlKCksZSkuZWFzZX0sZWFzZVZhcnlpbmc6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7dnkodGhpcyx0KS5lYXNlPW59fSh0aGlzLl9pZCx0KSl9LGVuZDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbyl7dmFyIHM9e3ZhbHVlOm99LGM9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49dnkodGhpcyxyKSxpPW4ub247aSE9PXQmJigoZT0odD1pKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChjKSksbi5vbj1lfSkpLDA9PT1pJiZhKCl9KSl9LFtTeW1ib2wuaXRlcmF0b3JdOlVnW1N5bWJvbC5pdGVyYXRvcl19O3ZhciBxZz17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6ZnVuY3Rpb24odCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9fTtmdW5jdGlvbiBIZyh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXRocm93IG5ldyBFcnJvcihgdHJhbnNpdGlvbiAke2V9IG5vdCBmb3VuZGApO3JldHVybiBufWZ1bmN0aW9uICRnKHQsZSxuKXt0aGlzLms9dCx0aGlzLng9ZSx0aGlzLnk9bn1VcC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIG4scixpLGE9dC5fX3RyYW5zaXRpb24sbz0hMDtpZihhKXtmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLGEpKG49YVtpXSkubmFtZT09PWU/KHI9bi5zdGF0ZT4yJiZuLnN0YXRlPDUsbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLG4ub24uY2FsbChyPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBhW2ldKTpvPSExO28mJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19KHRoaXMsdCl9KSl9LFVwLnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIFlnPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9emcoKSwobj1xZykudGltZT1veSgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpKG89c1t1XSkmJmd5KG8sdCxlLHUscyxufHxIZyhvLGUpKTtyZXR1cm4gbmV3IFlnKHIsdGhpcy5fcGFyZW50cyx0LGUpfSwkZy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOiRnLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyAkZyh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3ICRnKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX0sbmV3ICRnKDEsMCwwKSwkZy5wcm90b3R5cGU7dmFyIFdnPSJjb21tIixWZz0icnVsZSIsR2c9ImRlY2wiLFhnPU1hdGguYWJzLFpnPVN0cmluZy5mcm9tQ2hhckNvZGU7ZnVuY3Rpb24gUWcodCl7cmV0dXJuIHQudHJpbSgpfWZ1bmN0aW9uIEtnKHQsZSxuKXtyZXR1cm4gdC5yZXBsYWNlKGUsbil9ZnVuY3Rpb24gSmcodCxlKXtyZXR1cm4gdC5pbmRleE9mKGUpfWZ1bmN0aW9uIHRtKHQsZSl7cmV0dXJuIDB8dC5jaGFyQ29kZUF0KGUpfWZ1bmN0aW9uIGVtKHQsZSxuKXtyZXR1cm4gdC5zbGljZShlLG4pfWZ1bmN0aW9uIG5tKHQpe3JldHVybiB0Lmxlbmd0aH1mdW5jdGlvbiBybSh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gaW0odCxlKXtyZXR1cm4gZS5wdXNoKHQpLHR9ZnVuY3Rpb24gYW0odCxlKXtmb3IodmFyIG49IiIscj1ybSh0KSxpPTA7aTxyO2krKyluKz1lKHRbaV0saSx0LGUpfHwiIjtyZXR1cm4gbn1mdW5jdGlvbiBvbSh0LGUsbixyKXtzd2l0Y2godC50eXBlKXtjYXNlIkBpbXBvcnQiOmNhc2UgR2c6cmV0dXJuIHQucmV0dXJuPXQucmV0dXJufHx0LnZhbHVlO2Nhc2UgV2c6cmV0dXJuIiI7Y2FzZSJAa2V5ZnJhbWVzIjpyZXR1cm4gdC5yZXR1cm49dC52YWx1ZSsieyIrYW0odC5jaGlsZHJlbixyKSsifSI7Y2FzZSBWZzp0LnZhbHVlPXQucHJvcHMuam9pbigiLCIpfXJldHVybiBubShuPWFtKHQuY2hpbGRyZW4scikpP3QucmV0dXJuPXQudmFsdWUrInsiK24rIn0iOiIifU9iamVjdC5hc3NpZ247dmFyIHNtPTEsY209MSx1bT0wLGxtPTAsaG09MCxmbT0iIjtmdW5jdGlvbiBkbSh0LGUsbixyLGksYSxvKXtyZXR1cm57dmFsdWU6dCxyb290OmUscGFyZW50Om4sdHlwZTpyLHByb3BzOmksY2hpbGRyZW46YSxsaW5lOnNtLGNvbHVtbjpjbSxsZW5ndGg6byxyZXR1cm46IiJ9fWZ1bmN0aW9uIHBtKCl7cmV0dXJuIGhtPWxtPjA/dG0oZm0sLS1sbSk6MCxjbS0tLDEwPT09aG0mJihjbT0xLHNtLS0pLGhtfWZ1bmN0aW9uIHltKCl7cmV0dXJuIGhtPWxtPHVtP3RtKGZtLGxtKyspOjAsY20rKywxMD09PWhtJiYoY209MSxzbSsrKSxobX1mdW5jdGlvbiBnbSgpe3JldHVybiB0bShmbSxsbSl9ZnVuY3Rpb24gbW0oKXtyZXR1cm4gbG19ZnVuY3Rpb24gdm0odCxlKXtyZXR1cm4gZW0oZm0sdCxlKX1mdW5jdGlvbiBibSh0KXtzd2l0Y2godCl7Y2FzZSAwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjpyZXR1cm4gNTtjYXNlIDMzOmNhc2UgNDM6Y2FzZSA0NDpjYXNlIDQ3OmNhc2UgNjI6Y2FzZSA2NDpjYXNlIDEyNjpjYXNlIDU5OmNhc2UgMTIzOmNhc2UgMTI1OnJldHVybiA0O2Nhc2UgNTg6cmV0dXJuIDM7Y2FzZSAzNDpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA5MTpyZXR1cm4gMjtjYXNlIDQxOmNhc2UgOTM6cmV0dXJuIDF9cmV0dXJuIDB9ZnVuY3Rpb24gX20odCl7cmV0dXJuIFFnKHZtKGxtLTEsa20oOTE9PT10P3QrMjo0MD09PXQ/dCsxOnQpKSl9ZnVuY3Rpb24geG0odCl7Zm9yKDsoaG09Z20oKSkmJmhtPDMzOyl5bSgpO3JldHVybiBibSh0KT4yfHxibShobSk+Mz8iIjoiICJ9ZnVuY3Rpb24gd20odCxlKXtmb3IoOy0tZSYmeW0oKSYmIShobTw0OHx8aG0+MTAyfHxobT41NyYmaG08NjV8fGhtPjcwJiZobTw5Nyk7KTtyZXR1cm4gdm0odCxtbSgpKyhlPDYmJjMyPT1nbSgpJiYzMj09eW0oKSkpfWZ1bmN0aW9uIGttKHQpe2Zvcig7eW0oKTspc3dpdGNoKGhtKXtjYXNlIHQ6cmV0dXJuIGxtO2Nhc2UgMzQ6Y2FzZSAzOTozNCE9PXQmJjM5IT09dCYma20oaG0pO2JyZWFrO2Nhc2UgNDA6NDE9PT10JiZrbSh0KTticmVhaztjYXNlIDkyOnltKCl9cmV0dXJuIGxtfWZ1bmN0aW9uIFRtKHQsZSl7Zm9yKDt5bSgpJiZ0K2htIT09NTcmJih0K2htIT09ODR8fDQ3IT09Z20oKSk7KTtyZXR1cm4iLyoiK3ZtKGUsbG0tMSkrIioiK1pnKDQ3PT09dD90OnltKCkpfWZ1bmN0aW9uIEVtKHQpe2Zvcig7IWJtKGdtKCkpOyl5bSgpO3JldHVybiB2bSh0LGxtKX1mdW5jdGlvbiBDbSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZtPSIiLHR9KFNtKCIiLG51bGwsbnVsbCxudWxsLFsiIl0sdD1mdW5jdGlvbih0KXtyZXR1cm4gc209Y209MSx1bT1ubShmbT10KSxsbT0wLFtdfSh0KSwwLFswXSx0KSl9ZnVuY3Rpb24gU20odCxlLG4scixpLGEsbyxzLGMpe2Zvcih2YXIgdT0wLGw9MCxoPW8sZj0wLGQ9MCxwPTAseT0xLGc9MSxtPTEsdj0wLGI9IiIsXz1pLHg9YSx3PXIsaz1iO2c7KXN3aXRjaChwPXYsdj15bSgpKXtjYXNlIDQwOmlmKDEwOCE9cCYmNTg9PWsuY2hhckNvZGVBdChoLTEpKXstMSE9Smcoays9S2coX20odiksIiYiLCImXGYiKSwiJlxmIikmJihtPS0xKTticmVha31jYXNlIDM0OmNhc2UgMzk6Y2FzZSA5MTprKz1fbSh2KTticmVhaztjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6ays9eG0ocCk7YnJlYWs7Y2FzZSA5MjprKz13bShtbSgpLTEsNyk7Y29udGludWU7Y2FzZSA0Nzpzd2l0Y2goZ20oKSl7Y2FzZSA0MjpjYXNlIDQ3OmltKE1tKFRtKHltKCksbW0oKSksZSxuKSxjKTticmVhaztkZWZhdWx0OmsrPSIvIn1icmVhaztjYXNlIDEyMyp5OnNbdSsrXT1ubShrKSptO2Nhc2UgMTI1Knk6Y2FzZSA1OTpjYXNlIDA6c3dpdGNoKHYpe2Nhc2UgMDpjYXNlIDEyNTpnPTA7Y2FzZSA1OStsOmQ+MCYmbm0oayktaCYmaW0oZD4zMj9ObShrKyI7IixyLG4saC0xKTpObShLZyhrLCIgIiwiIikrIjsiLHIsbixoLTIpLGMpO2JyZWFrO2Nhc2UgNTk6ays9IjsiO2RlZmF1bHQ6aWYoaW0odz1BbShrLGUsbix1LGwsaSxzLGIsXz1bXSx4PVtdLGgpLGEpLDEyMz09PXYpaWYoMD09PWwpU20oayxlLHcsdyxfLGEsaCxzLHgpO2Vsc2Ugc3dpdGNoKGYpe2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgMTE1OlNtKHQsdyx3LHImJmltKEFtKHQsdyx3LDAsMCxpLHMsYixpLF89W10saCkseCksaSx4LGgscyxyP186eCk7YnJlYWs7ZGVmYXVsdDpTbShrLHcsdyx3LFsiIl0seCwwLHMseCl9fXU9bD1kPTAseT1tPTEsYj1rPSIiLGg9bzticmVhaztjYXNlIDU4Omg9MStubShrKSxkPXA7ZGVmYXVsdDppZih5PDEpaWYoMTIzPT12KS0teTtlbHNlIGlmKDEyNT09diYmMD09eSsrJiYxMjU9PXBtKCkpY29udGludWU7c3dpdGNoKGsrPVpnKHYpLHYqeSl7Y2FzZSAzODptPWw+MD8xOihrKz0iXGYiLC0xKTticmVhaztjYXNlIDQ0OnNbdSsrXT0obm0oayktMSkqbSxtPTE7YnJlYWs7Y2FzZSA2NDo0NT09PWdtKCkmJihrKz1fbSh5bSgpKSksZj1nbSgpLGw9aD1ubShiPWsrPUVtKG1tKCkpKSx2Kys7YnJlYWs7Y2FzZSA0NTo0NT09PXAmJjI9PW5tKGspJiYoeT0wKX19cmV0dXJuIGF9ZnVuY3Rpb24gQW0odCxlLG4scixpLGEsbyxzLGMsdSxsKXtmb3IodmFyIGg9aS0xLGY9MD09PWk/YTpbIiJdLGQ9cm0oZikscD0wLHk9MCxnPTA7cDxyOysrcClmb3IodmFyIG09MCx2PWVtKHQsaCsxLGg9WGcoeT1vW3BdKSksYj10O208ZDsrK20pKGI9UWcoeT4wP2ZbbV0rIiAiK3Y6S2codiwvJlxmL2csZlttXSkpKSYmKGNbZysrXT1iKTtyZXR1cm4gZG0odCxlLG4sMD09PWk/Vmc6cyxjLHUsbCl9ZnVuY3Rpb24gTW0odCxlLG4pe3JldHVybiBkbSh0LGUsbixXZyxaZyhobSksZW0odCwyLC0yKSwwKX1mdW5jdGlvbiBObSh0LGUsbixyKXtyZXR1cm4gZG0odCxlLG4sR2csZW0odCwwLHIpLGVtKHQscisxLC0xKSxyKX1jb25zdCBEbT0iOC4xMy45Ijt2YXIgT209big5NjA5KSxCbT1uKDc4NTYpLExtPW4ubihCbSksSW09ZnVuY3Rpb24odCl7dmFyIGU9dC5yZXBsYWNlKC9cXHVbXGRBLUZdezR9L2dpLChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0LnJlcGxhY2UoL1xcdS9nLCIiKSwxNikpfSkpO3JldHVybiBjb25zb2xlLmxvZyhlKSxlPShlPShlPWUucmVwbGFjZSgvXFx4KFswLTlhLWZdezJ9KS9naSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpLnJlcGxhY2UoL1xcW1xkXGRcZF17M30vZ2ksKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHQucmVwbGFjZSgvXFwvZywiIiksOCkpfSkpKS5yZXBsYWNlKC9cXFtcZFxkXGRdezJ9L2dpLChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0LnJlcGxhY2UoL1xcL2csIiIpLDgpKX0pKX0sUm09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49MDtuPj0wOyl7aWYoISgobj10LmluZGV4T2YoIjxzY3JpcHQiKSk+PTApKXtlKz10LG49LTE7YnJlYWt9ZSs9dC5zdWJzdHIoMCxuKSwobj0odD10LnN1YnN0cihuKzEpKS5pbmRleE9mKCI8XC9zY3JpcHQ+IikpPj0wJiYobis9OSx0PXQuc3Vic3RyKG4pKX12YXIgcj1JbShlKTtyZXR1cm4ocj0ocj0ocj1yLnJlcGxhY2UoL3NjcmlwdD4vZ2ksIiMiKSkucmVwbGFjZSgvamF2YXNjcmlwdDovZ2ksIiMiKSkucmVwbGFjZSgvb25lcnJvcj0vZ2ksIm9uZXJyb3I6IikpLnJlcGxhY2UoLzxpZnJhbWUvZ2ksIiIpfSxGbT1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiB0O3ZhciBuPUxtKCkuc2FuaXRpemUoZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9ITA7aWYoIWUuZmxvd2NoYXJ0fHwhMSE9PWUuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMmJiJmYWxzZSIhPT1lLmZsb3djaGFydC5odG1sTGFiZWxzfHwocj0hMSkscil7dmFyIGk9ZS5zZWN1cml0eUxldmVsOyJhbnRpc2NyaXB0Ij09PWl8fCJzdHJpY3QiPT09aT9uPVJtKG4pOiJsb29zZSIhPT1pJiYobj0obj0obj1ZbShuKSkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikpLnJlcGxhY2UoLz0vZywiJmVxdWFsczsiKSxuPWptKG4pKX1yZXR1cm4gbn0odCxlKSk7cmV0dXJuIG59LFBtPS88YnJccypcLz8+L2dpLGptPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLyNiciMvZywiPGJyLz4iKX0sWW09ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShQbSwiI2JyIyIpfSx6bT1mdW5jdGlvbih0KXtyZXR1cm4iZmFsc2UiIT09dCYmITEhPT10fTtjb25zdCBVbT17Z2V0Um93czpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gMTt2YXIgZT1ZbSh0KTtyZXR1cm4oZT1lLnJlcGxhY2UoL1xcbi9nLCIjYnIjIikpLnNwbGl0KCIjYnIjIil9LHNhbml0aXplVGV4dDpGbSxzYW5pdGl6ZVRleHRPckFycmF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P0ZtKHQsZSk6dC5mbGF0KCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gRm0odCxlKX0pKX0saGFzQnJlYWtzOmZ1bmN0aW9uKHQpe3JldHVybiBQbS50ZXN0KHQpfSxzcGxpdEJyZWFrczpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdChQbSl9LGxpbmVCcmVha1JlZ2V4OlBtLHJlbW92ZVNjcmlwdDpSbSxnZXRVcmw6ZnVuY3Rpb24odCl7dmFyIGU9IiI7cmV0dXJuIHQmJihlPShlPShlPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5yZXBsYWNlKC9cKC9nLCJcXCgiKSkucmVwbGFjZSgvXCkvZywiXFwpIikpLGV9LGV2YWx1YXRlOnptLHJlbW92ZUVzY2FwZXM6SW19O3ZhciBxbT1uKDg2MTMpLEhtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/KDAscW0uYWRqdXN0KSh0LHtzOi00MCxsOjEwfSk6KDAscW0uYWRqdXN0KSh0LHtzOi00MCxsOi0xMH0pfTtmdW5jdGlvbiAkbSh0KXtyZXR1cm4gJG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LCRtKHQpfWZ1bmN0aW9uIFdtKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19dmFyIFZtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuYmFja2dyb3VuZD0iI2Y0ZjRmNCIsdGhpcy5kYXJrTW9kZT0hMSx0aGlzLnByaW1hcnlDb2xvcj0iI2ZmZjRkZCIsdGhpcy5ub3RlQmtnQ29sb3I9IiNmZmY1YWQiLHRoaXMubm90ZVRleHRDb2xvcj0iIzMzMyIsdGhpcy5mb250RmFtaWx5PScidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLHRoaXMuZm9udFNpemU9IjE2cHgifXZhciBlLG47cmV0dXJuIGU9dCxuPVt7a2V5OiJ1cGRhdGVDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcmltYXJ5VGV4dENvbG9yPXRoaXMucHJpbWFyeVRleHRDb2xvcnx8KHRoaXMuZGFya01vZGU/IiNkZGQiOiIjMzMzIiksdGhpcy5zZWNvbmRhcnlDb2xvcj10aGlzLnNlY29uZGFyeUNvbG9yfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi0xMjB9KSx0aGlzLnRlcnRpYXJ5Q29sb3I9dGhpcy50ZXJ0aWFyeUNvbG9yfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjE4MCxsOjV9KSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj10aGlzLnByaW1hcnlCb3JkZXJDb2xvcnx8SG0odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj10aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yfHxIbSh0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj10aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3J8fEhtKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLm5vdGVCb3JkZXJDb2xvcj10aGlzLm5vdGVCb3JkZXJDb2xvcnx8SG0odGhpcy5ub3RlQmtnQ29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5ub3RlQmtnQ29sb3I9dGhpcy5ub3RlQmtnQ29sb3J8fCIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5ub3RlVGV4dENvbG9yfHwiIzMzMyIsdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3J8fCgwLHFtLmludmVydCkodGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy50ZXJ0aWFyeVRleHRDb2xvcj10aGlzLnRlcnRpYXJ5VGV4dENvbG9yfHwoMCxxbS5pbnZlcnQpKHRoaXMudGVydGlhcnlDb2xvciksdGhpcy5saW5lQ29sb3I9dGhpcy5saW5lQ29sb3J8fCgwLHFtLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLnRleHRDb2xvcj10aGlzLnRleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMubm9kZUJrZz10aGlzLm5vZGVCa2d8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMubWFpbkJrZz10aGlzLm1haW5Ca2d8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMubm9kZUJvcmRlcj10aGlzLm5vZGVCb3JkZXJ8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMuY2x1c3RlckJrZz10aGlzLmNsdXN0ZXJCa2d8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5jbHVzdGVyQm9yZGVyfHx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3IsdGhpcy5kZWZhdWx0TGlua0NvbG9yPXRoaXMuZGVmYXVsdExpbmtDb2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50aXRsZUNvbG9yPXRoaXMudGl0bGVDb2xvcnx8dGhpcy50ZXJ0aWFyeVRleHRDb2xvcix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9dGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kfHwodGhpcy5kYXJrTW9kZT8oMCxxbS5kYXJrZW4pKHRoaXMuc2Vjb25kYXJ5Q29sb3IsMzApOnRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMubm9kZVRleHRDb2xvcj10aGlzLm5vZGVUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmFjdG9yQm9yZGVyPXRoaXMuYWN0b3JCb3JkZXJ8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMuYWN0b3JCa2c9dGhpcy5hY3RvckJrZ3x8dGhpcy5tYWluQmtnLHRoaXMuYWN0b3JUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuYWN0b3JMaW5lQ29sb3I9dGhpcy5hY3RvckxpbmVDb2xvcnx8ImdyZXkiLHRoaXMubGFiZWxCb3hCa2dDb2xvcj10aGlzLmxhYmVsQm94QmtnQ29sb3J8fHRoaXMuYWN0b3JCa2csdGhpcy5zaWduYWxDb2xvcj10aGlzLnNpZ25hbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnNpZ25hbFRleHRDb2xvcj10aGlzLnNpZ25hbFRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPXRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcnx8dGhpcy5hY3RvckJvcmRlcix0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMubGFiZWxUZXh0Q29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMubG9vcFRleHRDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj10aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcnx8KDAscW0uZGFya2VuKSh0aGlzLnNlY29uZGFyeUNvbG9yLDEwKSx0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj10aGlzLmFjdGl2YXRpb25Ca2dDb2xvcnx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3I9dGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yfHwoMCxxbS5pbnZlcnQpKHRoaXMubGluZUNvbG9yKSx0aGlzLnNlY3Rpb25Ca2dDb2xvcj10aGlzLnNlY3Rpb25Ca2dDb2xvcnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPXRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yfHwid2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPXRoaXMuc2VjdGlvbkJrZ0NvbG9yfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj10aGlzLnNlY3Rpb25Ca2dDb2xvcjJ8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZXhjbHVkZUJrZ0NvbG9yPXRoaXMuZXhjbHVkZUJrZ0NvbG9yfHwiI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9dGhpcy50YXNrQm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMudGFza0JrZ0NvbG9yPXRoaXMudGFza0JrZ0NvbG9yfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj10aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcnx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9dGhpcy5hY3RpdmVUYXNrQmtnQ29sb3J8fCgwLHFtLmxpZ2h0ZW4pKHRoaXMucHJpbWFyeUNvbG9yLDIzKSx0aGlzLmdyaWRDb2xvcj10aGlzLmdyaWRDb2xvcnx8ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPXRoaXMuZG9uZVRhc2tCa2dDb2xvcnx8ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPXRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcnx8ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPXRoaXMuY3JpdEJvcmRlckNvbG9yfHwiI2ZmODg4OCIsdGhpcy5jcml0QmtnQ29sb3I9dGhpcy5jcml0QmtnQ29sb3J8fCJyZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9dGhpcy50b2RheUxpbmVDb2xvcnx8InJlZCIsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj10aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMudGFza1RleHREYXJrQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPXRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcnx8IiMwMDMxNjMiLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yPXRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMuc3RhdGVMYWJlbENvbG9yPXRoaXMuc3RhdGVMYWJlbENvbG9yfHx0aGlzLnN0YXRlQmtnfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5zdGF0ZUJrZz10aGlzLnN0YXRlQmtnfHx0aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcj10aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yfHx0aGlzLnN0YXRlQmtnLHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZUJhY2tncm91bmR8fHRoaXMuYmFja2dyb3VuZHx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuYWx0QmFja2dyb3VuZD10aGlzLmFsdEJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZHx8dGhpcy5tYWluQmtnLHRoaXMuY29tcG9zaXRlQm9yZGVyPXRoaXMuY29tcG9zaXRlQm9yZGVyfHx0aGlzLm5vZGVCb3JkZXIsdGhpcy5pbm5lckVuZEJhY2tncm91bmQ9dGhpcy5ub2RlQm9yZGVyLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMuc3BlY2lhbFN0YXRlQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5jbGFzc1RleHQ9dGhpcy5jbGFzc1RleHR8fHRoaXMudGV4dENvbG9yLHRoaXMuZmlsbFR5cGUwPXRoaXMuZmlsbFR5cGUwfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLmZpbGxUeXBlMXx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmZpbGxUeXBlMj10aGlzLmZpbGxUeXBlMnx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGUzPXRoaXMuZmlsbFR5cGUzfHwoMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlND10aGlzLmZpbGxUeXBlNHx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNT10aGlzLmZpbGxUeXBlNXx8KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU2PXRoaXMuZmlsbFR5cGU2fHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuZmlsbFR5cGU3PXRoaXMuZmlsbFR5cGU3fHwoMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5waWUxPXRoaXMucGllMXx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5waWUyPXRoaXMucGllMnx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLnBpZTM9dGhpcy5waWUzfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5waWU0PXRoaXMucGllNHx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7bDotMTB9KSx0aGlzLnBpZTU9dGhpcy5waWU1fHwoMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2w6LTEwfSksdGhpcy5waWU2PXRoaXMucGllNnx8KDAscW0uYWRqdXN0KSh0aGlzLnRlcnRpYXJ5Q29sb3Ise2w6LTEwfSksdGhpcy5waWU3PXRoaXMucGllN3x8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi0xMH0pLHRoaXMucGllOD10aGlzLnBpZTh8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwLGw6LTEwfSksdGhpcy5waWU5PXRoaXMucGllOXx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDowfSksdGhpcy5waWUxMD10aGlzLnBpZTEwfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTIwfSksdGhpcy5waWUxMT10aGlzLnBpZTExfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi0yMH0pLHRoaXMucGllMTI9dGhpcy5waWUxMnx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDotMTB9KSx0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fCh0aGlzLmRhcmtNb2RlPygwLHFtLmRhcmtlbikodGhpcy5zZWNvbmRhcnlDb2xvciwzMCk6dGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3I9dGhpcy5yZWxhdGlvbkxhYmVsQ29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3J9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIm9iamVjdCI9PT0kbSh0KSl7dmFyIG49T2JqZWN0LmtleXModCk7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSksdGhpcy51cGRhdGVDb2xvcnMoKSxuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKX1lbHNlIHRoaXMudXBkYXRlQ29sb3JzKCl9fV0sbiYmV20oZS5wcm90b3R5cGUsbiksdH0oKTtmdW5jdGlvbiBHbSh0KXtyZXR1cm4gR209ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEdtKHQpfWZ1bmN0aW9uIFhtKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19dmFyIFptPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuYmFja2dyb3VuZD0iIzMzMyIsdGhpcy5wcmltYXJ5Q29sb3I9IiMxZjIwMjAiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9KDAscW0ubGlnaHRlbikodGhpcy5wcmltYXJ5Q29sb3IsMTYpLHRoaXMudGVydGlhcnlDb2xvcj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi0xNjB9KSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj1IbSh0aGlzLnByaW1hcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yPUhtKHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yPUhtKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnByaW1hcnlUZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLnByaW1hcnlDb2xvciksdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy50ZXJ0aWFyeUNvbG9yKSx0aGlzLmxpbmVDb2xvcj0oMCxxbS5pbnZlcnQpKHRoaXMuYmFja2dyb3VuZCksdGhpcy50ZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMubWFpbkJrZz0iIzFmMjAyMCIsdGhpcy5zZWNvbmRCa2c9ImNhbGN1bGF0ZWQiLHRoaXMubWFpbkNvbnRyYXN0Q29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kYXJrVGV4dENvbG9yPSgwLHFtLmxpZ2h0ZW4pKCgwLHFtLmludmVydCkoIiMzMjNENDciKSwxMCksdGhpcy5saW5lQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYm9yZGVyMT0iIzgxQjFEQiIsdGhpcy5ib3JkZXIyPSgwLHFtLnJnYmEpKDI1NSwyNTUsMjU1LC4yNSksdGhpcy5hcnJvd2hlYWRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5mb250RmFtaWx5PScidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLHRoaXMuZm9udFNpemU9IjE2cHgiLHRoaXMubGFiZWxCYWNrZ3JvdW5kPSIjMTgxODE4Iix0aGlzLnRleHRDb2xvcj0iI2NjYyIsdGhpcy5ub2RlQmtnPSJjYWxjdWxhdGVkIix0aGlzLm5vZGVCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGl0bGVDb2xvcj0iI0Y5RkZGRSIsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQmtnPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yTGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubG9vcFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPSJibGFjayIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9KDAscW0uZGFya2VuKSgiI0VBRThEOSIsMzApLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNlY3Rpb25Ca2dDb2xvcjI9IiNFQUU4RDkiLHRoaXMudGFza0JvcmRlckNvbG9yPSgwLHFtLnJnYmEpKDI1NSwyNTUsMjU1LDcwKSx0aGlzLnRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSIjMDAzMTYzIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0oMCxxbS5yZ2JhKSgyNTUsMjU1LDI1NSw1MCksdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9IiM4MUIxREIiLHRoaXMuZ3JpZENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iZ3JleSIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9IiNFODM3MzciLHRoaXMuY3JpdEJrZ0NvbG9yPSIjRTgzNzM3Iix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSIjREI1NzU3Iix0aGlzLmxhYmVsQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZXJyb3JCa2dDb2xvcj0iI2E0NDE0MSIsdGhpcy5lcnJvclRleHRDb2xvcj0iI2RkZCJ9dmFyIGUsbjtyZXR1cm4gZT10LG49W3trZXk6InVwZGF0ZUNvbG9ycyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlY29uZEJrZz0oMCxxbS5saWdodGVuKSh0aGlzLm1haW5Ca2csMTYpLHRoaXMubGluZUNvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5hcnJvd2hlYWRDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMubm9kZUJrZz10aGlzLm1haW5Ca2csdGhpcy5ub2RlQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmNsdXN0ZXJCa2c9dGhpcy5zZWNvbmRCa2csdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuYm9yZGVyMix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSgwLHFtLmxpZ2h0ZW4pKHRoaXMubGFiZWxCYWNrZ3JvdW5kLDI1KSx0aGlzLmFjdG9yQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmFjdG9yQmtnPXRoaXMubWFpbkJrZyx0aGlzLmFjdG9yVGV4dENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5hY3RvckxpbmVDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMuc2lnbmFsQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnNpZ25hbFRleHRDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMubGFiZWxCb3hCa2dDb2xvcj10aGlzLmFjdG9yQmtnLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj10aGlzLmFjdG9yQm9yZGVyLHRoaXMubGFiZWxUZXh0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLmxvb3BUZXh0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLm5vdGVCb3JkZXJDb2xvcj10aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yLHRoaXMubm90ZUJrZ0NvbG9yPXRoaXMuc2Vjb25kQmtnLHRoaXMubm90ZVRleHRDb2xvcj10aGlzLnNlY29uZGFyeVRleHRDb2xvcix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj10aGlzLmJvcmRlcjEsdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9dGhpcy5zZWNvbmRCa2csdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3I9dGhpcy5iYWNrZ3JvdW5kLHRoaXMudGFza0JrZ0NvbG9yPSgwLHFtLmxpZ2h0ZW4pKHRoaXMubWFpbkJrZywyMyksdGhpcy50YXNrVGV4dENvbG9yPXRoaXMuZGFya1RleHRDb2xvcix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dExpZ2h0Q29sb3IsdGhpcy5ncmlkQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPXRoaXMuZGFya1RleHRDb2xvcix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHwiIzU1NSIsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLmNvbXBvc2l0ZUJvcmRlcj10aGlzLmNvbXBvc2l0ZUJvcmRlcnx8dGhpcy5ub2RlQm9yZGVyLHRoaXMuaW5uZXJFbmRCYWNrZ3JvdW5kPXRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMuc3BlY2lhbFN0YXRlQ29sb3I9IiNmNGY0ZjQiLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy5maWxsVHlwZTA9dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTE9dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmZpbGxUeXBlMj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNT0oMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz0oMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5waWUxPXRoaXMucGllMXx8IiMwYjAwMDAiLHRoaXMucGllMj10aGlzLnBpZTJ8fCIjNGQxMDM3Iix0aGlzLnBpZTM9dGhpcy5waWUzfHwiIzNmNTI1OCIsdGhpcy5waWU0PXRoaXMucGllNHx8IiM0ZjJmMWIiLHRoaXMucGllNT10aGlzLnBpZTV8fCIjNmUwYTBhIix0aGlzLnBpZTY9dGhpcy5waWU2fHwiIzNiMDA0OCIsdGhpcy5waWU3PXRoaXMucGllN3x8IiM5OTVhMDEiLHRoaXMucGllOD10aGlzLnBpZTh8fCIjMTU0NzA2Iix0aGlzLnBpZTk9dGhpcy5waWU5fHwiIzE2MTcyMiIsdGhpcy5waWUxMD10aGlzLnBpZTEwfHwiIzAwMjk2ZiIsdGhpcy5waWUxMT10aGlzLnBpZTExfHwiIzAxNjI5YyIsdGhpcy5waWUxMj10aGlzLnBpZTEyfHwiIzAxMDAyOSIsdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlcXVpcmVtZW50QmFja2dyb3VuZD10aGlzLnJlcXVpcmVtZW50QmFja2dyb3VuZHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcnx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemU9dGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemV8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3I9dGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMucmVsYXRpb25Db2xvcj10aGlzLnJlbGF0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmQ9dGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZHx8KHRoaXMuZGFya01vZGU/KDAscW0uZGFya2VuKSh0aGlzLnNlY29uZGFyeUNvbG9yLDMwKTp0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcn19LHtrZXk6ImNhbGN1bGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZigib2JqZWN0Ij09PUdtKHQpKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKSx0aGlzLnVwZGF0ZUNvbG9ycygpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpfWVsc2UgdGhpcy51cGRhdGVDb2xvcnMoKX19XSxuJiZYbShlLnByb3RvdHlwZSxuKSx0fSgpO2Z1bmN0aW9uIFFtKHQpe3JldHVybiBRbT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sUW0odCl9ZnVuY3Rpb24gS20odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX12YXIgSm09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5iYWNrZ3JvdW5kPSIjZjRmNGY0Iix0aGlzLnByaW1hcnlDb2xvcj0iI0VDRUNGRiIsdGhpcy5zZWNvbmRhcnlDb2xvcj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyMH0pLHRoaXMuc2Vjb25kYXJ5Q29sb3I9IiNmZmZmZGUiLHRoaXMudGVydGlhcnlDb2xvcj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi0xNjB9KSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj1IbSh0aGlzLnByaW1hcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yPUhtKHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yPUhtKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnByaW1hcnlUZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLnByaW1hcnlDb2xvciksdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy50ZXJ0aWFyeUNvbG9yKSx0aGlzLmxpbmVDb2xvcj0oMCxxbS5pbnZlcnQpKHRoaXMuYmFja2dyb3VuZCksdGhpcy50ZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMuYmFja2dyb3VuZD0id2hpdGUiLHRoaXMubWFpbkJrZz0iI0VDRUNGRiIsdGhpcy5zZWNvbmRCa2c9IiNmZmZmZGUiLHRoaXMubGluZUNvbG9yPSIjMzMzMzMzIix0aGlzLmJvcmRlcjE9IiM5MzcwREIiLHRoaXMuYm9yZGVyMj0iI2FhYWEzMyIsdGhpcy5hcnJvd2hlYWRDb2xvcj0iIzMzMzMzMyIsdGhpcy5mb250RmFtaWx5PScidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLHRoaXMuZm9udFNpemU9IjE2cHgiLHRoaXMubGFiZWxCYWNrZ3JvdW5kPSIjZThlOGU4Iix0aGlzLnRleHRDb2xvcj0iIzMzMyIsdGhpcy5ub2RlQmtnPSJjYWxjdWxhdGVkIix0aGlzLm5vZGVCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGl0bGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQmtnPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yVGV4dENvbG9yPSJibGFjayIsdGhpcy5hY3RvckxpbmVDb2xvcj0iZ3JleSIsdGhpcy5zaWduYWxDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zaWduYWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxvb3BUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCa2dDb2xvcj0iI2ZmZjVhZCIsdGhpcy5ub3RlVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvcj0iIzY2NiIsdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3I9IiNmNGY0ZjQiLHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcj0id2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSJjYWxjdWxhdGVkIix0aGlzLmV4Y2x1ZGVCa2dDb2xvcj0iI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMudGFza1RleHREYXJrQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ncmlkQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmNyaXRCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5jcml0QmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPSgwLHFtLnJnYmEpKDEwMiwxMDIsMjU1LC40OSksdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3I9IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcjI9IiNmZmY0MDAiLHRoaXMudGFza0JvcmRlckNvbG9yPSIjNTM0ZmJjIix0aGlzLnRhc2tCa2dDb2xvcj0iIzhhOTBkZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9IndoaXRlIix0aGlzLnRhc2tUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHREYXJrQ29sb3I9ImJsYWNrIix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3I9IiMwMDMxNjMiLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPSIjNTM0ZmJjIix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj0iI2JmYzdmZiIsdGhpcy5ncmlkQ29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPSJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iZ3JleSIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9IiNmZjg4ODgiLHRoaXMuY3JpdEJrZ0NvbG9yPSJyZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9InJlZCIsdGhpcy5sYWJlbENvbG9yPSJibGFjayIsdGhpcy5lcnJvckJrZ0NvbG9yPSIjNTUyMjIyIix0aGlzLmVycm9yVGV4dENvbG9yPSIjNTUyMjIyIix0aGlzLnVwZGF0ZUNvbG9ycygpfXZhciBlLG47cmV0dXJuIGU9dCxuPVt7a2V5OiJ1cGRhdGVDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ub2RlQmtnPXRoaXMubWFpbkJrZyx0aGlzLm5vZGVCb3JkZXI9dGhpcy5ib3JkZXIxLHRoaXMuY2x1c3RlckJrZz10aGlzLnNlY29uZEJrZyx0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5ib3JkZXIyLHRoaXMuZGVmYXVsdExpbmtDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLnRpdGxlQ29sb3I9dGhpcy50ZXh0Q29sb3IsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPXRoaXMubGFiZWxCYWNrZ3JvdW5kLHRoaXMuYWN0b3JCb3JkZXI9KDAscW0ubGlnaHRlbikodGhpcy5ib3JkZXIxLDIzKSx0aGlzLmFjdG9yQmtnPXRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5hY3RvckJrZyx0aGlzLnNpZ25hbENvbG9yPXRoaXMudGV4dENvbG9yLHRoaXMuc2lnbmFsVGV4dENvbG9yPXRoaXMudGV4dENvbG9yLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj10aGlzLmFjdG9yQm9yZGVyLHRoaXMubGFiZWxUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLmxvb3BUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLm5vdGVCb3JkZXJDb2xvcj10aGlzLmJvcmRlcjIsdGhpcy5ub3RlVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHwiI2YwZjBmMCIsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLmNvbXBvc2l0ZUJvcmRlcj10aGlzLmNvbXBvc2l0ZUJvcmRlcnx8dGhpcy5ub2RlQm9yZGVyLHRoaXMuaW5uZXJFbmRCYWNrZ3JvdW5kPXRoaXMubm9kZUJvcmRlcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZmlsbFR5cGUyPSgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz0oMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlND0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU1PSgwLHFtLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuZmlsbFR5cGU3PSgwLHFtLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDoxMjh9KSx0aGlzLnBpZTE9dGhpcy5waWUxfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnBpZTI9dGhpcy5waWUyfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMucGllMz10aGlzLnBpZTN8fCgwLHFtLmFkanVzdCkodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi00MH0pLHRoaXMucGllND10aGlzLnBpZTR8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2w6LTEwfSksdGhpcy5waWU1PXRoaXMucGllNXx8KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtsOi0zMH0pLHRoaXMucGllNj10aGlzLnBpZTZ8fCgwLHFtLmFkanVzdCkodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi0yMH0pLHRoaXMucGllNz10aGlzLnBpZTd8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjAsbDotMjB9KSx0aGlzLnBpZTg9dGhpcy5waWU4fHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi00MH0pLHRoaXMucGllOT10aGlzLnBpZTl8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTQwfSksdGhpcy5waWUxMD10aGlzLnBpZTEwfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTQwfSksdGhpcy5waWUxMT10aGlzLnBpZTExfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi05MCxsOi00MH0pLHRoaXMucGllMTI9dGhpcy5waWUxMnx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDotMzB9KSx0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fHRoaXMubGFiZWxCYWNrZ3JvdW5kLHRoaXMucmVsYXRpb25MYWJlbENvbG9yPXRoaXMucmVsYXRpb25MYWJlbENvbG9yfHx0aGlzLmFjdG9yVGV4dENvbG9yfX0se2tleToiY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCJvYmplY3QiPT09UW0odCkpe3ZhciBuPU9iamVjdC5rZXlzKHQpO24uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpLHRoaXMudXBkYXRlQ29sb3JzKCksbi5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXRbbl19KSl9ZWxzZSB0aGlzLnVwZGF0ZUNvbG9ycygpfX1dLG4mJkttKGUucHJvdG90eXBlLG4pLHR9KCk7ZnVuY3Rpb24gdHYodCl7cmV0dXJuIHR2PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx0dih0KX1mdW5jdGlvbiBldih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fXZhciBudj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLmJhY2tncm91bmQ9IiNmNGY0ZjQiLHRoaXMucHJpbWFyeUNvbG9yPSIjY2RlNDk4Iix0aGlzLnNlY29uZGFyeUNvbG9yPSIjY2RmZmIyIix0aGlzLmJhY2tncm91bmQ9IndoaXRlIix0aGlzLm1haW5Ca2c9IiNjZGU0OTgiLHRoaXMuc2Vjb25kQmtnPSIjY2RmZmIyIix0aGlzLmxpbmVDb2xvcj0iZ3JlZW4iLHRoaXMuYm9yZGVyMT0iIzEzNTQwYyIsdGhpcy5ib3JkZXIyPSIjNmVhYTQ5Iix0aGlzLmFycm93aGVhZENvbG9yPSJncmVlbiIsdGhpcy5mb250RmFtaWx5PScidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLHRoaXMuZm9udFNpemU9IjE2cHgiLHRoaXMudGVydGlhcnlDb2xvcj0oMCxxbS5saWdodGVuKSgiI2NkZTQ5OCIsMTApLHRoaXMucHJpbWFyeUJvcmRlckNvbG9yPUhtKHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMuc2Vjb25kYXJ5Qm9yZGVyQ29sb3I9SG0odGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3I9SG0odGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMucHJpbWFyeVRleHRDb2xvcj0oMCxxbS5pbnZlcnQpKHRoaXMucHJpbWFyeUNvbG9yKSx0aGlzLnNlY29uZGFyeVRleHRDb2xvcj0oMCxxbS5pbnZlcnQpKHRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMudGVydGlhcnlUZXh0Q29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLnByaW1hcnlDb2xvciksdGhpcy5saW5lQ29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLm5vZGVCa2c9ImNhbGN1bGF0ZWQiLHRoaXMubm9kZUJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQmtnPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuZGVmYXVsdExpbmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50aXRsZUNvbG9yPSIjMzMzIix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9IiNlOGU4ZTgiLHRoaXMuYWN0b3JCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JUZXh0Q29sb3I9ImJsYWNrIix0aGlzLmFjdG9yTGluZUNvbG9yPSJncmV5Iix0aGlzLnNpZ25hbENvbG9yPSIjMzMzIix0aGlzLnNpZ25hbFRleHRDb2xvcj0iIzMzMyIsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9IiMzMjY5MzIiLHRoaXMubGFiZWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubG9vcFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yPSIjNjY2Iix0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj0iI2Y0ZjRmNCIsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9IiM2ZWFhNDkiLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjNmVhYTQ5Iix0aGlzLmV4Y2x1ZGVCa2dDb2xvcj0iI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza0JrZ0NvbG9yPSIjNDg3ZTNhIix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj0id2hpdGUiLHRoaXMudGFza1RleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dERhcmtDb2xvcj0iYmxhY2siLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj0iIzAwMzE2MyIsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmdyaWRDb2xvcj0ibGlnaHRncmV5Iix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPSJncmV5Iix0aGlzLmNyaXRCb3JkZXJDb2xvcj0iI2ZmODg4OCIsdGhpcy5jcml0QmtnQ29sb3I9InJlZCIsdGhpcy50b2RheUxpbmVDb2xvcj0icmVkIix0aGlzLmxhYmVsQ29sb3I9ImJsYWNrIix0aGlzLmVycm9yQmtnQ29sb3I9IiM1NTIyMjIiLHRoaXMuZXJyb3JUZXh0Q29sb3I9IiM1NTIyMjIifXZhciBlLG47cmV0dXJuIGU9dCxuPVt7a2V5OiJ1cGRhdGVDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ub2RlQmtnPXRoaXMubWFpbkJrZyx0aGlzLm5vZGVCb3JkZXI9dGhpcy5ib3JkZXIxLHRoaXMuY2x1c3RlckJrZz10aGlzLnNlY29uZEJrZyx0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5ib3JkZXIyLHRoaXMuZGVmYXVsdExpbmtDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLmFjdG9yQm9yZGVyPSgwLHFtLmRhcmtlbikodGhpcy5tYWluQmtnLDIwKSx0aGlzLmFjdG9yQmtnPXRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5hY3RvckJrZyx0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5ub3RlQm9yZGVyQ29sb3I9dGhpcy5ib3JkZXIyLHRoaXMubm90ZVRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMudGFza0JvcmRlckNvbG9yPXRoaXMuYm9yZGVyMSx0aGlzLnRhc2tUZXh0Q29sb3I9dGhpcy50YXNrVGV4dExpZ2h0Q29sb3IsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj10aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPXRoaXMudGFza0JvcmRlckNvbG9yLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPXRoaXMubWFpbkJrZyx0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHwiI2YwZjBmMCIsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLmNvbXBvc2l0ZUJvcmRlcj10aGlzLmNvbXBvc2l0ZUJvcmRlcnx8dGhpcy5ub2RlQm9yZGVyLHRoaXMuaW5uZXJFbmRCYWNrZ3JvdW5kPXRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMuc3BlY2lhbFN0YXRlQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5lcnJvckJrZ0NvbG9yPXRoaXMuZXJyb3JCa2dDb2xvcnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZXJyb3JUZXh0Q29sb3I9dGhpcy5lcnJvclRleHRDb2xvcnx8dGhpcy50ZXJ0aWFyeVRleHRDb2xvcix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5jbGFzc1RleHQ9dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuZmlsbFR5cGUwPXRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZmlsbFR5cGUxPXRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGUzPSgwLHFtLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGU0PSgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU2PSgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5maWxsVHlwZTc9KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMucGllMT10aGlzLnBpZTF8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucGllMj10aGlzLnBpZTJ8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5waWUzPXRoaXMucGllM3x8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMucGllND10aGlzLnBpZTR8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2w6LTMwfSksdGhpcy5waWU1PXRoaXMucGllNXx8KDAscW0uYWRqdXN0KSh0aGlzLnNlY29uZGFyeUNvbG9yLHtsOi0zMH0pLHRoaXMucGllNj10aGlzLnBpZTZ8fCgwLHFtLmFkanVzdCkodGhpcy50ZXJ0aWFyeUNvbG9yLHtoOjQwLGw6LTQwfSksdGhpcy5waWU3PXRoaXMucGllN3x8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi0xMH0pLHRoaXMucGllOD10aGlzLnBpZTh8fCgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwLGw6LTEwfSksdGhpcy5waWU5PXRoaXMucGllOXx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDowfSksdGhpcy5waWUxMD10aGlzLnBpZTEwfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTUwfSksdGhpcy5waWUxMT10aGlzLnBpZTExfHwoMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi01MH0pLHRoaXMucGllMTI9dGhpcy5waWUxMnx8KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDotNTB9KSx0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZCx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcn19LHtrZXk6ImNhbGN1bGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZigib2JqZWN0Ij09PXR2KHQpKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKSx0aGlzLnVwZGF0ZUNvbG9ycygpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpfWVsc2UgdGhpcy51cGRhdGVDb2xvcnMoKX19XSxuJiZldihlLnByb3RvdHlwZSxuKSx0fSgpO2Z1bmN0aW9uIHJ2KHQpe3JldHVybiBydj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scnYodCl9ZnVuY3Rpb24gaXYodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX12YXIgYXY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5wcmltYXJ5Q29sb3I9IiNlZWUiLHRoaXMuY29udHJhc3Q9IiM3MDcwNzAiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9KDAscW0ubGlnaHRlbikodGhpcy5jb250cmFzdCw1NSksdGhpcy5iYWNrZ3JvdW5kPSIjZmZmZmZmIix0aGlzLnRlcnRpYXJ5Q29sb3I9KDAscW0uYWRqdXN0KSh0aGlzLnByaW1hcnlDb2xvcix7aDotMTYwfSksdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I9SG0odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj1IbSh0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj1IbSh0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5wcmltYXJ5VGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy5wcmltYXJ5Q29sb3IpLHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy50ZXJ0aWFyeVRleHRDb2xvcj0oMCxxbS5pbnZlcnQpKHRoaXMudGVydGlhcnlDb2xvciksdGhpcy5saW5lQ29sb3I9KDAscW0uaW52ZXJ0KSh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPSgwLHFtLmludmVydCkodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLm1haW5Ca2c9IiNlZWUiLHRoaXMuc2Vjb25kQmtnPSJjYWxjdWxhdGVkIix0aGlzLmxpbmVDb2xvcj0iIzY2NiIsdGhpcy5ib3JkZXIxPSIjOTk5Iix0aGlzLmJvcmRlcjI9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZT0iI2ZmYSIsdGhpcy50ZXh0PSIjMzMzIix0aGlzLmNyaXRpY2FsPSIjZDQyIix0aGlzLmRvbmU9IiNiYmIiLHRoaXMuYXJyb3doZWFkQ29sb3I9IiMzMzMzMzMiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLm5vZGVCa2c9ImNhbGN1bGF0ZWQiLHRoaXMubm9kZUJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQmtnPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuZGVmYXVsdExpbmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50aXRsZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9IndoaXRlIix0aGlzLmFjdG9yQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQmtnPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yTGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubG9vcFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yPSIjNjY2Iix0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj0iI2Y0ZjRmNCIsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSJjYWxjdWxhdGVkIix0aGlzLmV4Y2x1ZGVCa2dDb2xvcj0iI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj0id2hpdGUiLHRoaXMudGFza1RleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dERhcmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSIjMDAzMTYzIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZ3JpZENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5jcml0QmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuY3JpdEJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQ29sb3I9ImJsYWNrIix0aGlzLmVycm9yQmtnQ29sb3I9IiM1NTIyMjIiLHRoaXMuZXJyb3JUZXh0Q29sb3I9IiM1NTIyMjIifXZhciBlLG47cmV0dXJuIGU9dCxuPVt7a2V5OiJ1cGRhdGVDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRCa2c9KDAscW0ubGlnaHRlbikodGhpcy5jb250cmFzdCw1NSksdGhpcy5ib3JkZXIyPXRoaXMuY29udHJhc3QsdGhpcy5ub2RlQmtnPXRoaXMubWFpbkJrZyx0aGlzLm5vZGVCb3JkZXI9dGhpcy5ib3JkZXIxLHRoaXMuY2x1c3RlckJrZz10aGlzLnNlY29uZEJrZyx0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5ib3JkZXIyLHRoaXMuZGVmYXVsdExpbmtDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLnRpdGxlQ29sb3I9dGhpcy50ZXh0LHRoaXMuYWN0b3JCb3JkZXI9KDAscW0ubGlnaHRlbikodGhpcy5ib3JkZXIxLDIzKSx0aGlzLmFjdG9yQmtnPXRoaXMubWFpbkJrZyx0aGlzLmFjdG9yVGV4dENvbG9yPXRoaXMudGV4dCx0aGlzLmFjdG9yTGluZUNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuc2lnbmFsQ29sb3I9dGhpcy50ZXh0LHRoaXMuc2lnbmFsVGV4dENvbG9yPXRoaXMudGV4dCx0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5hY3RvckJrZyx0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9dGhpcy5hY3RvckJvcmRlcix0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMudGV4dCx0aGlzLmxvb3BUZXh0Q29sb3I9dGhpcy50ZXh0LHRoaXMubm90ZUJvcmRlckNvbG9yPSIjOTk5Iix0aGlzLm5vdGVCa2dDb2xvcj0iIzY2NiIsdGhpcy5ub3RlVGV4dENvbG9yPSIjZmZmIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj0oMCxxbS5saWdodGVuKSh0aGlzLmNvbnRyYXN0LDMwKSx0aGlzLnNlY3Rpb25Ca2dDb2xvcjI9KDAscW0ubGlnaHRlbikodGhpcy5jb250cmFzdCwzMCksdGhpcy50YXNrQm9yZGVyQ29sb3I9KDAscW0uZGFya2VuKSh0aGlzLmNvbnRyYXN0LDEwKSx0aGlzLnRhc2tCa2dDb2xvcj10aGlzLmNvbnRyYXN0LHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPXRoaXMudGV4dCx0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9dGhpcy50YXNrQm9yZGVyQ29sb3IsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9dGhpcy5tYWluQmtnLHRoaXMuZ3JpZENvbG9yPSgwLHFtLmxpZ2h0ZW4pKHRoaXMuYm9yZGVyMSwzMCksdGhpcy5kb25lVGFza0JrZ0NvbG9yPXRoaXMuZG9uZSx0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5jcml0QmtnQ29sb3I9dGhpcy5jcml0aWNhbCx0aGlzLmNyaXRCb3JkZXJDb2xvcj0oMCxxbS5kYXJrZW4pKHRoaXMuY3JpdEJrZ0NvbG9yLDEwKSx0aGlzLnRvZGF5TGluZUNvbG9yPXRoaXMuY3JpdEJrZ0NvbG9yLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHwiIzAwMCIsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHwiI2Y0ZjRmNCIsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLnN0YXRlQm9yZGVyPXRoaXMuc3RhdGVCb3JkZXJ8fCIjMDAwIix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPSIjMjIyIix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZmlsbFR5cGUyPSgwLHFtLmFkanVzdCkodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz0oMCxxbS5hZGp1c3QpKHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlND0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU1PSgwLHFtLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj0oMCxxbS5hZGp1c3QpKHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuZmlsbFR5cGU3PSgwLHFtLmFkanVzdCkodGhpcy5zZWNvbmRhcnlDb2xvcix7aDoxMjh9KSx0aGlzLnBpZTE9dGhpcy5waWUxfHwiI0Y0RjRGNCIsdGhpcy5waWUyPXRoaXMucGllMnx8IiM1NTUiLHRoaXMucGllMz10aGlzLnBpZTN8fCIjQkJCIix0aGlzLnBpZTQ9dGhpcy5waWU0fHwiIzc3NyIsdGhpcy5waWU1PXRoaXMucGllNXx8IiM5OTkiLHRoaXMucGllNj10aGlzLnBpZTZ8fCIjREREIix0aGlzLnBpZTc9dGhpcy5waWU3fHwiI0ZGRiIsdGhpcy5waWU4PXRoaXMucGllOHx8IiNEREQiLHRoaXMucGllOT10aGlzLnBpZTl8fCIjQkJCIix0aGlzLnBpZTEwPXRoaXMucGllMTB8fCIjOTk5Iix0aGlzLnBpZTExPXRoaXMucGllMTF8fCIjNzc3Iix0aGlzLnBpZTEyPXRoaXMucGllMTJ8fCIjNTU1Iix0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZCx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcn19LHtrZXk6ImNhbGN1bGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZigib2JqZWN0Ij09PXJ2KHQpKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKSx0aGlzLnVwZGF0ZUNvbG9ycygpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpfWVsc2UgdGhpcy51cGRhdGVDb2xvcnMoKX19XSxuJiZpdihlLnByb3RvdHlwZSxuKSx0fSgpO2NvbnN0IG92PXtiYXNlOntnZXRUaGVtZVZhcmlhYmxlczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgVm07cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9fSxkYXJrOntnZXRUaGVtZVZhcmlhYmxlczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgWm07cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9fSxkZWZhdWx0OntnZXRUaGVtZVZhcmlhYmxlczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgSm07cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9fSxmb3Jlc3Q6e2dldFRoZW1lVmFyaWFibGVzOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBudjtyZXR1cm4gZS5jYWxjdWxhdGUodCksZX19LG5ldXRyYWw6e2dldFRoZW1lVmFyaWFibGVzOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhdjtyZXR1cm4gZS5jYWxjdWxhdGUodCksZX19fTtmdW5jdGlvbiBzdih0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gY3YodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gY3YodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9jdih0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGN2KHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdXYodCl7cmV0dXJuIHV2PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx1dih0KX12YXIgbHY9e3RoZW1lOiJkZWZhdWx0Iix0aGVtZVZhcmlhYmxlczpvdi5kZWZhdWx0LmdldFRoZW1lVmFyaWFibGVzKCksdGhlbWVDU1M6dm9pZCAwLG1heFRleHRTaXplOjVlNCxkYXJrTW9kZTohMSxmb250RmFtaWx5OicidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7Jyxsb2dMZXZlbDo1LHNlY3VyaXR5TGV2ZWw6InN0cmljdCIsc3RhcnRPbkxvYWQ6ITAsYXJyb3dNYXJrZXJBYnNvbHV0ZTohMSxzZWN1cmU6WyJzZWN1cmUiLCJzZWN1cml0eUxldmVsIiwic3RhcnRPbkxvYWQiLCJtYXhUZXh0U2l6ZSJdLGRldGVybWluaXN0aWNJZHM6ITEsZGV0ZXJtaW5pc3RpY0lEU2VlZDp2b2lkIDAsZmxvd2NoYXJ0OntkaWFncmFtUGFkZGluZzo4LGh0bWxMYWJlbHM6ITAsbm9kZVNwYWNpbmc6NTAscmFua1NwYWNpbmc6NTAsY3VydmU6ImJhc2lzIixwYWRkaW5nOjE1LHVzZU1heFdpZHRoOiEwLGRlZmF1bHRSZW5kZXJlcjoiZGFncmUtZDMifSxzZXF1ZW5jZTp7YWN0aXZhdGlvbldpZHRoOjEwLGRpYWdyYW1NYXJnaW5YOjUwLGRpYWdyYW1NYXJnaW5ZOjEwLGFjdG9yTWFyZ2luOjUwLHdpZHRoOjE1MCxoZWlnaHQ6NjUsYm94TWFyZ2luOjEwLGJveFRleHRNYXJnaW46NSxub3RlTWFyZ2luOjEwLG1lc3NhZ2VNYXJnaW46MzUsbWVzc2FnZUFsaWduOiJjZW50ZXIiLG1pcnJvckFjdG9yczohMCxmb3JjZU1lbnVzOiExLGJvdHRvbU1hcmdpbkFkajoxLHVzZU1heFdpZHRoOiEwLHJpZ2h0QW5nbGVzOiExLHNob3dTZXF1ZW5jZU51bWJlcnM6ITEsYWN0b3JGb250U2l6ZToxNCxhY3RvckZvbnRGYW1pbHk6JyJPcGVuLVNhbnMiLCAic2Fucy1zZXJpZiInLGFjdG9yRm9udFdlaWdodDo0MDAsbm90ZUZvbnRTaXplOjE0LG5vdGVGb250RmFtaWx5OicidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLG5vdGVGb250V2VpZ2h0OjQwMCxub3RlQWxpZ246ImNlbnRlciIsbWVzc2FnZUZvbnRTaXplOjE2LG1lc3NhZ2VGb250RmFtaWx5OicidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLG1lc3NhZ2VGb250V2VpZ2h0OjQwMCx3cmFwOiExLHdyYXBQYWRkaW5nOjEwLGxhYmVsQm94V2lkdGg6NTAsbGFiZWxCb3hIZWlnaHQ6MjAsbWVzc2FnZUZvbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Zm9udEZhbWlseTp0aGlzLm1lc3NhZ2VGb250RmFtaWx5LGZvbnRTaXplOnRoaXMubWVzc2FnZUZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5tZXNzYWdlRm9udFdlaWdodH19LG5vdGVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5ub3RlRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLm5vdGVGb250U2l6ZSxmb250V2VpZ2h0OnRoaXMubm90ZUZvbnRXZWlnaHR9fSxhY3RvckZvbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Zm9udEZhbWlseTp0aGlzLmFjdG9yRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLmFjdG9yRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmFjdG9yRm9udFdlaWdodH19fSxnYW50dDp7dGl0bGVUb3BNYXJnaW46MjUsYmFySGVpZ2h0OjIwLGJhckdhcDo0LHRvcFBhZGRpbmc6NTAscmlnaHRQYWRkaW5nOjc1LGxlZnRQYWRkaW5nOjc1LGdyaWRMaW5lU3RhcnRQYWRkaW5nOjM1LGZvbnRTaXplOjExLHNlY3Rpb25Gb250U2l6ZToxMSxudW1iZXJTZWN0aW9uU3R5bGVzOjQsYXhpc0Zvcm1hdDoiJVktJW0tJWQiLHVzZU1heFdpZHRoOiEwLHRvcEF4aXM6ITEsdXNlV2lkdGg6dm9pZCAwfSxqb3VybmV5OntkaWFncmFtTWFyZ2luWDo1MCxkaWFncmFtTWFyZ2luWToxMCxsZWZ0TWFyZ2luOjE1MCx3aWR0aDoxNTAsaGVpZ2h0OjUwLGJveE1hcmdpbjoxMCxib3hUZXh0TWFyZ2luOjUsbm90ZU1hcmdpbjoxMCxtZXNzYWdlTWFyZ2luOjM1LG1lc3NhZ2VBbGlnbjoiY2VudGVyIixib3R0b21NYXJnaW5BZGo6MSx1c2VNYXhXaWR0aDohMCxyaWdodEFuZ2xlczohMSx0YXNrRm9udFNpemU6MTQsdGFza0ZvbnRGYW1pbHk6JyJPcGVuLVNhbnMiLCAic2Fucy1zZXJpZiInLHRhc2tNYXJnaW46NTAsYWN0aXZhdGlvbldpZHRoOjEwLHRleHRQbGFjZW1lbnQ6ImZvIixhY3RvckNvbG91cnM6WyIjOEZCQzhGIiwiIzdDRkMwMCIsIiMwMEZGRkYiLCIjMjBCMkFBIiwiI0IwRTBFNiIsIiNGRkZGRTAiXSxzZWN0aW9uRmlsbHM6WyIjMTkxOTcwIiwiIzhCMDA4QiIsIiM0QjAwODIiLCIjMkY0RjRGIiwiIzgwMDAwMCIsIiM4QjQ1MTMiLCIjMDAwMDhCIl0sc2VjdGlvbkNvbG91cnM6WyIjZmZmIl19LGNsYXNzOnthcnJvd01hcmtlckFic29sdXRlOiExLHVzZU1heFdpZHRoOiEwLGRlZmF1bHRSZW5kZXJlcjoiZGFncmUtd3JhcHBlciJ9LGdpdDp7YXJyb3dNYXJrZXJBYnNvbHV0ZTohMSx1c2VXaWR0aDp2b2lkIDAsdXNlTWF4V2lkdGg6ITB9LHN0YXRlOntkaXZpZGVyTWFyZ2luOjEwLHNpemVVbml0OjUscGFkZGluZzo4LHRleHRIZWlnaHQ6MTAsdGl0bGVTaGlmdDotMTUsbm90ZU1hcmdpbjoxMCxmb3JrV2lkdGg6NzAsZm9ya0hlaWdodDo3LG1pbmlQYWRkaW5nOjIsZm9udFNpemVGYWN0b3I6NS4wMixmb250U2l6ZToyNCxsYWJlbEhlaWdodDoxNixlZGdlTGVuZ3RoRmFjdG9yOiIyMCIsY29tcG9zaXRUaXRsZVNpemU6MzUscmFkaXVzOjUsdXNlTWF4V2lkdGg6ITAsZGVmYXVsdFJlbmRlcmVyOiJkYWdyZS13cmFwcGVyIn0sZXI6e2RpYWdyYW1QYWRkaW5nOjIwLGxheW91dERpcmVjdGlvbjoiVEIiLG1pbkVudGl0eVdpZHRoOjEwMCxtaW5FbnRpdHlIZWlnaHQ6NzUsZW50aXR5UGFkZGluZzoxNSxzdHJva2U6ImdyYXkiLGZpbGw6ImhvbmV5ZGV3Iixmb250U2l6ZToxMix1c2VNYXhXaWR0aDohMH0scGllOnt1c2VXaWR0aDp2b2lkIDAsdXNlTWF4V2lkdGg6ITB9LHJlcXVpcmVtZW50Ont1c2VXaWR0aDp2b2lkIDAsdXNlTWF4V2lkdGg6ITAscmVjdF9maWxsOiIjZjlmOWY5Iix0ZXh0X2NvbG9yOiIjMzMzIixyZWN0X2JvcmRlcl9zaXplOiIwLjVweCIscmVjdF9ib3JkZXJfY29sb3I6IiNiYmIiLHJlY3RfbWluX3dpZHRoOjIwMCxyZWN0X21pbl9oZWlnaHQ6MjAwLGZvbnRTaXplOjE0LHJlY3RfcGFkZGluZzoxMCxsaW5lX2hlaWdodDoyMH19O2x2LmNsYXNzLmFycm93TWFya2VyQWJzb2x1dGU9bHYuYXJyb3dNYXJrZXJBYnNvbHV0ZSxsdi5naXQuYXJyb3dNYXJrZXJBYnNvbHV0ZT1sdi5hcnJvd01hcmtlckFic29sdXRlO3ZhciBodj1mdW5jdGlvbiB0KGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiIjtyZXR1cm4gT2JqZWN0LmtleXMoZSkucmVkdWNlKChmdW5jdGlvbihyLGkpe3JldHVybiBBcnJheS5pc0FycmF5KGVbaV0pP3I6Im9iamVjdCI9PT11dihlW2ldKSYmbnVsbCE9PWVbaV0/W10uY29uY2F0KHN2KHIpLFtuK2ldLHN2KHQoZVtpXSwiIikpKTpbXS5jb25jYXQoc3YociksW24raV0pfSksW10pfShsdiwiIik7Y29uc3QgZnY9bHY7dmFyIGR2PXZvaWQgMDtmdW5jdGlvbiBwdih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIHl2KHQsZSl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFuKXtpZihBcnJheS5pc0FycmF5KHQpfHwobj12dih0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciByPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIHI+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3IrK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9bi5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gZ3YodCl7cmV0dXJuIGd2PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxndih0KX1mdW5jdGlvbiBtdih0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gYnYodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHx2dih0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB2dih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gYnYodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9idih0LGUpOnZvaWQgMH19ZnVuY3Rpb24gYnYodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgX3YseHY9e2N1cnZlQmFzaXM6VnUsY3VydmVCYXNpc0Nsb3NlZDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEd1KHQpfSxjdXJ2ZUJhc2lzT3BlbjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFh1KHQpfSxjdXJ2ZUxpbmVhcjpQdSxjdXJ2ZUxpbmVhckNsb3NlZDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFp1KHQpfSxjdXJ2ZU1vbm90b25lWDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGVsKHQpfSxjdXJ2ZU1vbm90b25lWTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG5sKHQpfSxjdXJ2ZU5hdHVyYWw6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpbCh0KX0sY3VydmVTdGVwOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb2wodCwuNSl9LGN1cnZlU3RlcEFmdGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb2wodCwxKX0sY3VydmVTdGVwQmVmb3JlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb2wodCwwKX19LHd2PS9bJV17Mn1be11ccyooPzooPzooXHcrKVxzKjp8KFx3KykpXHMqKD86KD86KFx3KykpfCgoPzooPyFbfV1bJV17Mn0pLnxccj9cbikqKSk/XHMqKSg/Olt9XVslXXsyfSk/L2dpLGt2PS9ccyooPzooPzooXHcrKSg/PTopOnwoXHcrKSlccyooPzooPzooXHcrKSl8KCg/Oig/IVt9XVslXXsyfSkufFxyP1xuKSopKT9ccyopKD86W31dWyVdezJ9KT8vZ2ksVHY9L1xzKiUlLipcbi9nbSxFdj1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0cnl7dmFyIG49bmV3IFJlZ0V4cCgiWyVdezJ9KD8hW3tdIi5jb25jYXQoa3Yuc291cmNlLCIpKD89W31dWyVdezJ9KS4qXG4iKSwiaWciKTt0PXQudHJpbSgpLnJlcGxhY2UobiwiIikucmVwbGFjZSgvJy9nbSwnIicpLG8uZGVidWcoIkRldGVjdGluZyBkaWFncmFtIGRpcmVjdGl2ZSIuY29uY2F0KG51bGwhPT1lPyIgdHlwZToiK2U6IiIsIiBiYXNlZCBvbiB0aGUgdGV4dDoiKS5jb25jYXQodCkpO2Zvcih2YXIgcixpPVtdO251bGwhPT0ocj13di5leGVjKHQpKTspaWYoci5pbmRleD09PXd2Lmxhc3RJbmRleCYmd3YubGFzdEluZGV4KyssciYmIWV8fGUmJnJbMV0mJnJbMV0ubWF0Y2goZSl8fGUmJnJbMl0mJnJbMl0ubWF0Y2goZSkpe3ZhciBhPXJbMV0/clsxXTpyWzJdLHM9clszXT9yWzNdLnRyaW0oKTpyWzRdP0pTT04ucGFyc2Uocls0XS50cmltKCkpOm51bGw7aS5wdXNoKHt0eXBlOmEsYXJnczpzfSl9cmV0dXJuIDA9PT1pLmxlbmd0aCYmaS5wdXNoKHt0eXBlOnQsYXJnczpudWxsfSksMT09PWkubGVuZ3RoP2lbMF06aX1jYXRjaChuKXtyZXR1cm4gby5lcnJvcigiRVJST1I6ICIuY29uY2F0KG4ubWVzc2FnZSwiIC0gVW5hYmxlIHRvIHBhcnNlIGRpcmVjdGl2ZVxuICAgICAgIikuY29uY2F0KG51bGwhPT1lPyIgdHlwZToiK2U6IiIsIiBiYXNlZCBvbiB0aGUgdGV4dDoiKS5jb25jYXQodCkpLHt0eXBlOm51bGwsYXJnczpudWxsfX19LEN2PWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQ9dC5yZXBsYWNlKHd2LCIiKS5yZXBsYWNlKFR2LCJcbiIpKS5tYXRjaCgvXlxzKnNlcXVlbmNlRGlhZ3JhbS8pPyJzZXF1ZW5jZSI6dC5tYXRjaCgvXlxzKmdhbnR0Lyk/ImdhbnR0Ijp0Lm1hdGNoKC9eXHMqY2xhc3NEaWFncmFtLXYyLyk/ImNsYXNzRGlhZ3JhbSI6dC5tYXRjaCgvXlxzKmNsYXNzRGlhZ3JhbS8pP2UmJmUuY2xhc3MmJiJkYWdyZS13cmFwcGVyIj09PWUuY2xhc3MuZGVmYXVsdFJlbmRlcmVyPyJjbGFzc0RpYWdyYW0iOiJjbGFzcyI6dC5tYXRjaCgvXlxzKnN0YXRlRGlhZ3JhbS12Mi8pPyJzdGF0ZURpYWdyYW0iOnQubWF0Y2goL15ccypzdGF0ZURpYWdyYW0vKT9lJiZlLmNsYXNzJiYiZGFncmUtd3JhcHBlciI9PT1lLnN0YXRlLmRlZmF1bHRSZW5kZXJlcj8ic3RhdGVEaWFncmFtIjoic3RhdGUiOnQubWF0Y2goL15ccypnaXRHcmFwaC8pPyJnaXQiOnQubWF0Y2goL15ccypmbG93Y2hhcnQvKT8iZmxvd2NoYXJ0LXYyIjp0Lm1hdGNoKC9eXHMqaW5mby8pPyJpbmZvIjp0Lm1hdGNoKC9eXHMqcGllLyk/InBpZSI6dC5tYXRjaCgvXlxzKmVyRGlhZ3JhbS8pPyJlciI6dC5tYXRjaCgvXlxzKmpvdXJuZXkvKT8iam91cm5leSI6dC5tYXRjaCgvXlxzKnJlcXVpcmVtZW50Lyl8fHQubWF0Y2goL15ccypyZXF1aXJlbWVudERpYWdyYW0vKT8icmVxdWlyZW1lbnQiOmUmJmUuZmxvd2NoYXJ0JiYiZGFncmUtd3JhcHBlciI9PT1lLmZsb3djaGFydC5kZWZhdWx0UmVuZGVyZXI/ImZsb3djaGFydC12MiI6ImZsb3djaGFydCJ9LFN2PWZ1bmN0aW9uKHQsZSl7dmFyIG49e307cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkociksYT0wO2E8cjthKyspaVthXT1hcmd1bWVudHNbYV07dmFyIG89ZT9lLmFwcGx5KGR2LGkpOmlbMF07aWYobyBpbiBuKXJldHVybiBuW29dO3ZhciBzPXQuYXBwbHkodm9pZCAwLGkpO3JldHVybiBuW29dPXMsc319LEF2PWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIGU7dmFyIG49ImN1cnZlIi5jb25jYXQodC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpKTtyZXR1cm4geHZbbl18fGV9LE12PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJmU/TWF0aC5zcXJ0KE1hdGgucG93KGUueC10LngsMikrTWF0aC5wb3coZS55LXQueSwyKSk6MH0sTnY9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49IiIscj0wO3I8dC5sZW5ndGg7cisrKXZvaWQgMCE9PXRbcl0mJih0W3JdLnN0YXJ0c1dpdGgoImNvbG9yOiIpfHx0W3JdLnN0YXJ0c1dpdGgoInRleHQtYWxpZ246Iik/bj1uK3Rbcl0rIjsiOmU9ZSt0W3JdKyI7Iik7cmV0dXJue3N0eWxlOmUsbGFiZWxTdHlsZTpufX0sRHY9MCxPdj1mdW5jdGlvbigpe3JldHVybiBEdisrLCJpZC0iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDEyKSsiLSIrRHZ9LEJ2PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9IiIsbj0iMDEyMzQ1Njc4OWFiY2RlZiIscj1uLmxlbmd0aCxpPTA7aTx0O2krKyllKz1uLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqcikpO3JldHVybiBlfSh0Lmxlbmd0aCl9LEx2PWZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBpPU9iamVjdC5hc3NpZ24oe2RlcHRoOjIsY2xvYmJlcjohMX0sciksYT1pLmRlcHRoLG89aS5jbG9iYmVyO3JldHVybiBBcnJheS5pc0FycmF5KG4pJiYhQXJyYXkuaXNBcnJheShlKT8obi5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4scil9KSksZSk6QXJyYXkuaXNBcnJheShuKSYmQXJyYXkuaXNBcnJheShlKT8obi5mb3JFYWNoKChmdW5jdGlvbih0KXstMT09PWUuaW5kZXhPZih0KSYmZS5wdXNoKHQpfSkpLGUpOnZvaWQgMD09PWV8fGE8PTA/bnVsbCE9ZSYmIm9iamVjdCI9PT1ndihlKSYmIm9iamVjdCI9PT1ndihuKT9PYmplY3QuYXNzaWduKGUsbik6bjoodm9pZCAwIT09biYmIm9iamVjdCI9PT1ndihlKSYmIm9iamVjdCI9PT1ndihuKSYmT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24ocil7Im9iamVjdCIhPT1ndihuW3JdKXx8dm9pZCAwIT09ZVtyXSYmIm9iamVjdCIhPT1ndihlW3JdKT8ob3x8Im9iamVjdCIhPT1ndihlW3JdKSYmIm9iamVjdCIhPT1ndihuW3JdKSkmJihlW3JdPW5bcl0pOih2b2lkIDA9PT1lW3JdJiYoZVtyXT1BcnJheS5pc0FycmF5KG5bcl0pP1tdOnt9KSxlW3JdPXQoZVtyXSxuW3JdLHtkZXB0aDphLTEsY2xvYmJlcjpvfSkpfSkpLGUpfSxJdj1mdW5jdGlvbih0LGUpe3ZhciBuPWUudGV4dC5yZXBsYWNlKFVtLmxpbmVCcmVha1JlZ2V4LCIgIikscj10LmFwcGVuZCgidGV4dCIpO3IuYXR0cigieCIsZS54KSxyLmF0dHIoInkiLGUueSksci5zdHlsZSgidGV4dC1hbmNob3IiLGUuYW5jaG9yKSxyLnN0eWxlKCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KSxyLnN0eWxlKCJmb250LXNpemUiLGUuZm9udFNpemUpLHIuc3R5bGUoImZvbnQtd2VpZ2h0IixlLmZvbnRXZWlnaHQpLHIuYXR0cigiZmlsbCIsZS5maWxsKSx2b2lkIDAhPT1lLmNsYXNzJiZyLmF0dHIoImNsYXNzIixlLmNsYXNzKTt2YXIgaT1yLmFwcGVuZCgidHNwYW4iKTtyZXR1cm4gaS5hdHRyKCJ4IixlLngrMiplLnRleHRNYXJnaW4pLGkuYXR0cigiZmlsbCIsZS5maWxsKSxpLnRleHQobikscn0sUnY9U3YoKGZ1bmN0aW9uKHQsZSxuKXtpZighdClyZXR1cm4gdDtpZihuPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIixqb2luV2l0aDoiPGJyLz4ifSxuKSxVbS5saW5lQnJlYWtSZWdleC50ZXN0KHQpKXJldHVybiB0O3ZhciByPXQuc3BsaXQoIiAiKSxpPVtdLGE9IiI7cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgcz1QdigiIi5jb25jYXQodCwiICIpLG4pLGM9UHYoYSxuKTtpZihzPmUpe3ZhciB1PUZ2KHQsZSwiLSIsbiksbD11Lmh5cGhlbmF0ZWRTdHJpbmdzLGg9dS5yZW1haW5pbmdXb3JkO2kucHVzaC5hcHBseShpLFthXS5jb25jYXQobXYobCkpKSxhPWh9ZWxzZSBjK3M+PWU/KGkucHVzaChhKSxhPXQpOmE9W2EsdF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtvKzE9PT1yLmxlbmd0aCYmaS5wdXNoKGEpfSkpLGkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4iIiE9PXR9KSkuam9pbihuLmpvaW5XaXRoKX0pLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIiIuY29uY2F0KHQsIi0iKS5jb25jYXQoZSwiLSIpLmNvbmNhdChuLmZvbnRTaXplLCItIikuY29uY2F0KG4uZm9udFdlaWdodCwiLSIpLmNvbmNhdChuLmZvbnRGYW1pbHksIi0iKS5jb25jYXQobi5qb2luV2l0aCl9KSksRnY9U3YoKGZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiItIixyPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO3I9T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwiLG1hcmdpbjowfSxyKTt2YXIgaT10LnNwbGl0KCIiKSxhPVtdLG89IiI7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgYz0iIi5jb25jYXQobykuY29uY2F0KHQpO2lmKFB2KGMscik+PWUpe3ZhciB1PXMrMSxsPWkubGVuZ3RoPT09dSxoPSIiLmNvbmNhdChjKS5jb25jYXQobik7YS5wdXNoKGw/YzpoKSxvPSIifWVsc2Ugbz1jfSkpLHtoeXBoZW5hdGVkU3RyaW5nczphLHJlbWFpbmluZ1dvcmQ6b319KSwoZnVuY3Rpb24odCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Ii0iLHI9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDA7cmV0dXJuIiIuY29uY2F0KHQsIi0iKS5jb25jYXQoZSwiLSIpLmNvbmNhdChuLCItIikuY29uY2F0KHIuZm9udFNpemUsIi0iKS5jb25jYXQoci5mb250V2VpZ2h0LCItIikuY29uY2F0KHIuZm9udEZhbWlseSl9KSksUHY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1PYmplY3QuYXNzaWduKHtmb250U2l6ZToxMixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OiJBcmlhbCJ9LGUpLGp2KHQsZSkud2lkdGh9LGp2PVN2KChmdW5jdGlvbih0LGUpe3ZhciBuPWU9T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwifSxlKSxyPW4uZm9udFNpemUsaT1uLmZvbnRGYW1pbHksYT1uLmZvbnRXZWlnaHQ7aWYoIXQpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBvPVsic2Fucy1zZXJpZiIsaV0scz10LnNwbGl0KFVtLmxpbmVCcmVha1JlZ2V4KSxjPVtdLHU9YXUoImJvZHkiKTtpZighdS5yZW1vdmUpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjAsbGluZUhlaWdodDowfTtmb3IodmFyIGw9dS5hcHBlbmQoInN2ZyIpLGg9MCxmPW87aDxmLmxlbmd0aDtoKyspe3ZhciBkLHA9ZltoXSx5PTAsZz17d2lkdGg6MCxoZWlnaHQ6MCxsaW5lSGVpZ2h0OjB9LG09eXYocyk7dHJ5e2ZvcihtLnMoKTshKGQ9bS5uKCkpLmRvbmU7KXt2YXIgdj1kLnZhbHVlLGI9e3g6MCx5OjAsZmlsbDp2b2lkIDAsYW5jaG9yOiJzdGFydCIsc3R5bGU6IiM2NjYiLHdpZHRoOjEwMCxoZWlnaHQ6MTAwLHRleHRNYXJnaW46MCxyeDowLHJ5OjAsdmFsaWduOnZvaWQgMH07Yi50ZXh0PXY7dmFyIF89SXYobCxiKS5zdHlsZSgiZm9udC1zaXplIixyKS5zdHlsZSgiZm9udC13ZWlnaHQiLGEpLnN0eWxlKCJmb250LWZhbWlseSIscCkseD0oXy5fZ3JvdXBzfHxfKVswXVswXS5nZXRCQm94KCk7Zy53aWR0aD1NYXRoLnJvdW5kKE1hdGgubWF4KGcud2lkdGgseC53aWR0aCkpLHk9TWF0aC5yb3VuZCh4LmhlaWdodCksZy5oZWlnaHQrPXksZy5saW5lSGVpZ2h0PU1hdGgucm91bmQoTWF0aC5tYXgoZy5saW5lSGVpZ2h0LHkpKX19Y2F0Y2godCl7bS5lKHQpfWZpbmFsbHl7bS5mKCl9Yy5wdXNoKGcpfXJldHVybiBsLnJlbW92ZSgpLGNbaXNOYU4oY1sxXS5oZWlnaHQpfHxpc05hTihjWzFdLndpZHRoKXx8aXNOYU4oY1sxXS5saW5lSGVpZ2h0KXx8Y1swXS5oZWlnaHQ+Y1sxXS5oZWlnaHQmJmNbMF0ud2lkdGg+Y1sxXS53aWR0aCYmY1swXS5saW5lSGVpZ2h0PmNbMV0ubGluZUhlaWdodD8wOjFdfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiIuY29uY2F0KHQsIi0iKS5jb25jYXQoZS5mb250U2l6ZSwiLSIpLmNvbmNhdChlLmZvbnRXZWlnaHQsIi0iKS5jb25jYXQoZS5mb250RmFtaWx5KX0pKSxZdj1mdW5jdGlvbih0LGUsbil7dmFyIHI9bmV3IE1hcDtyZXR1cm4gci5zZXQoImhlaWdodCIsdCksbj8oci5zZXQoIndpZHRoIiwiMTAwJSIpLHIuc2V0KCJzdHlsZSIsIm1heC13aWR0aDogIi5jb25jYXQoZSwicHg7IikpKTpyLnNldCgid2lkdGgiLGUpLHJ9LHp2PWZ1bmN0aW9uKHQsZSxuLHIpeyFmdW5jdGlvbih0LGUpe3ZhciBuLHI9eXYoZSk7dHJ5e2ZvcihyLnMoKTshKG49ci5uKCkpLmRvbmU7KXt2YXIgaT1uLnZhbHVlO3QuYXR0cihpWzBdLGlbMV0pfX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX19KHQsWXYoZSxuLHIpKX0sVXY9ZnVuY3Rpb24gdChlKXtvLmRlYnVnKCJkaXJlY3RpdmVTYW5pdGl6ZXIgY2FsbGVkIHdpdGgiLGUpLCJvYmplY3QiPT09Z3YoZSkmJihlLmxlbmd0aD9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSkpOk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe28uZGVidWcoIkNoZWNraW5nIGtleSIsbiksMD09PW4uaW5kZXhPZigiX18iKSYmKG8uZGVidWcoInNhbml0aXplIGRlbGV0aW5nIF9fIG9wdGlvbiIsbiksZGVsZXRlIGVbbl0pLG4uaW5kZXhPZigicHJvdG8iKT49MCYmKG8uZGVidWcoInNhbml0aXplIGRlbGV0aW5nIHByb3RvIG9wdGlvbiIsbiksZGVsZXRlIGVbbl0pLG4uaW5kZXhPZigiY29uc3RyIik+PTAmJihvLmRlYnVnKCJzYW5pdGl6ZSBkZWxldGluZyBjb25zdHIgb3B0aW9uIixuKSxkZWxldGUgZVtuXSksbi5pbmRleE9mKCJ0aGVtZUNTUyIpPj0wJiYoby5kZWJ1Zygic2FuaXRpemluZyB0aGVtZUNzcyBvcHRpb24iKSxlW25dPXF2KGVbbl0pKSxodi5pbmRleE9mKG4pPDA/KG8uZGVidWcoInNhbml0aXplIGRlbGV0aW5nIG9wdGlvbiIsbiksZGVsZXRlIGVbbl0pOiJvYmplY3QiPT09Z3YoZVtuXSkmJihvLmRlYnVnKCJzYW5pdGl6ZSBkZWxldGluZyBvYmplY3QiLG4pLHQoZVtuXSkpfSkpKX0scXY9ZnVuY3Rpb24odCl7cmV0dXJuKHQubWF0Y2goL1x7L2cpfHxbXSkubGVuZ3RoIT09KHQubWF0Y2goL1x9L2cpfHxbXSkubGVuZ3RoPyJ7IC8qIEVSUk9SOiBVbmJhbGFuY2VkIENTUyAqLyB9Ijp0fTtjb25zdCBIdj17YXNzaWduV2l0aERlcHRoOkx2LHdyYXBMYWJlbDpSdixjYWxjdWxhdGVUZXh0SGVpZ2h0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwiLG1hcmdpbjoxNX0sZSksanYodCxlKS5oZWlnaHR9LGNhbGN1bGF0ZVRleHRXaWR0aDpQdixjYWxjdWxhdGVUZXh0RGltZW5zaW9uczpqdixjYWxjdWxhdGVTdmdTaXplQXR0cnM6WXYsY29uZmlndXJlU3ZnU2l6ZTp6dixkZXRlY3RJbml0OmZ1bmN0aW9uKHQsZSl7dmFyIG49RXYodCwvKD86aW5pdFxiKXwoPzppbml0aWFsaXplXGIpLykscj17fTtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgaT1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXJnc30pKTtVdihpKSxyPUx2KHIsbXYoaSkpfWVsc2Ugcj1uLmFyZ3M7aWYocil7dmFyIGE9Q3YodCxlKTtbImNvbmZpZyJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXJbdF0mJigiZmxvd2NoYXJ0LXYyIj09PWEmJihhPSJmbG93Y2hhcnQiKSxyW2FdPXJbdF0sZGVsZXRlIHJbdF0pfSkpfXJldHVybiByfSxkZXRlY3REaXJlY3RpdmU6RXYsZGV0ZWN0VHlwZTpDdixpc1N1YnN0cmluZ0luQXJyYXk6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLm1hdGNoKHQpKXJldHVybiBuO3JldHVybi0xfSxpbnRlcnBvbGF0ZVRvQ3VydmU6QXYsY2FsY0xhYmVsUG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlLG49MDt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe24rPU12KHQsZSksZT10fSkpO3ZhciByPW4vMixpPXZvaWQgMDtyZXR1cm4gZT12b2lkIDAsdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihlJiYhaSl7dmFyIG49TXYodCxlKTtpZihuPHIpci09bjtlbHNle3ZhciBhPXIvbjthPD0wJiYoaT1lKSxhPj0xJiYoaT17eDp0LngseTp0Lnl9KSxhPjAmJmE8MSYmKGk9e3g6KDEtYSkqZS54K2EqdC54LHk6KDEtYSkqZS55K2EqdC55fSl9fWU9dH0pKSxpfSh0KX0sY2FsY0NhcmRpbmFsaXR5UG9zaXRpb246ZnVuY3Rpb24odCxlLG4pe3ZhciByO28uaW5mbygib3VyIHBvaW50cyIsZSksZVswXSE9PW4mJihlPWUucmV2ZXJzZSgpKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe012KHQscikscj10fSkpO3ZhciBpLGE9MjU7cj12b2lkIDAsZS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihyJiYhaSl7dmFyIGU9TXYodCxyKTtpZihlPGEpYS09ZTtlbHNle3ZhciBuPWEvZTtuPD0wJiYoaT1yKSxuPj0xJiYoaT17eDp0LngseTp0Lnl9KSxuPjAmJm48MSYmKGk9e3g6KDEtbikqci54K24qdC54LHk6KDEtbikqci55K24qdC55fSl9fXI9dH0pKTt2YXIgcz10PzEwOjUsYz1NYXRoLmF0YW4yKGVbMF0ueS1pLnksZVswXS54LWkueCksdT17eDowLHk6MH07cmV0dXJuIHUueD1NYXRoLnNpbihjKSpzKyhlWzBdLngraS54KS8yLHUueT0tTWF0aC5jb3MoYykqcysoZVswXS55K2kueSkvMix1fSxjYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobikpO28uaW5mbygib3VyIHBvaW50cyIsaSksInN0YXJ0X2xlZnQiIT09ZSYmInN0YXJ0X3JpZ2h0IiE9PWUmJihpPWkucmV2ZXJzZSgpKSxpLmZvckVhY2goKGZ1bmN0aW9uKHQpe012KHQscikscj10fSkpO3ZhciBhLHM9MjUrdDtyPXZvaWQgMCxpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHImJiFhKXt2YXIgZT1Ndih0LHIpO2lmKGU8cylzLT1lO2Vsc2V7dmFyIG49cy9lO248PTAmJihhPXIpLG4+PTEmJihhPXt4OnQueCx5OnQueX0pLG4+MCYmbjwxJiYoYT17eDooMS1uKSpyLngrbip0LngseTooMS1uKSpyLnkrbip0Lnl9KX19cj10fSkpO3ZhciBjPTEwKy41KnQsdT1NYXRoLmF0YW4yKGlbMF0ueS1hLnksaVswXS54LWEueCksbD17eDowLHk6MH07cmV0dXJuIGwueD1NYXRoLnNpbih1KSpjKyhpWzBdLngrYS54KS8yLGwueT0tTWF0aC5jb3ModSkqYysoaVswXS55K2EueSkvMiwic3RhcnRfbGVmdCI9PT1lJiYobC54PU1hdGguc2luKHUrTWF0aC5QSSkqYysoaVswXS54K2EueCkvMixsLnk9LU1hdGguY29zKHUrTWF0aC5QSSkqYysoaVswXS55K2EueSkvMiksImVuZF9yaWdodCI9PT1lJiYobC54PU1hdGguc2luKHUtTWF0aC5QSSkqYysoaVswXS54K2EueCkvMi01LGwueT0tTWF0aC5jb3ModS1NYXRoLlBJKSpjKyhpWzBdLnkrYS55KS8yLTUpLCJlbmRfbGVmdCI9PT1lJiYobC54PU1hdGguc2luKHUpKmMrKGlbMF0ueCthLngpLzItNSxsLnk9LU1hdGguY29zKHUpKmMrKGlbMF0ueSthLnkpLzItNSksbH0sZm9ybWF0VXJsOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC50cmltKCk7aWYobilyZXR1cm4ibG9vc2UiIT09ZS5zZWN1cml0eUxldmVsPygwLE9tLnNhbml0aXplVXJsKShuKTpufSxnZXRTdHlsZXNGcm9tQXJyYXk6TnYsZ2VuZXJhdGVJZDpPdixyYW5kb206QnYsbWVtb2l6ZTpTdixydW5GdW5jOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXQuc3BsaXQoIi4iKSxyPW4ubGVuZ3RoLTEsaT1uW3JdLGE9d2luZG93LG89MDtvPHI7bysrKWlmKCEoYT1hW25bb11dKSlyZXR1cm47Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgsYz1uZXcgQXJyYXkocz4xP3MtMTowKSx1PTE7dTxzO3UrKyljW3UtMV09YXJndW1lbnRzW3VdOyhlPWEpW2ldLmFwcGx5KGUsYyl9LGVudGl0eURlY29kZTpmdW5jdGlvbih0KXtyZXR1cm4gX3Y9X3Z8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQ9ZXNjYXBlKHQpLnJlcGxhY2UoLyUyNi9nLCImIikucmVwbGFjZSgvJTIzL2csIiMiKS5yZXBsYWNlKC8lM0IvZywiOyIpLF92LmlubmVySFRNTD10LHVuZXNjYXBlKF92LnRleHRDb250ZW50KX0saW5pdElkR2VuZXJhdGlvcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLmRldGVybWluaXN0aWM9ZSx0aGlzLnNlZWQ9bix0aGlzLmNvdW50PW4/bi5sZW5ndGg6MH12YXIgZSxuO3JldHVybiBlPXQsKG49W3trZXk6Im5leHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGV0ZXJtaW5pc3RpYz90aGlzLmNvdW50Kys6RGF0ZS5ub3coKX19XSkmJnB2KGUucHJvdG90eXBlLG4pLHR9KCksZGlyZWN0aXZlU2FuaXRpemVyOlV2LHNhbml0aXplQ3NzOnF2fTtmdW5jdGlvbiAkdih0KXtyZXR1cm4gJHY9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LCR2KHQpfXZhciBXdixWdj1PYmplY3QuZnJlZXplKGZ2KSxHdj1Mdih7fSxWdiksWHY9W10sWnY9THYoe30sVnYpLFF2PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPUx2KHt9LHQpLHI9e30saT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldO3RiKGEpLHI9THYocixhKX1pZihuPUx2KG4sciksci50aGVtZSl7dmFyIG89THYoe30sV3YpLHM9THYoby50aGVtZVZhcmlhYmxlc3x8e30sci50aGVtZVZhcmlhYmxlcyk7bi50aGVtZVZhcmlhYmxlcz1vdltuLnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyhzKX1yZXR1cm4gWnY9bixufSxLdj1mdW5jdGlvbigpe3JldHVybiBMdih7fSxHdil9LEp2PWZ1bmN0aW9uKCl7cmV0dXJuIEx2KHt9LFp2KX0sdGI9ZnVuY3Rpb24gdChlKXtPYmplY3Qua2V5cyhHdi5zZWN1cmUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWVbR3Yuc2VjdXJlW3RdXSYmKG8uZGVidWcoIkRlbmllZCBhdHRlbXB0IHRvIG1vZGlmeSBhIHNlY3VyZSBrZXkgIi5jb25jYXQoR3Yuc2VjdXJlW3RdKSxlW0d2LnNlY3VyZVt0XV0pLGRlbGV0ZSBlW0d2LnNlY3VyZVt0XV0pfSkpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpezA9PT10LmluZGV4T2YoIl9fIikmJmRlbGV0ZSBlW3RdfSkpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4peyJzdHJpbmciPT10eXBlb2YgZVtuXSYmKGVbbl0uaW5kZXhPZigiPCIpPi0xfHxlW25dLmluZGV4T2YoIj4iKT4tMXx8ZVtuXS5pbmRleE9mKCJ1cmwoZGF0YToiKT4tMSkmJmRlbGV0ZSBlW25dLCJvYmplY3QiPT09JHYoZVtuXSkmJnQoZVtuXSl9KSl9LGViPWZ1bmN0aW9uKHQpe3QuZm9udEZhbWlseSYmKHQudGhlbWVWYXJpYWJsZXMmJnQudGhlbWVWYXJpYWJsZXMuZm9udEZhbWlseXx8KHQudGhlbWVWYXJpYWJsZXM9e2ZvbnRGYW1pbHk6dC5mb250RmFtaWx5fSkpLFh2LnB1c2godCksUXYoR3YsWHYpfSxuYj1mdW5jdGlvbigpe1F2KEd2LFh2PVtdKX07ZnVuY3Rpb24gcmIodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgaWI9ImNsYXNzaWQtIixhYj1bXSxvYj17fSxzYj0wLGNiPVtdLHViPWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dDtpZih0LmluZGV4T2YoIn4iKT4wKXt2YXIgcj10LnNwbGl0KCJ+Iik7bj1yWzBdLGU9VW0uc2FuaXRpemVUZXh0KHJbMV0sSnYoKSl9cmV0dXJue2NsYXNzTmFtZTpuLHR5cGU6ZX19LGxiPWZ1bmN0aW9uKHQpe3ZhciBlPXViKHQpO3ZvaWQgMD09PW9iW2UuY2xhc3NOYW1lXSYmKG9iW2UuY2xhc3NOYW1lXT17aWQ6ZS5jbGFzc05hbWUsdHlwZTplLnR5cGUsY3NzQ2xhc3NlczpbXSxtZXRob2RzOltdLG1lbWJlcnM6W10sYW5ub3RhdGlvbnM6W10sZG9tSWQ6aWIrZS5jbGFzc05hbWUrIi0iK3NifSxzYisrKX0saGI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdC5rZXlzKG9iKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYob2JbZVtuXV0uaWQ9PT10KXJldHVybiBvYltlW25dXS5kb21JZH0sZmI9ZnVuY3Rpb24odCxlKXt2YXIgbj11Yih0KS5jbGFzc05hbWUscj1vYltuXTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBpPWUudHJpbSgpO2kuc3RhcnRzV2l0aCgiPDwiKSYmaS5lbmRzV2l0aCgiPj4iKT9yLmFubm90YXRpb25zLnB1c2goaS5zdWJzdHJpbmcoMixpLmxlbmd0aC0yKSk6aS5pbmRleE9mKCIpIik+MD9yLm1ldGhvZHMucHVzaChpKTppJiZyLm1lbWJlcnMucHVzaChpKX19LGRiPWZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQ7dFswXS5tYXRjaCgvXGQvKSYmKG49aWIrbiksdm9pZCAwIT09b2Jbbl0mJm9iW25dLmNzc0NsYXNzZXMucHVzaChlKX0pKX0scGI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPUp2KCksaT10LGE9aGIoaSk7aWYoImxvb3NlIj09PXIuc2VjdXJpdHlMZXZlbCYmdm9pZCAwIT09ZSYmdm9pZCAwIT09b2JbaV0pe3ZhciBvPVtdO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7bz1uLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2Zvcih2YXIgcz0wO3M8by5sZW5ndGg7cysrKXt2YXIgYz1vW3NdLnRyaW0oKTsnIic9PT1jLmNoYXJBdCgwKSYmJyInPT09Yy5jaGFyQXQoYy5sZW5ndGgtMSkmJihjPWMuc3Vic3RyKDEsYy5sZW5ndGgtMikpLG9bc109Y319MD09PW8ubGVuZ3RoJiZvLnB1c2goYSksY2IucHVzaCgoZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9IicuY29uY2F0KGEsJyJdJykpO251bGwhPT10JiZ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oKXt2YXIgdDtIdi5ydW5GdW5jLmFwcGx5KEh2LFtlXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gcmIodCl9KHQ9byl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiByYih0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3JiKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpKX0pLCExKX0pKX19LHliPXtBR0dSRUdBVElPTjowLEVYVEVOU0lPTjoxLENPTVBPU0lUSU9OOjIsREVQRU5ERU5DWTozfSxnYj1mdW5jdGlvbih0KXt2YXIgZT1hdSgiLm1lcm1haWRUb29sdGlwIik7bnVsbD09PShlLl9ncm91cHN8fGUpWzBdWzBdJiYoZT1hdSgiYm9keSIpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJtZXJtYWlkVG9vbHRpcCIpLnN0eWxlKCJvcGFjaXR5IiwwKSksYXUodCkuc2VsZWN0KCJzdmciKS5zZWxlY3RBbGwoImcubm9kZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe3ZhciB0PWF1KHRoaXMpO2lmKG51bGwhPT10LmF0dHIoInRpdGxlIikpe3ZhciBuPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMjAwKS5zdHlsZSgib3BhY2l0eSIsIi45IiksZS5odG1sKHQuYXR0cigidGl0bGUiKSkuc3R5bGUoImxlZnQiLHdpbmRvdy5zY3JvbGxYK24ubGVmdCsobi5yaWdodC1uLmxlZnQpLzIrInB4Iikuc3R5bGUoInRvcCIsd2luZG93LnNjcm9sbFkrbi50b3AtMTQrZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ArInB4IiksdC5jbGFzc2VkKCJob3ZlciIsITApfX0pKS5vbigibW91c2VvdXQiLChmdW5jdGlvbigpe2UudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuc3R5bGUoIm9wYWNpdHkiLDApLGF1KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSl9O2NiLnB1c2goZ2IpO3ZhciBtYj0iVEIiO2NvbnN0IHZiPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7c0MucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBKdigpLmNsYXNzfSxhZGRDbGFzczpsYixiaW5kRnVuY3Rpb25zOmZ1bmN0aW9uKHQpe2NiLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UodCl9KSl9LGNsZWFyOmZ1bmN0aW9uKCl7YWI9W10sb2I9e30sKGNiPVtdKS5wdXNoKGdiKX0sZ2V0Q2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIG9iW3RdfSxnZXRDbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJuIG9ifSxhZGRBbm5vdGF0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dWIodCkuY2xhc3NOYW1lO29iW25dLmFubm90YXRpb25zLnB1c2goZSl9LGdldFJlbGF0aW9uczpmdW5jdGlvbigpe3JldHVybiBhYn0sYWRkUmVsYXRpb246ZnVuY3Rpb24odCl7by5kZWJ1ZygiQWRkaW5nIHJlbGF0aW9uOiAiK0pTT04uc3RyaW5naWZ5KHQpKSxsYih0LmlkMSksbGIodC5pZDIpLHQuaWQxPXViKHQuaWQxKS5jbGFzc05hbWUsdC5pZDI9dWIodC5pZDIpLmNsYXNzTmFtZSx0LnJlbGF0aW9uVGl0bGUxPVVtLnNhbml0aXplVGV4dCh0LnJlbGF0aW9uVGl0bGUxLnRyaW0oKSxKdigpKSx0LnJlbGF0aW9uVGl0bGUyPVVtLnNhbml0aXplVGV4dCh0LnJlbGF0aW9uVGl0bGUyLnRyaW0oKSxKdigpKSxhYi5wdXNoKHQpfSxnZXREaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbWJ9LHNldERpcmVjdGlvbjpmdW5jdGlvbih0KXttYj10fSxhZGRNZW1iZXI6ZmIsYWRkTWVtYmVyczpmdW5jdGlvbih0LGUpe0FycmF5LmlzQXJyYXkoZSkmJihlLnJldmVyc2UoKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBmYih0LGUpfSkpKX0sY2xlYW51cExhYmVsOmZ1bmN0aW9uKHQpe3JldHVybiI6Ij09PXQuc3Vic3RyaW5nKDAsMSk/VW0uc2FuaXRpemVUZXh0KHQuc3Vic3RyKDEpLnRyaW0oKSxKdigpKTp0LnRyaW0oKX0sbGluZVR5cGU6e0xJTkU6MCxET1RURURfTElORToxfSxyZWxhdGlvblR5cGU6eWIsc2V0Q2xpY2tFdmVudDpmdW5jdGlvbih0LGUsbil7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3BiKHQsZSxuKSxvYlt0XS5oYXZlQ2FsbGJhY2s9ITB9KSksZGIodCwiY2xpY2thYmxlIil9LHNldENzc0NsYXNzOmRiLHNldExpbms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPUp2KCk7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPXQ7dFswXS5tYXRjaCgvXGQvKSYmKGk9aWIraSksdm9pZCAwIT09b2JbaV0mJihvYltpXS5saW5rPUh2LmZvcm1hdFVybChlLHIpLG9iW2ldLmxpbmtUYXJnZXQ9InN0cmluZyI9PXR5cGVvZiBuP246Il9ibGFuayIpfSkpLGRiKHQsImNsaWNrYWJsZSIpfSxzZXRUb29sdGlwOmZ1bmN0aW9uKHQsZSl7dmFyIG49SnYoKTt0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09ZSYmKG9iW3RdLnRvb2x0aXA9VW0uc2FuaXRpemVUZXh0KGUsbikpfSkpfSxsb29rVXBEb21JZDpoYn07dmFyIGJiPW4oNjgxKSxfYj1uLm4oYmIpLHhiPW4oODI4Miksd2I9bi5uKHhiKSxrYj1uKDEzNjIpLFRiPW4ubihrYiksRWI9MCxDYj1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKC9eKFwrfC18fnwjKT8oXHcrKSh+XHcrfnxcW1xdKT9ccysoXHcrKSAqKFwqfFwkKT8kLyksbj10Lm1hdGNoKC9eKFsrfFwtfH58I10pPyhcdyspICpcKCAqKC4qKVwpICooXCp8XCQpPyAqKFx3Klt+fFtcXV0qXHMqXHcqfj8pJC8pO3JldHVybiBlJiYhbj9TYihlKTpuP0FiKG4pOk1iKHQpfSxTYj1mdW5jdGlvbih0KXt2YXIgZT0iIixuPSIiO3RyeXt2YXIgcj10WzFdP3RbMV0udHJpbSgpOiIiLGk9dFsyXT90WzJdLnRyaW0oKToiIixhPXRbM10/RGIodFszXS50cmltKCkpOiIiLG89dFs0XT90WzRdLnRyaW0oKToiIixzPXRbNV0/dFs1XS50cmltKCk6IiI7bj1yK2krYSsiICIrbyxlPU9iKHMpfWNhdGNoKGUpe249dH1yZXR1cm57ZGlzcGxheVRleHQ6bixjc3NTdHlsZTplfX0sQWI9ZnVuY3Rpb24odCl7dmFyIGU9IiIsbj0iIjt0cnl7dmFyIHI9dFsxXT90WzFdLnRyaW0oKToiIixpPXRbMl0/dFsyXS50cmltKCk6IiIsYT10WzNdP0RiKHRbM10udHJpbSgpKToiIixvPXRbNF0/dFs0XS50cmltKCk6IiI7bj1yK2krIigiK2ErIikiKyh0WzVdPyIgOiAiK0RiKHRbNV0pLnRyaW0oKToiIiksZT1PYihvKX1jYXRjaChlKXtuPXR9cmV0dXJue2Rpc3BsYXlUZXh0Om4sY3NzU3R5bGU6ZX19LE1iPWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49IiIscj0iIixpPXQuaW5kZXhPZigiKCIpLGE9dC5pbmRleE9mKCIpIik7aWYoaT4xJiZhPmkmJmE8PXQubGVuZ3RoKXt2YXIgbz0iIixzPSIiLGM9dC5zdWJzdHJpbmcoMCwxKTtjLm1hdGNoKC9cdy8pP3M9dC5zdWJzdHJpbmcoMCxpKS50cmltKCk6KGMubWF0Y2goL1wrfC18fnwjLykmJihvPWMpLHM9dC5zdWJzdHJpbmcoMSxpKS50cmltKCkpO3ZhciB1PXQuc3Vic3RyaW5nKGkrMSxhKSxsPXQuc3Vic3RyaW5nKGErMSwxKTtuPU9iKGwpLGU9bytzKyIoIitEYih1LnRyaW0oKSkrIikiLGE8IiIubGVuZ3RoJiYiIiE9PShyPXQuc3Vic3RyaW5nKGErMikudHJpbSgpKSYmKHI9IiA6ICIrRGIocikpfWVsc2UgZT1EYih0KTtyZXR1cm57ZGlzcGxheVRleHQ6ZSxjc3NTdHlsZTpufX0sTmI9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9Q2IoZSksYT10LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixyLnBhZGRpbmcpLnRleHQoaS5kaXNwbGF5VGV4dCk7IiIhPT1pLmNzc1N0eWxlJiZhLmF0dHIoInN0eWxlIixpLmNzc1N0eWxlKSxufHxhLmF0dHIoImR5IixyLnRleHRIZWlnaHQpfSxEYj1mdW5jdGlvbiB0KGUpe3ZhciBuPWU7cmV0dXJuLTEhPWUuaW5kZXhPZigifiIpP3Qobj0obj1uLnJlcGxhY2UoIn4iLCI8IikpLnJlcGxhY2UoIn4iLCI+IikpOm59LE9iPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIioiOnJldHVybiJmb250LXN0eWxlOml0YWxpYzsiO2Nhc2UiJCI6cmV0dXJuInRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IjtkZWZhdWx0OnJldHVybiIifX07Y29uc3QgQmI9ZnVuY3Rpb24odCxlLG4pe28uaW5mbygiUmVuZGVyaW5nIGNsYXNzICIrZSk7dmFyIHIsaT1lLmlkLGE9e2lkOmksbGFiZWw6ZS5pZCx3aWR0aDowLGhlaWdodDowfSxzPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLGhiKGkpKS5hdHRyKCJjbGFzcyIsImNsYXNzR3JvdXAiKTtyPWUubGluaz9zLmFwcGVuZCgic3ZnOmEiKS5hdHRyKCJ4bGluazpocmVmIixlLmxpbmspLmF0dHIoInRhcmdldCIsZS5saW5rVGFyZ2V0KS5hcHBlbmQoInRleHQiKS5hdHRyKCJ5IixuLnRleHRIZWlnaHQrbi5wYWRkaW5nKS5hdHRyKCJ4IiwwKTpzLmFwcGVuZCgidGV4dCIpLmF0dHIoInkiLG4udGV4dEhlaWdodCtuLnBhZGRpbmcpLmF0dHIoIngiLDApO3ZhciBjPSEwO2UuYW5ub3RhdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9ci5hcHBlbmQoInRzcGFuIikudGV4dCgiwqsiK3QrIsK7Iik7Y3x8ZS5hdHRyKCJkeSIsbi50ZXh0SGVpZ2h0KSxjPSExfSkpO3ZhciB1PWUuaWQ7dm9pZCAwIT09ZS50eXBlJiYiIiE9PWUudHlwZSYmKHUrPSI8IitlLnR5cGUrIj4iKTt2YXIgbD1yLmFwcGVuZCgidHNwYW4iKS50ZXh0KHUpLmF0dHIoImNsYXNzIiwidGl0bGUiKTtjfHxsLmF0dHIoImR5IixuLnRleHRIZWlnaHQpO3ZhciBoPXIubm9kZSgpLmdldEJCb3goKS5oZWlnaHQsZj1zLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbi5wYWRkaW5nK2grbi5kaXZpZGVyTWFyZ2luLzIpLmF0dHIoInkyIixuLnBhZGRpbmcraCtuLmRpdmlkZXJNYXJnaW4vMiksZD1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLG4ucGFkZGluZykuYXR0cigieSIsaCtuLmRpdmlkZXJNYXJnaW4rbi50ZXh0SGVpZ2h0KS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJjbGFzcyIsImNsYXNzVGV4dCIpO2M9ITAsZS5tZW1iZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe05iKGQsdCxjLG4pLGM9ITF9KSk7dmFyIHA9ZC5ub2RlKCkuZ2V0QkJveCgpLHk9cy5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLG4ucGFkZGluZytoK24uZGl2aWRlck1hcmdpbitwLmhlaWdodCkuYXR0cigieTIiLG4ucGFkZGluZytoK24uZGl2aWRlck1hcmdpbitwLmhlaWdodCksZz1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLG4ucGFkZGluZykuYXR0cigieSIsaCsyKm4uZGl2aWRlck1hcmdpbitwLmhlaWdodCtuLnRleHRIZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImNsYXNzIiwiY2xhc3NUZXh0Iik7Yz0hMCxlLm1ldGhvZHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7TmIoZyx0LGMsbiksYz0hMX0pKTt2YXIgbT1zLm5vZGUoKS5nZXRCQm94KCksdj0iICI7ZS5jc3NDbGFzc2VzLmxlbmd0aD4wJiYodis9ZS5jc3NDbGFzc2VzLmpvaW4oIiAiKSk7dmFyIGI9cy5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsbS53aWR0aCsyKm4ucGFkZGluZykuYXR0cigiaGVpZ2h0IixtLmhlaWdodCtuLnBhZGRpbmcrLjUqbi5kaXZpZGVyTWFyZ2luKS5hdHRyKCJjbGFzcyIsdikubm9kZSgpLmdldEJCb3goKS53aWR0aDtyZXR1cm4gci5ub2RlKCkuY2hpbGROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZSgieCIsKGItdC5nZXRCQm94KCkud2lkdGgpLzIpfSkpLGUudG9vbHRpcCYmci5pbnNlcnQoInRpdGxlIikudGV4dChlLnRvb2x0aXApLGYuYXR0cigieDIiLGIpLHkuYXR0cigieDIiLGIpLGEud2lkdGg9YixhLmhlaWdodD1tLmhlaWdodCtuLnBhZGRpbmcrLjUqbi5kaXZpZGVyTWFyZ2luLGF9O2tiLnBhcnNlci55eT12Yjt2YXIgTGI9e30sSWI9e2RpdmlkZXJNYXJnaW46MTAscGFkZGluZzo1LHRleHRIZWlnaHQ6MTB9LFJiPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5lbnRyaWVzKExiKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZVsxXS5sYWJlbD09PXR9KSk7aWYoZSlyZXR1cm4gZVswXX07Y29uc3QgRmI9ZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7SWJbZV09dFtlXX0pKX0sUGI9ZnVuY3Rpb24odCxlKXtMYj17fSxrYi5wYXJzZXIueXkuY2xlYXIoKSxrYi5wYXJzZXIucGFyc2UodCksby5pbmZvKCJSZW5kZXJpbmcgZGlhZ3JhbSAiK3QpO3ZhciBuLHI9YXUoIltpZD0nIi5jb25jYXQoZSwiJ10iKSk7ci5hdHRyKCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKSwobj1yKS5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZXh0ZW5zaW9uU3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSw3IEwxOCwxMyBWIDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImV4dGVuc2lvbkVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDEgViAxMyBMMTgsNyBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY29tcG9zaXRpb25TdGFydCIpLmF0dHIoImNsYXNzIiwiZXh0ZW5zaW9uIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY29tcG9zaXRpb25FbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImFnZ3JlZ2F0aW9uU3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLG4uYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImFnZ3JlZ2F0aW9uRW5kIikuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSxuLmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJkZXBlbmRlbmN5U3RhcnQiKS5hdHRyKCJjbGFzcyIsImV4dGVuc2lvbiIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gNSw3IEw5LDEzIEwxLDcgTDksMSBaIiksbi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZGVwZW5kZW5jeUVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpO3ZhciBpPW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMH0pO2kuc2V0R3JhcGgoe2lzTXVsdGlHcmFwaDohMH0pLGkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKTtmb3IodmFyIGE9dmIuZ2V0Q2xhc3NlcygpLHM9T2JqZWN0LmtleXMoYSksYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgdT1hW3NbY11dLGw9QmIocix1LEliKTtMYltsLmlkXT1sLGkuc2V0Tm9kZShsLmlkLGwpLG8uaW5mbygiT3JnIGhlaWdodDogIitsLmhlaWdodCl9dmIuZ2V0UmVsYXRpb25zKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5pbmZvKCJ0am9obyIrUmIodC5pZDEpK1JiKHQuaWQyKStKU09OLnN0cmluZ2lmeSh0KSksaS5zZXRFZGdlKFJiKHQuaWQxKSxSYih0LmlkMikse3JlbGF0aW9uOnR9LHQudGl0bGV8fCJERUZBVUxUIil9KSksX2IoKS5sYXlvdXQoaSksaS5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWkubm9kZSh0KSYmKG8uZGVidWcoIk5vZGUgIit0KyI6ICIrSlNPTi5zdHJpbmdpZnkoaS5ub2RlKHQpKSksYXUoIiMiK2hiKHQpKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoaS5ub2RlKHQpLngtaS5ub2RlKHQpLndpZHRoLzIpKyIsIisoaS5ub2RlKHQpLnktaS5ub2RlKHQpLmhlaWdodC8yKSsiICkiKSl9KSksaS5lZGdlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWkuZWRnZSh0KSYmKG8uZGVidWcoIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiK0pTT04uc3RyaW5naWZ5KGkuZWRnZSh0KSkpLGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIHliLkFHR1JFR0FUSU9OOnJldHVybiJhZ2dyZWdhdGlvbiI7Y2FzZSB5Yi5FWFRFTlNJT046cmV0dXJuImV4dGVuc2lvbiI7Y2FzZSB5Yi5DT01QT1NJVElPTjpyZXR1cm4iY29tcG9zaXRpb24iO2Nhc2UgeWIuREVQRU5ERU5DWTpyZXR1cm4iZGVwZW5kZW5jeSJ9fTtlLnBvaW50cz1lLnBvaW50cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFOdW1iZXIuaXNOYU4odC55KX0pKTt2YXIgYSxzLGM9ZS5wb2ludHMsdT16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKS5jdXJ2ZShWdSksbD10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLHUoYykpLmF0dHIoImlkIiwiZWRnZSIrRWIpLmF0dHIoImNsYXNzIiwicmVsYXRpb24iKSxoPSIiO3IuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKGg9KGg9KGg9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksMT09bi5yZWxhdGlvbi5saW5lVHlwZSYmbC5hdHRyKCJjbGFzcyIsInJlbGF0aW9uIGRhc2hlZC1saW5lIiksIm5vbmUiIT09bi5yZWxhdGlvbi50eXBlMSYmbC5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitoKyIjIitpKG4ucmVsYXRpb24udHlwZTEpKyJTdGFydCkiKSwibm9uZSIhPT1uLnJlbGF0aW9uLnR5cGUyJiZsLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitoKyIjIitpKG4ucmVsYXRpb24udHlwZTIpKyJFbmQpIik7dmFyIGYsZCxwLHksZz1lLnBvaW50cy5sZW5ndGgsbT1Idi5jYWxjTGFiZWxQb3NpdGlvbihlLnBvaW50cyk7aWYoYT1tLngscz1tLnksZyUyIT0wJiZnPjEpe3ZhciB2PUh2LmNhbGNDYXJkaW5hbGl0eVBvc2l0aW9uKCJub25lIiE9PW4ucmVsYXRpb24udHlwZTEsZS5wb2ludHMsZS5wb2ludHNbMF0pLGI9SHYuY2FsY0NhcmRpbmFsaXR5UG9zaXRpb24oIm5vbmUiIT09bi5yZWxhdGlvbi50eXBlMixlLnBvaW50cyxlLnBvaW50c1tnLTFdKTtvLmRlYnVnKCJjYXJkaW5hbGl0eV8xX3BvaW50ICIrSlNPTi5zdHJpbmdpZnkodikpLG8uZGVidWcoImNhcmRpbmFsaXR5XzJfcG9pbnQgIitKU09OLnN0cmluZ2lmeShiKSksZj12LngsZD12LnkscD1iLngseT1iLnl9aWYodm9pZCAwIT09bi50aXRsZSl7dmFyIF89dC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImNsYXNzTGFiZWwiKSx4PV8uYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLmF0dHIoIngiLGEpLmF0dHIoInkiLHMpLmF0dHIoImZpbGwiLCJyZWQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQobi50aXRsZSk7d2luZG93LmxhYmVsPXg7dmFyIHc9eC5ub2RlKCkuZ2V0QkJveCgpO18uaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigiY2xhc3MiLCJib3giKS5hdHRyKCJ4Iix3Lngtci5wYWRkaW5nLzIpLmF0dHIoInkiLHcueS1yLnBhZGRpbmcvMikuYXR0cigid2lkdGgiLHcud2lkdGgrci5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLHcuaGVpZ2h0K3IucGFkZGluZyl9by5pbmZvKCJSZW5kZXJpbmcgcmVsYXRpb24gIitKU09OLnN0cmluZ2lmeShuKSksdm9pZCAwIT09bi5yZWxhdGlvblRpdGxlMSYmIm5vbmUiIT09bi5yZWxhdGlvblRpdGxlMSYmdC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImNhcmRpbmFsaXR5IikuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJ0eXBlMSIpLmF0dHIoIngiLGYpLmF0dHIoInkiLGQpLmF0dHIoImZpbGwiLCJibGFjayIpLmF0dHIoImZvbnQtc2l6ZSIsIjYiKS50ZXh0KG4ucmVsYXRpb25UaXRsZTEpLHZvaWQgMCE9PW4ucmVsYXRpb25UaXRsZTImJiJub25lIiE9PW4ucmVsYXRpb25UaXRsZTImJnQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjYXJkaW5hbGl0eSIpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwidHlwZTIiKS5hdHRyKCJ4IixwKS5hdHRyKCJ5Iix5KS5hdHRyKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJmb250LXNpemUiLCI2IikudGV4dChuLnJlbGF0aW9uVGl0bGUyKSxFYisrfShyLGkuZWRnZSh0KSxpLmVkZ2UodCkucmVsYXRpb24sSWIpKX0pKTt2YXIgaD1yLm5vZGUoKS5nZXRCQm94KCksZj1oLndpZHRoKzQwLGQ9aC5oZWlnaHQrNDA7enYocixkLGYsSWIudXNlTWF4V2lkdGgpO3ZhciBwPSIiLmNvbmNhdChoLngtMjAsIiAiKS5jb25jYXQoaC55LTIwLCIgIikuY29uY2F0KGYsIiAiKS5jb25jYXQoZCk7by5kZWJ1Zygidmlld0JveCAiLmNvbmNhdChwKSksci5hdHRyKCJ2aWV3Qm94IixwKX07dmFyIGpiPXtleHRlbnNpb246ZnVuY3Rpb24odCxlLG4pe28udHJhY2UoIk1ha2luZyBtYXJrZXJzIGZvciAiLG4pLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWV4dGVuc2lvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgZXh0ZW5zaW9uICIrZSkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDcgTDE4LDEzIFYgMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItZXh0ZW5zaW9uRW5kIikuYXR0cigiY2xhc3MiLCJtYXJrZXIgZXh0ZW5zaW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDEsMSBWIDEzIEwxOCw3IFoiKX0sY29tcG9zaXRpb246ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jb21wb3NpdGlvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgY29tcG9zaXRpb24gIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jb21wb3NpdGlvbkVuZCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGNvbXBvc2l0aW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKX0sYWdncmVnYXRpb246ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1hZ2dyZWdhdGlvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgYWdncmVnYXRpb24gIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1hZ2dyZWdhdGlvbkVuZCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGFnZ3JlZ2F0aW9uICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKX0sZGVwZW5kZW5jeTpmdW5jdGlvbih0LGUpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWRlcGVuZGVuY3lTdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGRlcGVuZGVuY3kgIitlKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDUsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWRlcGVuZGVuY3lFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBkZXBlbmRlbmN5ICIrZSkuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDE0LDcgTDksMSBaIil9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItcG9pbnRFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpLmF0dHIoImNsYXNzIiwiYXJyb3dNYXJrZXJQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKSx0LmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1wb2ludFN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgIitlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMikuYXR0cigibWFya2VySGVpZ2h0IiwxMikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgNSBMIDEwIDEwIEwgMTAgMCB6IikuYXR0cigiY2xhc3MiLCJhcnJvd01hcmtlclBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpfSxjaXJjbGU6ZnVuY3Rpb24odCxlKXt0LmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1jaXJjbGVFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiwxMSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMSkuYXR0cigibWFya2VySGVpZ2h0IiwxMSkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLCI1IikuYXR0cigiY3kiLCI1IikuYXR0cigiciIsIjUiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIiksdC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY2lyY2xlU3RhcnQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiwtMSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMSkuYXR0cigibWFya2VySGVpZ2h0IiwxMSkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLCI1IikuYXR0cigiY3kiLCI1IikuYXR0cigiciIsIjUiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIil9LGNyb3NzOmZ1bmN0aW9uKHQsZSl7dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY3Jvc3NFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBjcm9zcyAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTEgMTEiKS5hdHRyKCJyZWZYIiwxMikuYXR0cigicmVmWSIsNS4yKS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDExKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDExKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSwxIGwgOSw5IE0gMTAsMSBsIC05LDkiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIiksdC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY3Jvc3NTdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGNyb3NzICIrZSkuYXR0cigidmlld0JveCIsIjAgMCAxMSAxMSIpLmF0dHIoInJlZlgiLC0xKS5hdHRyKCJyZWZZIiw1LjIpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTEpLmF0dHIoIm1hcmtlckhlaWdodCIsMTEpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDEgbCA5LDkgTSAxMCwxIGwgLTksOSIpLmF0dHIoImNsYXNzIiwiYXJyb3dNYXJrZXJQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKX0sYmFyYjpmdW5jdGlvbih0LGUpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWJhcmJFbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDE0KS5hdHRyKCJtYXJrZXJVbml0cyIsInN0cm9rZVdpZHRoIikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE5LDcgTDksMTMgTDE0LDcgTDksMSBaIil9fTtjb25zdCBZYj1mdW5jdGlvbih0LGUsbixyKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2piW2VdKHQsbixyKX0pKX07ZnVuY3Rpb24gemIodCl7cmV0dXJuIHpiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx6Yih0KX1jb25zdCBVYj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLHMsYyx1LGwsaD10fHwiIjtpZigib2JqZWN0Ij09PXpiKGgpJiYoaD1oWzBdKSx6bShKdigpLmZsb3djaGFydC5odG1sTGFiZWxzKSlyZXR1cm4gaD1oLnJlcGxhY2UoL1xcbnxcbi9nLCI8YnIgLz4iKSxvLmluZm8oInZlcnRleFRleHQiK2gpLGk9e2lzTm9kZTpyLGxhYmVsOmgucmVwbGFjZSgvZmFbbHJzYl0/OmZhLVtcdy1dKy9nLChmdW5jdGlvbih0KXtyZXR1cm4iPGkgY2xhc3M9JyIuY29uY2F0KHQucmVwbGFjZSgiOiIsIiAiKSwiJz48L2k+Iil9KSksbGFiZWxTdHlsZTplLnJlcGxhY2UoImZpbGw6IiwiY29sb3I6Iil9LHM9YXUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImZvcmVpZ25PYmplY3QiKSksYz1zLmFwcGVuZCgieGh0bWw6ZGl2IiksdT1pLmxhYmVsLGw9aS5pc05vZGU/Im5vZGVMYWJlbCI6ImVkZ2VMYWJlbCIsYy5odG1sKCc8c3BhbiBjbGFzcz0iJytsKyciICcrKGkubGFiZWxTdHlsZT8nc3R5bGU9IicraS5sYWJlbFN0eWxlKyciJzoiIikrIj4iK3UrIjwvc3Bhbj4iKSwoYT1pLmxhYmVsU3R5bGUpJiZjLmF0dHIoInN0eWxlIixhKSxjLnN0eWxlKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksYy5zdHlsZSgid2hpdGUtc3BhY2UiLCJub3dyYXAiKSxjLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLHMubm9kZSgpO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7Zi5zZXRBdHRyaWJ1dGUoInN0eWxlIixlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpO3ZhciBkPVtdO2Q9InN0cmluZyI9PXR5cGVvZiBoP2guc3BsaXQoL1xcbnxcbnw8YnJccypcLz8+L2dpKTpBcnJheS5pc0FycmF5KGgpP2g6W107Zm9yKHZhciBwPTA7cDxkLmxlbmd0aDtwKyspe3ZhciB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0c3BhbiIpO3kuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsInhtbDpzcGFjZSIsInByZXNlcnZlIikseS5zZXRBdHRyaWJ1dGUoImR5IiwiMWVtIikseS5zZXRBdHRyaWJ1dGUoIngiLCIwIiksbj95LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJ0aXRsZS1yb3ciKTp5LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJyb3ciKSx5LnRleHRDb250ZW50PWRbcF0udHJpbSgpLGYuYXBwZW5kQ2hpbGQoeSl9cmV0dXJuIGZ9O3ZhciBxYj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaTtpPW58fCJub2RlIGRlZmF1bHQiO3ZhciBhPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLGkpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxvPWEuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLmF0dHIoInN0eWxlIixlLmxhYmVsU3R5bGUpLHM9InN0cmluZyI9PXR5cGVvZiBlLmxhYmVsVGV4dD9lLmxhYmVsVGV4dDplLmxhYmVsVGV4dFswXSxjPW8ubm9kZSgpLmFwcGVuZENoaWxkKFViKEZtKHJDKHMpLEp2KCkpLGUubGFiZWxTdHlsZSwhMSxyKSksdT1jLmdldEJCb3goKTtpZih6bShKdigpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7dmFyIGw9Yy5jaGlsZHJlblswXSxoPWF1KGMpO3U9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoLmF0dHIoIndpZHRoIix1LndpZHRoKSxoLmF0dHIoImhlaWdodCIsdS5oZWlnaHQpfXZhciBmPWUucGFkZGluZy8yO3JldHVybiBvLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy11LndpZHRoLzIrIiwgIistdS5oZWlnaHQvMisiKSIpLHtzaGFwZVN2ZzphLGJib3g6dSxoYWxmUGFkZGluZzpmLGxhYmVsOm99fSxIYj1mdW5jdGlvbih0LGUpe3ZhciBuPWUubm9kZSgpLmdldEJCb3goKTt0LndpZHRoPW4ud2lkdGgsdC5oZWlnaHQ9bi5oZWlnaHR9O2Z1bmN0aW9uICRiKHQsZSxuLHIpe3JldHVybiB0Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LngrIiwiK3QueX0pKS5qb2luKCIgIikpLmF0dHIoImNsYXNzIiwibGFiZWwtY29udGFpbmVyIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWUvMisiLCIrbi8yKyIpIil9dmFyIFdiPXt9LFZiPXt9LEdiPXt9LFhiPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8udHJhY2UoIkluIGlzRGVjZW5kYW50IixlLCIgIix0LCIgPSAiLFZiW2VdLmluZGV4T2YodCk+PTApLFZiW2VdLmluZGV4T2YodCk+PTB9LFpiPWZ1bmN0aW9uIHQoZSxuLHIsaSl7by53YXJuKCJDb3B5aW5nIGNoaWxkcmVuIG9mICIsZSwicm9vdCIsaSwiZGF0YSIsbi5ub2RlKGUpLGkpO3ZhciBhPW4uY2hpbGRyZW4oZSl8fFtdO2UhPT1pJiZhLnB1c2goZSksby53YXJuKCJDb3B5aW5nIChub2RlcykgY2x1c3RlcklkIixlLCJub2RlcyIsYSksYS5mb3JFYWNoKChmdW5jdGlvbihhKXtpZihuLmNoaWxkcmVuKGEpLmxlbmd0aD4wKXQoYSxuLHIsaSk7ZWxzZXt2YXIgcz1uLm5vZGUoYSk7by5pbmZvKCJjcCAiLGEsIiB0byAiLGksIiB3aXRoIHBhcmVudCAiLGUpLHIuc2V0Tm9kZShhLHMpLGkhPT1uLnBhcmVudChhKSYmKG8ud2FybigiU2V0dGluZyBwYXJlbnQiLGEsbi5wYXJlbnQoYSkpLHIuc2V0UGFyZW50KGEsbi5wYXJlbnQoYSkpKSxlIT09aSYmYSE9PWU/KG8uZGVidWcoIlNldHRpbmcgcGFyZW50IixhLGUpLHIuc2V0UGFyZW50KGEsZSkpOihvLmluZm8oIkluIGNvcHkgIixlLCJyb290IixpLCJkYXRhIixuLm5vZGUoZSksaSksby5kZWJ1ZygiTm90IFNldHRpbmcgcGFyZW50IGZvciBub2RlPSIsYSwiY2x1c3RlciE9PXJvb3RJZCIsZSE9PWksIm5vZGUhPT1jbHVzdGVySWQiLGEhPT1lKSk7dmFyIGM9bi5lZGdlcyhhKTtvLmRlYnVnKCJDb3B5aW5nIEVkZ2VzIixjKSxjLmZvckVhY2goKGZ1bmN0aW9uKHQpe28uaW5mbygiRWRnZSIsdCk7dmFyIGE9bi5lZGdlKHQudix0LncsdC5uYW1lKTtvLmluZm8oIkVkZ2UgZGF0YSIsYSxpKTt0cnl7IWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uaW5mbygiRGVjZW5kYW50cyBvZiAiLGUsIiBpcyAiLFZiW2VdKSxvLmluZm8oIkVkZ2UgaXMgIix0KSx0LnYhPT1lJiZ0LnchPT1lJiYoVmJbZV0/KG8uaW5mbygiSGVyZSAiKSxWYltlXS5pbmRleE9mKHQudik+PTB8fCEhWGIodC52LGUpfHwhIVhiKHQudyxlKXx8VmJbZV0uaW5kZXhPZih0LncpPj0wKTooby5kZWJ1ZygiVGlsdCwgIixlLCIsbm90IGluIGRlY2VuZGFudHMiKSwhMSkpfSh0LGkpP28uaW5mbygiU2tpcHBpbmcgY29weSBvZiBlZGdlICIsdC52LCItLVx4M2UiLHQudywiIHJvb3RJZDogIixpLCIgY2x1c3RlcklkOiIsZSk6KG8uaW5mbygiQ29weWluZyBhcyAiLHQudix0LncsYSx0Lm5hbWUpLHIuc2V0RWRnZSh0LnYsdC53LGEsdC5uYW1lKSxvLmluZm8oIm5ld0dyYXBoIGVkZ2VzICIsci5lZGdlcygpLHIuZWRnZShyLmVkZ2VzKClbMF0pKSl9Y2F0Y2godCl7by5lcnJvcih0KX19KSl9by5kZWJ1ZygiUmVtb3Zpbmcgbm9kZSIsYSksbi5yZW1vdmVOb2RlKGEpfSkpfSxRYj1mdW5jdGlvbiB0KGUsbil7Zm9yKHZhciByPW4uY2hpbGRyZW4oZSksaT1bXS5jb25jYXQociksYT0wO2E8ci5sZW5ndGg7YSsrKUdiW3JbYV1dPWUsaT1pLmNvbmNhdCh0KHJbYV0sbikpO3JldHVybiBpfSxLYj1mdW5jdGlvbiB0KGUsbil7by50cmFjZSgiU2VhcmNoaW5nIixlKTt2YXIgcj1uLmNoaWxkcmVuKGUpO2lmKG8udHJhY2UoIlNlYXJjaGluZyBjaGlsZHJlbiBvZiBpZCAiLGUsciksci5sZW5ndGg8MSlyZXR1cm4gby50cmFjZSgiVGhpcyBpcyBhIHZhbGlkIG5vZGUiLGUpLGU7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXQocltpXSxuKTtpZihhKXJldHVybiBvLnRyYWNlKCJGb3VuZCByZXBsYWNlbWVudCBmb3IiLGUsIiA9PiAiLGEpLGF9fSxKYj1mdW5jdGlvbih0KXtyZXR1cm4gV2JbdF0mJldiW3RdLmV4dGVybmFsQ29ubmVjdGlvbnMmJldiW3RdP1diW3RdLmlkOnR9LHRfPWZ1bmN0aW9uKHQsZSl7IXR8fGU+MTA/by5kZWJ1ZygiT3B0aW5nIG91dCwgbm8gZ3JhcGggIik6KG8uZGVidWcoIk9wdGluZyBpbiwgZ3JhcGggIiksdC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuY2hpbGRyZW4oZSkubGVuZ3RoPjAmJihvLndhcm4oIkNsdXN0ZXIgaWRlbnRpZmllZCIsZSwiIFJlcGxhY2VtZW50IGlkIGluIGVkZ2VzOiAiLEtiKGUsdCkpLFZiW2VdPVFiKGUsdCksV2JbZV09e2lkOktiKGUsdCksY2x1c3RlckRhdGE6dC5ub2RlKGUpfSl9KSksdC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuY2hpbGRyZW4oZSkscj10LmVkZ2VzKCk7bi5sZW5ndGg+MD8oby5kZWJ1ZygiQ2x1c3RlciBpZGVudGlmaWVkIixlLFZiKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudiE9PWUmJnQudyE9PWUmJlhiKHQudixlKV5YYih0LncsZSkmJihvLndhcm4oIkVkZ2U6ICIsdCwiIGxlYXZlcyBjbHVzdGVyICIsZSksby53YXJuKCJEZWNlbmRhbnRzIG9mIFhYWCAiLGUsIjogIixWYltlXSksV2JbZV0uZXh0ZXJuYWxDb25uZWN0aW9ucz0hMCl9KSkpOm8uZGVidWcoIk5vdCBhIGNsdXN0ZXIgIixlLFZiKX0pKSx0LmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO28ud2FybigiRWRnZSAiK2UudisiIC0+ICIrZS53KyI6ICIrSlNPTi5zdHJpbmdpZnkoZSkpLG8ud2FybigiRWRnZSAiK2UudisiIC0+ICIrZS53KyI6ICIrSlNPTi5zdHJpbmdpZnkodC5lZGdlKGUpKSk7dmFyIHI9ZS52LGk9ZS53O28ud2FybigiRml4IFhYWCIsV2IsImlkczoiLGUudixlLncsIlRyYW5zbGF0ZWluZzogIixXYltlLnZdLCIgLS0tICIsV2JbZS53XSksKFdiW2Uudl18fFdiW2Uud10pJiYoby53YXJuKCJGaXhpbmcgYW5kIHRyaXhpbmcgLSByZW1vdmluZyBYWFgiLGUudixlLncsZS5uYW1lKSxyPUpiKGUudiksaT1KYihlLncpLHQucmVtb3ZlRWRnZShlLnYsZS53LGUubmFtZSksciE9PWUudiYmKG4uZnJvbUNsdXN0ZXI9ZS52KSxpIT09ZS53JiYobi50b0NsdXN0ZXI9ZS53KSxvLndhcm4oIkZpeCBSZXBsYWNpbmcgd2l0aCBYWFgiLHIsaSxlLm5hbWUpLHQuc2V0RWRnZShyLGksbixlLm5hbWUpKX0pKSxvLndhcm4oIkFkanVzdGVkIEdyYXBoIix3YigpLmpzb24ud3JpdGUodCkpLGVfKHQsMCksby50cmFjZShXYikpfSxlXz1mdW5jdGlvbiB0KGUsbil7aWYoby53YXJuKCJleHRyYWN0b3IgLSAiLG4sd2IoKS5qc29uLndyaXRlKGUpLGUuY2hpbGRyZW4oIkQiKSksbj4xMClvLmVycm9yKCJCYWlsaW5nIG91dCIpO2Vsc2V7Zm9yKHZhciByPWUubm9kZXMoKSxpPSExLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9clthXSxjPWUuY2hpbGRyZW4ocyk7aT1pfHxjLmxlbmd0aD4wfWlmKGkpe28uZGVidWcoIk5vZGVzID0gIixyLG4pO2Zvcih2YXIgdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgbD1yW3VdO2lmKG8uZGVidWcoIkV4dHJhY3Rpbmcgbm9kZSIsbCxXYixXYltsXSYmIVdiW2xdLmV4dGVybmFsQ29ubmVjdGlvbnMsIWUucGFyZW50KGwpLGUubm9kZShsKSxlLmNoaWxkcmVuKCJEIiksIiBEZXB0aCAiLG4pLFdiW2xdKWlmKCFXYltsXS5leHRlcm5hbENvbm5lY3Rpb25zJiZlLmNoaWxkcmVuKGwpJiZlLmNoaWxkcmVuKGwpLmxlbmd0aD4wKXtvLndhcm4oIkNsdXN0ZXIgd2l0aG91dCBleHRlcm5hbCBjb25uZWN0aW9ucywgd2l0aG91dCBhIHBhcmVudCBhbmQgd2l0aCBjaGlsZHJlbiIsbCxuKTt2YXIgaD0iVEIiPT09ZS5ncmFwaCgpLnJhbmtkaXI/IkxSIjoiVEIiO1diW2xdJiZXYltsXS5jbHVzdGVyRGF0YSYmV2JbbF0uY2x1c3RlckRhdGEuZGlyJiYoaD1XYltsXS5jbHVzdGVyRGF0YS5kaXIsby53YXJuKCJGaXhpbmcgZGlyIixXYltsXS5jbHVzdGVyRGF0YS5kaXIsaCkpO3ZhciBmPW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOmgsbm9kZXNlcDo1MCxyYW5rc2VwOjUwLG1hcmdpbng6OCxtYXJnaW55Ojh9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpO28ud2FybigiT2xkIGdyYXBoIGJlZm9yZSBjb3B5Iix3YigpLmpzb24ud3JpdGUoZSkpLFpiKGwsZSxmLGwpLGUuc2V0Tm9kZShsLHtjbHVzdGVyTm9kZTohMCxpZDpsLGNsdXN0ZXJEYXRhOldiW2xdLmNsdXN0ZXJEYXRhLGxhYmVsVGV4dDpXYltsXS5sYWJlbFRleHQsZ3JhcGg6Zn0pLG8ud2FybigiTmV3IGdyYXBoIGFmdGVyIGNvcHkgbm9kZTogKCIsbCwiKSIsd2IoKS5qc29uLndyaXRlKGYpKSxvLmRlYnVnKCJPbGQgZ3JhcGggYWZ0ZXIgY29weSIsd2IoKS5qc29uLndyaXRlKGUpKX1lbHNlIG8ud2FybigiQ2x1c3RlciAqKiAiLGwsIiAqKm5vdCBtZWV0aW5nIHRoZSBjcml0ZXJpYSAhZXh0ZXJuYWxDb25uZWN0aW9uczoiLCFXYltsXS5leHRlcm5hbENvbm5lY3Rpb25zLCIgbm8gcGFyZW50OiAiLCFlLnBhcmVudChsKSwiIGNoaWxkcmVuICIsZS5jaGlsZHJlbihsKSYmZS5jaGlsZHJlbihsKS5sZW5ndGg+MCxlLmNoaWxkcmVuKCJEIiksbiksby5kZWJ1ZyhXYik7ZWxzZSBvLmRlYnVnKCJOb3QgYSBjbHVzdGVyIixsLG4pfXI9ZS5ub2RlcygpLG8ud2FybigiTmV3IGxpc3Qgb2Ygbm9kZXMiLHIpO2Zvcih2YXIgZD0wO2Q8ci5sZW5ndGg7ZCsrKXt2YXIgcD1yW2RdLHk9ZS5ub2RlKHApO28ud2FybigiIE5vdyBuZXh0IGxldmVsIixwLHkpLHkuY2x1c3Rlck5vZGUmJnQoeS5ncmFwaCxuKzEpfX1lbHNlIG8uZGVidWcoIkRvbmUsIG5vIG5vZGUgaGFzIGNoaWxkcmVuIixlLm5vZGVzKCkpfX0sbl89ZnVuY3Rpb24gdChlLG4pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm5bXTt2YXIgcj1PYmplY3QuYXNzaWduKG4pO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPWUuY2hpbGRyZW4obiksYT10KGUsaSk7cj1yLmNvbmNhdChhKX0pKSxyfSxyXz1mdW5jdGlvbih0KXtyZXR1cm4gbl8odCx0LmNoaWxkcmVuKCkpfSxpXz1uKDM4NDEpO2NvbnN0IGFfPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQueCxhPXQueSxvPWktci54LHM9YS1yLnksYz1NYXRoLnNxcnQoZSplKnMqcytuKm4qbypvKSx1PU1hdGguYWJzKGUqbipvL2MpO3IueDxpJiYodT0tdSk7dmFyIGw9TWF0aC5hYnMoZSpuKnMvYyk7cmV0dXJuIHIueTxhJiYobD0tbCkse3g6aSt1LHk6YStsfX07ZnVuY3Rpb24gb18odCxlKXtyZXR1cm4gdCplPjB9Y29uc3Qgc189ZnVuY3Rpb24odCxlLG4scil7dmFyIGksYSxvLHMsYyx1LGwsaCxmLGQscCx5LGc7aWYoaT1lLnktdC55LG89dC54LWUueCxjPWUueCp0LnktdC54KmUueSxmPWkqbi54K28qbi55K2MsZD1pKnIueCtvKnIueStjLCEoMCE9PWYmJjAhPT1kJiZvXyhmLGQpfHwoYT1yLnktbi55LHM9bi54LXIueCx1PXIueCpuLnktbi54KnIueSxsPWEqdC54K3MqdC55K3UsaD1hKmUueCtzKmUueSt1LDAhPT1sJiYwIT09aCYmb18obCxoKXx8MD09KHA9aSpzLWEqbykpKSlyZXR1cm4geT1NYXRoLmFicyhwLzIpLHt4OihnPW8qdS1zKmMpPDA/KGcteSkvcDooZyt5KS9wLHk6KGc9YSpjLWkqdSk8MD8oZy15KS9wOihnK3kpL3B9fSxjXz1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaT10LngsYT10Lnksbz1lLngtaSxzPWUueS1hLGM9dC53aWR0aC8yLHU9dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5hYnMocykqYz5NYXRoLmFicyhvKSp1PyhzPDAmJih1PS11KSxuPTA9PT1zPzA6dSpvL3Mscj11KToobzwwJiYoYz0tYyksbj1jLHI9MD09PW8/MDpjKnMvbykse3g6aStuLHk6YStyfX0sdV89KG4ubihpXykoKSxmdW5jdGlvbih0LGUsbil7cmV0dXJuIGFfKHQsZSxlLG4pfSksbF89ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQueCxpPXQueSxhPVtdLG89TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOyJmdW5jdGlvbiI9PXR5cGVvZiBlLmZvckVhY2g/ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtvPU1hdGgubWluKG8sdC54KSxzPU1hdGgubWluKHMsdC55KX0pKToobz1NYXRoLm1pbihvLGUueCkscz1NYXRoLm1pbihzLGUueSkpO2Zvcih2YXIgYz1yLXQud2lkdGgvMi1vLHU9aS10LmhlaWdodC8yLXMsbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgaD1lW2xdLGY9ZVtsPGUubGVuZ3RoLTE/bCsxOjBdLGQ9c18odCxuLHt4OmMraC54LHk6dStoLnl9LHt4OmMrZi54LHk6dStmLnl9KTtkJiZhLnB1c2goZCl9cmV0dXJuIGEubGVuZ3RoPyhhLmxlbmd0aD4xJiZhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LW4ueCxpPXQueS1uLnksYT1NYXRoLnNxcnQocipyK2kqaSksbz1lLngtbi54LHM9ZS55LW4ueSxjPU1hdGguc3FydChvKm8rcypzKTtyZXR1cm4gYTxjPy0xOmE9PT1jPzA6MX0pKSxhWzBdKTp0fSxoXz1jXztmdW5jdGlvbiBmXyh0KXtyZXR1cm4gZl89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGZfKHQpfXZhciBkXz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCIpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxpPTcwLGE9MTA7IkxSIj09PW4mJihpPTEwLGE9NzApO3ZhciBvPXIuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTEqaS8yKS5hdHRyKCJ5IiwtMSphLzIpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLGEpLmF0dHIoImNsYXNzIiwiZm9yay1qb2luIik7cmV0dXJuIEhiKGUsbyksZS5oZWlnaHQ9ZS5oZWlnaHQrZS5wYWRkaW5nLzIsZS53aWR0aD1lLndpZHRoK2UucGFkZGluZy8yLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBoXyhlLHQpfSxyfSxwXz17cXVlc3Rpb246ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZysoaS5oZWlnaHQrZS5wYWRkaW5nKSxzPVt7eDphLzIseTowfSx7eDphLHk6LWEvMn0se3g6YS8yLHk6LWF9LHt4OjAseTotYS8yfV07by5pbmZvKCJRdWVzdGlvbiBtYWluIChDaXJjbGUpIik7dmFyIGM9JGIocixhLGEscyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLEhiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG8ud2FybigiSW50ZXJzZWN0IGNhbGxlZCIpLGxfKGUscyx0KX0scn0scmVjdDpmdW5jdGlvbih0LGUpe3ZhciBuPXFiKHQsZSwibm9kZSAiK2UuY2xhc3NlcywhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9bi5oYWxmUGFkZGluZztvLnRyYWNlKCJDbGFzc2VzID0gIixlLmNsYXNzZXMpO3ZhciBzPXIuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIiksYz1pLndpZHRoK2UucGFkZGluZyx1PWkuaGVpZ2h0K2UucGFkZGluZztpZihzLmF0dHIoImNsYXNzIiwiYmFzaWMgbGFiZWwtY29udGFpbmVyIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsLWkud2lkdGgvMi1hKS5hdHRyKCJ5IiwtaS5oZWlnaHQvMi1hKS5hdHRyKCJ3aWR0aCIsYykuYXR0cigiaGVpZ2h0Iix1KSxlLnByb3BzKXt2YXIgbD1uZXcgU2V0KE9iamVjdC5rZXlzKGUucHJvcHMpKTtlLnByb3BzLmJvcmRlcnMmJihmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1bXSxhPWZ1bmN0aW9uKHQpe2kucHVzaCh0KSxpLnB1c2goMCl9LHM9ZnVuY3Rpb24odCl7aS5wdXNoKDApLGkucHVzaCh0KX07ZS5pbmNsdWRlcygidCIpPyhvLmRlYnVnKCJhZGQgdG9wIGJvcmRlciIpLGEobikpOnMobiksZS5pbmNsdWRlcygiciIpPyhvLmRlYnVnKCJhZGQgcmlnaHQgYm9yZGVyIiksYShyKSk6cyhyKSxlLmluY2x1ZGVzKCJiIik/KG8uZGVidWcoImFkZCBib3R0b20gYm9yZGVyIiksYShuKSk6cyhuKSxlLmluY2x1ZGVzKCJsIik/KG8uZGVidWcoImFkZCBsZWZ0IGJvcmRlciIpLGEocikpOnMociksdC5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixpLmpvaW4oIiAiKSl9KHMsZS5wcm9wcy5ib3JkZXJzLGMsdSksbC5kZWxldGUoImJvcmRlcnMiKSksbC5mb3JFYWNoKChmdW5jdGlvbih0KXtvLndhcm4oIlVua25vd24gbm9kZSBwcm9wZXJ0eSAiLmNvbmNhdCh0KSl9KSl9cmV0dXJuIEhiKGUscyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGhfKGUsdCl9LHJ9LHJlY3RXaXRoVGl0bGU6ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWUuY2xhc3Nlcz8ibm9kZSAiK2UuY2xhc3Nlczoibm9kZSBkZWZhdWx0Ijt2YXIgcixpPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLG4pLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxhPWkuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikscz1pLmluc2VydCgibGluZSIpLGM9aS5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImxhYmVsIiksdT1lLmxhYmVsVGV4dC5mbGF0P2UubGFiZWxUZXh0LmZsYXQoKTplLmxhYmVsVGV4dDtyPSJvYmplY3QiPT09Zl8odSk/dVswXTp1LG8uaW5mbygiTGFiZWwgdGV4dCBhYmM3OSIscix1LCJvYmplY3QiPT09Zl8odSkpO3ZhciBsPWMubm9kZSgpLmFwcGVuZENoaWxkKFViKHIsZS5sYWJlbFN0eWxlLCEwLCEwKSksaD17d2lkdGg6MCxoZWlnaHQ6MH07aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBmPWwuY2hpbGRyZW5bMF0sZD1hdShsKTtoPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZC5hdHRyKCJ3aWR0aCIsaC53aWR0aCksZC5hdHRyKCJoZWlnaHQiLGguaGVpZ2h0KX1vLmluZm8oIlRleHQgMiIsdSk7dmFyIHA9dS5zbGljZSgxLHUubGVuZ3RoKSx5PWwuZ2V0QkJveCgpLGc9Yy5ub2RlKCkuYXBwZW5kQ2hpbGQoVWIocC5qb2luP3Auam9pbigiPGJyLz4iKTpwLGUubGFiZWxTdHlsZSwhMCwhMCkpO2lmKHptKEp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgbT1nLmNoaWxkcmVuWzBdLHY9YXUoZyk7aD1tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHYuYXR0cigid2lkdGgiLGgud2lkdGgpLHYuYXR0cigiaGVpZ2h0IixoLmhlaWdodCl9dmFyIGI9ZS5wYWRkaW5nLzI7cmV0dXJuIGF1KGcpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoaC53aWR0aD55LndpZHRoPzA6KHkud2lkdGgtaC53aWR0aCkvMikrIiwgIisoeS5oZWlnaHQrYis1KSsiKSIpLGF1KGwpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoaC53aWR0aDx5LndpZHRoPzA6LSh5LndpZHRoLWgud2lkdGgpLzIpKyIsIDApIiksaD1jLm5vZGUoKS5nZXRCQm94KCksYy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistaC53aWR0aC8yKyIsICIrKC1oLmhlaWdodC8yLWIrMykrIikiKSxhLmF0dHIoImNsYXNzIiwib3V0ZXIgdGl0bGUtc3RhdGUiKS5hdHRyKCJ4IiwtaC53aWR0aC8yLWIpLmF0dHIoInkiLC1oLmhlaWdodC8yLWIpLmF0dHIoIndpZHRoIixoLndpZHRoK2UucGFkZGluZykuYXR0cigiaGVpZ2h0IixoLmhlaWdodCtlLnBhZGRpbmcpLHMuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDEiLC1oLndpZHRoLzItYikuYXR0cigieDIiLGgud2lkdGgvMitiKS5hdHRyKCJ5MSIsLWguaGVpZ2h0LzItYit5LmhlaWdodCtiKS5hdHRyKCJ5MiIsLWguaGVpZ2h0LzItYit5LmhlaWdodCtiKSxIYihlLGEpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBoXyhlLHQpfSxpfSxjaG9pY2U6ZnVuY3Rpb24odCxlKXt2YXIgbj10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibm9kZSBkZWZhdWx0IikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpO3JldHVybiBuLmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsW3t4OjAseToxNH0se3g6MTQseTowfSx7eDowLHk6LTE0fSx7eDotMTQseTowfV0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54KyIsIit0Lnl9KSkuam9pbigiICIpKS5hdHRyKCJjbGFzcyIsInN0YXRlLXN0YXJ0IikuYXR0cigiciIsNykuYXR0cigid2lkdGgiLDI4KS5hdHRyKCJoZWlnaHQiLDI4KSxlLndpZHRoPTI4LGUuaGVpZ2h0PTI4LGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB1XyhlLDE0LHQpfSxufSxjaXJjbGU6ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1uLmhhbGZQYWRkaW5nLHM9ci5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBzLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoInIiLGkud2lkdGgvMithKS5hdHRyKCJ3aWR0aCIsaS53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsaS5oZWlnaHQrZS5wYWRkaW5nKSxvLmluZm8oIkNpcmNsZSBtYWluIiksSGIoZSxzKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gby5pbmZvKCJDaXJjbGUgaW50ZXJzZWN0IixlLGkud2lkdGgvMithLHQpLHVfKGUsaS53aWR0aC8yK2EsdCl9LHJ9LHN0YWRpdW06ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLmhlaWdodCtlLnBhZGRpbmcsbz1pLndpZHRoK2EvNCtlLnBhZGRpbmcscz1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsYS8yKS5hdHRyKCJyeSIsYS8yKS5hdHRyKCJ4Iiwtby8yKS5hdHRyKCJ5IiwtYS8yKS5hdHRyKCJ3aWR0aCIsbykuYXR0cigiaGVpZ2h0IixhKTtyZXR1cm4gSGIoZSxzKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gaF8oZSx0KX0scn0saGV4YWdvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXFiKHQsZSx2b2lkIDAsITApLHI9bi5zaGFwZVN2ZyxpPW4uYmJveCxhPWkuaGVpZ2h0K2UucGFkZGluZyxvPWEvNCxzPWkud2lkdGgrMipvK2UucGFkZGluZyxjPVt7eDpvLHk6MH0se3g6cy1vLHk6MH0se3g6cyx5Oi1hLzJ9LHt4OnMtbyx5Oi1hfSx7eDpvLHk6LWF9LHt4OjAseTotYS8yfV0sdT0kYihyLHMsYSxjKTtyZXR1cm4gdS5hdHRyKCJzdHlsZSIsZS5zdHlsZSksSGIoZSx1KSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gbF8oZSxjLHQpfSxyfSxyZWN0X2xlZnRfaW52X2Fycm93OmZ1bmN0aW9uKHQsZSl7dmFyIG49cWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6LW8vMix5OjB9LHt4OmEseTowfSx7eDphLHk6LW99LHt4Oi1vLzIseTotb30se3g6MCx5Oi1vLzJ9XTtyZXR1cm4gJGIocixhLG8scykuYXR0cigic3R5bGUiLGUuc3R5bGUpLGUud2lkdGg9YStvLGUuaGVpZ2h0PW8sZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGxfKGUscyx0KX0scn0sbGVhbl9yaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuPXFiKHQsZSx2b2lkIDAsITApLHI9bi5zaGFwZVN2ZyxpPW4uYmJveCxhPWkud2lkdGgrZS5wYWRkaW5nLG89aS5oZWlnaHQrZS5wYWRkaW5nLHM9W3t4Oi0yKm8vNix5OjB9LHt4OmEtby82LHk6MH0se3g6YSsyKm8vNix5Oi1vfSx7eDpvLzYseTotb31dLGM9JGIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLEhiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGxfKGUscyx0KX0scn0sbGVhbl9sZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49cWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MipvLzYseTowfSx7eDphK28vNix5OjB9LHt4OmEtMipvLzYseTotb30se3g6LW8vNix5Oi1vfV0sYz0kYihyLGEsbyxzKTtyZXR1cm4gYy5hdHRyKCJzdHlsZSIsZS5zdHlsZSksSGIoZSxjKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gbF8oZSxzLHQpfSxyfSx0cmFwZXpvaWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWkuaGVpZ2h0K2UucGFkZGluZyxzPVt7eDotMipvLzYseTowfSx7eDphKzIqby82LHk6MH0se3g6YS1vLzYseTotb30se3g6by82LHk6LW99XSxjPSRiKHIsYSxvLHMpO3JldHVybiBjLmF0dHIoInN0eWxlIixlLnN0eWxlKSxIYihlLGMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBsXyhlLHMsdCl9LHJ9LGludl90cmFwZXpvaWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWkuaGVpZ2h0K2UucGFkZGluZyxzPVt7eDpvLzYseTowfSx7eDphLW8vNix5OjB9LHt4OmErMipvLzYseTotb30se3g6LTIqby82LHk6LW99XSxjPSRiKHIsYSxvLHMpO3JldHVybiBjLmF0dHIoInN0eWxlIixlLnN0eWxlKSxIYihlLGMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBsXyhlLHMsdCl9LHJ9LHJlY3RfcmlnaHRfaW52X2Fycm93OmZ1bmN0aW9uKHQsZSl7dmFyIG49cWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MCx5OjB9LHt4OmErby8yLHk6MH0se3g6YSx5Oi1vLzJ9LHt4OmErby8yLHk6LW99LHt4OjAseTotb31dLGM9JGIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLEhiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGxfKGUscyx0KX0scn0sY3lsaW5kZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1xYih0LGUsdm9pZCAwLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1pLndpZHRoK2UucGFkZGluZyxvPWEvMixzPW8vKDIuNSthLzUwKSxjPWkuaGVpZ2h0K3MrZS5wYWRkaW5nLHU9Ik0gMCwiK3MrIiBhICIrbysiLCIrcysiIDAsMCwwICIrYSsiIDAgYSAiK28rIiwiK3MrIiAwLDAsMCAiKy1hKyIgMCBsIDAsIitjKyIgYSAiK28rIiwiK3MrIiAwLDAsMCAiK2ErIiAwIGwgMCwiKy1jLGw9ci5hdHRyKCJsYWJlbC1vZmZzZXQteSIscykuaW5zZXJ0KCJwYXRoIiwiOmZpcnN0LWNoaWxkIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoImQiLHUpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1hLzIrIiwiKy0oYy8yK3MpKyIpIik7cmV0dXJuIEhiKGUsbCksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7dmFyIG49aF8oZSx0KSxyPW4ueC1lLng7aWYoMCE9byYmKE1hdGguYWJzKHIpPGUud2lkdGgvMnx8TWF0aC5hYnMocik9PWUud2lkdGgvMiYmTWF0aC5hYnMobi55LWUueSk+ZS5oZWlnaHQvMi1zKSl7dmFyIGk9cypzKigxLXIqci8obypvKSk7MCE9aSYmKGk9TWF0aC5zcXJ0KGkpKSxpPXMtaSx0LnktZS55PjAmJihpPS1pKSxuLnkrPWl9cmV0dXJuIG59LHJ9LHN0YXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCIpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxyPW4uaW5zZXJ0KCJjaXJjbGUiLCI6Zmlyc3QtY2hpbGQiKTtyZXR1cm4gci5hdHRyKCJjbGFzcyIsInN0YXRlLXN0YXJ0IikuYXR0cigiciIsNykuYXR0cigid2lkdGgiLDE0KS5hdHRyKCJoZWlnaHQiLDE0KSxIYihlLHIpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB1XyhlLDcsdCl9LG59LGVuZDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlIGRlZmF1bHQiKS5hdHRyKCJpZCIsZS5kb21JZHx8ZS5pZCkscj1uLmluc2VydCgiY2lyY2xlIiwiOmZpcnN0LWNoaWxkIiksaT1uLmluc2VydCgiY2lyY2xlIiwiOmZpcnN0LWNoaWxkIik7cmV0dXJuIGkuYXR0cigiY2xhc3MiLCJzdGF0ZS1zdGFydCIpLmF0dHIoInIiLDcpLmF0dHIoIndpZHRoIiwxNCkuYXR0cigiaGVpZ2h0IiwxNCksci5hdHRyKCJjbGFzcyIsInN0YXRlLWVuZCIpLmF0dHIoInIiLDUpLmF0dHIoIndpZHRoIiwxMCkuYXR0cigiaGVpZ2h0IiwxMCksSGIoZSxpKSxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gdV8oZSw3LHQpfSxufSxub3RlOmZ1bmN0aW9uKHQsZSl7dmFyIG49cWIodCxlLCJub2RlICIrZS5jbGFzc2VzLCEwKSxyPW4uc2hhcGVTdmcsaT1uLmJib3gsYT1uLmhhbGZQYWRkaW5nO28uaW5mbygiQ2xhc3NlcyA9ICIsZS5jbGFzc2VzKTt2YXIgcz1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBzLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsLWkud2lkdGgvMi1hKS5hdHRyKCJ5IiwtaS5oZWlnaHQvMi1hKS5hdHRyKCJ3aWR0aCIsaS53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsaS5oZWlnaHQrZS5wYWRkaW5nKSxIYihlLHMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBoXyhlLHQpfSxyfSxzdWJyb3V0aW5lOmZ1bmN0aW9uKHQsZSl7dmFyIG49cWIodCxlLHZvaWQgMCwhMCkscj1uLnNoYXBlU3ZnLGk9bi5iYm94LGE9aS53aWR0aCtlLnBhZGRpbmcsbz1pLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MCx5OjB9LHt4OmEseTowfSx7eDphLHk6LW99LHt4OjAseTotb30se3g6MCx5OjB9LHt4Oi04LHk6MH0se3g6YSs4LHk6MH0se3g6YSs4LHk6LW99LHt4Oi04LHk6LW99LHt4Oi04LHk6MH1dLGM9JGIocixhLG8scyk7cmV0dXJuIGMuYXR0cigic3R5bGUiLGUuc3R5bGUpLEhiKGUsYyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGxfKGUscyx0KX0scn0sZm9yazpkXyxqb2luOmRfLGNsYXNzX2JveDpmdW5jdGlvbih0LGUpe3ZhciBuLHI9ZS5wYWRkaW5nLzI7bj1lLmNsYXNzZXM/Im5vZGUgIitlLmNsYXNzZXM6Im5vZGUgZGVmYXVsdCI7dmFyIGk9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsbikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpLGE9aS5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxvPWkuaW5zZXJ0KCJsaW5lIikscz1pLmluc2VydCgibGluZSIpLGM9MCx1PTQsbD1pLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxoPTAsZj1lLmNsYXNzRGF0YS5hbm5vdGF0aW9ucyYmZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnNbMF0sZD1lLmNsYXNzRGF0YS5hbm5vdGF0aW9uc1swXT8iwqsiK2UuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdKyLCuyI6IiIscD1sLm5vZGUoKS5hcHBlbmRDaGlsZChVYihkLGUubGFiZWxTdHlsZSwhMCwhMCkpLHk9cC5nZXRCQm94KCk7aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBnPXAuY2hpbGRyZW5bMF0sbT1hdShwKTt5PWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbS5hdHRyKCJ3aWR0aCIseS53aWR0aCksbS5hdHRyKCJoZWlnaHQiLHkuaGVpZ2h0KX1lLmNsYXNzRGF0YS5hbm5vdGF0aW9uc1swXSYmKHUrPXkuaGVpZ2h0KzQsYys9eS53aWR0aCk7dmFyIHY9ZS5jbGFzc0RhdGEuaWQ7dm9pZCAwIT09ZS5jbGFzc0RhdGEudHlwZSYmIiIhPT1lLmNsYXNzRGF0YS50eXBlJiYoSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscz92Kz0iJmx0OyIrZS5jbGFzc0RhdGEudHlwZSsiJmd0OyI6dis9IjwiK2UuY2xhc3NEYXRhLnR5cGUrIj4iKTt2YXIgYj1sLm5vZGUoKS5hcHBlbmRDaGlsZChVYih2LGUubGFiZWxTdHlsZSwhMCwhMCkpO2F1KGIpLmF0dHIoImNsYXNzIiwiY2xhc3NUaXRsZSIpO3ZhciBfPWIuZ2V0QkJveCgpO2lmKHptKEp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgeD1iLmNoaWxkcmVuWzBdLHc9YXUoYik7Xz14LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHcuYXR0cigid2lkdGgiLF8ud2lkdGgpLHcuYXR0cigiaGVpZ2h0IixfLmhlaWdodCl9dSs9Xy5oZWlnaHQrNCxfLndpZHRoPmMmJihjPV8ud2lkdGgpO3ZhciBrPVtdO2UuY2xhc3NEYXRhLm1lbWJlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49Q2IodCkscj1uLmRpc3BsYXlUZXh0O0p2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMmJihyPXIucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikpO3ZhciBpPWwubm9kZSgpLmFwcGVuZENoaWxkKFViKHIsbi5jc3NTdHlsZT9uLmNzc1N0eWxlOmUubGFiZWxTdHlsZSwhMCwhMCkpLGE9aS5nZXRCQm94KCk7aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBvPWkuY2hpbGRyZW5bMF0scz1hdShpKTthPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscy5hdHRyKCJ3aWR0aCIsYS53aWR0aCkscy5hdHRyKCJoZWlnaHQiLGEuaGVpZ2h0KX1hLndpZHRoPmMmJihjPWEud2lkdGgpLHUrPWEuaGVpZ2h0KzQsay5wdXNoKGkpfSkpLHUrPTg7dmFyIFQ9W107aWYoZS5jbGFzc0RhdGEubWV0aG9kcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1DYih0KSxyPW4uZGlzcGxheVRleHQ7SnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscyYmKHI9ci5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSk7dmFyIGk9bC5ub2RlKCkuYXBwZW5kQ2hpbGQoVWIocixuLmNzc1N0eWxlP24uY3NzU3R5bGU6ZS5sYWJlbFN0eWxlLCEwLCEwKSksYT1pLmdldEJCb3goKTtpZih6bShKdigpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7dmFyIG89aS5jaGlsZHJlblswXSxzPWF1KGkpO2E9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzLmF0dHIoIndpZHRoIixhLndpZHRoKSxzLmF0dHIoImhlaWdodCIsYS5oZWlnaHQpfWEud2lkdGg+YyYmKGM9YS53aWR0aCksdSs9YS5oZWlnaHQrNCxULnB1c2goaSl9KSksdSs9OCxmKXt2YXIgRT0oYy15LndpZHRoKS8yO2F1KHApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqYy8yK0UpKyIsICIrLTEqdS8yKyIpIiksaD15LmhlaWdodCs0fXZhciBDPShjLV8ud2lkdGgpLzI7cmV0dXJuIGF1KGIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqYy8yK0MpKyIsICIrKC0xKnUvMitoKSsiKSIpLGgrPV8uaGVpZ2h0KzQsby5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4MSIsLWMvMi1yKS5hdHRyKCJ4MiIsYy8yK3IpLmF0dHIoInkxIiwtdS8yLXIrOCtoKS5hdHRyKCJ5MiIsLXUvMi1yKzgraCksaCs9OCxrLmZvckVhY2goKGZ1bmN0aW9uKHQpe2F1KHQpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIistYy8yKyIsICIrKC0xKnUvMitoKzQpKyIpIiksaCs9Xy5oZWlnaHQrNH0pKSxoKz04LHMuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDEiLC1jLzItcikuYXR0cigieDIiLGMvMityKS5hdHRyKCJ5MSIsLXUvMi1yKzgraCkuYXR0cigieTIiLC11LzItcis4K2gpLGgrPTgsVC5mb3JFYWNoKChmdW5jdGlvbih0KXthdSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoICIrLWMvMisiLCAiKygtMSp1LzIraCkrIikiKSxoKz1fLmhlaWdodCs0fSkpLGEuYXR0cigiY2xhc3MiLCJvdXRlciB0aXRsZS1zdGF0ZSIpLmF0dHIoIngiLC1jLzItcikuYXR0cigieSIsLXUvMi1yKS5hdHRyKCJ3aWR0aCIsYytlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsdStlLnBhZGRpbmcpLEhiKGUsYSksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGhfKGUsdCl9LGl9fSx5Xz17fSxnXz1mdW5jdGlvbih0KXt2YXIgZT15X1t0LmlkXTtvLnRyYWNlKCJUcmFuc2Zvcm1pbmcgbm9kZSIsdC5kaWZmLHQsInRyYW5zbGF0ZSgiKyh0LngtdC53aWR0aC8yLTUpKyIsICIrdC53aWR0aC8yKyIpIik7dmFyIG49dC5kaWZmfHwwO3JldHVybiB0LmNsdXN0ZXJOb2RlP2UuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHQueCtuLXQud2lkdGgvMikrIiwgIisodC55LXQuaGVpZ2h0LzItOCkrIikiKTplLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QueCsiLCAiK3QueSsiKSIpLG59LG1fPXtyZWN0OmZ1bmN0aW9uKHQsZSl7by50cmFjZSgiQ3JlYXRpbmcgc3ViZ3JhcGggcmVjdCBmb3IgIixlLmlkLGUpO3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyIisoZS5jbGFzcz8iICIrZS5jbGFzczoiIikpLmF0dHIoImlkIixlLmlkKSxyPW4uaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIiksaT1uLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiY2x1c3Rlci1sYWJlbCIpLGE9aS5ub2RlKCkuYXBwZW5kQ2hpbGQoVWIoZS5sYWJlbFRleHQsZS5sYWJlbFN0eWxlLHZvaWQgMCwhMCkpLHM9YS5nZXRCQm94KCk7aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBjPWEuY2hpbGRyZW5bMF0sdT1hdShhKTtzPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdS5hdHRyKCJ3aWR0aCIscy53aWR0aCksdS5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KX12YXIgbD0wKmUucGFkZGluZyxoPWwvMixmPWUud2lkdGg8PXMud2lkdGgrbD9zLndpZHRoK2w6ZS53aWR0aDtlLndpZHRoPD1zLndpZHRoK2w/ZS5kaWZmPShzLndpZHRoLWUud2lkdGgpLzI6ZS5kaWZmPS1lLnBhZGRpbmcvMixvLnRyYWNlKCJEYXRhICIsZSxKU09OLnN0cmluZ2lmeShlKSksci5hdHRyKCJzdHlsZSIsZS5zdHlsZSkuYXR0cigicngiLGUucngpLmF0dHIoInJ5IixlLnJ5KS5hdHRyKCJ4IixlLngtZi8yKS5hdHRyKCJ5IixlLnktZS5oZWlnaHQvMi1oKS5hdHRyKCJ3aWR0aCIsZikuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsKSxpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhlLngtcy53aWR0aC8yKSsiLCAiKyhlLnktZS5oZWlnaHQvMitlLnBhZGRpbmcvMykrIikiKTt2YXIgZD1yLm5vZGUoKS5nZXRCQm94KCk7cmV0dXJuIGUud2lkdGg9ZC53aWR0aCxlLmhlaWdodD1kLmhlaWdodCxlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gY18oZSx0KX0sbn0scm91bmRlZFdpdGhUaXRsZTpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLGUuY2xhc3NlcykuYXR0cigiaWQiLGUuaWQpLHI9bi5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxpPW4uaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyLWxhYmVsIiksYT1uLmFwcGVuZCgicmVjdCIpLG89aS5ub2RlKCkuYXBwZW5kQ2hpbGQoVWIoZS5sYWJlbFRleHQsZS5sYWJlbFN0eWxlLHZvaWQgMCwhMCkpLHM9by5nZXRCQm94KCk7aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBjPW8uY2hpbGRyZW5bMF0sdT1hdShvKTtzPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdS5hdHRyKCJ3aWR0aCIscy53aWR0aCksdS5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KX1zPW8uZ2V0QkJveCgpO3ZhciBsPTAqZS5wYWRkaW5nLGg9bC8yLGY9ZS53aWR0aDw9cy53aWR0aCtlLnBhZGRpbmc/cy53aWR0aCtlLnBhZGRpbmc6ZS53aWR0aDtlLndpZHRoPD1zLndpZHRoK2UucGFkZGluZz9lLmRpZmY9KHMud2lkdGgrMCplLnBhZGRpbmctZS53aWR0aCkvMjplLmRpZmY9LWUucGFkZGluZy8yLHIuYXR0cigiY2xhc3MiLCJvdXRlciIpLmF0dHIoIngiLGUueC1mLzItaCkuYXR0cigieSIsZS55LWUuaGVpZ2h0LzItaCkuYXR0cigid2lkdGgiLGYrbCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsKSxhLmF0dHIoImNsYXNzIiwiaW5uZXIiKS5hdHRyKCJ4IixlLngtZi8yLWgpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yLWgrcy5oZWlnaHQtMSkuYXR0cigid2lkdGgiLGYrbCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtsLXMuaGVpZ2h0LTMpLGkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGUueC1zLndpZHRoLzIpKyIsICIrKGUueS1lLmhlaWdodC8yLWUucGFkZGluZy8zKyh6bShKdigpLmZsb3djaGFydC5odG1sTGFiZWxzKT81OjMpKSsiKSIpO3ZhciBkPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS5oZWlnaHQ9ZC5oZWlnaHQsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGNfKGUsdCl9LG59LG5vdGVHcm91cDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub3RlLWNsdXN0ZXIiKS5hdHRyKCJpZCIsZS5pZCkscj1uLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCplLnBhZGRpbmcsYT1pLzI7ci5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoIngiLGUueC1lLndpZHRoLzItYSkuYXR0cigieSIsZS55LWUuaGVpZ2h0LzItYSkuYXR0cigid2lkdGgiLGUud2lkdGgraSkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCtpKS5hdHRyKCJmaWxsIiwibm9uZSIpO3ZhciBvPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBjXyhlLHQpfSxufSxkaXZpZGVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsZS5jbGFzc2VzKS5hdHRyKCJpZCIsZS5pZCkscj1uLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCplLnBhZGRpbmcsYT1pLzI7ci5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4IixlLngtZS53aWR0aC8yLWEpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCtpKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0K2kpO3ZhciBvPXIubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuZGlmZj0tZS5wYWRkaW5nLzIsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGNfKGUsdCl9LG59fSx2Xz17fSxiXz17fSxfXz17fSx4Xz1mdW5jdGlvbih0LGUpe3ZhciBuPVViKGUubGFiZWwsZS5sYWJlbFN0eWxlKSxyPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlTGFiZWwiKSxpPXIuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO2kubm9kZSgpLmFwcGVuZENoaWxkKG4pO3ZhciBhLG89bi5nZXRCQm94KCk7aWYoem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe3ZhciBzPW4uY2hpbGRyZW5bMF0sYz1hdShuKTtvPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYy5hdHRyKCJ3aWR0aCIsby53aWR0aCksYy5hdHRyKCJoZWlnaHQiLG8uaGVpZ2h0KX1pZihpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1vLndpZHRoLzIrIiwgIistby5oZWlnaHQvMisiKSIpLGJfW2UuaWRdPXIsZS53aWR0aD1vLndpZHRoLGUuaGVpZ2h0PW8uaGVpZ2h0LGUuc3RhcnRMYWJlbExlZnQpe3ZhciB1PVViKGUuc3RhcnRMYWJlbExlZnQsZS5sYWJlbFN0eWxlKSxsPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksaD1sLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPWgubm9kZSgpLmFwcGVuZENoaWxkKHUpO3ZhciBmPXUuZ2V0QkJveCgpO2guYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWYud2lkdGgvMisiLCAiKy1mLmhlaWdodC8yKyIpIiksX19bZS5pZF18fChfX1tlLmlkXT17fSksX19bZS5pZF0uc3RhcnRMZWZ0PWwsd18oYSxlLnN0YXJ0TGFiZWxMZWZ0KX1pZihlLnN0YXJ0TGFiZWxSaWdodCl7dmFyIGQ9VWIoZS5zdGFydExhYmVsUmlnaHQsZS5sYWJlbFN0eWxlKSxwPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIikseT1wLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPXAubm9kZSgpLmFwcGVuZENoaWxkKGQpLHkubm9kZSgpLmFwcGVuZENoaWxkKGQpO3ZhciBnPWQuZ2V0QkJveCgpO3kuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWcud2lkdGgvMisiLCAiKy1nLmhlaWdodC8yKyIpIiksX19bZS5pZF18fChfX1tlLmlkXT17fSksX19bZS5pZF0uc3RhcnRSaWdodD1wLHdfKGEsZS5zdGFydExhYmVsUmlnaHQpfWlmKGUuZW5kTGFiZWxMZWZ0KXt2YXIgbT1VYihlLmVuZExhYmVsTGVmdCxlLmxhYmVsU3R5bGUpLHY9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VUZXJtaW5hbHMiKSxiPXYuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJpbm5lciIpO2E9Yi5ub2RlKCkuYXBwZW5kQ2hpbGQobSk7dmFyIF89bS5nZXRCQm94KCk7Yi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistXy53aWR0aC8yKyIsICIrLV8uaGVpZ2h0LzIrIikiKSx2Lm5vZGUoKS5hcHBlbmRDaGlsZChtKSxfX1tlLmlkXXx8KF9fW2UuaWRdPXt9KSxfX1tlLmlkXS5lbmRMZWZ0PXYsd18oYSxlLmVuZExhYmVsTGVmdCl9aWYoZS5lbmRMYWJlbFJpZ2h0KXt2YXIgeD1VYihlLmVuZExhYmVsUmlnaHQsZS5sYWJlbFN0eWxlKSx3PXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksaz13Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTthPWsubm9kZSgpLmFwcGVuZENoaWxkKHgpO3ZhciBUPXguZ2V0QkJveCgpO2suYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLVQud2lkdGgvMisiLCAiKy1ULmhlaWdodC8yKyIpIiksdy5ub2RlKCkuYXBwZW5kQ2hpbGQoeCksX19bZS5pZF18fChfX1tlLmlkXT17fSksX19bZS5pZF0uZW5kUmlnaHQ9dyx3XyhhLGUuZW5kTGFiZWxSaWdodCl9fTtmdW5jdGlvbiB3Xyh0LGUpe0p2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMmJnQmJih0LnN0eWxlLndpZHRoPTkqZS5sZW5ndGgrInB4Iix0LnN0eWxlLmhlaWdodD0iMTJweCIpfXZhciBrXz1mdW5jdGlvbih0LGUpe28uaW5mbygiTW92aW5nIGxhYmVsIGFiYzc4ICIsdC5pZCx0LmxhYmVsLGJfW3QuaWRdKTt2YXIgbj1lLnVwZGF0ZWRQYXRoP2UudXBkYXRlZFBhdGg6ZS5vcmlnaW5hbFBhdGg7aWYodC5sYWJlbCl7dmFyIHI9Yl9bdC5pZF0saT10LngsYT10Lnk7aWYobil7dmFyIHM9SHYuY2FsY0xhYmVsUG9zaXRpb24obik7by5pbmZvKCJNb3ZpbmcgbGFiZWwgZnJvbSAoIixpLCIsIixhLCIpIHRvICgiLHMueCwiLCIscy55LCIpIGFiYzc4Iil9ci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsICIrYSsiKSIpfWlmKHQuc3RhcnRMYWJlbExlZnQpe3ZhciBjPV9fW3QuaWRdLnN0YXJ0TGVmdCx1PXQueCxsPXQueTtpZihuKXt2YXIgaD1Idi5jYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uKHQuYXJyb3dUeXBlU3RhcnQ/MTA6MCwic3RhcnRfbGVmdCIsbik7dT1oLngsbD1oLnl9Yy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1KyIsICIrbCsiKSIpfWlmKHQuc3RhcnRMYWJlbFJpZ2h0KXt2YXIgZj1fX1t0LmlkXS5zdGFydFJpZ2h0LGQ9dC54LHA9dC55O2lmKG4pe3ZhciB5PUh2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVTdGFydD8xMDowLCJzdGFydF9yaWdodCIsbik7ZD15LngscD15Lnl9Zi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitkKyIsICIrcCsiKSIpfWlmKHQuZW5kTGFiZWxMZWZ0KXt2YXIgZz1fX1t0LmlkXS5lbmRMZWZ0LG09dC54LHY9dC55O2lmKG4pe3ZhciBiPUh2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVFbmQ/MTA6MCwiZW5kX2xlZnQiLG4pO209Yi54LHY9Yi55fWcuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbSsiLCAiK3YrIikiKX1pZih0LmVuZExhYmVsUmlnaHQpe3ZhciBfPV9fW3QuaWRdLmVuZFJpZ2h0LHg9dC54LHc9dC55O2lmKG4pe3ZhciBrPUh2LmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVFbmQ/MTA6MCwiZW5kX3JpZ2h0IixuKTt4PWsueCx3PWsueX1fLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3grIiwgIit3KyIpIil9fSxUXz1mdW5jdGlvbih0LGUpe28ud2FybigiYWJjODggY3V0UGF0aEF0SW50ZXJzZWN0Iix0LGUpO3ZhciBuPVtdLHI9dFswXSxpPSExO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKG8uaW5mbygiYWJjODggY2hlY2tpbmcgcG9pbnQiLHQsZSksZnVuY3Rpb24odCxlKXt2YXIgbj10Lngscj10LnksaT1NYXRoLmFicyhlLngtbiksYT1NYXRoLmFicyhlLnktciksbz10LndpZHRoLzIscz10LmhlaWdodC8yO3JldHVybiBpPj1vfHxhPj1zfShlLHQpfHxpKW8ud2FybigiYWJjODggb3V0c2lkZSIsdCxyKSxyPXQsaXx8bi5wdXNoKHQpO2Vsc2V7dmFyIGE9ZnVuY3Rpb24odCxlLG4pe28ud2FybigiaW50ZXJzZWN0aW9uIGNhbGMgYWJjODk6XG4gIG91dHNpZGVQb2ludDogIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoZSksIlxuICBpbnNpZGVQb2ludCA6ICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShuKSwiXG4gIG5vZGUgICAgICAgIDogeDoiKS5jb25jYXQodC54LCIgeToiKS5jb25jYXQodC55LCIgdzoiKS5jb25jYXQodC53aWR0aCwiIGg6IikuY29uY2F0KHQuaGVpZ2h0KSk7dmFyIHI9dC54LGk9dC55LGE9TWF0aC5hYnMoci1uLngpLHM9dC53aWR0aC8yLGM9bi54PGUueD9zLWE6cythLHU9dC5oZWlnaHQvMixsPU1hdGguYWJzKGUueS1uLnkpLGg9TWF0aC5hYnMoZS54LW4ueCk7aWYoTWF0aC5hYnMoaS1lLnkpKnM+TWF0aC5hYnMoci1lLngpKnUpe3ZhciBmPW4ueTxlLnk/ZS55LXUtaTppLXUtZS55O2M9aCpmL2w7dmFyIGQ9e3g6bi54PGUueD9uLngrYzpuLngtaCtjLHk6bi55PGUueT9uLnkrbC1mOm4ueS1sK2Z9O3JldHVybiAwPT09YyYmKGQueD1lLngsZC55PWUueSksMD09PWgmJihkLng9ZS54KSwwPT09bCYmKGQueT1lLnkpLG8ud2FybigiYWJjODkgdG9wcC9ib3R0IGNhbGMsIFEgIi5jb25jYXQobCwiLCBxICIpLmNvbmNhdChmLCIsIFIgIikuY29uY2F0KGgsIiwgciAiKS5jb25jYXQoYyksZCksZH12YXIgcD1sKihjPW4ueDxlLng/ZS54LXMtcjpyLXMtZS54KS9oLHk9bi54PGUueD9uLngraC1jOm4ueC1oK2MsZz1uLnk8ZS55P24ueStwOm4ueS1wO3JldHVybiBvLndhcm4oInNpZGVzIGNhbGMgYWJjODksIFEgIi5jb25jYXQobCwiLCBxICIpLmNvbmNhdChwLCIsIFIgIikuY29uY2F0KGgsIiwgciAiKS5jb25jYXQoYykse194OnksX3k6Z30pLDA9PT1jJiYoeT1lLngsZz1lLnkpLDA9PT1oJiYoeT1lLngpLDA9PT1sJiYoZz1lLnkpLHt4OnkseTpnfX0oZSxyLHQpO28ud2FybigiYWJjODggaW5zaWRlIix0LHIsYSksby53YXJuKCJhYmM4OCBpbnRlcnNlY3Rpb24iLGEpO3ZhciBzPSExO24uZm9yRWFjaCgoZnVuY3Rpb24odCl7cz1zfHx0Lng9PT1hLngmJnQueT09PWEueX0pKSxuLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT1hLngmJnQueT09PWEueX0pKT9vLndhcm4oImFiYzg4IG5vIGludGVyc2VjdCIsYSxuKTpuLnB1c2goYSksaT0hMH19KSksby53YXJuKCJhYmM4OCByZXR1cm5pbmcgcG9pbnRzIixuKSxufSxFXz1mdW5jdGlvbiB0KGUsbixyLGkpe28uaW5mbygiR3JhcGggaW4gcmVjdXJzaXZlIHJlbmRlcjogWFhYIix3YigpLmpzb24ud3JpdGUobiksaSk7dmFyIGE9bi5ncmFwaCgpLnJhbmtkaXI7by50cmFjZSgiRGlyIGluIHJlY3Vyc2l2ZSByZW5kZXIgLSBkaXI6IixhKTt2YXIgcz1lLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwicm9vdCIpO24ubm9kZXMoKT9vLmluZm8oIlJlY3Vyc2l2ZSByZW5kZXIgWFhYIixuLm5vZGVzKCkpOm8uaW5mbygiTm8gbm9kZXMgZm91bmQgZm9yIixuKSxuLmVkZ2VzKCkubGVuZ3RoPjAmJm8udHJhY2UoIlJlY3Vyc2l2ZSBlZGdlcyIsbi5lZGdlKG4uZWRnZXMoKVswXSkpO3ZhciBjPXMuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVycyIpLHU9cy5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VQYXRocyIpLGw9cy5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VMYWJlbHMiKSxoPXMuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlcyIpO24ubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcz1uLm5vZGUoZSk7aWYodm9pZCAwIT09aSl7dmFyIGM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpLmNsdXN0ZXJEYXRhKSk7by5pbmZvKCJTZXR0aW5nIGRhdGEgZm9yIGNsdXN0ZXIgWFhYICgiLGUsIikgIixjLGkpLG4uc2V0Tm9kZShpLmlkLGMpLG4ucGFyZW50KGUpfHwoby50cmFjZSgiU2V0dGluZyBwYXJlbnQiLGUsaS5pZCksbi5zZXRQYXJlbnQoZSxpLmlkLGMpKX1pZihvLmluZm8oIihJbnNlcnQpIE5vZGUgWFhYIitlKyI6ICIrSlNPTi5zdHJpbmdpZnkobi5ub2RlKGUpKSkscyYmcy5jbHVzdGVyTm9kZSl7by5pbmZvKCJDbHVzdGVyIGlkZW50aWZpZWQiLGUscy53aWR0aCxuLm5vZGUoZSkpO3ZhciB1PXQoaCxzLmdyYXBoLHIsbi5ub2RlKGUpKSxsPXUuZWxlbTtIYihzLGwpLHMuZGlmZj11LmRpZmZ8fDAsby5pbmZvKCJOb2RlIGJvdW5kcyAoYWJjMTIzKSIsZSxzLHMud2lkdGgscy54LHMueSksZnVuY3Rpb24odCxlKXt5X1tlLmlkXT10fShsLHMpLG8ud2FybigiUmVjdXJzaXZlIHJlbmRlciBjb21wbGV0ZSAiLGwscyl9ZWxzZSBuLmNoaWxkcmVuKGUpLmxlbmd0aD4wPyhvLmluZm8oIkNsdXN0ZXIgLSB0aGUgbm9uIHJlY3Vyc2l2ZSBwYXRoIFhYWCIsZSxzLmlkLHMsbiksby5pbmZvKEtiKHMuaWQsbikpLFdiW3MuaWRdPXtpZDpLYihzLmlkLG4pLG5vZGU6c30pOihvLmluZm8oIk5vZGUgLSB0aGUgbm9uIHJlY3Vyc2l2ZSBwYXRoIixlLHMuaWQscyksZnVuY3Rpb24odCxlLG4pe3ZhciByLGk7ZS5saW5rPyhyPXQuaW5zZXJ0KCJzdmc6YSIpLmF0dHIoInhsaW5rOmhyZWYiLGUubGluaykuYXR0cigidGFyZ2V0IixlLmxpbmtUYXJnZXR8fCJfYmxhbmsiKSxpPXBfW2Uuc2hhcGVdKHIsZSxuKSk6cj1pPXBfW2Uuc2hhcGVdKHQsZSxuKSxlLnRvb2x0aXAmJmkuYXR0cigidGl0bGUiLGUudG9vbHRpcCksZS5jbGFzcyYmaS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCAiK2UuY2xhc3MpLHlfW2UuaWRdPXIsZS5oYXZlQ2FsbGJhY2smJnlfW2UuaWRdLmF0dHIoImNsYXNzIix5X1tlLmlkXS5hdHRyKCJjbGFzcyIpKyIgY2xpY2thYmxlIil9KGgsbi5ub2RlKGUpLGEpKX0pKSxuLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5lZGdlKHQudix0LncsdC5uYW1lKTtvLmluZm8oIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiK0pTT04uc3RyaW5naWZ5KHQpKSxvLmluZm8oIkVkZ2UgIit0LnYrIiAtPiAiK3QudysiOiAiLHQsIiAiLEpTT04uc3RyaW5naWZ5KG4uZWRnZSh0KSkpLG8uaW5mbygiRml4IixXYiwiaWRzOiIsdC52LHQudywiVHJhbnNsYXRlaW5nOiAiLFdiW3Qudl0sV2JbdC53XSkseF8obCxlKX0pKSxuLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5pbmZvKCJFZGdlICIrdC52KyIgLT4gIit0LncrIjogIitKU09OLnN0cmluZ2lmeSh0KSl9KSksby5pbmZvKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKSxvLmluZm8oIiMjIyAgICAgICAgICAgICAgICBMYXlvdXQgICAgICAgICAgICAgICAgICMjIyIpLG8uaW5mbygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIiksby5pbmZvKG4pLF9iKCkubGF5b3V0KG4pLG8uaW5mbygiR3JhcGggYWZ0ZXIgbGF5b3V0OiIsd2IoKS5qc29uLndyaXRlKG4pKTt2YXIgZj0wO3JldHVybiByXyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLm5vZGUodCk7by5pbmZvKCJQb3NpdGlvbiAiK3QrIjogIitKU09OLnN0cmluZ2lmeShuLm5vZGUodCkpKSxvLmluZm8oIlBvc2l0aW9uICIrdCsiOiAoIitlLngsIiwiK2UueSwiKSB3aWR0aDogIixlLndpZHRoLCIgaGVpZ2h0OiAiLGUuaGVpZ2h0KSxlJiZlLmNsdXN0ZXJOb2RlP2dfKGUpOm4uY2hpbGRyZW4odCkubGVuZ3RoPjA/KGZ1bmN0aW9uKHQsZSl7by50cmFjZSgiSW5zZXJ0aW5nIGNsdXN0ZXIiKTt2YXIgbj1lLnNoYXBlfHwicmVjdCI7dl9bZS5pZF09bV9bbl0odCxlKX0oYyxlKSxXYltlLmlkXS5ub2RlPWUpOmdfKGUpfSkpLG4uZWRnZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLmVkZ2UodCk7by5pbmZvKCJFZGdlICIrdC52KyIgLT4gIit0LncrIjogIitKU09OLnN0cmluZ2lmeShlKSxlKTt2YXIgaT1mdW5jdGlvbih0LGUsbixyLGksYSl7dmFyIHM9bi5wb2ludHMsYz0hMSx1PWEubm9kZShlLnYpLGw9YS5ub2RlKGUudyk7by5pbmZvKCJhYmM4OCBJbnNlcnRFZGdlOiAiLG4pLGwuaW50ZXJzZWN0JiZ1LmludGVyc2VjdCYmKChzPXMuc2xpY2UoMSxuLnBvaW50cy5sZW5ndGgtMSkpLnVuc2hpZnQodS5pbnRlcnNlY3Qoc1swXSkpLG8uaW5mbygiTGFzdCBwb2ludCIsc1tzLmxlbmd0aC0xXSxsLGwuaW50ZXJzZWN0KHNbcy5sZW5ndGgtMV0pKSxzLnB1c2gobC5pbnRlcnNlY3Qoc1tzLmxlbmd0aC0xXSkpKSxuLnRvQ2x1c3RlciYmKG8uaW5mbygidG8gY2x1c3RlciBhYmM4OCIscltuLnRvQ2x1c3Rlcl0pLHM9VF8obi5wb2ludHMscltuLnRvQ2x1c3Rlcl0ubm9kZSksYz0hMCksbi5mcm9tQ2x1c3RlciYmKG8uaW5mbygiZnJvbSBjbHVzdGVyIGFiYzg4IixyW24uZnJvbUNsdXN0ZXJdKSxzPVRfKHMucmV2ZXJzZSgpLHJbbi5mcm9tQ2x1c3Rlcl0ubm9kZSkucmV2ZXJzZSgpLGM9ITApO3ZhciBoLGY9cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFOdW1iZXIuaXNOYU4odC55KX0pKTtoPSgiZ3JhcGgiPT09aXx8ImZsb3djaGFydCI9PT1pKSYmbi5jdXJ2ZXx8VnU7dmFyIGQscD16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKS5jdXJ2ZShoKTtzd2l0Y2gobi50aGlja25lc3Mpe2Nhc2Uibm9ybWFsIjpkPSJlZGdlLXRoaWNrbmVzcy1ub3JtYWwiO2JyZWFrO2Nhc2UidGhpY2siOmQ9ImVkZ2UtdGhpY2tuZXNzLXRoaWNrIjticmVhaztkZWZhdWx0OmQ9IiJ9c3dpdGNoKG4ucGF0dGVybil7Y2FzZSJzb2xpZCI6ZCs9IiBlZGdlLXBhdHRlcm4tc29saWQiO2JyZWFrO2Nhc2UiZG90dGVkIjpkKz0iIGVkZ2UtcGF0dGVybi1kb3R0ZWQiO2JyZWFrO2Nhc2UiZGFzaGVkIjpkKz0iIGVkZ2UtcGF0dGVybi1kYXNoZWQifXZhciB5PXQuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIscChmKSkuYXR0cigiaWQiLG4uaWQpLmF0dHIoImNsYXNzIiwiICIrZCsobi5jbGFzc2VzPyIgIituLmNsYXNzZXM6IiIpKS5hdHRyKCJzdHlsZSIsbi5zdHlsZSksZz0iIjtzd2l0Y2goSnYoKS5zdGF0ZS5hcnJvd01hcmtlckFic29sdXRlJiYoZz0oZz0oZz13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrIi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUrd2luZG93LmxvY2F0aW9uLnNlYXJjaCkucmVwbGFjZSgvXCgvZywiXFwoIikpLnJlcGxhY2UoL1wpL2csIlxcKSIpKSxvLmluZm8oImFycm93VHlwZVN0YXJ0IixuLmFycm93VHlwZVN0YXJ0KSxvLmluZm8oImFycm93VHlwZUVuZCIsbi5hcnJvd1R5cGVFbmQpLG4uYXJyb3dUeXBlU3RhcnQpe2Nhc2UiYXJyb3dfY3Jvc3MiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWNyb3NzU3RhcnQpIik7YnJlYWs7Y2FzZSJhcnJvd19wb2ludCI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItcG9pbnRTdGFydCkiKTticmVhaztjYXNlImFycm93X2JhcmIiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWJhcmJTdGFydCkiKTticmVhaztjYXNlImFycm93X2NpcmNsZSI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItY2lyY2xlU3RhcnQpIik7YnJlYWs7Y2FzZSJhZ2dyZWdhdGlvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItYWdncmVnYXRpb25TdGFydCkiKTticmVhaztjYXNlImV4dGVuc2lvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItZXh0ZW5zaW9uU3RhcnQpIik7YnJlYWs7Y2FzZSJjb21wb3NpdGlvbiI6eS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitnKyIjIitpKyItY29tcG9zaXRpb25TdGFydCkiKTticmVhaztjYXNlImRlcGVuZGVuY3kiOnkuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrZysiIyIraSsiLWRlcGVuZGVuY3lTdGFydCkiKX1zd2l0Y2gobi5hcnJvd1R5cGVFbmQpe2Nhc2UiYXJyb3dfY3Jvc3MiOnkuYXR0cigibWFya2VyLWVuZCIsInVybCgiK2crIiMiK2krIi1jcm9zc0VuZCkiKTticmVhaztjYXNlImFycm93X3BvaW50Ijp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItcG9pbnRFbmQpIik7YnJlYWs7Y2FzZSJhcnJvd19iYXJiIjp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItYmFyYkVuZCkiKTticmVhaztjYXNlImFycm93X2NpcmNsZSI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWNpcmNsZUVuZCkiKTticmVhaztjYXNlImFnZ3JlZ2F0aW9uIjp5LmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitnKyIjIitpKyItYWdncmVnYXRpb25FbmQpIik7YnJlYWs7Y2FzZSJleHRlbnNpb24iOnkuYXR0cigibWFya2VyLWVuZCIsInVybCgiK2crIiMiK2krIi1leHRlbnNpb25FbmQpIik7YnJlYWs7Y2FzZSJjb21wb3NpdGlvbiI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWNvbXBvc2l0aW9uRW5kKSIpO2JyZWFrO2Nhc2UiZGVwZW5kZW5jeSI6eS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrZysiIyIraSsiLWRlcGVuZGVuY3lFbmQpIil9dmFyIG09e307cmV0dXJuIGMmJihtLnVwZGF0ZWRQYXRoPXMpLG0ub3JpZ2luYWxQYXRoPW4ucG9pbnRzLG19KHUsdCxlLFdiLHIsbik7a18oZSxpKX0pKSxuLm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5ub2RlKHQpO28uaW5mbyh0LGUudHlwZSxlLmRpZmYpLCJncm91cCI9PT1lLnR5cGUmJihmPWUuZGlmZil9KSkse2VsZW06cyxkaWZmOmZ9fSxDXz1mdW5jdGlvbih0LGUsbixyLGkpe1liKHQsbixyLGkpLHlfPXt9LGJfPXt9LF9fPXt9LHZfPXt9LFZiPXt9LEdiPXt9LFdiPXt9LG8ud2FybigiR3JhcGggYXQgZmlyc3Q6Iix3YigpLmpzb24ud3JpdGUoZSkpLHRfKGUpLG8ud2FybigiR3JhcGggYWZ0ZXI6Iix3YigpLmpzb24ud3JpdGUoZSkpLEVfKHQsZSxyKX07a2IucGFyc2VyLnl5PXZiO3ZhciBTXz17ZGl2aWRlck1hcmdpbjoxMCxwYWRkaW5nOjUsdGV4dEhlaWdodDoxMH07ZnVuY3Rpb24gQV8odCl7dmFyIGU7c3dpdGNoKHQpe2Nhc2UgMDplPSJhZ2dyZWdhdGlvbiI7YnJlYWs7Y2FzZSAxOmU9ImV4dGVuc2lvbiI7YnJlYWs7Y2FzZSAyOmU9ImNvbXBvc2l0aW9uIjticmVhaztjYXNlIDM6ZT0iZGVwZW5kZW5jeSI7YnJlYWs7ZGVmYXVsdDplPSJub25lIn1yZXR1cm4gZX12YXIgTV89e30sTl89W10sRF89IiIsT189ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PU1fW3RdJiYoTV9bdF09e2F0dHJpYnV0ZXM6W119LG8uaW5mbygiQWRkZWQgbmV3IGVudGl0eSA6Iix0KSksTV9bdF19O2NvbnN0IEJfPXtDYXJkaW5hbGl0eTp7WkVST19PUl9PTkU6IlpFUk9fT1JfT05FIixaRVJPX09SX01PUkU6IlpFUk9fT1JfTU9SRSIsT05FX09SX01PUkU6Ik9ORV9PUl9NT1JFIixPTkxZX09ORToiT05MWV9PTkUifSxJZGVudGlmaWNhdGlvbjp7Tk9OX0lERU5USUZZSU5HOiJOT05fSURFTlRJRllJTkciLElERU5USUZZSU5HOiJJREVOVElGWUlORyJ9LHBhcnNlRGlyZWN0aXZlOmZ1bmN0aW9uKHQsZSxuKXtzQy5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxuKX0sZ2V0Q29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIEp2KCkuZXJ9LGFkZEVudGl0eTpPXyxhZGRBdHRyaWJ1dGVzOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj1PXyh0KTtmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXIuYXR0cmlidXRlcy5wdXNoKGVbbl0pLG8uZGVidWcoIkFkZGVkIGF0dHJpYnV0ZSAiLGVbbl0uYXR0cmlidXRlTmFtZSl9LGdldEVudGl0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuIE1ffSxhZGRSZWxhdGlvbnNoaXA6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9e2VudGl0eUE6dCxyb2xlQTplLGVudGl0eUI6bixyZWxTcGVjOnJ9O05fLnB1c2goaSksby5kZWJ1ZygiQWRkZWQgbmV3IHJlbGF0aW9uc2hpcCA6IixpKX0sZ2V0UmVsYXRpb25zaGlwczpmdW5jdGlvbigpe3JldHVybiBOX30sY2xlYXI6ZnVuY3Rpb24oKXtNXz17fSxOXz1bXSxEXz0iIn0sc2V0VGl0bGU6ZnVuY3Rpb24odCl7RF89dH0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gRF99fTt2YXIgTF89big1ODkwKSxJXz1uLm4oTF8pLFJfPXtPTkxZX09ORV9TVEFSVDoiT05MWV9PTkVfU1RBUlQiLE9OTFlfT05FX0VORDoiT05MWV9PTkVfRU5EIixaRVJPX09SX09ORV9TVEFSVDoiWkVST19PUl9PTkVfU1RBUlQiLFpFUk9fT1JfT05FX0VORDoiWkVST19PUl9PTkVfRU5EIixPTkVfT1JfTU9SRV9TVEFSVDoiT05FX09SX01PUkVfU1RBUlQiLE9ORV9PUl9NT1JFX0VORDoiT05FX09SX01PUkVfRU5EIixaRVJPX09SX01PUkVfU1RBUlQ6IlpFUk9fT1JfTU9SRV9TVEFSVCIsWkVST19PUl9NT1JFX0VORDoiWkVST19PUl9NT1JFX0VORCJ9O2NvbnN0IEZfPVJfO3ZhciBQXz17fSxqXz1mdW5jdGlvbih0KXtyZXR1cm4odC5lbnRpdHlBK3Qucm9sZUErdC5lbnRpdHlCKS5yZXBsYWNlKC9ccy9nLCIiKX0sWV89MDtjb25zdCB6Xz1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKVBfW2Vbbl1dPXRbZVtuXV19LFVfPWZ1bmN0aW9uKHQsZSl7by5pbmZvKCJEcmF3aW5nIEVSIGRpYWdyYW0iKSxCXy5jbGVhcigpO3ZhciBuPUlfKCkucGFyc2VyO24ueXk9Ql87dHJ5e24ucGFyc2UodCl9Y2F0Y2godCl7by5kZWJ1ZygiUGFyc2luZyBmYWlsZWQiKX12YXIgcixpPWF1KCJbaWQ9JyIuY29uY2F0KGUsIiddIikpOyhmdW5jdGlvbih0LGUpe3ZhciBuO3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsUl8uT05MWV9PTkVfU1RBUlQpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDkpLmF0dHIoIm1hcmtlcldpZHRoIiwxOCkuYXR0cigibWFya2VySGVpZ2h0IiwxOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk05LDAgTDksMTggTTE1LDAgTDE1LDE4IiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixSXy5PTkxZX09ORV9FTkQpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiw5KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTgpLmF0dHIoIm1hcmtlckhlaWdodCIsMTgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMywwIEwzLDE4IE05LDAgTDksMTgiKSwobj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLFJfLlpFUk9fT1JfT05FX1NUQVJUKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw5KS5hdHRyKCJtYXJrZXJXaWR0aCIsMzApLmF0dHIoIm1hcmtlckhlaWdodCIsMTgpLmF0dHIoIm9yaWVudCIsImF1dG8iKSkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJjeCIsMjEpLmF0dHIoImN5Iiw5KS5hdHRyKCJyIiw2KSxuLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk05LDAgTDksMTgiKSwobj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLFJfLlpFUk9fT1JfT05FX0VORCkuYXR0cigicmVmWCIsMzApLmF0dHIoInJlZlkiLDkpLmF0dHIoIm1hcmtlcldpZHRoIiwzMCkuYXR0cigibWFya2VySGVpZ2h0IiwxOCkuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw5KS5hdHRyKCJjeSIsOSkuYXR0cigiciIsNiksbi5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMjEsMCBMMjEsMTgiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLFJfLk9ORV9PUl9NT1JFX1NUQVJUKS5hdHRyKCJyZWZYIiwxOCkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw0NSkuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0wLDE4IFEgMTgsMCAzNiwxOCBRIDE4LDM2IDAsMTggTTQyLDkgTDQyLDI3IiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixSXy5PTkVfT1JfTU9SRV9FTkQpLmF0dHIoInJlZlgiLDI3KS5hdHRyKCJyZWZZIiwxOCkuYXR0cigibWFya2VyV2lkdGgiLDQ1KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDM2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTMsOSBMMywyNyBNOSwxOCBRMjcsMCA0NSwxOCBRMjcsMzYgOSwxOCIpLChuPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsUl8uWkVST19PUl9NT1JFX1NUQVJUKS5hdHRyKCJyZWZYIiwxOCkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw1NykuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw0OCkuYXR0cigiY3kiLDE4KS5hdHRyKCJyIiw2KSxuLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0wLDE4IFExOCwwIDM2LDE4IFExOCwzNiAwLDE4IiksKG49dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixSXy5aRVJPX09SX01PUkVfRU5EKS5hdHRyKCJyZWZYIiwzOSkuYXR0cigicmVmWSIsMTgpLmF0dHIoIm1hcmtlcldpZHRoIiw1NykuYXR0cigibWFya2VySGVpZ2h0IiwzNikuYXR0cigib3JpZW50IiwiYXV0byIpKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw5KS5hdHRyKCJjeSIsMTgpLmF0dHIoInIiLDYpLG4uYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTIxLDE4IFEzOSwwIDU3LDE4IFEzOSwzNiAyMSwxOCIpfSkoaSxQXykscj1uZXcod2IoKS5HcmFwaCkoe211bHRpZ3JhcGg6ITAsZGlyZWN0ZWQ6ITAsY29tcG91bmQ6ITF9KS5zZXRHcmFwaCh7cmFua2RpcjpQXy5sYXlvdXREaXJlY3Rpb24sbWFyZ2lueDoyMCxtYXJnaW55OjIwLG5vZGVzZXA6MTAwLGVkZ2VzZXA6MTAwLHJhbmtzZXA6MTAwfSkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKTt2YXIgYT1mdW5jdGlvbih0LGUsbil7dmFyIHI7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciBhPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLGkpO3I9dm9pZCAwPT09cj9pOnI7dmFyIG89ImVudGl0eS0iK2kscz1hLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsbykuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrSnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIitQXy5mb250U2l6ZSsicHgiKS50ZXh0KGkpLGM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVBfLmVudGl0eVBhZGRpbmcvMyxpPVBfLmVudGl0eVBhZGRpbmcvMyxhPS44NSpQXy5mb250U2l6ZSxvPWUubm9kZSgpLmdldEJCb3goKSxzPVtdLGM9ITEsdT0hMSxsPTAsaD0wLGY9MCxkPTAscD1vLmhlaWdodCsyKnIseT0xO24uZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09dC5hdHRyaWJ1dGVLZXlUeXBlJiYoYz0hMCksdm9pZCAwIT09dC5hdHRyaWJ1dGVDb21tZW50JiYodT0hMCl9KSksbi5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT0iIi5jb25jYXQoZS5ub2RlKCkuaWQsIi1hdHRyLSIpLmNvbmNhdCh5KSxvPTAsZz10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsIiIuY29uY2F0KGksIi10eXBlIikpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitKdigpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChuLmF0dHJpYnV0ZVR5cGUpLG09dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLCIiLmNvbmNhdChpLCItbmFtZSIpKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoInRleHQtYW5jaG9yIiwibGVmdCIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrSnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIithKyJweCIpLnRleHQobi5hdHRyaWJ1dGVOYW1lKSx2PXt9O3YudG49Zyx2Lm5uPW07dmFyIGI9Zy5ub2RlKCkuZ2V0QkJveCgpLF89bS5ub2RlKCkuZ2V0QkJveCgpO2lmKGw9TWF0aC5tYXgobCxiLndpZHRoKSxoPU1hdGgubWF4KGgsXy53aWR0aCksbz1NYXRoLm1heChiLmhlaWdodCxfLmhlaWdodCksYyl7dmFyIHg9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLCIiLmNvbmNhdChpLCIta2V5IikpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitKdigpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChuLmF0dHJpYnV0ZUtleVR5cGV8fCIiKTt2LmtuPXg7dmFyIHc9eC5ub2RlKCkuZ2V0QkJveCgpO2Y9TWF0aC5tYXgoZix3LndpZHRoKSxvPU1hdGgubWF4KG8sdy5oZWlnaHQpfWlmKHUpe3ZhciBrPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlciBlbnRpdHlMYWJlbCIpLmF0dHIoImlkIiwiIi5jb25jYXQoaSwiLWNvbW1lbnQiKSkuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImxlZnQiKS5hdHRyKCJzdHlsZSIsImZvbnQtZmFtaWx5OiAiK0p2KCkuZm9udEZhbWlseSsiOyBmb250LXNpemU6ICIrYSsicHgiKS50ZXh0KG4uYXR0cmlidXRlQ29tbWVudHx8IiIpO3YuY249azt2YXIgVD1rLm5vZGUoKS5nZXRCQm94KCk7ZD1NYXRoLm1heChkLFQud2lkdGgpLG89TWF0aC5tYXgobyxULmhlaWdodCl9di5oZWlnaHQ9byxzLnB1c2godikscCs9bysyKnIseSs9MX0pKTt2YXIgZz00O2MmJihnKz0yKSx1JiYoZys9Mik7dmFyIG09bCtoK2YrZCx2PXt3aWR0aDpNYXRoLm1heChQXy5taW5FbnRpdHlXaWR0aCxNYXRoLm1heChvLndpZHRoKzIqUF8uZW50aXR5UGFkZGluZyxtK2kqZykpLGhlaWdodDpuLmxlbmd0aD4wP3A6TWF0aC5tYXgoUF8ubWluRW50aXR5SGVpZ2h0LG8uaGVpZ2h0KzIqUF8uZW50aXR5UGFkZGluZyl9O2lmKG4ubGVuZ3RoPjApe3ZhciBiPU1hdGgubWF4KDAsKHYud2lkdGgtbS1pKmcpLyhnLzIpKTtlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3Yud2lkdGgvMisiLCIrKHIrby5oZWlnaHQvMikrIikiKTt2YXIgXz1vLmhlaWdodCsyKnIseD0iYXR0cmlidXRlQm94T2RkIjtzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPV8rcitlLmhlaWdodC8yO2UudG4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCIrbisiKSIpO3ZhciBhPXQuaW5zZXJ0KCJyZWN0IiwiIyIrZS50bi5ub2RlKCkuaWQpLmF0dHIoImNsYXNzIiwiZXIgIi5jb25jYXQoeCkpLmF0dHIoImZpbGwiLFBfLmZpbGwpLmF0dHIoImZpbGwtb3BhY2l0eSIsIjEwMCUiKS5hdHRyKCJzdHJva2UiLFBfLnN0cm9rZSkuYXR0cigieCIsMCkuYXR0cigieSIsXykuYXR0cigid2lkdGgiLGwrMippK2IpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQrMipyKSxvPXBhcnNlRmxvYXQoYS5hdHRyKCJ4IikpK3BhcnNlRmxvYXQoYS5hdHRyKCJ3aWR0aCIpKTtlLm5uLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhvK2kpKyIsIituKyIpIik7dmFyIHM9dC5pbnNlcnQoInJlY3QiLCIjIitlLm5uLm5vZGUoKS5pZCkuYXR0cigiY2xhc3MiLCJlciAiLmNvbmNhdCh4KSkuYXR0cigiZmlsbCIsUF8uZmlsbCkuYXR0cigiZmlsbC1vcGFjaXR5IiwiMTAwJSIpLmF0dHIoInN0cm9rZSIsUF8uc3Ryb2tlKS5hdHRyKCJ4IixvKS5hdHRyKCJ5IixfKS5hdHRyKCJ3aWR0aCIsaCsyKmkrYikuYXR0cigiaGVpZ2h0IixlLmhlaWdodCsyKnIpLHA9cGFyc2VGbG9hdChzLmF0dHIoIngiKSkrcGFyc2VGbG9hdChzLmF0dHIoIndpZHRoIikpO2lmKGMpe2Uua24uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHAraSkrIiwiK24rIikiKTt2YXIgeT10Lmluc2VydCgicmVjdCIsIiMiK2Uua24ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsImVyICIuY29uY2F0KHgpKS5hdHRyKCJmaWxsIixQXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixQXy5zdHJva2UpLmF0dHIoIngiLHApLmF0dHIoInkiLF8pLmF0dHIoIndpZHRoIixmKzIqaStiKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0KzIqcik7cD1wYXJzZUZsb2F0KHkuYXR0cigieCIpKStwYXJzZUZsb2F0KHkuYXR0cigid2lkdGgiKSl9dSYmKGUuY24uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHAraSkrIiwiK24rIikiKSx0Lmluc2VydCgicmVjdCIsIiMiK2UuY24ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsImVyICIuY29uY2F0KHgpKS5hdHRyKCJmaWxsIixQXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixQXy5zdHJva2UpLmF0dHIoIngiLHApLmF0dHIoInkiLF8pLmF0dHIoIndpZHRoIixkKzIqaStiKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0KzIqcikpLF8rPWUuaGVpZ2h0KzIqcix4PSJhdHRyaWJ1dGVCb3hPZGQiPT14PyJhdHRyaWJ1dGVCb3hFdmVuIjoiYXR0cmlidXRlQm94T2RkIn0pKX1lbHNlIHYuaGVpZ2h0PU1hdGgubWF4KFBfLm1pbkVudGl0eUhlaWdodCxwKSxlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3Yud2lkdGgvMisiLCIrdi5oZWlnaHQvMisiKSIpO3JldHVybiB2fShhLHMsZVtpXS5hdHRyaWJ1dGVzKSx1PWMud2lkdGgsbD1jLmhlaWdodCxoPWEuaW5zZXJ0KCJyZWN0IiwiIyIrbykuYXR0cigiY2xhc3MiLCJlciBlbnRpdHlCb3giKS5hdHRyKCJmaWxsIixQXy5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixQXy5zdHJva2UpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIix1KS5hdHRyKCJoZWlnaHQiLGwpLm5vZGUoKS5nZXRCQm94KCk7bi5zZXROb2RlKGkse3dpZHRoOmgud2lkdGgsaGVpZ2h0OmguaGVpZ2h0LHNoYXBlOiJyZWN0IixpZDppfSl9KSkscn0oaSxCXy5nZXRFbnRpdGllcygpLHIpLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnNldEVkZ2UodC5lbnRpdHlBLHQuZW50aXR5Qix7cmVsYXRpb25zaGlwOnR9LGpfKHQpKX0pKSx0fShCXy5nZXRSZWxhdGlvbnNoaXBzKCkscik7X2IoKS5sYXlvdXQociksZnVuY3Rpb24odCxlKXtlLm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dm9pZCAwIT09biYmdm9pZCAwIT09ZS5ub2RlKG4pJiZ0LnNlbGVjdCgiIyIrbikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGUubm9kZShuKS54LWUubm9kZShuKS53aWR0aC8yKSsiLCIrKGUubm9kZShuKS55LWUubm9kZShuKS5oZWlnaHQvMikrIiApIil9KSl9KGkscikscy5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4scil7WV8rKzt2YXIgaT1uLmVkZ2UoZS5lbnRpdHlBLGUuZW50aXR5QixqXyhlKSksYT16dSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSkueSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKS5jdXJ2ZShWdSksbz10Lmluc2VydCgicGF0aCIsIiMiK3IpLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGluZSIpLmF0dHIoImQiLGEoaS5wb2ludHMpKS5hdHRyKCJzdHJva2UiLFBfLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKTtlLnJlbFNwZWMucmVsVHlwZT09PUJfLklkZW50aWZpY2F0aW9uLk5PTl9JREVOVElGWUlORyYmby5hdHRyKCJzdHJva2UtZGFzaGFycmF5IiwiOCw4Iik7dmFyIHM9IiI7c3dpdGNoKFBfLmFycm93TWFya2VyQWJzb2x1dGUmJihzPShzPShzPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5yZXBsYWNlKC9cKC9nLCJcXCgiKSkucmVwbGFjZSgvXCkvZywiXFwpIikpLGUucmVsU3BlYy5jYXJkQSl7Y2FzZSBCXy5DYXJkaW5hbGl0eS5aRVJPX09SX09ORTpvLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitzKyIjIitGXy5aRVJPX09SX09ORV9FTkQrIikiKTticmVhaztjYXNlIEJfLkNhcmRpbmFsaXR5LlpFUk9fT1JfTU9SRTpvLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitzKyIjIitGXy5aRVJPX09SX01PUkVfRU5EKyIpIik7YnJlYWs7Y2FzZSBCXy5DYXJkaW5hbGl0eS5PTkVfT1JfTU9SRTpvLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitzKyIjIitGXy5PTkVfT1JfTU9SRV9FTkQrIikiKTticmVhaztjYXNlIEJfLkNhcmRpbmFsaXR5Lk9OTFlfT05FOm8uYXR0cigibWFya2VyLWVuZCIsInVybCgiK3MrIiMiK0ZfLk9OTFlfT05FX0VORCsiKSIpfXN3aXRjaChlLnJlbFNwZWMuY2FyZEIpe2Nhc2UgQl8uQ2FyZGluYWxpdHkuWkVST19PUl9PTkU6by5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitzKyIjIitGXy5aRVJPX09SX09ORV9TVEFSVCsiKSIpO2JyZWFrO2Nhc2UgQl8uQ2FyZGluYWxpdHkuWkVST19PUl9NT1JFOm8uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrcysiIyIrRl8uWkVST19PUl9NT1JFX1NUQVJUKyIpIik7YnJlYWs7Y2FzZSBCXy5DYXJkaW5hbGl0eS5PTkVfT1JfTU9SRTpvLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK3MrIiMiK0ZfLk9ORV9PUl9NT1JFX1NUQVJUKyIpIik7YnJlYWs7Y2FzZSBCXy5DYXJkaW5hbGl0eS5PTkxZX09ORTpvLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK3MrIiMiK0ZfLk9OTFlfT05FX1NUQVJUKyIpIil9dmFyIGM9by5ub2RlKCkuZ2V0VG90YWxMZW5ndGgoKSx1PW8ubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoLjUqYyksbD0icmVsIitZXyxoPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlciByZWxhdGlvbnNoaXBMYWJlbCIpLmF0dHIoImlkIixsKS5hdHRyKCJ4Iix1LngpLmF0dHIoInkiLHUueSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrSnYoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIitQXy5mb250U2l6ZSsicHgiKS50ZXh0KGUucm9sZUEpLm5vZGUoKS5nZXRCQm94KCk7dC5pbnNlcnQoInJlY3QiLCIjIitsKS5hdHRyKCJjbGFzcyIsImVyIHJlbGF0aW9uc2hpcExhYmVsQm94IikuYXR0cigieCIsdS54LWgud2lkdGgvMikuYXR0cigieSIsdS55LWguaGVpZ2h0LzIpLmF0dHIoIndpZHRoIixoLndpZHRoKS5hdHRyKCJoZWlnaHQiLGguaGVpZ2h0KS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCI4NSUiKX0oaSx0LHIsYSl9KSk7dmFyIGM9UF8uZGlhZ3JhbVBhZGRpbmcsdT1pLm5vZGUoKS5nZXRCQm94KCksbD11LndpZHRoKzIqYyxoPXUuaGVpZ2h0KzIqYzt6dihpLGgsbCxQXy51c2VNYXhXaWR0aCksaS5hdHRyKCJ2aWV3Qm94IiwiIi5jb25jYXQodS54LWMsIiAiKS5jb25jYXQodS55LWMsIiAiKS5jb25jYXQobCwiICIpLmNvbmNhdChoKSl9O2Z1bmN0aW9uIHFfKHQpe3JldHVybiBxXz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scV8odCl9ZnVuY3Rpb24gSF8odCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgJF8sV18sVl89ImZsb3djaGFydC0iLEdfPTAsWF89SnYoKSxaXz17fSxRXz1bXSxLXz1bXSxKXz1bXSx0eD17fSxleD17fSxueD0wLHJ4PSEwLGl4PVtdLGF4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3Qua2V5cyhaXyksbj0wO248ZS5sZW5ndGg7bisrKWlmKFpfW2Vbbl1dLmlkPT09dClyZXR1cm4gWl9bZVtuXV0uZG9tSWQ7cmV0dXJuIHR9LG94PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXtzdGFydDp0LGVuZDplLHR5cGU6dm9pZCAwLHRleHQ6IiJ9O3ZvaWQgMCE9PShyPW4udGV4dCkmJihpLnRleHQ9VW0uc2FuaXRpemVUZXh0KHIudHJpbSgpLFhfKSwnIic9PT1pLnRleHRbMF0mJiciJz09PWkudGV4dFtpLnRleHQubGVuZ3RoLTFdJiYoaS50ZXh0PWkudGV4dC5zdWJzdHJpbmcoMSxpLnRleHQubGVuZ3RoLTEpKSksdm9pZCAwIT09biYmKGkudHlwZT1uLnR5cGUsaS5zdHJva2U9bi5zdHJva2UsaS5sZW5ndGg9bi5sZW5ndGgpLFFfLnB1c2goaSl9LHN4PWZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQ7dm9pZCAwIT09Wl9bbl0mJlpfW25dLmNsYXNzZXMucHVzaChlKSx2b2lkIDAhPT10eFtuXSYmdHhbbl0uY2xhc3Nlcy5wdXNoKGUpfSkpfSxjeD1mdW5jdGlvbih0KXt2YXIgZT1hdSgiLm1lcm1haWRUb29sdGlwIik7bnVsbD09PShlLl9ncm91cHN8fGUpWzBdWzBdJiYoZT1hdSgiYm9keSIpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJtZXJtYWlkVG9vbHRpcCIpLnN0eWxlKCJvcGFjaXR5IiwwKSksYXUodCkuc2VsZWN0KCJzdmciKS5zZWxlY3RBbGwoImcubm9kZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe3ZhciB0PWF1KHRoaXMpO2lmKG51bGwhPT10LmF0dHIoInRpdGxlIikpe3ZhciBuPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMjAwKS5zdHlsZSgib3BhY2l0eSIsIi45IiksZS5odG1sKHQuYXR0cigidGl0bGUiKSkuc3R5bGUoImxlZnQiLHdpbmRvdy5zY3JvbGxYK24ubGVmdCsobi5yaWdodC1uLmxlZnQpLzIrInB4Iikuc3R5bGUoInRvcCIsd2luZG93LnNjcm9sbFkrbi50b3AtMTQrZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ArInB4IiksdC5jbGFzc2VkKCJob3ZlciIsITApfX0pKS5vbigibW91c2VvdXQiLChmdW5jdGlvbigpe2UudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuc3R5bGUoIm9wYWNpdHkiLDApLGF1KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSl9O2l4LnB1c2goY3gpO3ZhciB1eD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPEpfLmxlbmd0aDtlKyspaWYoSl9bZV0uaWQ9PT10KXJldHVybiBlO3JldHVybi0xfSxseD0tMSxoeD1bXSxmeD1mdW5jdGlvbiB0KGUsbil7dmFyIHI9Sl9bbl0ubm9kZXM7aWYoISgobHgrPTEpPjJlMykpe2lmKGh4W2x4XT1uLEpfW25dLmlkPT09ZSlyZXR1cm57cmVzdWx0OiEwLGNvdW50OjB9O2Zvcih2YXIgaT0wLGE9MTtpPHIubGVuZ3RoOyl7dmFyIG89dXgocltpXSk7aWYobz49MCl7dmFyIHM9dChlLG8pO2lmKHMucmVzdWx0KXJldHVybntyZXN1bHQ6ITAsY291bnQ6YStzLmNvdW50fTthKz1zLmNvdW50fWkrPTF9cmV0dXJue3Jlc3VsdDohMSxjb3VudDphfX19LGR4PWZ1bmN0aW9uKHQsZSl7dmFyIG49ITE7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5ub2Rlcy5pbmRleE9mKGUpPj0wJiYobj0hMCl9KSksbn0scHg9ZnVuY3Rpb24odCxlKXt2YXIgbj1bXTtyZXR1cm4gdC5ub2Rlcy5mb3JFYWNoKChmdW5jdGlvbihyLGkpe2R4KGUscil8fG4ucHVzaCh0Lm5vZGVzW2ldKX0pKSx7bm9kZXM6bn19O2NvbnN0IHl4PXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7c0MucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGRlZmF1bHRDb25maWc6ZnVuY3Rpb24oKXtyZXR1cm4gVnYuZmxvd2NoYXJ0fSxhZGRWZXJ0ZXg6ZnVuY3Rpb24odCxlLG4scixpLGEpe3ZhciBvLHM9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOnt9LGM9dDt2b2lkIDAhPT1jJiYwIT09Yy50cmltKCkubGVuZ3RoJiYodm9pZCAwPT09Wl9bY10mJihaX1tjXT17aWQ6Yyxkb21JZDpWXytjKyItIitHXyxzdHlsZXM6W10sY2xhc3NlczpbXX0pLEdfKyssdm9pZCAwIT09ZT8oWF89SnYoKSwnIic9PT0obz1VbS5zYW5pdGl6ZVRleHQoZS50cmltKCksWF8pKVswXSYmJyInPT09b1tvLmxlbmd0aC0xXSYmKG89by5zdWJzdHJpbmcoMSxvLmxlbmd0aC0xKSksWl9bY10udGV4dD1vKTp2b2lkIDA9PT1aX1tjXS50ZXh0JiYoWl9bY10udGV4dD10KSx2b2lkIDAhPT1uJiYoWl9bY10udHlwZT1uKSxudWxsIT1yJiZyLmZvckVhY2goKGZ1bmN0aW9uKHQpe1pfW2NdLnN0eWxlcy5wdXNoKHQpfSkpLG51bGwhPWkmJmkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Wl9bY10uY2xhc3Nlcy5wdXNoKHQpfSkpLHZvaWQgMCE9PWEmJihaX1tjXS5kaXI9YSksWl9bY10ucHJvcHM9cyl9LGxvb2tVcERvbUlkOmF4LGFkZExpbms6ZnVuY3Rpb24odCxlLG4scil7dmFyIGksYTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWZvcihhPTA7YTxlLmxlbmd0aDthKyspb3godFtpXSxlW2FdLG4scil9LHVwZGF0ZUxpbmtJbnRlcnBvbGF0ZTpmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ImRlZmF1bHQiPT09dD9RXy5kZWZhdWx0SW50ZXJwb2xhdGU9ZTpRX1t0XS5pbnRlcnBvbGF0ZT1lfSkpfSx1cGRhdGVMaW5rOmZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZGVmYXVsdCI9PT10P1FfLmRlZmF1bHRTdHlsZT1lOigtMT09PUh2LmlzU3Vic3RyaW5nSW5BcnJheSgiZmlsbCIsZSkmJmUucHVzaCgiZmlsbDpub25lIiksUV9bdF0uc3R5bGU9ZSl9KSl9LGFkZENsYXNzOmZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09S19bdF0mJihLX1t0XT17aWQ6dCxzdHlsZXM6W10sdGV4dFN0eWxlczpbXX0pLG51bGwhPWUmJmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZS5tYXRjaCgiY29sb3IiKSl7dmFyIG49ZS5yZXBsYWNlKCJmaWxsIiwiYmdGaWxsIikucmVwbGFjZSgiY29sb3IiLCJmaWxsIik7S19bdF0udGV4dFN0eWxlcy5wdXNoKG4pfUtfW3RdLnN0eWxlcy5wdXNoKGUpfSkpfSxzZXREaXJlY3Rpb246ZnVuY3Rpb24odCl7KCRfPXQpLm1hdGNoKC8uKjwvKSYmKCRfPSJSTCIpLCRfLm1hdGNoKC8uKlxeLykmJigkXz0iQlQiKSwkXy5tYXRjaCgvLio+LykmJigkXz0iTFIiKSwkXy5tYXRjaCgvLip2LykmJigkXz0iVEIiKX0sc2V0Q2xhc3M6c3gsc2V0VG9vbHRpcDpmdW5jdGlvbih0LGUpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2b2lkIDAhPT1lJiYoZXhbImdlbi0xIj09PVdfP2F4KHQpOnRdPVVtLnNhbml0aXplVGV4dChlLFhfKSl9KSl9LGdldFRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIGV4W3RdfSxzZXRDbGlja0V2ZW50OmZ1bmN0aW9uKHQsZSxuKXt0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1heCh0KTtpZigibG9vc2UiPT09SnYoKS5zZWN1cml0eUxldmVsJiZ2b2lkIDAhPT1lKXt2YXIgaT1bXTtpZigic3RyaW5nIj09dHlwZW9mIG4pe2k9bi5zcGxpdCgvLCg/PSg/Oig/OlteIl0qIil7Mn0pKlteIl0qJCkvKTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXS50cmltKCk7JyInPT09by5jaGFyQXQoMCkmJiciJz09PW8uY2hhckF0KG8ubGVuZ3RoLTEpJiYobz1vLnN1YnN0cigxLG8ubGVuZ3RoLTIpKSxpW2FdPW99fTA9PT1pLmxlbmd0aCYmaS5wdXNoKHQpLHZvaWQgMCE9PVpfW3RdJiYoWl9bdF0uaGF2ZUNhbGxiYWNrPSEwLGl4LnB1c2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkPSInLmNvbmNhdChyLCciXScpKTtudWxsIT09dCYmdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKCl7dmFyIHQ7SHYucnVuRnVuYy5hcHBseShIdixbZV0uY29uY2F0KGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIEhfKHQpfSh0PWkpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gSF8odCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9IXyh0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSl9KSwhMSl9KSkpfX0odCxlLG4pfSkpLHN4KHQsImNsaWNrYWJsZSIpfSxzZXRMaW5rOmZ1bmN0aW9uKHQsZSxuKXt0LnNwbGl0KCIsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09Wl9bdF0mJihaX1t0XS5saW5rPUh2LmZvcm1hdFVybChlLFhfKSxaX1t0XS5saW5rVGFyZ2V0PW4pfSkpLHN4KHQsImNsaWNrYWJsZSIpfSxiaW5kRnVuY3Rpb25zOmZ1bmN0aW9uKHQpe2l4LmZvckVhY2goKGZ1bmN0aW9uKGUpe2UodCl9KSl9LGdldERpcmVjdGlvbjpmdW5jdGlvbigpe3JldHVybiAkXy50cmltKCl9LGdldFZlcnRpY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIFpffSxnZXRFZGdlczpmdW5jdGlvbigpe3JldHVybiBRX30sZ2V0Q2xhc3NlczpmdW5jdGlvbigpe3JldHVybiBLX30sY2xlYXI6ZnVuY3Rpb24odCl7Wl89e30sS189e30sUV89W10sKGl4PVtdKS5wdXNoKGN4KSxKXz1bXSx0eD17fSxueD0wLGV4PVtdLHJ4PSEwLFdfPXR8fCJnZW4tMSJ9LHNldEdlbjpmdW5jdGlvbih0KXtXXz10fHwiZ2VuLTEifSxkZWZhdWx0U3R5bGU6ZnVuY3Rpb24oKXtyZXR1cm4iZmlsbDojZmZhO3N0cm9rZTogI2Y2Njsgc3Ryb2tlLXdpZHRoOiAzcHg7IHN0cm9rZS1kYXNoYXJyYXk6IDUsIDU7ZmlsbDojZmZhO3N0cm9rZTogIzY2NjsifSxhZGRTdWJHcmFwaDpmdW5jdGlvbih0LGUsbil7dmFyIHI9dC50cmltKCksaT1uO3Q9PT1uJiZuLm1hdGNoKC9ccy8pJiYocj12b2lkIDApO3ZhciBhPVtdLHM9ZnVuY3Rpb24odCl7dmFyIGUsbj17Ym9vbGVhbjp7fSxudW1iZXI6e30sc3RyaW5nOnt9fSxyPVtdLGk9dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXFfKHQpO3JldHVybiB0LnN0bXQmJiJkaXIiPT09dC5zdG10PyhlPXQudmFsdWUsITEpOiIiIT09dC50cmltKCkmJihpIGluIG4/IW5baV0uaGFzT3duUHJvcGVydHkodCkmJihuW2ldW3RdPSEwKTohKHIuaW5kZXhPZih0KT49MCkmJnIucHVzaCh0KSl9KSk7cmV0dXJue25vZGVMaXN0OmksZGlyOmV9fShhLmNvbmNhdC5hcHBseShhLGUpKSxjPXMubm9kZUxpc3QsdT1zLmRpcjtpZihhPWMsImdlbi0xIj09PVdfKXtvLndhcm4oIkxPT0tJTkcgVVAiKTtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylhW2xdPWF4KGFbbF0pfXI9cnx8InN1YkdyYXBoIitueCxpPWl8fCIiLGk9VW0uc2FuaXRpemVUZXh0KGksWF8pLG54Kz0xO3ZhciBoPXtpZDpyLG5vZGVzOmEsdGl0bGU6aS50cmltKCksY2xhc3NlczpbXSxkaXI6dX07cmV0dXJuIG8uaW5mbygiQWRkaW5nIixoLmlkLGgubm9kZXMsaC5kaXIpLGgubm9kZXM9cHgoaCxKXykubm9kZXMsSl8ucHVzaChoKSx0eFtyXT1oLHJ9LGdldERlcHRoRmlyc3RQb3M6ZnVuY3Rpb24odCl7cmV0dXJuIGh4W3RdfSxpbmRleE5vZGVzOmZ1bmN0aW9uKCl7bHg9LTEsSl8ubGVuZ3RoPjAmJmZ4KCJub25lIixKXy5sZW5ndGgtMSl9LGdldFN1YkdyYXBoczpmdW5jdGlvbigpe3JldHVybiBKX30sZGVzdHJ1Y3RMaW5rOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj1mdW5jdGlvbih0KXt2YXIgZT10LnRyaW0oKSxuPWUuc2xpY2UoMCwtMSkscj0iYXJyb3dfb3BlbiI7c3dpdGNoKGUuc2xpY2UoLTEpKXtjYXNlIngiOnI9ImFycm93X2Nyb3NzIiwieCI9PT1lWzBdJiYocj0iZG91YmxlXyIrcixuPW4uc2xpY2UoMSkpO2JyZWFrO2Nhc2UiPiI6cj0iYXJyb3dfcG9pbnQiLCI8Ij09PWVbMF0mJihyPSJkb3VibGVfIityLG49bi5zbGljZSgxKSk7YnJlYWs7Y2FzZSJvIjpyPSJhcnJvd19jaXJjbGUiLCJvIj09PWVbMF0mJihyPSJkb3VibGVfIityLG49bi5zbGljZSgxKSl9dmFyIGk9Im5vcm1hbCIsYT1uLmxlbmd0aC0xOyI9Ij09PW5bMF0mJihpPSJ0aGljayIpO3ZhciBvPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9MCxpPTA7aTxuOysraSkiLiI9PT1lW2ldJiYrK3I7cmV0dXJuIHJ9KDAsbik7cmV0dXJuIG8mJihpPSJkb3R0ZWQiLGE9bykse3R5cGU6cixzdHJva2U6aSxsZW5ndGg6YX19KHQpO2lmKGUpe2lmKG49ZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCksbj0iYXJyb3dfb3BlbiI7c3dpdGNoKGVbMF0pe2Nhc2UiPCI6bj0iYXJyb3dfcG9pbnQiLGU9ZS5zbGljZSgxKTticmVhaztjYXNlIngiOm49ImFycm93X2Nyb3NzIixlPWUuc2xpY2UoMSk7YnJlYWs7Y2FzZSJvIjpuPSJhcnJvd19jaXJjbGUiLGU9ZS5zbGljZSgxKX12YXIgcj0ibm9ybWFsIjtyZXR1cm4tMSE9PWUuaW5kZXhPZigiPSIpJiYocj0idGhpY2siKSwtMSE9PWUuaW5kZXhPZigiLiIpJiYocj0iZG90dGVkIikse3R5cGU6bixzdHJva2U6cn19KGUpLG4uc3Ryb2tlIT09ci5zdHJva2UpcmV0dXJue3R5cGU6IklOVkFMSUQiLHN0cm9rZToiSU5WQUxJRCJ9O2lmKCJhcnJvd19vcGVuIj09PW4udHlwZSluLnR5cGU9ci50eXBlO2Vsc2V7aWYobi50eXBlIT09ci50eXBlKXJldHVybnt0eXBlOiJJTlZBTElEIixzdHJva2U6IklOVkFMSUQifTtuLnR5cGU9ImRvdWJsZV8iK24udHlwZX1yZXR1cm4iZG91YmxlX2Fycm93Ij09PW4udHlwZSYmKG4udHlwZT0iZG91YmxlX2Fycm93X3BvaW50Iiksbi5sZW5ndGg9ci5sZW5ndGgsbn1yZXR1cm4gcn0sbGV4OntmaXJzdEdyYXBoOmZ1bmN0aW9uKCl7cmV0dXJuISFyeCYmKHJ4PSExLCEwKX19LGV4aXN0czpkeCxtYWtlVW5pcTpweH07dmFyIGd4PW4oMzYwMiksbXg9bi5uKGd4KSx2eD1uKDQ5NDkpLGJ4PW4ubih2eCksX3g9big4Mjg0KSx4eD1uLm4oX3gpO2Z1bmN0aW9uIHd4KHQsZSxuKXt2YXIgcj0uOSooZS53aWR0aCtlLmhlaWdodCksaT1be3g6ci8yLHk6MH0se3g6cix5Oi1yLzJ9LHt4OnIvMix5Oi1yfSx7eDowLHk6LXIvMn1dLGE9QngodCxyLHIsaSk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBieCgpLmludGVyc2VjdC5wb2x5Z29uKG4saSx0KX0sYX1mdW5jdGlvbiBreCh0LGUsbil7dmFyIHI9ZS5oZWlnaHQsaT1yLzQsYT1lLndpZHRoKzIqaSxvPVt7eDppLHk6MH0se3g6YS1pLHk6MH0se3g6YSx5Oi1yLzJ9LHt4OmEtaSx5Oi1yfSx7eDppLHk6LXJ9LHt4OjAseTotci8yfV0scz1CeCh0LGEscixvKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGJ4KCkuaW50ZXJzZWN0LnBvbHlnb24obixvLHQpfSxzfWZ1bmN0aW9uIFR4KHQsZSxuKXt2YXIgcj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6LWkvMix5OjB9LHt4OnIseTowfSx7eDpyLHk6LWl9LHt4Oi1pLzIseTotaX0se3g6MCx5Oi1pLzJ9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gRXgodCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDotMippLzYseTowfSx7eDpyLWkvNix5OjB9LHt4OnIrMippLzYseTotaX0se3g6aS82LHk6LWl9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gQ3godCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDoyKmkvNix5OjB9LHt4OnIraS82LHk6MH0se3g6ci0yKmkvNix5Oi1pfSx7eDotaS82LHk6LWl9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gU3godCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDotMippLzYseTowfSx7eDpyKzIqaS82LHk6MH0se3g6ci1pLzYseTotaX0se3g6aS82LHk6LWl9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gQXgodCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDppLzYseTowfSx7eDpyLWkvNix5OjB9LHt4OnIrMippLzYseTotaX0se3g6LTIqaS82LHk6LWl9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gTXgodCxlLG4pe3ZhciByPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDowLHk6MH0se3g6citpLzIseTowfSx7eDpyLHk6LWkvMn0se3g6citpLzIseTotaX0se3g6MCx5Oi1pfV0sbz1CeCh0LHIsaSxhKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGJ4KCkuaW50ZXJzZWN0LnBvbHlnb24obixhLHQpfSxvfWZ1bmN0aW9uIE54KHQsZSxuKXt2YXIgcj1lLmhlaWdodCxpPWUud2lkdGgrci80LGE9dC5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJyeCIsci8yKS5hdHRyKCJyeSIsci8yKS5hdHRyKCJ4IiwtaS8yKS5hdHRyKCJ5Iiwtci8yKS5hdHRyKCJ3aWR0aCIsaSkuYXR0cigiaGVpZ2h0IixyKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGJ4KCkuaW50ZXJzZWN0LnJlY3Qobix0KX0sYX1mdW5jdGlvbiBEeCh0LGUsbil7dmFyIHI9ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4OjAseTowfSx7eDpyLHk6MH0se3g6cix5Oi1pfSx7eDowLHk6LWl9LHt4OjAseTowfSx7eDotOCx5OjB9LHt4OnIrOCx5OjB9LHt4OnIrOCx5Oi1pfSx7eDotOCx5Oi1pfSx7eDotOCx5OjB9XSxvPUJ4KHQscixpLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gYngoKS5pbnRlcnNlY3QucG9seWdvbihuLGEsdCl9LG99ZnVuY3Rpb24gT3godCxlLG4pe3ZhciByPWUud2lkdGgsaT1yLzIsYT1pLygyLjUrci81MCksbz1lLmhlaWdodCthLHM9Ik0gMCwiK2ErIiBhICIraSsiLCIrYSsiIDAsMCwwICIrcisiIDAgYSAiK2krIiwiK2ErIiAwLDAsMCAiKy1yKyIgMCBsIDAsIitvKyIgYSAiK2krIiwiK2ErIiAwLDAsMCAiK3IrIiAwIGwgMCwiKy1vLGM9dC5hdHRyKCJsYWJlbC1vZmZzZXQteSIsYSkuaW5zZXJ0KCJwYXRoIiwiOmZpcnN0LWNoaWxkIikuYXR0cigiZCIscykuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLXIvMisiLCIrLShvLzIrYSkrIikiKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9YngoKS5pbnRlcnNlY3QucmVjdChuLHQpLHI9ZS54LW4ueDtpZigwIT1pJiYoTWF0aC5hYnMocik8bi53aWR0aC8yfHxNYXRoLmFicyhyKT09bi53aWR0aC8yJiZNYXRoLmFicyhlLnktbi55KT5uLmhlaWdodC8yLWEpKXt2YXIgbz1hKmEqKDEtcipyLyhpKmkpKTswIT1vJiYobz1NYXRoLnNxcnQobykpLG89YS1vLHQueS1uLnk+MCYmKG89LW8pLGUueSs9b31yZXR1cm4gZX0sY31mdW5jdGlvbiBCeCh0LGUsbixyKXtyZXR1cm4gdC5pbnNlcnQoInBvbHlnb24iLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJwb2ludHMiLHIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54KyIsIit0Lnl9KSkuam9pbigiICIpKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistZS8yKyIsIituLzIrIikiKX1jb25zdCBMeD1mdW5jdGlvbih0KXt0LnNoYXBlcygpLnF1ZXN0aW9uPXd4LHQuc2hhcGVzKCkuaGV4YWdvbj1reCx0LnNoYXBlcygpLnN0YWRpdW09TngsdC5zaGFwZXMoKS5zdWJyb3V0aW5lPUR4LHQuc2hhcGVzKCkuY3lsaW5kZXI9T3gsdC5zaGFwZXMoKS5yZWN0X2xlZnRfaW52X2Fycm93PVR4LHQuc2hhcGVzKCkubGVhbl9yaWdodD1FeCx0LnNoYXBlcygpLmxlYW5fbGVmdD1DeCx0LnNoYXBlcygpLnRyYXBlem9pZD1TeCx0LnNoYXBlcygpLmludl90cmFwZXpvaWQ9QXgsdC5zaGFwZXMoKS5yZWN0X3JpZ2h0X2ludl9hcnJvdz1NeH07dmFyIEl4PXt9O2NvbnN0IFJ4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3Qua2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspSXhbZVtuXV09dFtlW25dXX0sRng9ZnVuY3Rpb24odCxlKXtvLmluZm8oIkRyYXdpbmcgZmxvd2NoYXJ0IikseXguY2xlYXIoKSx5eC5zZXRHZW4oImdlbi0xIik7dmFyIG49bXgoKS5wYXJzZXI7bi55eT15eCxuLnBhcnNlKHQpO3ZhciByPXl4LmdldERpcmVjdGlvbigpO3ZvaWQgMD09PXImJihyPSJURCIpO2Zvcih2YXIgaSxhPUp2KCkuZmxvd2NoYXJ0LHM9YS5ub2RlU3BhY2luZ3x8NTAsYz1hLnJhbmtTcGFjaW5nfHw1MCx1PW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOnIsbm9kZXNlcDpzLHJhbmtzZXA6YyxtYXJnaW54OjgsbWFyZ2lueTo4fSkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKSxsPXl4LmdldFN1YkdyYXBocygpLGg9bC5sZW5ndGgtMTtoPj0wO2gtLSlpPWxbaF0seXguYWRkVmVydGV4KGkuaWQsaS50aXRsZSwiZ3JvdXAiLHZvaWQgMCxpLmNsYXNzZXMpO3ZhciBmPXl4LmdldFZlcnRpY2VzKCk7by53YXJuKCJHZXQgdmVydGljZXMiLGYpO3ZhciBkPXl4LmdldEVkZ2VzKCkscD0wO2ZvcihwPWwubGVuZ3RoLTE7cD49MDtwLS0pe2k9bFtwXSxvdSgiY2x1c3RlciIpLmFwcGVuZCgidGV4dCIpO2Zvcih2YXIgeT0wO3k8aS5ub2Rlcy5sZW5ndGg7eSsrKW8ud2FybigiU2V0dGluZyBzdWJncmFwaCIsaS5ub2Rlc1t5XSx5eC5sb29rVXBEb21JZChpLm5vZGVzW3ldKSx5eC5sb29rVXBEb21JZChpLmlkKSksdS5zZXRQYXJlbnQoeXgubG9va1VwRG9tSWQoaS5ub2Rlc1t5XSkseXgubG9va1VwRG9tSWQoaS5pZCkpfShmdW5jdGlvbih0LGUsbil7dmFyIHI9YXUoJ1tpZD0iJy5jb25jYXQobiwnIl0nKSk7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9dFtuXSxhPSJkZWZhdWx0IjtpLmNsYXNzZXMubGVuZ3RoPjAmJihhPWkuY2xhc3Nlcy5qb2luKCIgIikpO3ZhciBzLGM9TnYoaS5zdHlsZXMpLHU9dm9pZCAwIT09aS50ZXh0P2kudGV4dDppLmlkO2lmKHptKEp2KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXt2YXIgbD17bGFiZWw6dS5yZXBsYWNlKC9mYVtscnNiXT86ZmEtW1x3LV0rL2csKGZ1bmN0aW9uKHQpe3JldHVybiI8aSBjbGFzcz0nIi5jb25jYXQodC5yZXBsYWNlKCI6IiwiICIpLCInPjwvaT4iKX0pKX07KHM9eHgoKShyLGwpLm5vZGUoKSkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKX1lbHNle3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7aC5zZXRBdHRyaWJ1dGUoInN0eWxlIixjLmxhYmVsU3R5bGUucmVwbGFjZSgiY29sb3I6IiwiZmlsbDoiKSk7Zm9yKHZhciBmPXUuc3BsaXQoVW0ubGluZUJyZWFrUmVnZXgpLGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7cC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxwLnNldEF0dHJpYnV0ZSgiZHkiLCIxZW0iKSxwLnNldEF0dHJpYnV0ZSgieCIsIjEiKSxwLnRleHRDb250ZW50PWZbZF0saC5hcHBlbmRDaGlsZChwKX1zPWh9dmFyIHk9MCxnPSIiO3N3aXRjaChpLnR5cGUpe2Nhc2Uicm91bmQiOnk9NSxnPSJyZWN0IjticmVhaztjYXNlInNxdWFyZSI6Y2FzZSJncm91cCI6ZGVmYXVsdDpnPSJyZWN0IjticmVhaztjYXNlImRpYW1vbmQiOmc9InF1ZXN0aW9uIjticmVhaztjYXNlImhleGFnb24iOmc9ImhleGFnb24iO2JyZWFrO2Nhc2Uib2RkIjpjYXNlIm9kZF9yaWdodCI6Zz0icmVjdF9sZWZ0X2ludl9hcnJvdyI7YnJlYWs7Y2FzZSJsZWFuX3JpZ2h0IjpnPSJsZWFuX3JpZ2h0IjticmVhaztjYXNlImxlYW5fbGVmdCI6Zz0ibGVhbl9sZWZ0IjticmVhaztjYXNlInRyYXBlem9pZCI6Zz0idHJhcGV6b2lkIjticmVhaztjYXNlImludl90cmFwZXpvaWQiOmc9Imludl90cmFwZXpvaWQiO2JyZWFrO2Nhc2UiY2lyY2xlIjpnPSJjaXJjbGUiO2JyZWFrO2Nhc2UiZWxsaXBzZSI6Zz0iZWxsaXBzZSI7YnJlYWs7Y2FzZSJzdGFkaXVtIjpnPSJzdGFkaXVtIjticmVhaztjYXNlInN1YnJvdXRpbmUiOmc9InN1YnJvdXRpbmUiO2JyZWFrO2Nhc2UiY3lsaW5kZXIiOmc9ImN5bGluZGVyIn1vLndhcm4oIkFkZGluZyBub2RlIixpLmlkLGkuZG9tSWQpLGUuc2V0Tm9kZSh5eC5sb29rVXBEb21JZChpLmlkKSx7bGFiZWxUeXBlOiJzdmciLGxhYmVsU3R5bGU6Yy5sYWJlbFN0eWxlLHNoYXBlOmcsbGFiZWw6cyxyeDp5LHJ5OnksY2xhc3M6YSxzdHlsZTpjLnN0eWxlLGlkOnl4Lmxvb2tVcERvbUlkKGkuaWQpfSl9KSl9KShmLHUsZSksZnVuY3Rpb24odCxlKXt2YXIgbixyLGk9MDtpZih2b2lkIDAhPT10LmRlZmF1bHRTdHlsZSl7dmFyIGE9TnYodC5kZWZhdWx0U3R5bGUpO249YS5zdHlsZSxyPWEubGFiZWxTdHlsZX10LmZvckVhY2goKGZ1bmN0aW9uKGEpe2krKzt2YXIgbz0iTC0iK2Euc3RhcnQrIi0iK2EuZW5kLHM9IkxTLSIrYS5zdGFydCxjPSJMRS0iK2EuZW5kLHU9e307ImFycm93X29wZW4iPT09YS50eXBlP3UuYXJyb3doZWFkPSJub25lIjp1LmFycm93aGVhZD0ibm9ybWFsIjt2YXIgbD0iIixoPSIiO2lmKHZvaWQgMCE9PWEuc3R5bGUpe3ZhciBmPU52KGEuc3R5bGUpO2w9Zi5zdHlsZSxoPWYubGFiZWxTdHlsZX1lbHNlIHN3aXRjaChhLnN0cm9rZSl7Y2FzZSJub3JtYWwiOmw9ImZpbGw6bm9uZSIsdm9pZCAwIT09biYmKGw9biksdm9pZCAwIT09ciYmKGg9cik7YnJlYWs7Y2FzZSJkb3R0ZWQiOmw9ImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1kYXNoYXJyYXk6MzsiO2JyZWFrO2Nhc2UidGhpY2siOmw9IiBzdHJva2Utd2lkdGg6IDMuNXB4O2ZpbGw6bm9uZSJ9dS5zdHlsZT1sLHUubGFiZWxTdHlsZT1oLHZvaWQgMCE9PWEuaW50ZXJwb2xhdGU/dS5jdXJ2ZT1BdihhLmludGVycG9sYXRlLFB1KTp2b2lkIDAhPT10LmRlZmF1bHRJbnRlcnBvbGF0ZT91LmN1cnZlPUF2KHQuZGVmYXVsdEludGVycG9sYXRlLFB1KTp1LmN1cnZlPUF2KEl4LmN1cnZlLFB1KSx2b2lkIDA9PT1hLnRleHQ/dm9pZCAwIT09YS5zdHlsZSYmKHUuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiKToodS5hcnJvd2hlYWRTdHlsZT0iZmlsbDogIzMzMyIsdS5sYWJlbHBvcz0iYyIsem0oSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscyk/KHUubGFiZWxUeXBlPSJodG1sIix1LmxhYmVsPSc8c3BhbiBpZD0iTC0nLmNvbmNhdChvLCciIGNsYXNzPSJlZGdlTGFiZWwgTC0nKS5jb25jYXQocywiJyBMLSIpLmNvbmNhdChjLCciPicpLmNvbmNhdChhLnRleHQucmVwbGFjZSgvZmFbbHJzYl0/OmZhLVtcdy1dKy9nLChmdW5jdGlvbih0KXtyZXR1cm4iPGkgY2xhc3M9JyIuY29uY2F0KHQucmVwbGFjZSgiOiIsIiAiKSwiJz48L2k+Iil9KSksIjwvc3Bhbj4iKSk6KHUubGFiZWxUeXBlPSJ0ZXh0Iix1LmxhYmVsPWEudGV4dC5yZXBsYWNlKFVtLmxpbmVCcmVha1JlZ2V4LCJcbiIpLHZvaWQgMD09PWEuc3R5bGUmJih1LnN0eWxlPXUuc3R5bGV8fCJzdHJva2U6ICMzMzM7IHN0cm9rZS13aWR0aDogMS41cHg7ZmlsbDpub25lIiksdS5sYWJlbFN0eWxlPXUubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpKSksdS5pZD1vLHUuY2xhc3M9cysiICIrYyx1Lm1pbmxlbj1hLmxlbmd0aHx8MSxlLnNldEVkZ2UoeXgubG9va1VwRG9tSWQoYS5zdGFydCkseXgubG9va1VwRG9tSWQoYS5lbmQpLHUsaSl9KSl9KGQsdSk7dmFyIGc9bmV3KDAsYngoKS5yZW5kZXIpO0x4KGcpLGcuYXJyb3dzKCkubm9uZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT10LmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInN0cm9rZVdpZHRoIikuYXR0cigibWFya2VyV2lkdGgiLDgpLmF0dHIoIm1hcmtlckhlaWdodCIsNikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDAgMCBMIDAgMCB6Iik7YngoKS51dGlsLmFwcGx5U3R5bGUoaSxuW3IrIlN0eWxlIl0pfSxnLmFycm93cygpLm5vcm1hbD1mdW5jdGlvbih0LGUpe3QuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpLmF0dHIoImNsYXNzIiwiYXJyb3doZWFkUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIil9O3ZhciBtPWF1KCdbaWQ9IicuY29uY2F0KGUsJyJdJykpO20uYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksby53YXJuKHUpO3ZhciB2PWF1KCIjIitlKyIgZyIpO2codix1KSx2LnNlbGVjdEFsbCgiZy5ub2RlIikuYXR0cigidGl0bGUiLChmdW5jdGlvbigpe3JldHVybiB5eC5nZXRUb29sdGlwKHRoaXMuaWQpfSkpO3ZhciBiPWEuZGlhZ3JhbVBhZGRpbmcsXz1tLm5vZGUoKS5nZXRCQm94KCkseD1fLndpZHRoKzIqYix3PV8uaGVpZ2h0KzIqYjt6dihtLHcseCxhLnVzZU1heFdpZHRoKTt2YXIgaz0iIi5jb25jYXQoXy54LWIsIiAiKS5jb25jYXQoXy55LWIsIiAiKS5jb25jYXQoeCwiICIpLmNvbmNhdCh3KTtmb3Ioby5kZWJ1Zygidmlld0JveCAiLmNvbmNhdChrKSksbS5hdHRyKCJ2aWV3Qm94IixrKSx5eC5pbmRleE5vZGVzKCJzdWJHcmFwaCIrcCkscD0wO3A8bC5sZW5ndGg7cCsrKWlmKCJ1bmRlZmluZWQiIT09KGk9bFtwXSkudGl0bGUpe3ZhciBUPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiMiK2UrJyBbaWQ9IicreXgubG9va1VwRG9tSWQoaS5pZCkrJyJdIHJlY3QnKSxFPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiMiK2UrJyBbaWQ9IicreXgubG9va1VwRG9tSWQoaS5pZCkrJyJdJyksQz1UWzBdLnguYmFzZVZhbC52YWx1ZSxTPVRbMF0ueS5iYXNlVmFsLnZhbHVlLEE9VFswXS53aWR0aC5iYXNlVmFsLnZhbHVlLE09YXUoRVswXSkuc2VsZWN0KCIubGFiZWwiKTtNLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiLmNvbmNhdChDK0EvMiwiLCAiKS5jb25jYXQoUysxNCwiKSIpKSxNLmF0dHIoImlkIixlKyJUZXh0Iik7Zm9yKHZhciBOPTA7TjxpLmNsYXNzZXMubGVuZ3RoO04rKylFWzBdLmNsYXNzTGlzdC5hZGQoaS5jbGFzc2VzW05dKX16bShhLmh0bWxMYWJlbHMpO2Zvcih2YXIgRD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9IicrZSsnIl0gLmVkZ2VMYWJlbCAubGFiZWwnKSxPPTA7TzxELmxlbmd0aDtPKyspe3ZhciBCPURbT10sTD1CLmdldEJCb3goKSxJPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWN0Iik7SS5zZXRBdHRyaWJ1dGUoInJ4IiwwKSxJLnNldEF0dHJpYnV0ZSgicnkiLDApLEkuc2V0QXR0cmlidXRlKCJ3aWR0aCIsTC53aWR0aCksSS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsTC5oZWlnaHQpLEIuaW5zZXJ0QmVmb3JlKEksQi5maXJzdENoaWxkKX1PYmplY3Qua2V5cyhmKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1mW3RdO2lmKG4ubGluayl7dmFyIHI9YXUoIiMiK2UrJyBbaWQ9IicreXgubG9va1VwRG9tSWQodCkrJyJdJyk7aWYocil7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImEiKTtpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNsYXNzIixuLmNsYXNzZXMuam9pbigiICIpKSxpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImhyZWYiLG4ubGluayksaS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWwiLCJub29wZW5lciIpLG4ubGlua1RhcmdldCYmaS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0YXJnZXQiLG4ubGlua1RhcmdldCk7dmFyIGE9ci5pbnNlcnQoKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSwiOmZpcnN0LWNoaWxkIiksbz1yLnNlbGVjdCgiLmxhYmVsLWNvbnRhaW5lciIpO28mJmEuYXBwZW5kKChmdW5jdGlvbigpe3JldHVybiBvLm5vZGUoKX0pKTt2YXIgcz1yLnNlbGVjdCgiLmxhYmVsIik7cyYmYS5hcHBlbmQoKGZ1bmN0aW9uKCl7cmV0dXJuIHMubm9kZSgpfSkpfX19KSl9O3ZhciBQeD17fTtjb25zdCBqeD1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKVB4W2Vbbl1dPXRbZVtuXV19LFl4PWZ1bmN0aW9uKHQsZSl7by5pbmZvKCJEcmF3aW5nIGZsb3djaGFydCIpLHl4LmNsZWFyKCkseXguc2V0R2VuKCJnZW4tMiIpO3ZhciBuPW14KCkucGFyc2VyO24ueXk9eXgsbi5wYXJzZSh0KTt2YXIgcj15eC5nZXREaXJlY3Rpb24oKTt2b2lkIDA9PT1yJiYocj0iVEQiKTt2YXIgaSxhPUp2KCkuZmxvd2NoYXJ0LHM9YS5ub2RlU3BhY2luZ3x8NTAsYz1hLnJhbmtTcGFjaW5nfHw1MCx1PW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOnIsbm9kZXNlcDpzLHJhbmtzZXA6YyxtYXJnaW54OjgsbWFyZ2lueTo4fSkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKSxsPXl4LmdldFN1YkdyYXBocygpO28uaW5mbygiU3ViZ3JhcGhzIC0gIixsKTtmb3IodmFyIGg9bC5sZW5ndGgtMTtoPj0wO2gtLSlpPWxbaF0sby5pbmZvKCJTdWJncmFwaCAtICIsaSkseXguYWRkVmVydGV4KGkuaWQsaS50aXRsZSwiZ3JvdXAiLHZvaWQgMCxpLmNsYXNzZXMsaS5kaXIpO3ZhciBmPXl4LmdldFZlcnRpY2VzKCksZD15eC5nZXRFZGdlcygpO28uaW5mbyhkKTt2YXIgcD0wO2ZvcihwPWwubGVuZ3RoLTE7cD49MDtwLS0pe2k9bFtwXSxvdSgiY2x1c3RlciIpLmFwcGVuZCgidGV4dCIpO2Zvcih2YXIgeT0wO3k8aS5ub2Rlcy5sZW5ndGg7eSsrKW8uaW5mbygiU2V0dGluZyB1cCBzdWJncmFwaHMiLGkubm9kZXNbeV0saS5pZCksdS5zZXRQYXJlbnQoaS5ub2Rlc1t5XSxpLmlkKX0oZnVuY3Rpb24odCxlLG4pe3ZhciByPWF1KCdbaWQ9IicuY29uY2F0KG4sJyJdJykpO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPXRbbl0sYT0iZGVmYXVsdCI7aS5jbGFzc2VzLmxlbmd0aD4wJiYoYT1pLmNsYXNzZXMuam9pbigiICIpKTt2YXIgcyxjPU52KGkuc3R5bGVzKSx1PXZvaWQgMCE9PWkudGV4dD9pLnRleHQ6aS5pZDtpZih6bShKdigpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7dmFyIGw9e2xhYmVsOnUucmVwbGFjZSgvZmFbbHJzYl0/OmZhLVtcdy1dKy9nLChmdW5jdGlvbih0KXtyZXR1cm4iPGkgY2xhc3M9JyIuY29uY2F0KHQucmVwbGFjZSgiOiIsIiAiKSwiJz48L2k+Iil9KSl9OyhzPXh4KCkocixsKS5ub2RlKCkpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocyl9ZWxzZXt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidGV4dCIpO2guc2V0QXR0cmlidXRlKCJzdHlsZSIsYy5sYWJlbFN0eWxlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpO2Zvcih2YXIgZj11LnNwbGl0KFVtLmxpbmVCcmVha1JlZ2V4KSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0c3BhbiIpO3Auc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsInhtbDpzcGFjZSIsInByZXNlcnZlIikscC5zZXRBdHRyaWJ1dGUoImR5IiwiMWVtIikscC5zZXRBdHRyaWJ1dGUoIngiLCIxIikscC50ZXh0Q29udGVudD1mW2RdLGguYXBwZW5kQ2hpbGQocCl9cz1ofXZhciB5PTAsZz0iIjtzd2l0Y2goaS50eXBlKXtjYXNlInJvdW5kIjp5PTUsZz0icmVjdCI7YnJlYWs7Y2FzZSJzcXVhcmUiOmNhc2UiZ3JvdXAiOmRlZmF1bHQ6Zz0icmVjdCI7YnJlYWs7Y2FzZSJkaWFtb25kIjpnPSJxdWVzdGlvbiI7YnJlYWs7Y2FzZSJoZXhhZ29uIjpnPSJoZXhhZ29uIjticmVhaztjYXNlIm9kZCI6Y2FzZSJvZGRfcmlnaHQiOmc9InJlY3RfbGVmdF9pbnZfYXJyb3ciO2JyZWFrO2Nhc2UibGVhbl9yaWdodCI6Zz0ibGVhbl9yaWdodCI7YnJlYWs7Y2FzZSJsZWFuX2xlZnQiOmc9ImxlYW5fbGVmdCI7YnJlYWs7Y2FzZSJ0cmFwZXpvaWQiOmc9InRyYXBlem9pZCI7YnJlYWs7Y2FzZSJpbnZfdHJhcGV6b2lkIjpnPSJpbnZfdHJhcGV6b2lkIjticmVhaztjYXNlImNpcmNsZSI6Zz0iY2lyY2xlIjticmVhaztjYXNlImVsbGlwc2UiOmc9ImVsbGlwc2UiO2JyZWFrO2Nhc2Uic3RhZGl1bSI6Zz0ic3RhZGl1bSI7YnJlYWs7Y2FzZSJzdWJyb3V0aW5lIjpnPSJzdWJyb3V0aW5lIjticmVhaztjYXNlImN5bGluZGVyIjpnPSJjeWxpbmRlciJ9ZS5zZXROb2RlKGkuaWQse2xhYmVsU3R5bGU6Yy5sYWJlbFN0eWxlLHNoYXBlOmcsbGFiZWxUZXh0OnUscng6eSxyeTp5LGNsYXNzOmEsc3R5bGU6Yy5zdHlsZSxpZDppLmlkLGxpbms6aS5saW5rLGxpbmtUYXJnZXQ6aS5saW5rVGFyZ2V0LHRvb2x0aXA6eXguZ2V0VG9vbHRpcChpLmlkKXx8IiIsZG9tSWQ6eXgubG9va1VwRG9tSWQoaS5pZCksaGF2ZUNhbGxiYWNrOmkuaGF2ZUNhbGxiYWNrLHdpZHRoOiJncm91cCI9PT1pLnR5cGU/NTAwOnZvaWQgMCxkaXI6aS5kaXIsdHlwZTppLnR5cGUscHJvcHM6aS5wcm9wcyxwYWRkaW5nOkp2KCkuZmxvd2NoYXJ0LnBhZGRpbmd9KSxvLmluZm8oInNldE5vZGUiLHtsYWJlbFN0eWxlOmMubGFiZWxTdHlsZSxzaGFwZTpnLGxhYmVsVGV4dDp1LHJ4Onkscnk6eSxjbGFzczphLHN0eWxlOmMuc3R5bGUsaWQ6aS5pZCxkb21JZDp5eC5sb29rVXBEb21JZChpLmlkKSx3aWR0aDoiZ3JvdXAiPT09aS50eXBlPzUwMDp2b2lkIDAsdHlwZTppLnR5cGUsZGlyOmkuZGlyLHByb3BzOmkucHJvcHMscGFkZGluZzpKdigpLmZsb3djaGFydC5wYWRkaW5nfSl9KSl9KShmLHUsZSksZnVuY3Rpb24odCxlKXtvLmluZm8oImFiYzc4IGVkZ2VzID0gIix0KTt2YXIgbixyLGk9MCxhPXt9O2lmKHZvaWQgMCE9PXQuZGVmYXVsdFN0eWxlKXt2YXIgcz1Odih0LmRlZmF1bHRTdHlsZSk7bj1zLnN0eWxlLHI9cy5sYWJlbFN0eWxlfXQuZm9yRWFjaCgoZnVuY3Rpb24ocyl7aSsrO3ZhciBjPSJMLSIrcy5zdGFydCsiLSIrcy5lbmQ7dm9pZCAwPT09YVtjXT8oYVtjXT0wLG8uaW5mbygiYWJjNzggbmV3IGVudHJ5IixjLGFbY10pKTooYVtjXSsrLG8uaW5mbygiYWJjNzggbmV3IGVudHJ5IixjLGFbY10pKTt2YXIgdT1jKyItIithW2NdO28uaW5mbygiYWJjNzggbmV3IGxpbmsgaWQgdG8gYmUgdXNlZCBpcyIsYyx1LGFbY10pO3ZhciBsPSJMUy0iK3Muc3RhcnQsaD0iTEUtIitzLmVuZCxmPXtzdHlsZToiIixsYWJlbFN0eWxlOiIifTtzd2l0Y2goZi5taW5sZW49cy5sZW5ndGh8fDEsImFycm93X29wZW4iPT09cy50eXBlP2YuYXJyb3doZWFkPSJub25lIjpmLmFycm93aGVhZD0ibm9ybWFsIixmLmFycm93VHlwZVN0YXJ0PSJhcnJvd19vcGVuIixmLmFycm93VHlwZUVuZD0iYXJyb3dfb3BlbiIscy50eXBlKXtjYXNlImRvdWJsZV9hcnJvd19jcm9zcyI6Zi5hcnJvd1R5cGVTdGFydD0iYXJyb3dfY3Jvc3MiO2Nhc2UiYXJyb3dfY3Jvc3MiOmYuYXJyb3dUeXBlRW5kPSJhcnJvd19jcm9zcyI7YnJlYWs7Y2FzZSJkb3VibGVfYXJyb3dfcG9pbnQiOmYuYXJyb3dUeXBlU3RhcnQ9ImFycm93X3BvaW50IjtjYXNlImFycm93X3BvaW50IjpmLmFycm93VHlwZUVuZD0iYXJyb3dfcG9pbnQiO2JyZWFrO2Nhc2UiZG91YmxlX2Fycm93X2NpcmNsZSI6Zi5hcnJvd1R5cGVTdGFydD0iYXJyb3dfY2lyY2xlIjtjYXNlImFycm93X2NpcmNsZSI6Zi5hcnJvd1R5cGVFbmQ9ImFycm93X2NpcmNsZSJ9dmFyIGQ9IiIscD0iIjtzd2l0Y2gocy5zdHJva2Upe2Nhc2Uibm9ybWFsIjpkPSJmaWxsOm5vbmU7Iix2b2lkIDAhPT1uJiYoZD1uKSx2b2lkIDAhPT1yJiYocD1yKSxmLnRoaWNrbmVzcz0ibm9ybWFsIixmLnBhdHRlcm49InNvbGlkIjticmVhaztjYXNlImRvdHRlZCI6Zi50aGlja25lc3M9Im5vcm1hbCIsZi5wYXR0ZXJuPSJkb3R0ZWQiLGYuc3R5bGU9ImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1kYXNoYXJyYXk6MzsiO2JyZWFrO2Nhc2UidGhpY2siOmYudGhpY2tuZXNzPSJ0aGljayIsZi5wYXR0ZXJuPSJzb2xpZCIsZi5zdHlsZT0ic3Ryb2tlLXdpZHRoOiAzLjVweDtmaWxsOm5vbmU7In1pZih2b2lkIDAhPT1zLnN0eWxlKXt2YXIgeT1OdihzLnN0eWxlKTtkPXkuc3R5bGUscD15LmxhYmVsU3R5bGV9Zi5zdHlsZT1mLnN0eWxlKz1kLGYubGFiZWxTdHlsZT1mLmxhYmVsU3R5bGUrPXAsdm9pZCAwIT09cy5pbnRlcnBvbGF0ZT9mLmN1cnZlPUF2KHMuaW50ZXJwb2xhdGUsUHUpOnZvaWQgMCE9PXQuZGVmYXVsdEludGVycG9sYXRlP2YuY3VydmU9QXYodC5kZWZhdWx0SW50ZXJwb2xhdGUsUHUpOmYuY3VydmU9QXYoUHguY3VydmUsUHUpLHZvaWQgMD09PXMudGV4dD92b2lkIDAhPT1zLnN0eWxlJiYoZi5hcnJvd2hlYWRTdHlsZT0iZmlsbDogIzMzMyIpOihmLmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIixmLmxhYmVscG9zPSJjIiksZi5sYWJlbFR5cGU9InRleHQiLGYubGFiZWw9cy50ZXh0LnJlcGxhY2UoVW0ubGluZUJyZWFrUmVnZXgsIlxuIiksdm9pZCAwPT09cy5zdHlsZSYmKGYuc3R5bGU9Zi5zdHlsZXx8InN0cm9rZTogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDtmaWxsOm5vbmU7IiksZi5sYWJlbFN0eWxlPWYubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpLGYuaWQ9dSxmLmNsYXNzZXM9ImZsb3djaGFydC1saW5rICIrbCsiICIraCxlLnNldEVkZ2Uocy5zdGFydCxzLmVuZCxmLGkpfSkpfShkLHUpO3ZhciBnPWF1KCdbaWQ9IicuY29uY2F0KGUsJyJdJykpO2cuYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIik7dmFyIG09YXUoIiMiK2UrIiBnIik7Q18obSx1LFsicG9pbnQiLCJjaXJjbGUiLCJjcm9zcyJdLCJmbG93Y2hhcnQiLGUpO3ZhciB2PWEuZGlhZ3JhbVBhZGRpbmcsYj1nLm5vZGUoKS5nZXRCQm94KCksXz1iLndpZHRoKzIqdix4PWIuaGVpZ2h0KzIqdjtpZihvLmRlYnVnKCJuZXcgVmlld0JveCAwIDAgIi5jb25jYXQoXywiICIpLmNvbmNhdCh4KSwidHJhbnNsYXRlKCIuY29uY2F0KHYtdS5fbGFiZWwubWFyZ2lueCwiLCAiKS5jb25jYXQodi11Ll9sYWJlbC5tYXJnaW55LCIpIikpLHp2KGcseCxfLGEudXNlTWF4V2lkdGgpLGcuYXR0cigidmlld0JveCIsIjAgMCAiLmNvbmNhdChfLCIgIikuY29uY2F0KHgpKSxnLnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiLmNvbmNhdCh2LXUuX2xhYmVsLm1hcmdpbngsIiwgIikuY29uY2F0KHYtYi55LCIpIikpLHl4LmluZGV4Tm9kZXMoInN1YkdyYXBoIitwKSwhYS5odG1sTGFiZWxzKWZvcih2YXIgdz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9IicrZSsnIl0gLmVkZ2VMYWJlbCAubGFiZWwnKSxrPTA7azx3Lmxlbmd0aDtrKyspe3ZhciBUPXdba10sRT1ULmdldEJCb3goKSxDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWN0Iik7Qy5zZXRBdHRyaWJ1dGUoInJ4IiwwKSxDLnNldEF0dHJpYnV0ZSgicnkiLDApLEMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsRS53aWR0aCksQy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsRS5oZWlnaHQpLFQuaW5zZXJ0QmVmb3JlKEMsVC5maXJzdENoaWxkKX1PYmplY3Qua2V5cyhmKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1mW3RdO2lmKG4ubGluayl7dmFyIHI9YXUoIiMiK2UrJyBbaWQ9IicrdCsnIl0nKTtpZihyKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYSIpO2kuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiY2xhc3MiLG4uY2xhc3Nlcy5qb2luKCIgIikpLGkuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiaHJlZiIsbi5saW5rKSxpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlbCIsIm5vb3BlbmVyIiksbi5saW5rVGFyZ2V0JiZpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRhcmdldCIsbi5saW5rVGFyZ2V0KTt2YXIgYT1yLmluc2VydCgoZnVuY3Rpb24oKXtyZXR1cm4gaX0pLCI6Zmlyc3QtY2hpbGQiKSxvPXIuc2VsZWN0KCIubGFiZWwtY29udGFpbmVyIik7byYmYS5hcHBlbmQoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ubm9kZSgpfSkpO3ZhciBzPXIuc2VsZWN0KCIubGFiZWwiKTtzJiZhLmFwcGVuZCgoZnVuY3Rpb24oKXtyZXR1cm4gcy5ub2RlKCl9KSl9fX0pKX07ZnVuY3Rpb24gengodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgVXgscXgsSHg9IiIsJHg9IiIsV3g9IiIsVng9W10sR3g9W10sWHg9IiIsWng9W10sUXg9W10sS3g9IiIsSng9WyJhY3RpdmUiLCJkb25lIiwiY3JpdCIsIm1pbGVzdG9uZSJdLHR3PVtdLGV3PSExLG53PSExLHJ3PTAsaXc9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIShyLmluZGV4T2YodC5mb3JtYXQoZS50cmltKCkpKT49MCkmJih0Lmlzb1dlZWtkYXkoKT49NiYmbi5pbmRleE9mKCJ3ZWVrZW5kcyIpPj0wfHxuLmluZGV4T2YodC5mb3JtYXQoImRkZGQiKS50b0xvd2VyQ2FzZSgpKT49MHx8bi5pbmRleE9mKHQuZm9ybWF0KGUudHJpbSgpKSk+PTApfSxhdz1mdW5jdGlvbih0LGUsbixyKXtpZihuLmxlbmd0aCYmIXQubWFudWFsRW5kVGltZSl7dmFyIGE9aSgpKHQuc3RhcnRUaW1lLGUsITApO2EuYWRkKDEsImQiKTt2YXIgbz1pKCkodC5lbmRUaW1lLGUsITApLHM9b3coYSxvLGUsbixyKTt0LmVuZFRpbWU9by50b0RhdGUoKSx0LnJlbmRlckVuZFRpbWU9c319LG93PWZ1bmN0aW9uKHQsZSxuLHIsaSl7Zm9yKHZhciBhPSExLG89bnVsbDt0PD1lOylhfHwobz1lLnRvRGF0ZSgpKSwoYT1pdyh0LG4scixpKSkmJmUuYWRkKDEsImQiKSx0LmFkZCgxLCJkIik7cmV0dXJuIG99LHN3PWZ1bmN0aW9uKHQsZSxuKXtuPW4udHJpbSgpO3ZhciByPS9eYWZ0ZXJccysoW1xkXHctIF0rKS8uZXhlYyhuLnRyaW0oKSk7aWYobnVsbCE9PXIpe3ZhciBhPW51bGw7aWYoclsxXS5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXB3KHQpO3ZvaWQgMCE9PWUmJihhP2UuZW5kVGltZT5hLmVuZFRpbWUmJihhPWUpOmE9ZSl9KSksYSlyZXR1cm4gYS5lbmRUaW1lO3ZhciBzPW5ldyBEYXRlO3JldHVybiBzLnNldEhvdXJzKDAsMCwwLDApLHN9dmFyIGM9aSgpKG4sZS50cmltKCksITApO3JldHVybiBjLmlzVmFsaWQoKT9jLnRvRGF0ZSgpOihvLmRlYnVnKCJJbnZhbGlkIGRhdGU6IituKSxvLmRlYnVnKCJXaXRoIGRhdGUgZm9ybWF0OiIrZS50cmltKCkpLG5ldyBEYXRlKX0sY3c9ZnVuY3Rpb24odCxlKXtpZihudWxsIT09dClzd2l0Y2godFsyXSl7Y2FzZSJzIjplLmFkZCh0WzFdLCJzZWNvbmRzIik7YnJlYWs7Y2FzZSJtIjplLmFkZCh0WzFdLCJtaW51dGVzIik7YnJlYWs7Y2FzZSJoIjplLmFkZCh0WzFdLCJob3VycyIpO2JyZWFrO2Nhc2UiZCI6ZS5hZGQodFsxXSwiZGF5cyIpO2JyZWFrO2Nhc2UidyI6ZS5hZGQodFsxXSwid2Vla3MiKX1yZXR1cm4gZS50b0RhdGUoKX0sdXc9ZnVuY3Rpb24odCxlLG4scil7cj1yfHwhMSxuPW4udHJpbSgpO3ZhciBhPWkoKShuLGUudHJpbSgpLCEwKTtyZXR1cm4gYS5pc1ZhbGlkKCk/KHImJmEuYWRkKDEsImQiKSxhLnRvRGF0ZSgpKTpjdygvXihbXGRdKykoW3dkaG1zXSkvLmV4ZWMobi50cmltKCkpLGkoKSh0KSl9LGx3PTAsaHc9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/InRhc2siKyhsdys9MSk6dH0sZnc9W10sZHc9e30scHc9ZnVuY3Rpb24odCl7dmFyIGU9ZHdbdF07cmV0dXJuIGZ3W2VdfSx5dz1mdW5jdGlvbigpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIgZT1md1t0XSxuPSIiO3N3aXRjaChmd1t0XS5yYXcuc3RhcnRUaW1lLnR5cGUpe2Nhc2UicHJldlRhc2tFbmQiOnZhciByPXB3KGUucHJldlRhc2tJZCk7ZS5zdGFydFRpbWU9ci5lbmRUaW1lO2JyZWFrO2Nhc2UiZ2V0U3RhcnREYXRlIjoobj1zdygwLEh4LGZ3W3RdLnJhdy5zdGFydFRpbWUuc3RhcnREYXRhKSkmJihmd1t0XS5zdGFydFRpbWU9bil9cmV0dXJuIGZ3W3RdLnN0YXJ0VGltZSYmKGZ3W3RdLmVuZFRpbWU9dXcoZndbdF0uc3RhcnRUaW1lLEh4LGZ3W3RdLnJhdy5lbmRUaW1lLmRhdGEsZXcpLGZ3W3RdLmVuZFRpbWUmJihmd1t0XS5wcm9jZXNzZWQ9ITAsZndbdF0ubWFudWFsRW5kVGltZT1pKCkoZndbdF0ucmF3LmVuZFRpbWUuZGF0YSwiWVlZWS1NTS1ERCIsITApLmlzVmFsaWQoKSxhdyhmd1t0XSxIeCxHeCxWeCkpKSxmd1t0XS5wcm9jZXNzZWR9LGU9ITAsbj0wO248ZncubGVuZ3RoO24rKyl0KG4pLGU9ZSYmZndbbl0ucHJvY2Vzc2VkO3JldHVybiBlfSxndz1mdW5jdGlvbih0LGUpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1wdyh0KTt2b2lkIDAhPT1uJiZuLmNsYXNzZXMucHVzaChlKX0pKX0sbXc9ZnVuY3Rpb24odCxlKXt0dy5wdXNoKChmdW5jdGlvbigpe3ZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZD0iJy5jb25jYXQodCwnIl0nKSk7bnVsbCE9PW4mJm4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbigpe2UoKX0pKX0pKSx0dy5wdXNoKChmdW5jdGlvbigpe3ZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZD0iJy5jb25jYXQodCwnLXRleHQiXScpKTtudWxsIT09biYmbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKCl7ZSgpfSkpfSkpfTtjb25zdCB2dz17cGFyc2VEaXJlY3RpdmU6ZnVuY3Rpb24odCxlLG4pe3NDLnBhcnNlRGlyZWN0aXZlKHRoaXMsdCxlLG4pfSxnZXRDb25maWc6ZnVuY3Rpb24oKXtyZXR1cm4gSnYoKS5nYW50dH0sY2xlYXI6ZnVuY3Rpb24oKXtaeD1bXSxReD1bXSxLeD0iIix0dz1bXSxYeD0iIixsdz0wLFV4PXZvaWQgMCxxeD12b2lkIDAsZnc9W10sSHg9IiIsJHg9IiIsV3g9IiIsVng9W10sR3g9W10sZXc9ITEsbnc9ITEscnc9MH0sc2V0RGF0ZUZvcm1hdDpmdW5jdGlvbih0KXtIeD10fSxnZXREYXRlRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIEh4fSxlbmFibGVJbmNsdXNpdmVFbmREYXRlczpmdW5jdGlvbigpe2V3PSEwfSxlbmREYXRlc0FyZUluY2x1c2l2ZTpmdW5jdGlvbigpe3JldHVybiBld30sZW5hYmxlVG9wQXhpczpmdW5jdGlvbigpe253PSEwfSx0b3BBeGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiBud30sc2V0QXhpc0Zvcm1hdDpmdW5jdGlvbih0KXskeD10fSxnZXRBeGlzRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuICR4fSxzZXRUb2RheU1hcmtlcjpmdW5jdGlvbih0KXtXeD10fSxnZXRUb2RheU1hcmtlcjpmdW5jdGlvbigpe3JldHVybiBXeH0sc2V0VGl0bGU6ZnVuY3Rpb24odCl7WHg9dH0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gWHh9LGFkZFNlY3Rpb246ZnVuY3Rpb24odCl7S3g9dCxaeC5wdXNoKHQpfSxnZXRTZWN0aW9uczpmdW5jdGlvbigpe3JldHVybiBaeH0sZ2V0VGFza3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9eXcoKSxlPTA7IXQmJmU8MTA7KXQ9eXcoKSxlKys7cmV0dXJuIFF4PWZ3fSxhZGRUYXNrOmZ1bmN0aW9uKHQsZSl7dmFyIG49e3NlY3Rpb246S3gsdHlwZTpLeCxwcm9jZXNzZWQ6ITEsbWFudWFsRW5kVGltZTohMSxyZW5kZXJFbmRUaW1lOm51bGwscmF3OntkYXRhOmV9LHRhc2s6dCxjbGFzc2VzOltdfSxyPWZ1bmN0aW9uKHQsZSl7dmFyIG49KCI6Ij09PWUuc3Vic3RyKDAsMSk/ZS5zdWJzdHIoMSxlLmxlbmd0aCk6ZSkuc3BsaXQoIiwiKSxyPXt9O2J3KG4scixKeCk7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspbltpXT1uW2ldLnRyaW0oKTtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMTpyLmlkPWh3KCksci5zdGFydFRpbWU9e3R5cGU6InByZXZUYXNrRW5kIixpZDp0fSxyLmVuZFRpbWU9e2RhdGE6blswXX07YnJlYWs7Y2FzZSAyOnIuaWQ9aHcoKSxyLnN0YXJ0VGltZT17dHlwZToiZ2V0U3RhcnREYXRlIixzdGFydERhdGE6blswXX0sci5lbmRUaW1lPXtkYXRhOm5bMV19O2JyZWFrO2Nhc2UgMzpyLmlkPWh3KG5bMF0pLHIuc3RhcnRUaW1lPXt0eXBlOiJnZXRTdGFydERhdGUiLHN0YXJ0RGF0YTpuWzFdfSxyLmVuZFRpbWU9e2RhdGE6blsyXX19cmV0dXJuIHJ9KHF4LGUpO24ucmF3LnN0YXJ0VGltZT1yLnN0YXJ0VGltZSxuLnJhdy5lbmRUaW1lPXIuZW5kVGltZSxuLmlkPXIuaWQsbi5wcmV2VGFza0lkPXF4LG4uYWN0aXZlPXIuYWN0aXZlLG4uZG9uZT1yLmRvbmUsbi5jcml0PXIuY3JpdCxuLm1pbGVzdG9uZT1yLm1pbGVzdG9uZSxuLm9yZGVyPXJ3LHJ3Kys7dmFyIGk9ZncucHVzaChuKTtxeD1uLmlkLGR3W24uaWRdPWktMX0sZmluZFRhc2tCeUlkOnB3LGFkZFRhc2tPcmc6ZnVuY3Rpb24odCxlKXt2YXIgbj17c2VjdGlvbjpLeCx0eXBlOkt4LGRlc2NyaXB0aW9uOnQsdGFzazp0LGNsYXNzZXM6W119LHI9ZnVuY3Rpb24odCxlKXt2YXIgbj0oIjoiPT09ZS5zdWJzdHIoMCwxKT9lLnN1YnN0cigxLGUubGVuZ3RoKTplKS5zcGxpdCgiLCIpLHI9e307YncobixyLEp4KTtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKyluW2FdPW5bYV0udHJpbSgpO3ZhciBvPSIiO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAxOnIuaWQ9aHcoKSxyLnN0YXJ0VGltZT10LmVuZFRpbWUsbz1uWzBdO2JyZWFrO2Nhc2UgMjpyLmlkPWh3KCksci5zdGFydFRpbWU9c3coMCxIeCxuWzBdKSxvPW5bMV07YnJlYWs7Y2FzZSAzOnIuaWQ9aHcoblswXSksci5zdGFydFRpbWU9c3coMCxIeCxuWzFdKSxvPW5bMl19cmV0dXJuIG8mJihyLmVuZFRpbWU9dXcoci5zdGFydFRpbWUsSHgsbyxldyksci5tYW51YWxFbmRUaW1lPWkoKShvLCJZWVlZLU1NLUREIiwhMCkuaXNWYWxpZCgpLGF3KHIsSHgsR3gsVngpKSxyfShVeCxlKTtuLnN0YXJ0VGltZT1yLnN0YXJ0VGltZSxuLmVuZFRpbWU9ci5lbmRUaW1lLG4uaWQ9ci5pZCxuLmFjdGl2ZT1yLmFjdGl2ZSxuLmRvbmU9ci5kb25lLG4uY3JpdD1yLmNyaXQsbi5taWxlc3RvbmU9ci5taWxlc3RvbmUsVXg9bixReC5wdXNoKG4pfSxzZXRJbmNsdWRlczpmdW5jdGlvbih0KXtWeD10LnRvTG93ZXJDYXNlKCkuc3BsaXQoL1tccyxdKy8pfSxnZXRJbmNsdWRlczpmdW5jdGlvbigpe3JldHVybiBWeH0sc2V0RXhjbHVkZXM6ZnVuY3Rpb24odCl7R3g9dC50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bXHMsXSsvKX0sZ2V0RXhjbHVkZXM6ZnVuY3Rpb24oKXtyZXR1cm4gR3h9LHNldENsaWNrRXZlbnQ6ZnVuY3Rpb24odCxlLG4pe3Quc3BsaXQoIiwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4pe2lmKCJsb29zZSI9PT1KdigpLnNlY3VyaXR5TGV2ZWwmJnZvaWQgMCE9PWUpe3ZhciByPVtdO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7cj1uLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLnRyaW0oKTsnIic9PT1hLmNoYXJBdCgwKSYmJyInPT09YS5jaGFyQXQoYS5sZW5ndGgtMSkmJihhPWEuc3Vic3RyKDEsYS5sZW5ndGgtMikpLHJbaV09YX19MD09PXIubGVuZ3RoJiZyLnB1c2godCksdm9pZCAwIT09cHcodCkmJm13KHQsKGZ1bmN0aW9uKCl7dmFyIHQ7SHYucnVuRnVuYy5hcHBseShIdixbZV0uY29uY2F0KGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHp4KHQpfSh0PXIpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gengodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT96eCh0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSl9KSl9fSh0LGUsbil9KSksZ3codCwiY2xpY2thYmxlIil9LHNldExpbms6ZnVuY3Rpb24odCxlKXt2YXIgbj1lOyJsb29zZSIhPT1KdigpLnNlY3VyaXR5TGV2ZWwmJihuPSgwLE9tLnNhbml0aXplVXJsKShlKSksdC5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXB3KHQpJiZtdyh0LChmdW5jdGlvbigpe3dpbmRvdy5vcGVuKG4sIl9zZWxmIil9KSl9KSksZ3codCwiY2xpY2thYmxlIil9LGJpbmRGdW5jdGlvbnM6ZnVuY3Rpb24odCl7dHcuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKX0sZHVyYXRpb25Ub0RhdGU6Y3csaXNJbnZhbGlkRGF0ZTppd307ZnVuY3Rpb24gYncodCxlLG4pe2Zvcih2YXIgcj0hMDtyOylyPSExLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9bmV3IFJlZ0V4cCgiXlxccyoiK24rIlxccyokIik7dFswXS5tYXRjaChpKSYmKGVbbl09ITAsdC5zaGlmdCgxKSxyPSEwKX0pKX12YXIgX3cseHc9big5OTU5KSx3dz1uLm4oeHcpO3h3LnBhcnNlci55eT12dztjb25zdCBrdz1mdW5jdGlvbih0LGUpe3ZhciBuPUp2KCkuZ2FudHQ7eHcucGFyc2VyLnl5LmNsZWFyKCkseHcucGFyc2VyLnBhcnNlKHQpO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO3ZvaWQgMD09PShfdz1yLnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgpJiYoX3c9MTIwMCksdm9pZCAwIT09bi51c2VXaWR0aCYmKF93PW4udXNlV2lkdGgpO3ZhciBhPXh3LnBhcnNlci55eS5nZXRUYXNrcygpLG89YS5sZW5ndGgqKG4uYmFySGVpZ2h0K24uYmFyR2FwKSsyKm4udG9wUGFkZGluZztyLnNldEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCAiK193KyIgIitvKTtmb3IodmFyIHM9YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSksYz1mdW5jdGlvbigpe3JldHVybiBaaS5hcHBseShxcyhtbyx2byxHYSxXYSxQYSxSYSxMYSxPYSxOYSxrbykuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9KCkuZG9tYWluKFtsKGEsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXJ0VGltZX0pKSx1KGEsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVuZFRpbWV9KSldKS5yYW5nZVJvdW5kKFswLF93LW4ubGVmdFBhZGRpbmctbi5yaWdodFBhZGRpbmddKSxoPVtdLGY9MDtmPGEubGVuZ3RoO2YrKyloLnB1c2goYVtmXS50eXBlKTt2YXIgZD1oO2g9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LG49W10scj0wLGk9dC5sZW5ndGg7cjxpOysrcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0W3JdKXx8KGVbdFtyXV09ITAsbi5wdXNoKHRbcl0pKTtyZXR1cm4gbn0oaCksYS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBuPXQuc3RhcnRUaW1lLHI9ZS5zdGFydFRpbWUsaT0wO3JldHVybiBuPnI/aT0xOm48ciYmKGk9LTEpLGl9KSksZnVuY3Rpb24odCxlLHIpe3ZhciBhPW4uYmFySGVpZ2h0LG89YStuLmJhckdhcCx1PW4udG9wUGFkZGluZyxsPW4ubGVmdFBhZGRpbmc7ZmEoKS5kb21haW4oWzAsaC5sZW5ndGhdKS5yYW5nZShbIiMwMEI5RkEiLCIjRjk1MDAyIl0pLmludGVycG9sYXRlKGpyKSxmdW5jdGlvbih0LGUscixhLG8sdSxsLGgpe3ZhciBmPXUucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBuPWUuc3RhcnRUaW1lO3JldHVybiB0P01hdGgubWluKHQsbik6bn0pLDApLGQ9dS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5lbmRUaW1lO3JldHVybiB0P01hdGgubWF4KHQsbik6bn0pLDApLHA9eHcucGFyc2VyLnl5LmdldERhdGVGb3JtYXQoKTtpZihmJiZkKXtmb3IodmFyIHk9W10sZz1udWxsLG09aSgpKGYpO20udmFsdWVPZigpPD1kOyl4dy5wYXJzZXIueXkuaXNJbnZhbGlkRGF0ZShtLHAsbCxoKT9nP2cuZW5kPW0uY2xvbmUoKTpnPXtzdGFydDptLmNsb25lKCksZW5kOm0uY2xvbmUoKX06ZyYmKHkucHVzaChnKSxnPW51bGwpLG0uYWRkKDEsImQiKTtzLmFwcGVuZCgiZyIpLnNlbGVjdEFsbCgicmVjdCIpLmRhdGEoeSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJpZCIsKGZ1bmN0aW9uKHQpe3JldHVybiJleGNsdWRlLSIrdC5zdGFydC5mb3JtYXQoIllZWVktTU0tREQiKX0pKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuIGModC5zdGFydCkrcn0pKS5hdHRyKCJ5IixuLmdyaWRMaW5lU3RhcnRQYWRkaW5nKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZW5kLmNsb25lKCkuYWRkKDEsImRheSIpO3JldHVybiBjKGUpLWModC5zdGFydCl9KSkuYXR0cigiaGVpZ2h0IixvLWUtbi5ncmlkTGluZVN0YXJ0UGFkZGluZykuYXR0cigidHJhbnNmb3JtLW9yaWdpbiIsKGZ1bmN0aW9uKGUsbil7cmV0dXJuKGMoZS5zdGFydCkrcisuNSooYyhlLmVuZCktYyhlLnN0YXJ0KSkpLnRvU3RyaW5nKCkrInB4ICIrKG4qdCsuNSpvKS50b1N0cmluZygpKyJweCJ9KSkuYXR0cigiY2xhc3MiLCJleGNsdWRlLXJhbmdlIil9fShvLHUsbCwwLHIsdCx4dy5wYXJzZXIueXkuZ2V0RXhjbHVkZXMoKSx4dy5wYXJzZXIueXkuZ2V0SW5jbHVkZXMoKSksZnVuY3Rpb24odCxlLHIsaSl7dmFyIGEsbz0oYT1jLHYoMyxhKSkudGlja1NpemUoLWkrZStuLmdyaWRMaW5lU3RhcnRQYWRkaW5nKS50aWNrRm9ybWF0KFlsKHh3LnBhcnNlci55eS5nZXRBeGlzRm9ybWF0KCl8fG4uYXhpc0Zvcm1hdHx8IiVZLSVtLSVkIikpO2lmKHMuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJncmlkIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdCsiLCAiKyhpLTUwKSsiKSIpLmNhbGwobykuc2VsZWN0QWxsKCJ0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiZmlsbCIsIiMwMDAiKS5hdHRyKCJzdHJva2UiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZHkiLCIxZW0iKSx2dy50b3BBeGlzRW5hYmxlZCgpfHxuLnRvcEF4aXMpe3ZhciB1PWZ1bmN0aW9uKHQpe3JldHVybiB2KDEsdCl9KGMpLnRpY2tTaXplKC1pK2Urbi5ncmlkTGluZVN0YXJ0UGFkZGluZykudGlja0Zvcm1hdChZbCh4dy5wYXJzZXIueXkuZ2V0QXhpc0Zvcm1hdCgpfHxuLmF4aXNGb3JtYXR8fCIlWS0lbS0lZCIpKTtzLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZ3JpZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QrIiwgIitlKyIpIikuY2FsbCh1KS5zZWxlY3RBbGwoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKX19KGwsdSwwLHIpLGZ1bmN0aW9uKHQsZSxyLGksYSxvLHUpe3MuYXBwZW5kKCJnIikuc2VsZWN0QWxsKCJyZWN0IikuZGF0YSh0KS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLChmdW5jdGlvbih0LG4pe3JldHVybiB0Lm9yZGVyKmUrci0yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24oKXtyZXR1cm4gdS1uLnJpZ2h0UGFkZGluZy8yfSkpLmF0dHIoImhlaWdodCIsZSkuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPGgubGVuZ3RoO2UrKylpZih0LnR5cGU9PT1oW2VdKXJldHVybiJzZWN0aW9uIHNlY3Rpb24iK2Ulbi5udW1iZXJTZWN0aW9uU3R5bGVzO3JldHVybiJzZWN0aW9uIHNlY3Rpb24wIn0pKTt2YXIgbD1zLmFwcGVuZCgiZyIpLnNlbGVjdEFsbCgicmVjdCIpLmRhdGEodCkuZW50ZXIoKTtsLmFwcGVuZCgicmVjdCIpLmF0dHIoImlkIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSkuYXR0cigicngiLDMpLmF0dHIoInJ5IiwzKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWlsZXN0b25lP2ModC5zdGFydFRpbWUpK2krLjUqKGModC5lbmRUaW1lKS1jKHQuc3RhcnRUaW1lKSktLjUqYTpjKHQuc3RhcnRUaW1lKStpfSkpLmF0dHIoInkiLChmdW5jdGlvbih0LG4pe3JldHVybiB0Lm9yZGVyKmUrcn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1pbGVzdG9uZT9hOmModC5yZW5kZXJFbmRUaW1lfHx0LmVuZFRpbWUpLWModC5zdGFydFRpbWUpfSkpLmF0dHIoImhlaWdodCIsYSkuYXR0cigidHJhbnNmb3JtLW9yaWdpbiIsKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG49dC5vcmRlciwoYyh0LnN0YXJ0VGltZSkraSsuNSooYyh0LmVuZFRpbWUpLWModC5zdGFydFRpbWUpKSkudG9TdHJpbmcoKSsicHggIisobiplK3IrLjUqYSkudG9TdHJpbmcoKSsicHgifSkpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7dmFyIGU9IiI7dC5jbGFzc2VzLmxlbmd0aD4wJiYoZT10LmNsYXNzZXMuam9pbigiICIpKTtmb3IodmFyIHI9MCxpPTA7aTxoLmxlbmd0aDtpKyspdC50eXBlPT09aFtpXSYmKHI9aSVuLm51bWJlclNlY3Rpb25TdHlsZXMpO3ZhciBhPSIiO3JldHVybiB0LmFjdGl2ZT90LmNyaXQ/YSs9IiBhY3RpdmVDcml0IjphPSIgYWN0aXZlIjp0LmRvbmU/YT10LmNyaXQ/IiBkb25lQ3JpdCI6IiBkb25lIjp0LmNyaXQmJihhKz0iIGNyaXQiKSwwPT09YS5sZW5ndGgmJihhPSIgdGFzayIpLHQubWlsZXN0b25lJiYoYT0iIG1pbGVzdG9uZSAiK2EpLCJ0YXNrIisoYSs9cikrIiAiK2V9KSksbC5hcHBlbmQoInRleHQiKS5hdHRyKCJpZCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkKyItdGV4dCJ9KSkudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFza30pKS5hdHRyKCJmb250LXNpemUiLG4uZm9udFNpemUpLmF0dHIoIngiLChmdW5jdGlvbih0KXt2YXIgZT1jKHQuc3RhcnRUaW1lKSxyPWModC5yZW5kZXJFbmRUaW1lfHx0LmVuZFRpbWUpO3QubWlsZXN0b25lJiYoZSs9LjUqKGModC5lbmRUaW1lKS1jKHQuc3RhcnRUaW1lKSktLjUqYSksdC5taWxlc3RvbmUmJihyPWUrYSk7dmFyIG89dGhpcy5nZXRCQm94KCkud2lkdGg7cmV0dXJuIG8+ci1lP3IrbysxLjUqbi5sZWZ0UGFkZGluZz51P2UraS01OnIraSs1OihyLWUpLzIrZStpfSkpLmF0dHIoInkiLChmdW5jdGlvbih0LGkpe3JldHVybiB0Lm9yZGVyKmUrbi5iYXJIZWlnaHQvMisobi5mb250U2l6ZS8yLTIpK3J9KSkuYXR0cigidGV4dC1oZWlnaHQiLGEpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7dmFyIGU9Yyh0LnN0YXJ0VGltZSkscj1jKHQuZW5kVGltZSk7dC5taWxlc3RvbmUmJihyPWUrYSk7dmFyIGk9dGhpcy5nZXRCQm94KCkud2lkdGgsbz0iIjt0LmNsYXNzZXMubGVuZ3RoPjAmJihvPXQuY2xhc3Nlcy5qb2luKCIgIikpO2Zvcih2YXIgcz0wLGw9MDtsPGgubGVuZ3RoO2wrKyl0LnR5cGU9PT1oW2xdJiYocz1sJW4ubnVtYmVyU2VjdGlvblN0eWxlcyk7dmFyIGY9IiI7cmV0dXJuIHQuYWN0aXZlJiYoZj10LmNyaXQ/ImFjdGl2ZUNyaXRUZXh0IitzOiJhY3RpdmVUZXh0IitzKSx0LmRvbmU/Zj10LmNyaXQ/ZisiIGRvbmVDcml0VGV4dCIrczpmKyIgZG9uZVRleHQiK3M6dC5jcml0JiYoZj1mKyIgY3JpdFRleHQiK3MpLHQubWlsZXN0b25lJiYoZis9IiBtaWxlc3RvbmVUZXh0IiksaT5yLWU/citpKzEuNSpuLmxlZnRQYWRkaW5nPnU/bysiIHRhc2tUZXh0T3V0c2lkZUxlZnQgdGFza1RleHRPdXRzaWRlIitzKyIgIitmOm8rIiB0YXNrVGV4dE91dHNpZGVSaWdodCB0YXNrVGV4dE91dHNpZGUiK3MrIiAiK2YrIiB3aWR0aC0iK2k6bysiIHRhc2tUZXh0IHRhc2tUZXh0IitzKyIgIitmKyIgd2lkdGgtIitpfSkpfSh0LG8sdSxsLGEsMCxlKSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxpPTAsYT0wO2E8aC5sZW5ndGg7YSsrKXJbYV09W2hbYV0sKG89aFthXSxjPWQsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49e307ZTspblt0Wy0tZV1dPShuW3RbZV1dfHwwKSsxO3JldHVybiBufShjKVtvXXx8MCldO3ZhciBvLGM7cy5hcHBlbmQoImciKS5zZWxlY3RBbGwoInRleHQiKS5kYXRhKHIpLmVudGVyKCkuYXBwZW5kKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnNwbGl0KFVtLmxpbmVCcmVha1JlZ2V4KSxuPS0oZS5sZW5ndGgtMSkvMixyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7ci5zZXRBdHRyaWJ1dGUoImR5IixuKyJlbSIpO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidHNwYW4iKTthLnNldEF0dHJpYnV0ZSgiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLGEuc2V0QXR0cmlidXRlKCJ4IiwiMTAiKSxpPjAmJmEuc2V0QXR0cmlidXRlKCJkeSIsIjFlbSIpLGEudGV4dENvbnRlbnQ9ZVtpXSxyLmFwcGVuZENoaWxkKGEpfXJldHVybiByfSkpLmF0dHIoIngiLDEwKS5hdHRyKCJ5IiwoZnVuY3Rpb24obixhKXtpZighKGE+MCkpcmV0dXJuIG5bMV0qdC8yK2U7Zm9yKHZhciBvPTA7bzxhO28rKylyZXR1cm4gaSs9clthLTFdWzFdLG5bMV0qdC8yK2kqdCtlfSkpLmF0dHIoImZvbnQtc2l6ZSIsbi5zZWN0aW9uRm9udFNpemUpLmF0dHIoImZvbnQtc2l6ZSIsbi5zZWN0aW9uRm9udFNpemUpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxoLmxlbmd0aDtlKyspaWYodFswXT09PWhbZV0pcmV0dXJuInNlY3Rpb25UaXRsZSBzZWN0aW9uVGl0bGUiK2Ulbi5udW1iZXJTZWN0aW9uU3R5bGVzO3JldHVybiJzZWN0aW9uVGl0bGUifSkpfShvLHUpLGZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPXZ3LmdldFRvZGF5TWFya2VyKCk7aWYoIm9mZiIhPT1hKXt2YXIgbz1zLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidG9kYXkiKSx1PW5ldyBEYXRlLGw9by5hcHBlbmQoImxpbmUiKTtsLmF0dHIoIngxIixjKHUpK3QpLmF0dHIoIngyIixjKHUpK3QpLmF0dHIoInkxIixuLnRpdGxlVG9wTWFyZ2luKS5hdHRyKCJ5MiIsaS1uLnRpdGxlVG9wTWFyZ2luKS5hdHRyKCJjbGFzcyIsInRvZGF5IiksIiIhPT1hJiZsLmF0dHIoInN0eWxlIixhLnJlcGxhY2UoLywvZywiOyIpKX19KGwsMCwwLHIpfShhLF93LG8pLHp2KHMsbyxfdyxuLnVzZU1heFdpZHRoKSxzLmFwcGVuZCgidGV4dCIpLnRleHQoeHcucGFyc2VyLnl5LmdldFRpdGxlKCkpLmF0dHIoIngiLF93LzIpLmF0dHIoInkiLG4udGl0bGVUb3BNYXJnaW4pLmF0dHIoImNsYXNzIiwidGl0bGVUZXh0Iil9O3ZhciBUdz17fSxFdz1udWxsLEN3PXttYXN0ZXI6RXd9LFN3PSJtYXN0ZXIiLEF3PSJMUiIsTXc9MDtmdW5jdGlvbiBOdygpe3JldHVybiBCdih7bGVuZ3RoOjd9KX1mdW5jdGlvbiBEdyh0LGUpe28uZGVidWcoIkVudGVyaW5nIGlzZmFzdGZvcndhcmRhYmxlOiIsdC5pZCxlLmlkKTtmb3IodmFyIG49MDt0LnNlcTw9ZS5zZXEmJnQhPT1lJiZuPDFlMyYmKG4rKyxudWxsIT1lLnBhcmVudCk7KXtpZihBcnJheS5pc0FycmF5KGUucGFyZW50KSlyZXR1cm4gby5kZWJ1ZygiSW4gbWVyZ2UgY29tbWl0OiIsZS5wYXJlbnQpLER3KHQsVHdbZS5wYXJlbnRbMF1dKXx8RHcodCxUd1tlLnBhcmVudFsxXV0pO2U9VHdbZS5wYXJlbnRdfXJldHVybiBvLmRlYnVnKHQuaWQsZS5pZCksdC5pZD09PWUuaWR9dmFyIE93PXt9O2Z1bmN0aW9uIEJ3KHQsZSxuKXt2YXIgcj10LmluZGV4T2YoZSk7LTE9PT1yP3QucHVzaChuKTp0LnNwbGljZShyLDEsbil9ZnVuY3Rpb24gTHcodCl7dmFyIGU9dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc2VxPmUuc2VxP3Q6ZX0pLHRbMF0pLG49IiI7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtuKz10PT09ZT8iXHQqIjoiXHR8In0pKTt2YXIgcixpLGEscz1bbixlLmlkLGUuc2VxXTtmb3IodmFyIGMgaW4gQ3cpQ3dbY109PT1lLmlkJiZzLnB1c2goYyk7aWYoby5kZWJ1ZyhzLmpvaW4oIiAiKSksQXJyYXkuaXNBcnJheShlLnBhcmVudCkpe3ZhciB1PVR3W2UucGFyZW50WzBdXTtCdyh0LGUsdSksdC5wdXNoKFR3W2UucGFyZW50WzFdXSl9ZWxzZXtpZihudWxsPT1lLnBhcmVudClyZXR1cm47dmFyIGw9VHdbZS5wYXJlbnRdO0J3KHQsZSxsKX1yPXQsaT1mdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0sYT1PYmplY3QuY3JlYXRlKG51bGwpLEx3KHQ9ci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG49aShlKTtyZXR1cm4gYVtuXXx8KGFbbl09ITAsdC5wdXNoKGUpKSx0fSksW10pKX12YXIgSXc9ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Qua2V5cyhUdykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVHdbdF19KSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5kZWJ1Zyh0LmlkKX0pKSx0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc2VxLXQuc2VxfSkpLHR9O2NvbnN0IFJ3PXtzZXREaXJlY3Rpb246ZnVuY3Rpb24odCl7QXc9dH0sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtvLmRlYnVnKCJvcHRpb25zIHN0ciIsdCksdD0odD10JiZ0LnRyaW0oKSl8fCJ7fSI7dHJ5e093PUpTT04ucGFyc2UodCl9Y2F0Y2godCl7by5lcnJvcigiZXJyb3Igd2hpbGUgcGFyc2luZyBnaXRHcmFwaCBvcHRpb25zIix0Lm1lc3NhZ2UpfX0sZ2V0T3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBPd30sY29tbWl0OmZ1bmN0aW9uKHQpe3ZhciBlPXtpZDpOdygpLG1lc3NhZ2U6dCxzZXE6TXcrKyxwYXJlbnQ6bnVsbD09RXc/bnVsbDpFdy5pZH07RXc9ZSxUd1tlLmlkXT1lLEN3W1N3XT1lLmlkLG8uZGVidWcoImluIHB1c2hDb21taXQgIitlLmlkKX0sYnJhbmNoOmZ1bmN0aW9uKHQpe0N3W3RdPW51bGwhPUV3P0V3LmlkOm51bGwsby5kZWJ1ZygiaW4gY3JlYXRlQnJhbmNoIil9LG1lcmdlOmZ1bmN0aW9uKHQpe3ZhciBlPVR3W0N3W1N3XV0sbj1Ud1tDd1t0XV07aWYoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zZXE+ZS5zZXEmJkR3KGUsdCl9KGUsbikpby5kZWJ1ZygiQWxyZWFkeSBtZXJnZWQiKTtlbHNle2lmKER3KGUsbikpQ3dbU3ddPUN3W3RdLEV3PVR3W0N3W1N3XV07ZWxzZXt2YXIgcj17aWQ6TncoKSxtZXNzYWdlOiJtZXJnZWQgYnJhbmNoICIrdCsiIGludG8gIitTdyxzZXE6TXcrKyxwYXJlbnQ6W251bGw9PUV3P251bGw6RXcuaWQsQ3dbdF1dfTtFdz1yLFR3W3IuaWRdPXIsQ3dbU3ddPXIuaWR9by5kZWJ1ZyhDdyksby5kZWJ1ZygiaW4gbWVyZ2VCcmFuY2giKX19LGNoZWNrb3V0OmZ1bmN0aW9uKHQpe28uZGVidWcoImluIGNoZWNrb3V0Iik7dmFyIGU9Q3dbU3c9dF07RXc9VHdbZV19LHJlc2V0OmZ1bmN0aW9uKHQpe28uZGVidWcoImluIHJlc2V0Iix0KTt2YXIgZT10LnNwbGl0KCI6IilbMF0sbj1wYXJzZUludCh0LnNwbGl0KCI6IilbMV0pLHI9IkhFQUQiPT09ZT9FdzpUd1tDd1tlXV07Zm9yKG8uZGVidWcocixuKTtuPjA7KWlmKG4tLSwhKHI9VHdbci5wYXJlbnRdKSl7dmFyIGk9IkNyaXRpY2FsIGVycm9yIC0gdW5pcXVlIHBhcmVudCBjb21taXQgbm90IGZvdW5kIGR1cmluZyByZXNldCI7dGhyb3cgby5lcnJvcihpKSxpfUV3PXIsQ3dbU3ddPXIuaWR9LHByZXR0eVByaW50OmZ1bmN0aW9uKCl7by5kZWJ1ZyhUdyksTHcoW0l3KClbMF1dKX0sY2xlYXI6ZnVuY3Rpb24oKXtUdz17fSxDdz17bWFzdGVyOkV3PW51bGx9LFN3PSJtYXN0ZXIiLE13PTB9LGdldEJyYW5jaGVzQXNPYmpBcnJheTpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBDdyl0LnB1c2goe25hbWU6ZSxjb21taXQ6VHdbQ3dbZV1dfSk7cmV0dXJuIHR9LGdldEJyYW5jaGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEN3fSxnZXRDb21taXRzOmZ1bmN0aW9uKCl7cmV0dXJuIFR3fSxnZXRDb21taXRzQXJyYXk6SXcsZ2V0Q3VycmVudEJyYW5jaDpmdW5jdGlvbigpe3JldHVybiBTd30sZ2V0RGlyZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIEF3fSxnZXRIZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIEV3fX07dmFyIEZ3LFB3PW4oMjU1Myksanc9bi5uKFB3KSxZdz17fSx6dz17bm9kZVNwYWNpbmc6MTUwLG5vZGVGaWxsQ29sb3I6InllbGxvdyIsbm9kZVN0cm9rZVdpZHRoOjIsbm9kZVN0cm9rZUNvbG9yOiJncmV5IixsaW5lU3Ryb2tlV2lkdGg6NCxicmFuY2hPZmZzZXQ6NTAsbGluZUNvbG9yOiJncmV5IixsZWZ0TWFyZ2luOjUwLGJyYW5jaENvbG9yczpbIiM0NDJmNzQiLCIjOTgzMzUxIiwiIzYwOTczMiIsIiNBQTlBMzkiXSxub2RlUmFkaXVzOjEwLG5vZGVMYWJlbDp7d2lkdGg6NzUsaGVpZ2h0OjEwMCx4Oi0yNSx5OjB9fSxVdz17fTtmdW5jdGlvbiBxdyh0LGUsbixyKXt2YXIgaT1BdihyLFZ1KSxhPXp3LmJyYW5jaENvbG9yc1tuJXp3LmJyYW5jaENvbG9ycy5sZW5ndGhdLG89enUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0LngpfSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQueSl9KSkuY3VydmUoaSk7dC5hcHBlbmQoInN2ZzpwYXRoIikuYXR0cigiZCIsbyhlKSkuc3R5bGUoInN0cm9rZSIsYSkuc3R5bGUoInN0cm9rZS13aWR0aCIsencubGluZVN0cm9rZVdpZHRoKS5zdHlsZSgiZmlsbCIsIm5vbmUiKX1mdW5jdGlvbiBIdyh0LGUpe2U9ZXx8dC5ub2RlKCkuZ2V0QkJveCgpO3ZhciBuPXQubm9kZSgpLmdldENUTSgpO3JldHVybntsZWZ0Om4uZStlLngqbi5hLHRvcDpuLmYrZS55Km4uZCx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19ZnVuY3Rpb24gJHcodCxlLG4scixpKXtvLmRlYnVnKCJzdmdEcmF3TGluZUZvckNvbW1pdHM6ICIsZSxuKTt2YXIgYT1Idyh0LnNlbGVjdCgiI25vZGUtIitlKyIgY2lyY2xlIikpLHM9SHcodC5zZWxlY3QoIiNub2RlLSIrbisiIGNpcmNsZSIpKTtzd2l0Y2gocil7Y2FzZSJMUiI6aWYoYS5sZWZ0LXMubGVmdD56dy5ub2RlU3BhY2luZyl7dmFyIGM9e3g6YS5sZWZ0LXp3Lm5vZGVTcGFjaW5nLHk6cy50b3Arcy5oZWlnaHQvMn07cXcodCxbYyx7eDpzLmxlZnQrcy53aWR0aCx5OnMudG9wK3MuaGVpZ2h0LzJ9XSxpLCJsaW5lYXIiKSxxdyh0LFt7eDphLmxlZnQseTphLnRvcCthLmhlaWdodC8yfSx7eDphLmxlZnQtencubm9kZVNwYWNpbmcvMix5OmEudG9wK2EuaGVpZ2h0LzJ9LHt4OmEubGVmdC16dy5ub2RlU3BhY2luZy8yLHk6Yy55fSxjXSxpKX1lbHNlIHF3KHQsW3t4OmEubGVmdCx5OmEudG9wK2EuaGVpZ2h0LzJ9LHt4OmEubGVmdC16dy5ub2RlU3BhY2luZy8yLHk6YS50b3ArYS5oZWlnaHQvMn0se3g6YS5sZWZ0LXp3Lm5vZGVTcGFjaW5nLzIseTpzLnRvcCtzLmhlaWdodC8yfSx7eDpzLmxlZnQrcy53aWR0aCx5OnMudG9wK3MuaGVpZ2h0LzJ9XSxpKTticmVhaztjYXNlIkJUIjppZihzLnRvcC1hLnRvcD56dy5ub2RlU3BhY2luZyl7dmFyIHU9e3g6cy5sZWZ0K3Mud2lkdGgvMix5OmEudG9wK2EuaGVpZ2h0K3p3Lm5vZGVTcGFjaW5nfTtxdyh0LFt1LHt4OnMubGVmdCtzLndpZHRoLzIseTpzLnRvcH1dLGksImxpbmVhciIpLHF3KHQsW3t4OmEubGVmdCthLndpZHRoLzIseTphLnRvcCthLmhlaWdodH0se3g6YS5sZWZ0K2Eud2lkdGgvMix5OmEudG9wK2EuaGVpZ2h0K3p3Lm5vZGVTcGFjaW5nLzJ9LHt4OnMubGVmdCtzLndpZHRoLzIseTp1Lnktencubm9kZVNwYWNpbmcvMn0sdV0saSl9ZWxzZSBxdyh0LFt7eDphLmxlZnQrYS53aWR0aC8yLHk6YS50b3ArYS5oZWlnaHR9LHt4OmEubGVmdCthLndpZHRoLzIseTphLnRvcCt6dy5ub2RlU3BhY2luZy8yfSx7eDpzLmxlZnQrcy53aWR0aC8yLHk6cy50b3Atencubm9kZVNwYWNpbmcvMn0se3g6cy5sZWZ0K3Mud2lkdGgvMix5OnMudG9wfV0saSl9fWZ1bmN0aW9uIFd3KHQsZSl7cmV0dXJuIHQuc2VsZWN0KGUpLm5vZGUoKS5jbG9uZU5vZGUoITApfWZ1bmN0aW9uIFZ3KHQsZSxuLHIpe3ZhciBpLGE9T2JqZWN0LmtleXMoWXcpLmxlbmd0aDtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBzPTA7ZG97aWYocysrLGk9WXdbZV0sby5kZWJ1ZygiaW4gcmVuZGVyQ29tbWl0SGlzdG9yeSIsaS5pZCxpLnNlcSksdC5zZWxlY3QoIiNub2RlLSIrZSkuc2l6ZSgpPjApcmV0dXJuO3QuYXBwZW5kKChmdW5jdGlvbigpe3JldHVybiBXdyh0LCIjZGVmLWNvbW1pdCIpfSkpLmF0dHIoImNsYXNzIiwiY29tbWl0IikuYXR0cigiaWQiLChmdW5jdGlvbigpe3JldHVybiJub2RlLSIraS5pZH0pKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbigpe3N3aXRjaChyKXtjYXNlIkxSIjpyZXR1cm4idHJhbnNsYXRlKCIrKGkuc2VxKnp3Lm5vZGVTcGFjaW5nK3p3LmxlZnRNYXJnaW4pKyIsICIrRncqencuYnJhbmNoT2Zmc2V0KyIpIjtjYXNlIkJUIjpyZXR1cm4idHJhbnNsYXRlKCIrKEZ3Knp3LmJyYW5jaE9mZnNldCt6dy5sZWZ0TWFyZ2luKSsiLCAiKyhhLWkuc2VxKSp6dy5ub2RlU3BhY2luZysiKSJ9fSkpLmF0dHIoImZpbGwiLHp3Lm5vZGVGaWxsQ29sb3IpLmF0dHIoInN0cm9rZSIsencubm9kZVN0cm9rZUNvbG9yKS5hdHRyKCJzdHJva2Utd2lkdGgiLHp3Lm5vZGVTdHJva2VXaWR0aCk7dmFyIGM9dm9pZCAwO2Zvcih2YXIgdSBpbiBuKWlmKG5bdV0uY29tbWl0PT09aSl7Yz1uW3VdO2JyZWFrfWMmJihvLmRlYnVnKCJmb3VuZCBicmFuY2ggIixjLm5hbWUpLHQuc2VsZWN0KCIjbm9kZS0iK2kuaWQrIiBwIikuYXBwZW5kKCJ4aHRtbDpzcGFuIikuYXR0cigiY2xhc3MiLCJicmFuY2gtbGFiZWwiKS50ZXh0KGMubmFtZSsiLCAiKSksdC5zZWxlY3QoIiNub2RlLSIraS5pZCsiIHAiKS5hcHBlbmQoInhodG1sOnNwYW4iKS5hdHRyKCJjbGFzcyIsImNvbW1pdC1pZCIpLnRleHQoaS5pZCksIiIhPT1pLm1lc3NhZ2UmJiJCVCI9PT1yJiZ0LnNlbGVjdCgiI25vZGUtIitpLmlkKyIgcCIpLmFwcGVuZCgieGh0bWw6c3BhbiIpLmF0dHIoImNsYXNzIiwiY29tbWl0LW1zZyIpLnRleHQoIiwgIitpLm1lc3NhZ2UpLGU9aS5wYXJlbnR9d2hpbGUoZSYmWXdbZV0mJnM8MWUzKX1BcnJheS5pc0FycmF5KGUpJiYoby5kZWJ1ZygiZm91bmQgbWVyZ2UgY29tbW1pdCIsZSksVncodCxlWzBdLG4sciksRncrKyxWdyh0LGVbMV0sbixyKSxGdy0tKX1mdW5jdGlvbiBHdyh0LGUsbixyKXtyPXJ8fDA7Zm9yKHZhciBpPTA7ZS5zZXE+MCYmIWUubGluZURyYXduJiZpPDFlMzspaSsrLCJzdHJpbmciPT10eXBlb2YgZS5wYXJlbnQ/KCR3KHQsZS5pZCxlLnBhcmVudCxuLHIpLGUubGluZURyYXduPSEwLGU9WXdbZS5wYXJlbnRdKTpBcnJheS5pc0FycmF5KGUucGFyZW50KSYmKCR3KHQsZS5pZCxlLnBhcmVudFswXSxuLHIpLCR3KHQsZS5pZCxlLnBhcmVudFsxXSxuLHIrMSksR3codCxZd1tlLnBhcmVudFsxXV0sbixyKzEpLGUubGluZURyYXduPSEwLGU9WXdbZS5wYXJlbnRbMF1dKX1jb25zdCBYdz1mdW5jdGlvbih0KXtVdz10fTt2YXIgWnc9IiIsUXc9ITE7Y29uc3QgS3c9e3NldE1lc3NhZ2U6ZnVuY3Rpb24odCl7by5kZWJ1ZygiU2V0dGluZyBtZXNzYWdlIHRvOiAiK3QpLFp3PXR9LGdldE1lc3NhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gWnd9LHNldEluZm86ZnVuY3Rpb24odCl7UXc9dH0sZ2V0SW5mbzpmdW5jdGlvbigpe3JldHVybiBRd319O3ZhciBKdz1uKDY3NjUpLHRrPW4ubihKdyksZWs9e307Y29uc3Qgbms9ZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZWtbZV09dFtlXX0pKX07dmFyIHJrPW4oNzA2MiksaWs9bi5uKHJrKSxhaz17fSxvaz0iIixzaz0hMTtjb25zdCBjaz17cGFyc2VEaXJlY3RpdmU6ZnVuY3Rpb24odCxlLG4pe3NDLnBhcnNlRGlyZWN0aXZlKHRoaXMsdCxlLG4pfSxnZXRDb25maWc6ZnVuY3Rpb24oKXtyZXR1cm4gSnYoKS5waWV9LGFkZFNlY3Rpb246ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1ha1t0XSYmKGFrW3RdPWUsby5kZWJ1ZygiQWRkZWQgbmV3IHNlY3Rpb24gOiIsdCkpfSxnZXRTZWN0aW9uczpmdW5jdGlvbigpe3JldHVybiBha30sY2xlYW51cFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiI6Ij09PXQuc3Vic3RyaW5nKDAsMSk/KHQ9dC5zdWJzdHJpbmcoMSkudHJpbSgpLE51bWJlcih0LnRyaW0oKSkpOk51bWJlcih0LnRyaW0oKSl9LGNsZWFyOmZ1bmN0aW9uKCl7YWs9e30sb2s9IiIsc2s9ITF9LHNldFRpdGxlOmZ1bmN0aW9uKHQpe29rPXR9LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIG9rfSxzZXRTaG93RGF0YTpmdW5jdGlvbih0KXtzaz10fSxnZXRTaG93RGF0YTpmdW5jdGlvbigpe3JldHVybiBza319O3ZhciB1ayxsaz1KdigpO2NvbnN0IGhrPWZ1bmN0aW9uKHQsZSl7dHJ5e2xrPUp2KCk7dmFyIG49aWsoKS5wYXJzZXI7bi55eT1jayxvLmRlYnVnKCJSZW5kZXJpbmcgaW5mbyBkaWFncmFtXG4iK3QpLG4ueXkuY2xlYXIoKSxuLnBhcnNlKHQpLG8uZGVidWcoIlBhcnNlZCBpbmZvIGRpYWdyYW0iKTt2YXIgcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTt2b2lkIDA9PT0odWs9ci5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoKSYmKHVrPTEyMDApLHZvaWQgMCE9PWxrLnVzZVdpZHRoJiYodWs9bGsudXNlV2lkdGgpLHZvaWQgMCE9PWxrLnBpZS51c2VXaWR0aCYmKHVrPWxrLnBpZS51c2VXaWR0aCk7dmFyIGk9YXUoIiMiK2UpO3p2KGksNDUwLHVrLGxrLnBpZS51c2VNYXhXaWR0aCksci5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLCIwIDAgIit1aysiIDQ1MCIpO3ZhciBhPU1hdGgubWluKHVrLDQ1MCkvMi00MCxzPWkuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdWsvMisiLDIyNSkiKSxjPWNrLmdldFNlY3Rpb25zKCksdT0wO09iamVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UrPWNbdF19KSk7dmFyIGw9bGsudGhlbWVWYXJpYWJsZXMsaD1bbC5waWUxLGwucGllMixsLnBpZTMsbC5waWU0LGwucGllNSxsLnBpZTYsbC5waWU3LGwucGllOCxsLnBpZTksbC5waWUxMCxsLnBpZTExLGwucGllMTJdLGY9bWEoKS5yYW5nZShoKSxkPWZ1bmN0aW9uKCl7dmFyIHQ9cXUsZT1VdSxuPW51bGwscj1wdSgwKSxpPXB1KEV1KSxhPXB1KDApO2Z1bmN0aW9uIG8obyl7dmFyIHMsYyx1LGwsaCxmPShvPVJ1KG8pKS5sZW5ndGgsZD0wLHA9bmV3IEFycmF5KGYpLHk9bmV3IEFycmF5KGYpLGc9K3IuYXBwbHkodGhpcyxhcmd1bWVudHMpLG09TWF0aC5taW4oRXUsTWF0aC5tYXgoLUV1LGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLWcpKSx2PU1hdGgubWluKE1hdGguYWJzKG0pL2YsYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGI9dioobTwwPy0xOjEpO2ZvcihzPTA7czxmOysrcykoaD15W3Bbc109c109K3Qob1tzXSxzLG8pKT4wJiYoZCs9aCk7Zm9yKG51bGwhPWU/cC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKHlbdF0seVtuXSl9KSk6bnVsbCE9biYmcC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuKG9bdF0sb1tlXSl9KSkscz0wLHU9ZD8obS1mKmIpL2Q6MDtzPGY7KytzLGc9bCljPXBbc10sbD1nKygoaD15W2NdKT4wP2gqdTowKStiLHlbY109e2RhdGE6b1tjXSxpbmRleDpzLHZhbHVlOmgsc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOmwscGFkQW5nbGU6dn07cmV0dXJuIHl9cmV0dXJuIG8udmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpwdSgrZSksbyk6dH0sby5zb3J0VmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbj1udWxsLG8pOmV9LG8uc29ydD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGU9bnVsbCxvKTpufSxvLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwdSgrdCksbyk6cn0sby5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnB1KCt0KSxvKTppfSxvLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cHUoK3QpLG8pOmF9LG99KCkudmFsdWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzFdfSkpLHA9ZChPYmplY3QuZW50cmllcyhjKSkseT1JdSgpLmlubmVyUmFkaXVzKDApLm91dGVyUmFkaXVzKGEpO3Muc2VsZWN0QWxsKCJteVNsaWNlcyIpLmRhdGEocCkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIix5KS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIGYodC5kYXRhWzBdKX0pKS5hdHRyKCJjbGFzcyIsInBpZUNpcmNsZSIpLHMuc2VsZWN0QWxsKCJteVNsaWNlcyIpLmRhdGEocCkuZW50ZXIoKS5hcHBlbmQoInRleHQiKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4odC5kYXRhWzFdL3UqMTAwKS50b0ZpeGVkKDApKyIlIn0pKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIreS5jZW50cm9pZCh0KSsiKSJ9KSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiY2xhc3MiLCJzbGljZSIpLHMuYXBwZW5kKCJ0ZXh0IikudGV4dChuLnl5LmdldFRpdGxlKCkpLmF0dHIoIngiLDApLmF0dHIoInkiLC0yMDApLmF0dHIoImNsYXNzIiwicGllVGl0bGVUZXh0Iik7dmFyIGc9cy5zZWxlY3RBbGwoIi5sZWdlbmQiKS5kYXRhKGYuZG9tYWluKCkpLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsZWdlbmQiKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0LGUpe3JldHVybiJ0cmFuc2xhdGUoMjE2LCIrKDIyKmUtMjIqZi5kb21haW4oKS5sZW5ndGgvMikrIikifSkpO2cuYXBwZW5kKCJyZWN0IikuYXR0cigid2lkdGgiLDE4KS5hdHRyKCJoZWlnaHQiLDE4KS5zdHlsZSgiZmlsbCIsZikuc3R5bGUoInN0cm9rZSIsZiksZy5kYXRhKHApLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLDIyKS5hdHRyKCJ5IiwxNCkudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIG4ueXkuZ2V0U2hvd0RhdGEoKXx8bGsuc2hvd0RhdGF8fGxrLnBpZS5zaG93RGF0YT90LmRhdGFbMF0rIiBbIit0LmRhdGFbMV0rIl0iOnQuZGF0YVswXX0pKX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgaW5mbyBkaWFncmFtIiksby5lcnJvcih0KX19O3ZhciBmaz1uKDMxNzYpLGRrPW4ubihmaykscGs9W10seWs9e30sZ2s9e30sbWs9e30sdms9e307Y29uc3QgYms9e1JlcXVpcmVtZW50VHlwZTp7UkVRVUlSRU1FTlQ6IlJlcXVpcmVtZW50IixGVU5DVElPTkFMX1JFUVVJUkVNRU5UOiJGdW5jdGlvbmFsIFJlcXVpcmVtZW50IixJTlRFUkZBQ0VfUkVRVUlSRU1FTlQ6IkludGVyZmFjZSBSZXF1aXJlbWVudCIsUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQ6IlBlcmZvcm1hbmNlIFJlcXVpcmVtZW50IixQSFlTSUNBTF9SRVFVSVJFTUVOVDoiUGh5c2ljYWwgUmVxdWlyZW1lbnQiLERFU0lHTl9DT05TVFJBSU5UOiJEZXNpZ24gQ29uc3RyYWludCJ9LFJpc2tMZXZlbDp7TE9XX1JJU0s6IkxvdyIsTUVEX1JJU0s6Ik1lZGl1bSIsSElHSF9SSVNLOiJIaWdoIn0sVmVyaWZ5VHlwZTp7VkVSSUZZX0FOQUxZU0lTOiJBbmFseXNpcyIsVkVSSUZZX0RFTU9OU1RSQVRJT046IkRlbW9uc3RyYXRpb24iLFZFUklGWV9JTlNQRUNUSU9OOiJJbnNwZWN0aW9uIixWRVJJRllfVEVTVDoiVGVzdCJ9LFJlbGF0aW9uc2hpcHM6e0NPTlRBSU5TOiJjb250YWlucyIsQ09QSUVTOiJjb3BpZXMiLERFUklWRVM6ImRlcml2ZXMiLFNBVElTRklFUzoic2F0aXNmaWVzIixWRVJJRklFUzoidmVyaWZpZXMiLFJFRklORVM6InJlZmluZXMiLFRSQUNFUzoidHJhY2VzIn0scGFyc2VEaXJlY3RpdmU6ZnVuY3Rpb24odCxlLG4pe3NDLnBhcnNlRGlyZWN0aXZlKHRoaXMsdCxlLG4pfSxnZXRDb25maWc6ZnVuY3Rpb24oKXtyZXR1cm4gSnYoKS5yZXF9LGFkZFJlcXVpcmVtZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWdrW3RdJiYoZ2tbdF09e25hbWU6dCx0eXBlOmUsaWQ6eWsuaWQsdGV4dDp5ay50ZXh0LHJpc2s6eWsucmlzayx2ZXJpZnlNZXRob2Q6eWsudmVyaWZ5TWV0aG9kfSkseWs9e30sZ2tbdF19LGdldFJlcXVpcmVtZW50czpmdW5jdGlvbigpe3JldHVybiBna30sc2V0TmV3UmVxSWQ6ZnVuY3Rpb24odCl7dm9pZCAwIT09eWsmJih5ay5pZD10KX0sc2V0TmV3UmVxVGV4dDpmdW5jdGlvbih0KXt2b2lkIDAhPT15ayYmKHlrLnRleHQ9dCl9LHNldE5ld1JlcVJpc2s6ZnVuY3Rpb24odCl7dm9pZCAwIT09eWsmJih5ay5yaXNrPXQpfSxzZXROZXdSZXFWZXJpZnlNZXRob2Q6ZnVuY3Rpb24odCl7dm9pZCAwIT09eWsmJih5ay52ZXJpZnlNZXRob2Q9dCl9LGFkZEVsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXZrW3RdJiYodmtbdF09e25hbWU6dCx0eXBlOm1rLnR5cGUsZG9jUmVmOm1rLmRvY1JlZn0sby5pbmZvKCJBZGRlZCBuZXcgcmVxdWlyZW1lbnQ6ICIsdCkpLG1rPXt9LHZrW3RdfSxnZXRFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiB2a30sc2V0TmV3RWxlbWVudFR5cGU6ZnVuY3Rpb24odCl7dm9pZCAwIT09bWsmJihtay50eXBlPXQpfSxzZXROZXdFbGVtZW50RG9jUmVmOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PW1rJiYobWsuZG9jUmVmPXQpfSxhZGRSZWxhdGlvbnNoaXA6ZnVuY3Rpb24odCxlLG4pe3BrLnB1c2goe3R5cGU6dCxzcmM6ZSxkc3Q6bn0pfSxnZXRSZWxhdGlvbnNoaXBzOmZ1bmN0aW9uKCl7cmV0dXJuIHBrfSxjbGVhcjpmdW5jdGlvbigpe3BrPVtdLHlrPXt9LGdrPXt9LG1rPXt9LHZrPXt9fX07dmFyIF9rPXtDT05UQUlOUzoiY29udGFpbnMiLEFSUk9XOiJhcnJvdyJ9O2NvbnN0IHhrPV9rO3ZhciB3az17fSxraz0wLFRrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaW5zZXJ0KCJyZWN0IiwiIyIrZSkuYXR0cigiY2xhc3MiLCJyZXEgcmVxQm94IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLHdrLnJlY3RfbWluX3dpZHRoKyJweCIpLmF0dHIoImhlaWdodCIsd2sucmVjdF9taW5faGVpZ2h0KyJweCIpfSxFaz1mdW5jdGlvbih0LGUsbil7dmFyIHI9d2sucmVjdF9taW5fd2lkdGgvMixpPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJyZXEgcmVxTGFiZWwgcmVxVGl0bGUiKS5hdHRyKCJpZCIsZSkuYXR0cigieCIscikuYXR0cigieSIsd2sucmVjdF9wYWRkaW5nKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImhhbmdpbmciKSxhPTA7bi5mb3JFYWNoKChmdW5jdGlvbih0KXswPT1hP2kuYXBwZW5kKCJ0c3BhbiIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieCIsd2sucmVjdF9taW5fd2lkdGgvMikuYXR0cigiZHkiLDApLnRleHQodCk6aS5hcHBlbmQoInRzcGFuIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4Iix3ay5yZWN0X21pbl93aWR0aC8yKS5hdHRyKCJkeSIsLjc1KndrLmxpbmVfaGVpZ2h0KS50ZXh0KHQpLGErK30pKTt2YXIgbz0xLjUqd2sucmVjdF9wYWRkaW5nK2Eqd2subGluZV9oZWlnaHQqLjc1O3JldHVybiB0LmFwcGVuZCgibGluZSIpLmF0dHIoImNsYXNzIiwicmVxLXRpdGxlLWxpbmUiKS5hdHRyKCJ4MSIsIjAiKS5hdHRyKCJ4MiIsd2sucmVjdF9taW5fd2lkdGgpLmF0dHIoInkxIixvKS5hdHRyKCJ5MiIsbykse3RpdGxlTm9kZTppLHk6b319LENrPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJyZXEgcmVxTGFiZWwiKS5hdHRyKCJpZCIsZSkuYXR0cigieCIsd2sucmVjdF9wYWRkaW5nKS5hdHRyKCJ5IixyKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImhhbmdpbmciKSxhPTAsbz1bXTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZT4zMCYmYTwzOyl7dmFyIG49dC5zdWJzdHJpbmcoMCwzMCk7ZT0odD10LnN1YnN0cmluZygzMCx0Lmxlbmd0aCkpLmxlbmd0aCxvW28ubGVuZ3RoXT1uLGErK31pZigzPT1hKXt2YXIgcj1vW28ubGVuZ3RoLTFdO29bby5sZW5ndGgtMV09ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC00KSsiLi4uIn1lbHNlIG9bby5sZW5ndGhdPXQ7YT0wfSkpLG8uZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5hcHBlbmQoInRzcGFuIikuYXR0cigieCIsd2sucmVjdF9wYWRkaW5nKS5hdHRyKCJkeSIsd2subGluZV9oZWlnaHQpLnRleHQodCl9KSksaX0sU2s9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiIikucmVwbGFjZSgvXC4vZywiXyIpfTtjb25zdCBBaz1mdW5jdGlvbih0KXtpZih2b2lkIDAhPT10KWZvcih2YXIgZT1PYmplY3Qua2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspd2tbZVtuXV09dFtlW25dXX0sTWs9ZnVuY3Rpb24odCxlKXtmay5wYXJzZXIueXk9YmssZmsucGFyc2VyLnl5LmNsZWFyKCksZmsucGFyc2VyLnBhcnNlKHQpO3ZhciBuPWF1KCJbaWQ9JyIuY29uY2F0KGUsIiddIikpOyFmdW5jdGlvbih0LGUpe3ZhciBuPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsX2suQ09OVEFJTlMrIl9saW5lX2VuZGluZyIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLGUubGluZV9oZWlnaHQvMikuYXR0cigibWFya2VyV2lkdGgiLGUubGluZV9oZWlnaHQpLmF0dHIoIm1hcmtlckhlaWdodCIsZS5saW5lX2hlaWdodCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgiZyIpO24uYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJjeSIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJyIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoImZpbGwiLCJub25lIiksbi5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLGUubGluZV9oZWlnaHQpLmF0dHIoInkxIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoInkyIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoInN0cm9rZS13aWR0aCIsMSksbi5hcHBlbmQoImxpbmUiKS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLGUubGluZV9oZWlnaHQpLmF0dHIoIngxIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoIngyIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoInN0cm9rZS13aWR0aCIsMSksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixfay5BUlJPVysiX2xpbmVfZW5kaW5nIikuYXR0cigicmVmWCIsZS5saW5lX2hlaWdodCkuYXR0cigicmVmWSIsLjUqZS5saW5lX2hlaWdodCkuYXR0cigibWFya2VyV2lkdGgiLGUubGluZV9oZWlnaHQpLmF0dHIoIm1hcmtlckhlaWdodCIsZS5saW5lX2hlaWdodCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNMCwwXG4gICAgICBMIi5jb25jYXQoZS5saW5lX2hlaWdodCwiLCIpLmNvbmNhdChlLmxpbmVfaGVpZ2h0LzIsIlxuICAgICAgTSIpLmNvbmNhdChlLmxpbmVfaGVpZ2h0LCIsIikuY29uY2F0KGUubGluZV9oZWlnaHQvMiwiXG4gICAgICBMMCwiKS5jb25jYXQoZS5saW5lX2hlaWdodCkpLmF0dHIoInN0cm9rZS13aWR0aCIsMSl9KG4sd2spO3ZhciByPW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMSxjb21wb3VuZDohMSxkaXJlY3RlZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOndrLmxheW91dERpcmVjdGlvbixtYXJnaW54OjIwLG1hcmdpbnk6MjAsbm9kZXNlcDoxMDAsZWRnZXNlcDoxMDAscmFua3NlcDoxMDB9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLGk9YmsuZ2V0UmVxdWlyZW1lbnRzKCksYT1iay5nZXRFbGVtZW50cygpLHM9YmsuZ2V0UmVsYXRpb25zaGlwcygpOyFmdW5jdGlvbih0LGUsbil7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGk9dFtyXTtyPVNrKHIpLG8uaW5mbygiQWRkZWQgbmV3IHJlcXVpcmVtZW50OiAiLHIpO3ZhciBhPW4uYXBwZW5kKCJnIikuYXR0cigiaWQiLHIpLHM9VGsoYSwicmVxLSIrciksYz1bXSx1PUVrKGEscisiX3RpdGxlIixbIjw8Ii5jb25jYXQoaS50eXBlLCI+PiIpLCIiLmNvbmNhdChpLm5hbWUpXSk7Yy5wdXNoKHUudGl0bGVOb2RlKTt2YXIgbD1DayhhLHIrIl9ib2R5IixbIklkOiAiLmNvbmNhdChpLmlkKSwiVGV4dDogIi5jb25jYXQoaS50ZXh0KSwiUmlzazogIi5jb25jYXQoaS5yaXNrKSwiVmVyaWZpY2F0aW9uOiAiLmNvbmNhdChpLnZlcmlmeU1ldGhvZCldLHUueSk7Yy5wdXNoKGwpO3ZhciBoPXMubm9kZSgpLmdldEJCb3goKTtlLnNldE5vZGUocix7d2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHQsc2hhcGU6InJlY3QiLGlkOnJ9KX0pKX0oaSxyLG4pLGZ1bmN0aW9uKHQsZSxuKXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgaT10W3JdLGE9U2sociksbz1uLmFwcGVuZCgiZyIpLmF0dHIoImlkIixhKSxzPSJlbGVtZW50LSIrYSxjPVRrKG8scyksdT1bXSxsPUVrKG8scysiX3RpdGxlIixbIjw8RWxlbWVudD4+IiwiIi5jb25jYXQocildKTt1LnB1c2gobC50aXRsZU5vZGUpO3ZhciBoPUNrKG8scysiX2JvZHkiLFsiVHlwZTogIi5jb25jYXQoaS50eXBlfHwiTm90IFNwZWNpZmllZCIpLCJEb2MgUmVmOiAiLmNvbmNhdChpLmRvY1JlZnx8Ik5vbmUiKV0sbC55KTt1LnB1c2goaCk7dmFyIGY9Yy5ub2RlKCkuZ2V0QkJveCgpO2Uuc2V0Tm9kZShhLHt3aWR0aDpmLndpZHRoLGhlaWdodDpmLmhlaWdodCxzaGFwZToicmVjdCIsaWQ6YX0pfSkpfShhLHIsbiksZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPVNrKHQuc3JjKSxyPVNrKHQuZHN0KTtlLnNldEVkZ2UobixyLHtyZWxhdGlvbnNoaXA6dH0pfSkpfShzLHIpLF9iKCkubGF5b3V0KHIpLGZ1bmN0aW9uKHQsZSl7ZS5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZvaWQgMCE9PW4mJnZvaWQgMCE9PWUubm9kZShuKSYmKHQuc2VsZWN0KCIjIituKSx0LnNlbGVjdCgiIyIrbikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGUubm9kZShuKS54LWUubm9kZShuKS53aWR0aC8yKSsiLCIrKGUubm9kZShuKS55LWUubm9kZShuKS5oZWlnaHQvMikrIiApIikpfSkpfShuLHIpLHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPW4uZWRnZShTayhlLnNyYyksU2soZS5kc3QpKSxhPXp1KCkueCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKS55KChmdW5jdGlvbih0KXtyZXR1cm4gdC55fSkpLG89dC5pbnNlcnQoInBhdGgiLCIjIityKS5hdHRyKCJjbGFzcyIsImVyIHJlbGF0aW9uc2hpcExpbmUiKS5hdHRyKCJkIixhKGkucG9pbnRzKSkuYXR0cigiZmlsbCIsIm5vbmUiKTtlLnR5cGU9PWJrLlJlbGF0aW9uc2hpcHMuQ09OVEFJTlM/by5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitVbS5nZXRVcmwod2suYXJyb3dNYXJrZXJBYnNvbHV0ZSkrIiMiK2UudHlwZSsiX2xpbmVfZW5kaW5nKSIpOihvLmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLCIxMCw3Iiksby5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrVW0uZ2V0VXJsKHdrLmFycm93TWFya2VyQWJzb2x1dGUpKyIjIit4ay5BUlJPVysiX2xpbmVfZW5kaW5nKSIpKSxmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1lLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpLGE9ZS5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aCguNSppKSxvPSJyZWwiK2trO2trKys7dmFyIHM9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInJlcSByZWxhdGlvbnNoaXBMYWJlbCIpLmF0dHIoImlkIixvKS5hdHRyKCJ4IixhLngpLmF0dHIoInkiLGEueSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLnRleHQocikubm9kZSgpLmdldEJCb3goKTt0Lmluc2VydCgicmVjdCIsIiMiK28pLmF0dHIoImNsYXNzIiwicmVxIHJlcUxhYmVsQm94IikuYXR0cigieCIsYS54LXMud2lkdGgvMikuYXR0cigieSIsYS55LXMuaGVpZ2h0LzIpLmF0dHIoIndpZHRoIixzLndpZHRoKS5hdHRyKCJoZWlnaHQiLHMuaGVpZ2h0KS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCI4NSUiKX0odCxvLDAsIjw8Ii5jb25jYXQoZS50eXBlLCI+PiIpKX0obix0LHIsZSl9KSk7dmFyIGM9d2sucmVjdF9wYWRkaW5nLHU9bi5ub2RlKCkuZ2V0QkJveCgpLGw9dS53aWR0aCsyKmMsaD11LmhlaWdodCsyKmM7enYobixoLGwsd2sudXNlTWF4V2lkdGgpLG4uYXR0cigidmlld0JveCIsIiIuY29uY2F0KHUueC1jLCIgIikuY29uY2F0KHUueS1jLCIgIikuY29uY2F0KGwsIiAiKS5jb25jYXQoaCkpfTt2YXIgTms9big2ODc2KSxEaz1uLm4oTmspLE9rPXZvaWQgMCxCaz17fSxMaz1bXSxJaz1bXSxSaz0iIixGaz0hMSxQaz0hMSxqaz0hMSxZaz1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT1Ca1t0XTtpJiZlPT09aS5uYW1lJiZudWxsPT1ufHwobnVsbCE9biYmbnVsbCE9bi50ZXh0fHwobj17dGV4dDplLHdyYXA6bnVsbCx0eXBlOnJ9KSxudWxsIT1yJiZudWxsIT1uLnRleHR8fChuPXt0ZXh0OmUsd3JhcDpudWxsLHR5cGU6cn0pLEJrW3RdPXtuYW1lOmUsZGVzY3JpcHRpb246bi50ZXh0LHdyYXA6dm9pZCAwPT09bi53cmFwJiZIaygpfHwhIW4ud3JhcCxwcmV2QWN0b3I6T2ssbGlua3M6e30scHJvcGVydGllczp7fSxhY3RvckNudDpudWxsLHJlY3REYXRhOm51bGwsdHlwZTpyfHwicGFydGljaXBhbnQifSxPayYmQmtbT2tdJiYoQmtbT2tdLm5leHRBY3Rvcj10KSxPaz10KX0sems9ZnVuY3Rpb24odCl7dmFyIGUsbj0wO2ZvcihlPTA7ZTxMay5sZW5ndGg7ZSsrKUxrW2VdLnR5cGU9PT0kay5BQ1RJVkVfU1RBUlQmJkxrW2VdLmZyb20uYWN0b3I9PT10JiZuKyssTGtbZV0udHlwZT09PSRrLkFDVElWRV9FTkQmJkxrW2VdLmZyb20uYWN0b3I9PT10JiZuLS07cmV0dXJuIG59LFVrPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt0ZXh0OnZvaWQgMCx3cmFwOnZvaWQgMH0scj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtpZihyPT09JGsuQUNUSVZFX0VORCl7dmFyIGk9emsodC5hY3Rvcik7aWYoaTwxKXt2YXIgYT1uZXcgRXJyb3IoIlRyeWluZyB0byBpbmFjdGl2YXRlIGFuIGluYWN0aXZlIHBhcnRpY2lwYW50ICgiK3QuYWN0b3IrIikiKTt0aHJvdyBhLmhhc2g9e3RleHQ6Ii0+Pi0iLHRva2VuOiItPj4tIixsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbIidBQ1RJVkVfUEFSVElDSVBBTlQnIl19LGF9fXJldHVybiBMay5wdXNoKHtmcm9tOnQsdG86ZSxtZXNzYWdlOm4udGV4dCx3cmFwOnZvaWQgMD09PW4ud3JhcCYmSGsoKXx8ISFuLndyYXAsdHlwZTpyfSksITB9LHFrPWZ1bmN0aW9uKHQpe3JldHVybiBCa1t0XX0sSGs9ZnVuY3Rpb24oKXtyZXR1cm4gamt9LCRrPXtTT0xJRDowLERPVFRFRDoxLE5PVEU6MixTT0xJRF9DUk9TUzozLERPVFRFRF9DUk9TUzo0LFNPTElEX09QRU46NSxET1RURURfT1BFTjo2LExPT1BfU1RBUlQ6MTAsTE9PUF9FTkQ6MTEsQUxUX1NUQVJUOjEyLEFMVF9FTFNFOjEzLEFMVF9FTkQ6MTQsT1BUX1NUQVJUOjE1LE9QVF9FTkQ6MTYsQUNUSVZFX1NUQVJUOjE3LEFDVElWRV9FTkQ6MTgsUEFSX1NUQVJUOjE5LFBBUl9BTkQ6MjAsUEFSX0VORDoyMSxSRUNUX1NUQVJUOjIyLFJFQ1RfRU5EOjIzLFNPTElEX1BPSU5UOjI0LERPVFRFRF9QT0lOVDoyNX0sV2s9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXthY3Rvcjp0LHBsYWNlbWVudDplLG1lc3NhZ2U6bi50ZXh0LHdyYXA6dm9pZCAwPT09bi53cmFwJiZIaygpfHwhIW4ud3JhcH0saT1bXS5jb25jYXQodCx0KTtJay5wdXNoKHIpLExrLnB1c2goe2Zyb206aVswXSx0bzppWzFdLG1lc3NhZ2U6bi50ZXh0LHdyYXA6dm9pZCAwPT09bi53cmFwJiZIaygpfHwhIW4ud3JhcCx0eXBlOiRrLk5PVEUscGxhY2VtZW50OmV9KX0sVms9ZnVuY3Rpb24odCxlKXt2YXIgbj1xayh0KTt0cnl7dmFyIHI9Rm0oZS50ZXh0LEp2KCkpO3I9KHI9ci5yZXBsYWNlKC8mYW1wOy9nLCImIikpLnJlcGxhY2UoLyZlcXVhbHM7L2csIj0iKSxHayhuLEpTT04ucGFyc2UocikpfWNhdGNoKHQpe28uZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgbGluayB0ZXh0Iix0KX19O2Z1bmN0aW9uIEdrKHQsZSl7aWYobnVsbD09dC5saW5rcyl0LmxpbmtzPWU7ZWxzZSBmb3IodmFyIG4gaW4gZSl0LmxpbmtzW25dPWVbbl19dmFyIFhrPWZ1bmN0aW9uKHQsZSl7dmFyIG49cWsodCk7dHJ5e3ZhciByPUZtKGUudGV4dCxKdigpKTtaayhuLEpTT04ucGFyc2UocikpfWNhdGNoKHQpe28uZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgcHJvcGVydGllcyB0ZXh0Iix0KX19O2Z1bmN0aW9uIFprKHQsZSl7aWYobnVsbD09dC5wcm9wZXJ0aWVzKXQucHJvcGVydGllcz1lO2Vsc2UgZm9yKHZhciBuIGluIGUpdC5wcm9wZXJ0aWVzW25dPWVbbl19dmFyIFFrPWZ1bmN0aW9uKHQsZSl7dmFyIG49cWsodCkscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLnRleHQpO3RyeXt2YXIgaT1yLmlubmVySFRNTCxhPUpTT04ucGFyc2UoaSk7YS5wcm9wZXJ0aWVzJiZaayhuLGEucHJvcGVydGllcyksYS5saW5rcyYmR2sobixhLmxpbmtzKX1jYXRjaCh0KXtvLmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGRldGFpbHMgdGV4dCIsdCl9fSxLaz1mdW5jdGlvbih0KXtSaz10LnRleHQsRms9dm9pZCAwPT09dC53cmFwJiZIaygpfHwhIXQud3JhcH07Y29uc3QgSms9e2FkZEFjdG9yOllrLGFkZE1lc3NhZ2U6ZnVuY3Rpb24odCxlLG4scil7TGsucHVzaCh7ZnJvbTp0LHRvOmUsbWVzc2FnZTpuLnRleHQsd3JhcDp2b2lkIDA9PT1uLndyYXAmJkhrKCl8fCEhbi53cmFwLGFuc3dlcjpyfSl9LGFkZFNpZ25hbDpVayxhZGRMaW5rczpWayxhZGREZXRhaWxzOlFrLGFkZFByb3BlcnRpZXM6WGssYXV0b1dyYXA6SGssc2V0V3JhcDpmdW5jdGlvbih0KXtqaz10fSxlbmFibGVTZXF1ZW5jZU51bWJlcnM6ZnVuY3Rpb24oKXtQaz0hMH0sc2hvd1NlcXVlbmNlTnVtYmVyczpmdW5jdGlvbigpe3JldHVybiBQa30sZ2V0TWVzc2FnZXM6ZnVuY3Rpb24oKXtyZXR1cm4gTGt9LGdldEFjdG9yczpmdW5jdGlvbigpe3JldHVybiBCa30sZ2V0QWN0b3I6cWssZ2V0QWN0b3JLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKEJrKX0sZ2V0QWN0b3JQcm9wZXJ0eTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PXQmJnZvaWQgMCE9PXQucHJvcGVydGllcylyZXR1cm4gdC5wcm9wZXJ0aWVzW2VdfSxnZXRUaXRsZTpmdW5jdGlvbigpe3JldHVybiBSa30scGFyc2VEaXJlY3RpdmU6ZnVuY3Rpb24odCxlLG4pe3NDLnBhcnNlRGlyZWN0aXZlKHRoaXMsdCxlLG4pfSxnZXRDb25maWc6ZnVuY3Rpb24oKXtyZXR1cm4gSnYoKS5zZXF1ZW5jZX0sZ2V0VGl0bGVXcmFwcGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEZrfSxjbGVhcjpmdW5jdGlvbigpe0JrPXt9LExrPVtdfSxwYXJzZU1lc3NhZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCksbj17dGV4dDplLnJlcGxhY2UoL15bOl0/KD86bm8pP3dyYXA6LywiIikudHJpbSgpLHdyYXA6bnVsbCE9PWUubWF0Y2goL15bOl0/d3JhcDovKXx8bnVsbD09PWUubWF0Y2goL15bOl0/bm93cmFwOi8pJiZ2b2lkIDB9O3JldHVybiBvLmRlYnVnKCJwYXJzZU1lc3NhZ2U6IixuKSxufSxMSU5FVFlQRTokayxBUlJPV1RZUEU6e0ZJTExFRDowLE9QRU46MX0sUExBQ0VNRU5UOntMRUZUT0Y6MCxSSUdIVE9GOjEsT1ZFUjoyfSxhZGROb3RlOldrLHNldFRpdGxlOktrLGFwcGx5OmZ1bmN0aW9uIHQoZSl7aWYoZSBpbnN0YW5jZW9mIEFycmF5KWUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dChlKX0pKTtlbHNlIHN3aXRjaChlLnR5cGUpe2Nhc2UiYWRkUGFydGljaXBhbnQiOllrKGUuYWN0b3IsZS5hY3RvcixlLmRlc2NyaXB0aW9uLCJwYXJ0aWNpcGFudCIpO2JyZWFrO2Nhc2UiYWRkQWN0b3IiOllrKGUuYWN0b3IsZS5hY3RvcixlLmRlc2NyaXB0aW9uLCJhY3RvciIpO2JyZWFrO2Nhc2UiYWN0aXZlU3RhcnQiOmNhc2UiYWN0aXZlRW5kIjpVayhlLmFjdG9yLHZvaWQgMCx2b2lkIDAsZS5zaWduYWxUeXBlKTticmVhaztjYXNlImFkZE5vdGUiOldrKGUuYWN0b3IsZS5wbGFjZW1lbnQsZS50ZXh0KTticmVhaztjYXNlImFkZExpbmtzIjpWayhlLmFjdG9yLGUudGV4dCk7YnJlYWs7Y2FzZSJhZGRBTGluayI6IWZ1bmN0aW9uKHQsZSl7dmFyIG49cWsodCk7dHJ5e3ZhciByPXt9LGk9Rm0oZS50ZXh0LEp2KCkpLGE9aS5pbmRleE9mKCJAIikscz0oaT0oaT1pLnJlcGxhY2UoLyZhbXA7L2csIiYiKSkucmVwbGFjZSgvJmVxdWFsczsvZywiPSIpKS5zbGljZSgwLGEtMSkudHJpbSgpLGM9aS5zbGljZShhKzEpLnRyaW0oKTtyW3NdPWMsR2sobixyKX1jYXRjaCh0KXtvLmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGxpbmsgdGV4dCIsdCl9fShlLmFjdG9yLGUudGV4dCk7YnJlYWs7Y2FzZSJhZGRQcm9wZXJ0aWVzIjpYayhlLmFjdG9yLGUudGV4dCk7YnJlYWs7Y2FzZSJhZGREZXRhaWxzIjpRayhlLmFjdG9yLGUudGV4dCk7YnJlYWs7Y2FzZSJhZGRNZXNzYWdlIjpVayhlLmZyb20sZS50byxlLm1zZyxlLnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UibG9vcFN0YXJ0IjpVayh2b2lkIDAsdm9pZCAwLGUubG9vcFRleHQsZS5zaWduYWxUeXBlKTticmVhaztjYXNlImxvb3BFbmQiOmNhc2UicmVjdEVuZCI6Y2FzZSJvcHRFbmQiOmNhc2UiYWx0RW5kIjpjYXNlInBhckVuZCI6VWsodm9pZCAwLHZvaWQgMCx2b2lkIDAsZS5zaWduYWxUeXBlKTticmVhaztjYXNlInJlY3RTdGFydCI6VWsodm9pZCAwLHZvaWQgMCxlLmNvbG9yLGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJvcHRTdGFydCI6VWsodm9pZCAwLHZvaWQgMCxlLm9wdFRleHQsZS5zaWduYWxUeXBlKTticmVhaztjYXNlImFsdFN0YXJ0IjpjYXNlImVsc2UiOlVrKHZvaWQgMCx2b2lkIDAsZS5hbHRUZXh0LGUuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJzZXRUaXRsZSI6S2soZS50ZXh0KTticmVhaztjYXNlInBhclN0YXJ0IjpjYXNlImFuZCI6VWsodm9pZCAwLHZvaWQgMCxlLnBhclRleHQsZS5zaWduYWxUeXBlKX19fTt2YXIgdFQ9W10sZVQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgicmVjdCIpO3JldHVybiBuLmF0dHIoIngiLGUueCksbi5hdHRyKCJ5IixlLnkpLG4uYXR0cigiZmlsbCIsZS5maWxsKSxuLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLG4uYXR0cigid2lkdGgiLGUud2lkdGgpLG4uYXR0cigiaGVpZ2h0IixlLmhlaWdodCksbi5hdHRyKCJyeCIsZS5yeCksbi5hdHRyKCJyeSIsZS5yeSksdm9pZCAwIT09ZS5jbGFzcyYmbi5hdHRyKCJjbGFzcyIsZS5jbGFzcyksbn0sblQ9ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KTtuWzBdLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKCl7YVQoImFjdG9yIitlKyJfcG9wdXAiKX0pKSxuWzBdLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwoZnVuY3Rpb24oKXtvVCgiYWN0b3IiK2UrIl9wb3B1cCIpfSkpfSx0VC5wdXNoKG4pfSxyVD1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT10LmFwcGVuZCgiaW1hZ2UiKTtpLmF0dHIoIngiLGUpLGkuYXR0cigieSIsbik7dmFyIGE9KDAsT20uc2FuaXRpemVVcmwpKHIpO2kuYXR0cigieGxpbms6aHJlZiIsYSl9LGlUPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQuYXBwZW5kKCJ1c2UiKTtpLmF0dHIoIngiLGUpLGkuYXR0cigieSIsbik7dmFyIGE9KDAsT20uc2FuaXRpemVVcmwpKHIpO2kuYXR0cigieGxpbms6aHJlZiIsIiMiK2EpfSxhVD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtudWxsIT1lJiYoZS5zdHlsZS5kaXNwbGF5PSJibG9jayIpfSxvVD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtudWxsIT1lJiYoZS5zdHlsZS5kaXNwbGF5PSJub25lIil9LHNUPWZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPTAsaT1lLnRleHQuc3BsaXQoVW0ubGluZUJyZWFrUmVnZXgpLGE9W10sbz0wLHM9ZnVuY3Rpb24oKXtyZXR1cm4gZS55fTtpZih2b2lkIDAhPT1lLnZhbGlnbiYmdm9pZCAwIT09ZS50ZXh0TWFyZ2luJiZlLnRleHRNYXJnaW4+MClzd2l0Y2goZS52YWxpZ24pe2Nhc2UidG9wIjpjYXNlInN0YXJ0IjpzPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucm91bmQoZS55K2UudGV4dE1hcmdpbil9O2JyZWFrO2Nhc2UibWlkZGxlIjpjYXNlImNlbnRlciI6cz1mdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKGUueSsobityK2UudGV4dE1hcmdpbikvMil9O2JyZWFrO2Nhc2UiYm90dG9tIjpjYXNlImVuZCI6cz1mdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKGUueSsobityKzIqZS50ZXh0TWFyZ2luKS1lLnRleHRNYXJnaW4pfX1pZih2b2lkIDAhPT1lLmFuY2hvciYmdm9pZCAwIT09ZS50ZXh0TWFyZ2luJiZ2b2lkIDAhPT1lLndpZHRoKXN3aXRjaChlLmFuY2hvcil7Y2FzZSJsZWZ0IjpjYXNlInN0YXJ0IjplLng9TWF0aC5yb3VuZChlLngrZS50ZXh0TWFyZ2luKSxlLmFuY2hvcj0ic3RhcnQiLGUuZG9taW5hbnRCYXNlbGluZT0idGV4dC1hZnRlci1lZGdlIixlLmFsaWdubWVudEJhc2VsaW5lPSJtaWRkbGUiO2JyZWFrO2Nhc2UibWlkZGxlIjpjYXNlImNlbnRlciI6ZS54PU1hdGgucm91bmQoZS54K2Uud2lkdGgvMiksZS5hbmNob3I9Im1pZGRsZSIsZS5kb21pbmFudEJhc2VsaW5lPSJtaWRkbGUiLGUuYWxpZ25tZW50QmFzZWxpbmU9Im1pZGRsZSI7YnJlYWs7Y2FzZSJyaWdodCI6Y2FzZSJlbmQiOmUueD1NYXRoLnJvdW5kKGUueCtlLndpZHRoLWUudGV4dE1hcmdpbiksZS5hbmNob3I9ImVuZCIsZS5kb21pbmFudEJhc2VsaW5lPSJ0ZXh0LWJlZm9yZS1lZGdlIixlLmFsaWdubWVudEJhc2VsaW5lPSJtaWRkbGUifWZvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKXt2YXIgdT1pW2NdO3ZvaWQgMCE9PWUudGV4dE1hcmdpbiYmMD09PWUudGV4dE1hcmdpbiYmdm9pZCAwIT09ZS5mb250U2l6ZSYmKG89YyplLmZvbnRTaXplKTt2YXIgbD10LmFwcGVuZCgidGV4dCIpO2lmKGwuYXR0cigieCIsZS54KSxsLmF0dHIoInkiLHMoKSksdm9pZCAwIT09ZS5hbmNob3ImJmwuYXR0cigidGV4dC1hbmNob3IiLGUuYW5jaG9yKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsZS5kb21pbmFudEJhc2VsaW5lKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLGUuYWxpZ25tZW50QmFzZWxpbmUpLHZvaWQgMCE9PWUuZm9udEZhbWlseSYmbC5zdHlsZSgiZm9udC1mYW1pbHkiLGUuZm9udEZhbWlseSksdm9pZCAwIT09ZS5mb250U2l6ZSYmbC5zdHlsZSgiZm9udC1zaXplIixlLmZvbnRTaXplKSx2b2lkIDAhPT1lLmZvbnRXZWlnaHQmJmwuc3R5bGUoImZvbnQtd2VpZ2h0IixlLmZvbnRXZWlnaHQpLHZvaWQgMCE9PWUuZmlsbCYmbC5hdHRyKCJmaWxsIixlLmZpbGwpLHZvaWQgMCE9PWUuY2xhc3MmJmwuYXR0cigiY2xhc3MiLGUuY2xhc3MpLHZvaWQgMCE9PWUuZHk/bC5hdHRyKCJkeSIsZS5keSk6MCE9PW8mJmwuYXR0cigiZHkiLG8pLGUudHNwYW4pe3ZhciBoPWwuYXBwZW5kKCJ0c3BhbiIpO2guYXR0cigieCIsZS54KSx2b2lkIDAhPT1lLmZpbGwmJmguYXR0cigiZmlsbCIsZS5maWxsKSxoLnRleHQodSl9ZWxzZSBsLnRleHQodSk7dm9pZCAwIT09ZS52YWxpZ24mJnZvaWQgMCE9PWUudGV4dE1hcmdpbiYmZS50ZXh0TWFyZ2luPjAmJihyKz0obC5fZ3JvdXBzfHxsKVswXVswXS5nZXRCQm94KCkuaGVpZ2h0LG49ciksYS5wdXNoKGwpfXJldHVybiBhfSxjVD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuYXBwZW5kKCJwb2x5Z29uIik7cmV0dXJuIG4uYXR0cigicG9pbnRzIixmdW5jdGlvbih0LGUsbixyLGkpe3JldHVybiB0KyIsIitlKyIgIisodCtuKSsiLCIrZSsiICIrKHQrbikrIiwiKyhlK3ItNykrIiAiKyh0K24tOC40KSsiLCIrKGUrcikrIiAiK3QrIiwiKyhlK3IpfShlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpKSxuLmF0dHIoImNsYXNzIiwibGFiZWxCb3giKSxlLnk9ZS55K2UuaGVpZ2h0LzIsc1QodCxlKSxufSx1VD0tMSxsVD1mdW5jdGlvbih0LGUpe3Quc2VsZWN0QWxsJiZ0LnNlbGVjdEFsbCgiLmFjdG9yLWxpbmUiKS5hdHRyKCJjbGFzcyIsIjIwMCIpLmF0dHIoInkyIixlLTU1KX0saFQ9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MCxmaWxsOnZvaWQgMCxhbmNob3I6dm9pZCAwLHN0eWxlOiIjNjY2Iix3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHRzcGFuOiEwLHZhbGlnbjp2b2lkIDB9fSxmVD1mdW5jdGlvbigpe3JldHVybnt4OjAseTowLGZpbGw6IiNFREYyQUUiLHN0cm9rZToiIzY2NiIsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfX0sZFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLGksYSxvLHMpe3IoZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuK2EvMikuYXR0cigieSIsaStvLzIrNSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dCh0KSxzKX1mdW5jdGlvbiBlKHQsZSxuLGksYSxvLHMsYyl7Zm9yKHZhciB1PWMuYWN0b3JGb250U2l6ZSxsPWMuYWN0b3JGb250RmFtaWx5LGg9Yy5hY3RvckZvbnRXZWlnaHQsZj10LnNwbGl0KFVtLmxpbmVCcmVha1JlZ2V4KSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWQqdS11KihmLmxlbmd0aC0xKS8yLHk9ZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuK2EvMikuYXR0cigieSIsaSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUoImZvbnQtc2l6ZSIsdSkuc3R5bGUoImZvbnQtd2VpZ2h0IixoKS5zdHlsZSgiZm9udC1mYW1pbHkiLGwpO3kuYXBwZW5kKCJ0c3BhbiIpLmF0dHIoIngiLG4rYS8yKS5hdHRyKCJkeSIscCkudGV4dChmW2RdKSx5LmF0dHIoInkiLGkrby8yKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJjZW50cmFsIikscih5LHMpfX1mdW5jdGlvbiBuKHQsbixpLGEsbyxzLGMsdSl7dmFyIGw9bi5hcHBlbmQoInN3aXRjaCIpLGg9bC5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixpKS5hdHRyKCJ5IixhKS5hdHRyKCJ3aWR0aCIsbykuYXR0cigiaGVpZ2h0IixzKS5hcHBlbmQoInhodG1sOmRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUiKS5zdHlsZSgiaGVpZ2h0IiwiMTAwJSIpLnN0eWxlKCJ3aWR0aCIsIjEwMCUiKTtoLmFwcGVuZCgiZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KHQpLGUodCxsLGksYSxvLHMsYyx1KSxyKGgsYyl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJnQuYXR0cihuLGVbbl0pfXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4iZm8iPT09ci50ZXh0UGxhY2VtZW50P246Im9sZCI9PT1yLnRleHRQbGFjZW1lbnQ/dDplfX0oKSxwVD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSxhLG8scyl7cihlLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLG4pLmF0dHIoInkiLGkpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IikudGV4dCh0KSxzKX1mdW5jdGlvbiBlKHQsZSxuLGksYSxvLHMsYyl7Zm9yKHZhciB1PWMuYWN0b3JGb250U2l6ZSxsPWMuYWN0b3JGb250RmFtaWx5LGg9Yy5hY3RvckZvbnRXZWlnaHQsZj10LnNwbGl0KFVtLmxpbmVCcmVha1JlZ2V4KSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWQqdS11KihmLmxlbmd0aC0xKS8yLHk9ZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuKS5hdHRyKCJ5IixpKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLnN0eWxlKCJmb250LXNpemUiLHUpLnN0eWxlKCJmb250LXdlaWdodCIsaCkuc3R5bGUoImZvbnQtZmFtaWx5IixsKTt5LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixuKS5hdHRyKCJkeSIscCkudGV4dChmW2RdKSx5LmF0dHIoInkiLGkrby8yKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJjZW50cmFsIikscih5LHMpfX1mdW5jdGlvbiBuKHQsbixpLGEsbyxzLGMsdSl7dmFyIGw9bi5hcHBlbmQoInN3aXRjaCIpLGg9bC5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixpKS5hdHRyKCJ5IixhKS5hdHRyKCJ3aWR0aCIsbykuYXR0cigiaGVpZ2h0IixzKS5hcHBlbmQoInhodG1sOmRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUiKS5zdHlsZSgiaGVpZ2h0IiwiMTAwJSIpLnN0eWxlKCJ3aWR0aCIsIjEwMCUiKTtoLmFwcGVuZCgiZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KHQpLGUodCxsLGksYSwwLHMsYyx1KSxyKGgsYyl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJnQuYXR0cihuLGVbbl0pfXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4iZm8iPT09ci50ZXh0UGxhY2VtZW50P246Im9sZCI9PT1yLnRleHRQbGFjZW1lbnQ/dDplfX0oKTtjb25zdCB5VD1lVCxnVD1mdW5jdGlvbih0LGUsbil7c3dpdGNoKGUudHlwZSl7Y2FzZSJhY3RvciI6cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLngrZS53aWR0aC8yOzA9PT1lLnkmJih1VCsrLHQuYXBwZW5kKCJsaW5lIikuYXR0cigiaWQiLCJhY3RvciIrdVQpLmF0dHIoIngxIixyKS5hdHRyKCJ5MSIsODApLmF0dHIoIngyIixyKS5hdHRyKCJ5MiIsMmUzKS5hdHRyKCJjbGFzcyIsImFjdG9yLWxpbmUiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIwLjVweCIpLmF0dHIoInN0cm9rZSIsIiM5OTkiKSk7dmFyIGk9dC5hcHBlbmQoImciKTtpLmF0dHIoImNsYXNzIiwiYWN0b3ItbWFuIik7dmFyIGE9e3g6MCx5OjAsZmlsbDoiI0VERjJBRSIsc3Ryb2tlOiIjNjY2Iix3aWR0aDoxMDAsYW5jaG9yOiJzdGFydCIsaGVpZ2h0OjEwMCxyeDowLHJ5OjB9O2EueD1lLngsYS55PWUueSxhLmZpbGw9IiNlYWVhZWEiLGEud2lkdGg9ZS53aWR0aCxhLmhlaWdodD1lLmhlaWdodCxhLmNsYXNzPSJhY3RvciIsYS5yeD0zLGEucnk9MyxpLmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3ItbWFuLXRvcnNvIit1VCkuYXR0cigieDEiLHIpLmF0dHIoInkxIixlLnkrMjUpLmF0dHIoIngyIixyKS5hdHRyKCJ5MiIsZS55KzQ1KSxpLmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3ItbWFuLWFybXMiK3VUKS5hdHRyKCJ4MSIsci0xOCkuYXR0cigieTEiLGUueSszMykuYXR0cigieDIiLHIrMTgpLmF0dHIoInkyIixlLnkrMzMpLGkuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLHItMTgpLmF0dHIoInkxIixlLnkrNjApLmF0dHIoIngyIixyKS5hdHRyKCJ5MiIsZS55KzQ1KSxpLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIixyKS5hdHRyKCJ5MSIsZS55KzQ1KS5hdHRyKCJ4MiIscisxNikuYXR0cigieTIiLGUueSs2MCk7dmFyIG89aS5hcHBlbmQoImNpcmNsZSIpO28uYXR0cigiY3giLGUueCtlLndpZHRoLzIpLG8uYXR0cigiY3kiLGUueSsxMCksby5hdHRyKCJyIiwxNSksby5hdHRyKCJ3aWR0aCIsZS53aWR0aCksby5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0KTt2YXIgcz1pLm5vZGUoKS5nZXRCQm94KCk7cmV0dXJuIGUuaGVpZ2h0PXMuaGVpZ2h0LGRUKG4pKGUuZGVzY3JpcHRpb24saSxhLngsYS55KzM1LGEud2lkdGgsYS5oZWlnaHQse2NsYXNzOiJhY3RvciJ9LG4pLGUuaGVpZ2h0fSh0LGUsbik7Y2FzZSJwYXJ0aWNpcGFudCI6cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLngrZS53aWR0aC8yLGk9dC5hcHBlbmQoImciKSxhPWk7MD09PWUueSYmKHVUKyssYS5hcHBlbmQoImxpbmUiKS5hdHRyKCJpZCIsImFjdG9yIit1VCkuYXR0cigieDEiLHIpLmF0dHIoInkxIiw1KS5hdHRyKCJ4MiIscikuYXR0cigieTIiLDJlMykuYXR0cigiY2xhc3MiLCJhY3Rvci1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMC41cHgiKS5hdHRyKCJzdHJva2UiLCIjOTk5IiksYT1pLmFwcGVuZCgiZyIpLGUuYWN0b3JDbnQ9dVQsbnVsbCE9ZS5saW5rcyYmKGEuYXR0cigiaWQiLCJyb290LSIrdVQpLG5UKCIjcm9vdC0iK3VULHVUKSkpO3ZhciBvPXt4OjAseTowLGZpbGw6IiNFREYyQUUiLHN0cm9rZToiIzY2NiIsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfSxzPSJhY3RvciI7bnVsbCE9ZS5wcm9wZXJ0aWVzJiZlLnByb3BlcnRpZXMuY2xhc3M/cz1lLnByb3BlcnRpZXMuY2xhc3M6by5maWxsPSIjZWFlYWVhIixvLng9ZS54LG8ueT1lLnksby53aWR0aD1lLndpZHRoLG8uaGVpZ2h0PWUuaGVpZ2h0LG8uY2xhc3M9cyxvLnJ4PTMsby5yeT0zO3ZhciBjPWVUKGEsbyk7aWYoZS5yZWN0RGF0YT1vLG51bGwhPWUucHJvcGVydGllcyYmZS5wcm9wZXJ0aWVzLmljb24pe3ZhciB1PWUucHJvcGVydGllcy5pY29uLnRyaW0oKTsiQCI9PT11LmNoYXJBdCgwKT9pVChhLG8ueCtvLndpZHRoLTIwLG8ueSsxMCx1LnN1YnN0cigxKSk6clQoYSxvLngrby53aWR0aC0yMCxvLnkrMTAsdSl9ZFQobikoZS5kZXNjcmlwdGlvbixhLG8ueCxvLnksby53aWR0aCxvLmhlaWdodCx7Y2xhc3M6ImFjdG9yIn0sbik7dmFyIGw9ZS5oZWlnaHQ7aWYoYy5ub2RlKXt2YXIgaD1jLm5vZGUoKS5nZXRCQm94KCk7ZS5oZWlnaHQ9aC5oZWlnaHQsbD1oLmhlaWdodH1yZXR1cm4gbH0odCxlLG4pfX0sbVQ9ZnVuY3Rpb24odCxlLG4scixpKXtpZih2b2lkIDA9PT1lLmxpbmtzfHxudWxsPT09ZS5saW5rc3x8MD09PU9iamVjdC5rZXlzKGUubGlua3MpLmxlbmd0aClyZXR1cm57aGVpZ2h0OjAsd2lkdGg6MH07dmFyIGE9ZS5saW5rcyxvPWUuYWN0b3JDbnQscz1lLnJlY3REYXRhLGM9Im5vbmUiO2kmJihjPSJibG9jayAhaW1wb3J0YW50Iik7dmFyIHU9dC5hcHBlbmQoImciKTt1LmF0dHIoImlkIiwiYWN0b3IiK28rIl9wb3B1cCIpLHUuYXR0cigiY2xhc3MiLCJhY3RvclBvcHVwTWVudSIpLHUuYXR0cigiZGlzcGxheSIsYyksblQoIiNhY3RvciIrbysiX3BvcHVwIixvKTt2YXIgbD0iIjt2b2lkIDAhPT1zLmNsYXNzJiYobD0iICIrcy5jbGFzcyk7dmFyIGg9cy53aWR0aD5uP3Mud2lkdGg6bixmPXUuYXBwZW5kKCJyZWN0Iik7aWYoZi5hdHRyKCJjbGFzcyIsImFjdG9yUG9wdXBNZW51UGFuZWwiK2wpLGYuYXR0cigieCIscy54KSxmLmF0dHIoInkiLHMuaGVpZ2h0KSxmLmF0dHIoImZpbGwiLHMuZmlsbCksZi5hdHRyKCJzdHJva2UiLHMuc3Ryb2tlKSxmLmF0dHIoIndpZHRoIixoKSxmLmF0dHIoImhlaWdodCIscy5oZWlnaHQpLGYuYXR0cigicngiLHMucngpLGYuYXR0cigicnkiLHMucnkpLG51bGwhPWEpe3ZhciBkPTIwO2Zvcih2YXIgcCBpbiBhKXt2YXIgeT11LmFwcGVuZCgiYSIpLGc9KDAsT20uc2FuaXRpemVVcmwpKGFbcF0pO3kuYXR0cigieGxpbms6aHJlZiIsZykseS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSxwVChyKShwLHkscy54KzEwLHMuaGVpZ2h0K2QsaCwyMCx7Y2xhc3M6ImFjdG9yIn0sciksZCs9MzB9fXJldHVybiBmLmF0dHIoImhlaWdodCIsZCkse2hlaWdodDpzLmhlaWdodCtkLHdpZHRoOmh9fSx2VD1mdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBlbmQoImciKX0sYlQ9ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgYT17eDowLHk6MCxmaWxsOiIjRURGMkFFIixzdHJva2U6IiM2NjYiLHdpZHRoOjEwMCxhbmNob3I6InN0YXJ0IixoZWlnaHQ6MTAwLHJ4OjAscnk6MH0sbz1lLmFuY2hvcmVkO2EueD1lLnN0YXJ0eCxhLnk9ZS5zdGFydHksYS5jbGFzcz0iYWN0aXZhdGlvbiIraSUzLGEud2lkdGg9ZS5zdG9weC1lLnN0YXJ0eCxhLmhlaWdodD1uLWUuc3RhcnR5LGVUKG8sYSl9LF9UPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXIuYm94TWFyZ2luLGE9ci5ib3hUZXh0TWFyZ2luLG89ci5sYWJlbEJveEhlaWdodCxzPXIubGFiZWxCb3hXaWR0aCxjPXIubWVzc2FnZUZvbnRGYW1pbHksdT1yLm1lc3NhZ2VGb250U2l6ZSxsPXIubWVzc2FnZUZvbnRXZWlnaHQsaD10LmFwcGVuZCgiZyIpLGY9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIGguYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLHQpLmF0dHIoInkxIixlKS5hdHRyKCJ4MiIsbikuYXR0cigieTIiLHIpLmF0dHIoImNsYXNzIiwibG9vcExpbmUiKX07ZihlLnN0YXJ0eCxlLnN0YXJ0eSxlLnN0b3B4LGUuc3RhcnR5KSxmKGUuc3RvcHgsZS5zdGFydHksZS5zdG9weCxlLnN0b3B5KSxmKGUuc3RhcnR4LGUuc3RvcHksZS5zdG9weCxlLnN0b3B5KSxmKGUuc3RhcnR4LGUuc3RhcnR5LGUuc3RhcnR4LGUuc3RvcHkpLHZvaWQgMCE9PWUuc2VjdGlvbnMmJmUuc2VjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZihlLnN0YXJ0eCx0LnksZS5zdG9weCx0LnkpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMywgMyIpfSkpO3ZhciBkPXt4OjAseTowLGZpbGw6dm9pZCAwLGFuY2hvcjp2b2lkIDAsc3R5bGU6IiM2NjYiLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLHRleHRNYXJnaW46MCxyeDowLHJ5OjAsdHNwYW46ITAsdmFsaWduOnZvaWQgMH07ZC50ZXh0PW4sZC54PWUuc3RhcnR4LGQueT1lLnN0YXJ0eSxkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC5hbmNob3I9Im1pZGRsZSIsZC52YWxpZ249Im1pZGRsZSIsZC50c3Bhbj0hMSxkLndpZHRoPXN8fDUwLGQuaGVpZ2h0PW98fDIwLGQudGV4dE1hcmdpbj1hLGQuY2xhc3M9ImxhYmVsVGV4dCIsY1QoaCxkKSwoZD17eDowLHk6MCxmaWxsOnZvaWQgMCxhbmNob3I6dm9pZCAwLHN0eWxlOiIjNjY2Iix3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHRzcGFuOiEwLHZhbGlnbjp2b2lkIDB9KS50ZXh0PWUudGl0bGUsZC54PWUuc3RhcnR4K3MvMisoZS5zdG9weC1lLnN0YXJ0eCkvMixkLnk9ZS5zdGFydHkraSthLGQuYW5jaG9yPSJtaWRkbGUiLGQudmFsaWduPSJtaWRkbGUiLGQudGV4dE1hcmdpbj1hLGQuY2xhc3M9Imxvb3BUZXh0IixkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC53cmFwPSEwO3ZhciBwPXNUKGgsZCk7cmV0dXJuIHZvaWQgMCE9PWUuc2VjdGlvblRpdGxlcyYmZS5zZWN0aW9uVGl0bGVzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7aWYodC5tZXNzYWdlKXtkLnRleHQ9dC5tZXNzYWdlLGQueD1lLnN0YXJ0eCsoZS5zdG9weC1lLnN0YXJ0eCkvMixkLnk9ZS5zZWN0aW9uc1tuXS55K2krYSxkLmNsYXNzPSJsb29wVGV4dCIsZC5hbmNob3I9Im1pZGRsZSIsZC52YWxpZ249Im1pZGRsZSIsZC50c3Bhbj0hMSxkLmZvbnRGYW1pbHk9YyxkLmZvbnRTaXplPXUsZC5mb250V2VpZ2h0PWwsZC53cmFwPWUud3JhcCxwPXNUKGgsZCk7dmFyIHI9TWF0aC5yb3VuZChwLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKHQuX2dyb3Vwc3x8dClbMF1bMF0uZ2V0QkJveCgpLmhlaWdodH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKSk7ZS5zZWN0aW9uc1tuXS5oZWlnaHQrPXItKGkrYSl9fSkpLGUuaGVpZ2h0PU1hdGgucm91bmQoZS5zdG9weS1lLnN0YXJ0eSksaH0seFQ9ZnVuY3Rpb24odCxlKXtlVCh0LHt4OmUuc3RhcnR4LHk6ZS5zdGFydHksd2lkdGg6ZS5zdG9weC1lLnN0YXJ0eCxoZWlnaHQ6ZS5zdG9weS1lLnN0YXJ0eSxmaWxsOmUuZmlsbCxjbGFzczoicmVjdCJ9KS5sb3dlcigpfSx3VD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJhcnJvd2hlYWQiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpfSxrVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJmaWxsZWQtaGVhZCIpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpfSxUVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJzZXF1ZW5jZW51bWJlciIpLmF0dHIoInJlZlgiLDE1KS5hdHRyKCJyZWZZIiwxNSkuYXR0cigibWFya2VyV2lkdGgiLDYwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsMTUpLmF0dHIoImN5IiwxNSkuYXR0cigiciIsNil9LEVUPWZ1bmN0aW9uKHQpe3ZhciBlPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImNyb3NzaGVhZCIpLmF0dHIoIm1hcmtlcldpZHRoIiwxNSkuYXR0cigibWFya2VySGVpZ2h0Iiw4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXR0cigicmVmWCIsMTYpLmF0dHIoInJlZlkiLDQpO2UuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsImJsYWNrIikuYXR0cigic3Ryb2tlIiwiIzAwMDAwMCIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMCwgMCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLmF0dHIoImQiLCJNIDksMiBWIDYgTDE2LDQgWiIpLGUuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwMDAwIikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIwLCAwIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigiZCIsIk0gMCwxIEwgNiw3IE0gNiwxIEwgMCw3Iil9LENUPWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJzeW1ib2wiKS5hdHRyKCJpZCIsImRhdGFiYXNlIikuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLmF0dHIoImNsaXAtcnVsZSIsImV2ZW5vZGQiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSguNSkiKS5hdHRyKCJkIiwiTTEyLjI1OC4wMDFsLjI1Ni4wMDQuMjU1LjAwNS4yNTMuMDA4LjI1MS4wMS4yNDkuMDEyLjI0Ny4wMTUuMjQ2LjAxNi4yNDIuMDE5LjI0MS4wMi4yMzkuMDIzLjIzNi4wMjQuMjMzLjAyNy4yMzEuMDI4LjIyOS4wMzEuMjI1LjAzMi4yMjMuMDM0LjIyLjAzNi4yMTcuMDM4LjIxNC4wNC4yMTEuMDQxLjIwOC4wNDMuMjA1LjA0NS4yMDEuMDQ2LjE5OC4wNDguMTk0LjA1LjE5MS4wNTEuMTg3LjA1My4xODMuMDU0LjE4LjA1Ni4xNzUuMDU3LjE3Mi4wNTkuMTY4LjA2LjE2My4wNjEuMTYuMDYzLjE1NS4wNjQuMTUuMDY2LjA3NC4wMzMuMDczLjAzMy4wNzEuMDM0LjA3LjAzNC4wNjkuMDM1LjA2OC4wMzUuMDY3LjAzNS4wNjYuMDM1LjA2NC4wMzYuMDY0LjAzNi4wNjIuMDM2LjA2LjAzNi4wNi4wMzcuMDU4LjAzNy4wNTguMDM3LjA1NS4wMzguMDU1LjAzOC4wNTMuMDM4LjA1Mi4wMzguMDUxLjAzOS4wNS4wMzkuMDQ4LjAzOS4wNDcuMDM5LjA0NS4wNC4wNDQuMDQuMDQzLjA0LjA0MS4wNC4wNC4wNDEuMDM5LjA0MS4wMzcuMDQxLjAzNi4wNDEuMDM0LjA0MS4wMzMuMDQyLjAzMi4wNDIuMDMuMDQyLjAyOS4wNDIuMDI3LjA0Mi4wMjYuMDQzLjAyNC4wNDMuMDIzLjA0My4wMjEuMDQzLjAyLjA0My4wMTguMDQ0LjAxNy4wNDMuMDE1LjA0NC4wMTMuMDQ0LjAxMi4wNDQuMDExLjA0NS4wMDkuMDQ0LjAwNy4wNDUuMDA2LjA0NS4wMDQuMDQ1LjAwMi4wNDUuMDAxLjA0NXYxN2wtLjAwMS4wNDUtLjAwMi4wNDUtLjAwNC4wNDUtLjAwNi4wNDUtLjAwNy4wNDUtLjAwOS4wNDQtLjAxMS4wNDUtLjAxMi4wNDQtLjAxMy4wNDQtLjAxNS4wNDQtLjAxNy4wNDMtLjAxOC4wNDQtLjAyLjA0My0uMDIxLjA0My0uMDIzLjA0My0uMDI0LjA0My0uMDI2LjA0My0uMDI3LjA0Mi0uMDI5LjA0Mi0uMDMuMDQyLS4wMzIuMDQyLS4wMzMuMDQyLS4wMzQuMDQxLS4wMzYuMDQxLS4wMzcuMDQxLS4wMzkuMDQxLS4wNC4wNDEtLjA0MS4wNC0uMDQzLjA0LS4wNDQuMDQtLjA0NS4wNC0uMDQ3LjAzOS0uMDQ4LjAzOS0uMDUuMDM5LS4wNTEuMDM5LS4wNTIuMDM4LS4wNTMuMDM4LS4wNTUuMDM4LS4wNTUuMDM4LS4wNTguMDM3LS4wNTguMDM3LS4wNi4wMzctLjA2LjAzNi0uMDYyLjAzNi0uMDY0LjAzNi0uMDY0LjAzNi0uMDY2LjAzNS0uMDY3LjAzNS0uMDY4LjAzNS0uMDY5LjAzNS0uMDcuMDM0LS4wNzEuMDM0LS4wNzMuMDMzLS4wNzQuMDMzLS4xNS4wNjYtLjE1NS4wNjQtLjE2LjA2My0uMTYzLjA2MS0uMTY4LjA2LS4xNzIuMDU5LS4xNzUuMDU3LS4xOC4wNTYtLjE4My4wNTQtLjE4Ny4wNTMtLjE5MS4wNTEtLjE5NC4wNS0uMTk4LjA0OC0uMjAxLjA0Ni0uMjA1LjA0NS0uMjA4LjA0My0uMjExLjA0MS0uMjE0LjA0LS4yMTcuMDM4LS4yMi4wMzYtLjIyMy4wMzQtLjIyNS4wMzItLjIyOS4wMzEtLjIzMS4wMjgtLjIzMy4wMjctLjIzNi4wMjQtLjIzOS4wMjMtLjI0MS4wMi0uMjQyLjAxOS0uMjQ2LjAxNi0uMjQ3LjAxNS0uMjQ5LjAxMi0uMjUxLjAxLS4yNTMuMDA4LS4yNTUuMDA1LS4yNTYuMDA0LS4yNTguMDAxLS4yNTgtLjAwMS0uMjU2LS4wMDQtLjI1NS0uMDA1LS4yNTMtLjAwOC0uMjUxLS4wMS0uMjQ5LS4wMTItLjI0Ny0uMDE1LS4yNDUtLjAxNi0uMjQzLS4wMTktLjI0MS0uMDItLjIzOC0uMDIzLS4yMzYtLjAyNC0uMjM0LS4wMjctLjIzMS0uMDI4LS4yMjgtLjAzMS0uMjI2LS4wMzItLjIyMy0uMDM0LS4yMi0uMDM2LS4yMTctLjAzOC0uMjE0LS4wNC0uMjExLS4wNDEtLjIwOC0uMDQzLS4yMDQtLjA0NS0uMjAxLS4wNDYtLjE5OC0uMDQ4LS4xOTUtLjA1LS4xOS0uMDUxLS4xODctLjA1My0uMTg0LS4wNTQtLjE3OS0uMDU2LS4xNzYtLjA1Ny0uMTcyLS4wNTktLjE2Ny0uMDYtLjE2NC0uMDYxLS4xNTktLjA2My0uMTU1LS4wNjQtLjE1MS0uMDY2LS4wNzQtLjAzMy0uMDcyLS4wMzMtLjA3Mi0uMDM0LS4wNy0uMDM0LS4wNjktLjAzNS0uMDY4LS4wMzUtLjA2Ny0uMDM1LS4wNjYtLjAzNS0uMDY0LS4wMzYtLjA2My0uMDM2LS4wNjItLjAzNi0uMDYxLS4wMzYtLjA2LS4wMzctLjA1OC0uMDM3LS4wNTctLjAzNy0uMDU2LS4wMzgtLjA1NS0uMDM4LS4wNTMtLjAzOC0uMDUyLS4wMzgtLjA1MS0uMDM5LS4wNDktLjAzOS0uMDQ5LS4wMzktLjA0Ni0uMDM5LS4wNDYtLjA0LS4wNDQtLjA0LS4wNDMtLjA0LS4wNDEtLjA0LS4wNC0uMDQxLS4wMzktLjA0MS0uMDM3LS4wNDEtLjAzNi0uMDQxLS4wMzQtLjA0MS0uMDMzLS4wNDItLjAzMi0uMDQyLS4wMy0uMDQyLS4wMjktLjA0Mi0uMDI3LS4wNDItLjAyNi0uMDQzLS4wMjQtLjA0My0uMDIzLS4wNDMtLjAyMS0uMDQzLS4wMi0uMDQzLS4wMTgtLjA0NC0uMDE3LS4wNDMtLjAxNS0uMDQ0LS4wMTMtLjA0NC0uMDEyLS4wNDQtLjAxMS0uMDQ1LS4wMDktLjA0NC0uMDA3LS4wNDUtLjAwNi0uMDQ1LS4wMDQtLjA0NS0uMDAyLS4wNDUtLjAwMS0uMDQ1di0xN2wuMDAxLS4wNDUuMDAyLS4wNDUuMDA0LS4wNDUuMDA2LS4wNDUuMDA3LS4wNDUuMDA5LS4wNDQuMDExLS4wNDUuMDEyLS4wNDQuMDEzLS4wNDQuMDE1LS4wNDQuMDE3LS4wNDMuMDE4LS4wNDQuMDItLjA0My4wMjEtLjA0My4wMjMtLjA0My4wMjQtLjA0My4wMjYtLjA0My4wMjctLjA0Mi4wMjktLjA0Mi4wMy0uMDQyLjAzMi0uMDQyLjAzMy0uMDQyLjAzNC0uMDQxLjAzNi0uMDQxLjAzNy0uMDQxLjAzOS0uMDQxLjA0LS4wNDEuMDQxLS4wNC4wNDMtLjA0LjA0NC0uMDQuMDQ2LS4wNC4wNDYtLjAzOS4wNDktLjAzOS4wNDktLjAzOS4wNTEtLjAzOS4wNTItLjAzOC4wNTMtLjAzOC4wNTUtLjAzOC4wNTYtLjAzOC4wNTctLjAzNy4wNTgtLjAzNy4wNi0uMDM3LjA2MS0uMDM2LjA2Mi0uMDM2LjA2My0uMDM2LjA2NC0uMDM2LjA2Ni0uMDM1LjA2Ny0uMDM1LjA2OC0uMDM1LjA2OS0uMDM1LjA3LS4wMzQuMDcyLS4wMzQuMDcyLS4wMzMuMDc0LS4wMzMuMTUxLS4wNjYuMTU1LS4wNjQuMTU5LS4wNjMuMTY0LS4wNjEuMTY3LS4wNi4xNzItLjA1OS4xNzYtLjA1Ny4xNzktLjA1Ni4xODQtLjA1NC4xODctLjA1My4xOS0uMDUxLjE5NS0uMDUuMTk4LS4wNDguMjAxLS4wNDYuMjA0LS4wNDUuMjA4LS4wNDMuMjExLS4wNDEuMjE0LS4wNC4yMTctLjAzOC4yMi0uMDM2LjIyMy0uMDM0LjIyNi0uMDMyLjIyOC0uMDMxLjIzMS0uMDI4LjIzNC0uMDI3LjIzNi0uMDI0LjIzOC0uMDIzLjI0MS0uMDIuMjQzLS4wMTkuMjQ1LS4wMTYuMjQ3LS4wMTUuMjQ5LS4wMTIuMjUxLS4wMS4yNTMtLjAwOC4yNTUtLjAwNS4yNTYtLjAwNC4yNTgtLjAwMS4yNTguMDAxem0tOS4yNTggMjAuNDk5di4wMWwuMDAxLjAyMS4wMDMuMDIxLjAwNC4wMjIuMDA1LjAyMS4wMDYuMDIyLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyMS4wMjQuMDIyLjAyNS4wMjMuMDI0LjAyNC4wMjUuMDUyLjA0OS4wNTYuMDUuMDYxLjA1MS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUxLjA3OS4wNTIuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUxLjEwNS4wNTIuMTEuMDUyLjExNC4wNTEuMTE5LjA1MS4xMjMuMDUxLjEyNy4wNS4xMzEuMDUuMTM1LjA1LjEzOS4wNDguMTQ0LjA0OS4xNDcuMDQ3LjE1Mi4wNDcuMTU1LjA0Ny4xNi4wNDUuMTYzLjA0NS4xNjcuMDQzLjE3MS4wNDMuMTc2LjA0MS4xNzguMDQxLjE4My4wMzkuMTg3LjAzOS4xOS4wMzcuMTk0LjAzNS4xOTcuMDM1LjIwMi4wMzMuMjA0LjAzMS4yMDkuMDMuMjEyLjAyOS4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNi4yNC4wMTUuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA1LjI1Ni4wMDQuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDA0LjI1NC0uMDA1LjI1LS4wMDguMjQ3LS4wMTEuMjQ0LS4wMTIuMjQxLS4wMTQuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMjEuMjI2LS4wMjEuMjI0LS4wMjQuMjItLjAyNi4yMTYtLjAyNy4yMTItLjAyOC4yMS0uMDMxLjIwNS0uMDMxLjIwMi0uMDM0LjE5OC0uMDM0LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDQuMTc5LS4wNC4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ5LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTMuMDgzLS4wNTEuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNC4wMjMtLjAyNS4wMjEtLjAyNC4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDI0LjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMjdsLS4wNzcuMDU1LS4wOC4wNTMtLjA4My4wNTQtLjA4NS4wNTMtLjA4Ny4wNTItLjA5LjA1Mi0uMDkzLjA1MS0uMDk1LjA1LS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ1LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDQtLjEzMi4wMzgtLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzctLjEzOS4wMzUtLjE0Mi4wMzUtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzEtLjE1LjAzLS4xNTEuMDMtLjE1My4wMjktLjE1NC4wMjctLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjUtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjItLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxMS0uMTc4LjAxLS4xNzkuMDA4LS4xNzkuMDA4LS4xODEuMDA2LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDYtLjE3OS0uMDA4LS4xNzktLjAwOC0uMTc4LS4wMS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjctLjE1My0uMDI5LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNS0uMTQtLjAzNS0uMTM3LS4wMzctLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzgtLjEzLS4wNC0uMTI4LS4wNC0uMTI2LS4wNDEtLjEyNC0uMDQyLS4xMjItLjA0Mi0uMTItLjA0NC0uMTE3LS4wNDMtLjExNi0uMDQ1LS4xMTMtLjA0NS0uMTEyLS4wNDYtLjEwOS0uMDQ3LS4xMDYtLjA0Ny0uMTA1LS4wNDgtLjEwMi0uMDQ5LS4xLS4wNDktLjA5Ny0uMDUtLjA5NS0uMDUtLjA5My0uMDUyLS4wOS0uMDUxLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEyN3ptMC01LjY1NHYuMDExbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMS4wMDUuMDIyLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIyLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDI0LjAxNi4wMjMuMDE3LjAyNC4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI0LjAyMy4wMjUuMDI0LjAyNC4wNTIuMDUuMDU2LjA1LjA2MS4wNS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUyLjA3OS4wNTEuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUyLjEwNS4wNTIuMTEuMDUxLjExNC4wNTEuMTE5LjA1Mi4xMjMuMDUuMTI3LjA1MS4xMzEuMDUuMTM1LjA0OS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0NC4xNzEuMDQyLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjIuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEyLjI0MS0uMDE1LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OC4xMzktLjA1LjEzNi0uMDQ5LjEzMS0uMDUuMTI2LS4wNTEuMTIzLS4wNTEuMTE4LS4wNTEuMTE0LS4wNTIuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1Mi4wODMtLjA1Mi4wNzktLjA1Mi4wNzQtLjA1MS4wNy0uMDUyLjA2NS0uMDUxLjA2LS4wNS4wNTYtLjA1MS4wNTEtLjA0OS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNS4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDIzLjAxMy0uMDI0LjAxMi0uMDIyLjAxLS4wMjMuMDEtLjAyMy4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMS4wMDQtLjAyMi4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMzlsLS4wNzcuMDU0LS4wOC4wNTQtLjA4My4wNTQtLjA4NS4wNTItLjA4Ny4wNTMtLjA5LjA1MS0uMDkzLjA1MS0uMDk1LjA1MS0uMDk3LjA1LS4xLjA0OS0uMTAyLjA0OS0uMTA1LjA0OC0uMTA2LjA0Ny0uMTA5LjA0Ny0uMTExLjA0Ni0uMTE0LjA0NS0uMTE1LjA0NC0uMTE4LjA0NC0uMTIuMDQ0LS4xMjIuMDQyLS4xMjQuMDQyLS4xMjYuMDQxLS4xMjguMDQtLjEzLjAzOS0uMTMyLjAzOS0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNi0uMTM5LjAzNi0uMTQyLjAzNS0uMTQzLjAzMy0uMTQ0LjAzMy0uMTQ3LjAzMy0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOC0uMTU0LjAyOC0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDA5LS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA3LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDctLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMDktLjE3Ni0uMDExLS4xNzYtLjAxMi0uMTc1LS4wMTMtLjE3My0uMDE0LS4xNzItLjAxNS0uMTcxLS4wMTYtLjE3LS4wMTctLjE2OS0uMDE4LS4xNjctLjAxOS0uMTY2LS4wMi0uMTY1LS4wMjEtLjE2My0uMDIyLS4xNjItLjAyMy0uMTYxLS4wMjQtLjE1OS0uMDI1LS4xNTctLjAyNi0uMTU2LS4wMjctLjE1NS0uMDI4LS4xNTMtLjAyOC0uMTUxLS4wMy0uMTUtLjAzLS4xNDgtLjAzMS0uMTQ2LS4wMzMtLjE0NS0uMDMzLS4xNDMtLjAzMy0uMTQxLS4wMzUtLjE0LS4wMzYtLjEzNy0uMDM2LS4xMzYtLjAzNy0uMTM0LS4wMzgtLjEzMi0uMDM5LS4xMy0uMDM5LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUxLS4wODctLjA1My0uMDg1LS4wNTItLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEzOXptMC01LjY2NnYuMDExbC4wMDEuMDIuMDAzLjAyMi4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMS4wMDcuMDIyLjAwOS4wMjMuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjMuMDE2LjAyNC4wMTcuMDI0LjAxOC4wMjMuMDE5LjAyNC4wMjEuMDI1LjAyMi4wMjQuMDIzLjAyNC4wMjQuMDI1LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1MS4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OS4xNDQuMDQ4LjE0Ny4wNDguMTUyLjA0Ny4xNTUuMDQ2LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQyLjE3OC4wNC4xODMuMDQuMTg3LjAzOC4xOS4wMzcuMTk0LjAzNi4xOTcuMDM0LjIwMi4wMzMuMjA0LjAzMi4yMDkuMDMuMjEyLjAyOC4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNy4yNC4wMTQuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA2LjI1Ni4wMDMuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDAzLjI1NC0uMDA2LjI1LS4wMDguMjQ3LS4wMS4yNDQtLjAxMy4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyLjIyNi0uMDIyLjIyNC0uMDI0LjIyLS4wMjUuMjE2LS4wMjcuMjEyLS4wMjkuMjEtLjAzLjIwNS0uMDMyLjIwMi0uMDMzLjE5OC0uMDM1LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDM5LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDUuMTU1LS4wNDcuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNDkuMTMxLS4wNTEuMTI2LS4wNS4xMjMtLjA1MS4xMTgtLjA1Mi4xMTQtLjA1MS4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUyLjA3LS4wNTEuMDY1LS4wNTEuMDYtLjA1MS4wNTYtLjA1LjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMi4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjE1M2wtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1My0uMDg1LjA1My0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ4LS4xMDUuMDQ4LS4xMDYuMDQ4LS4xMDkuMDQ2LS4xMTEuMDQ2LS4xMTQuMDQ2LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDMtLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM0LS4xNDMuMDM0LS4xNDQuMDMzLS4xNDcuMDMyLS4xNDguMDMyLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI0LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIzLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMS0uMTc4LjAxLS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA2LS4xODIuMDA2LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAxLS4xODUuMDAxLS4xODUtLjAwMS0uMTg0LS4wMDEtLjE4NC0uMDAzLS4xODItLjAwNC0uMTgyLS4wMDYtLjE4MS0uMDA2LS4xNzktLjAwNy0uMTc5LS4wMDktLjE3OC0uMDEtLjE3Ni0uMDEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjMtLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjQtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMyLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNC0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQxLS4xMjYtLjA0MS0uMTI0LS4wNDEtLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ4LS4xMDUtLjA0OC0uMTAyLS4wNDgtLjEtLjA1LS4wOTctLjA0OS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUyLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDUzLS4wOC0uMDU0LS4wNzctLjA1NHY0LjE1M3ptOC43NC04LjE3OWwtLjI1Ny4wMDQtLjI1NC4wMDUtLjI1LjAwOC0uMjQ3LjAxMS0uMjQ0LjAxMi0uMjQxLjAxNC0uMjM3LjAxNi0uMjMzLjAxOC0uMjMxLjAyMS0uMjI2LjAyMi0uMjI0LjAyMy0uMjIuMDI2LS4yMTYuMDI3LS4yMTIuMDI4LS4yMS4wMzEtLjIwNS4wMzItLjIwMi4wMzMtLjE5OC4wMzQtLjE5NC4wMzYtLjE5MS4wMzgtLjE4Ny4wMzgtLjE4My4wNC0uMTc5LjA0MS0uMTc1LjA0Mi0uMTcyLjA0My0uMTY4LjA0My0uMTYzLjA0NS0uMTYuMDQ2LS4xNTUuMDQ2LS4xNTIuMDQ4LS4xNDguMDQ4LS4xNDMuMDQ4LS4xMzkuMDQ5LS4xMzYuMDUtLjEzMS4wNS0uMTI2LjA1MS0uMTIzLjA1MS0uMTE4LjA1MS0uMTE0LjA1Mi0uMTEuMDUyLS4xMDYuMDUyLS4xMDEuMDUyLS4wOTYuMDUyLS4wOTIuMDUyLS4wODguMDUyLS4wODMuMDUyLS4wNzkuMDUyLS4wNzQuMDUxLS4wNy4wNTItLjA2NS4wNTEtLjA2LjA1LS4wNTYuMDUtLjA1MS4wNS0uMDIzLjAyNS0uMDIzLjAyNC0uMDIxLjAyNC0uMDIuMDI1LS4wMTkuMDI0LS4wMTguMDI0LS4wMTcuMDIzLS4wMTUuMDI0LS4wMTQuMDIzLS4wMTMuMDIzLS4wMTIuMDIzLS4wMS4wMjMtLjAxLjAyMi0uMDA4LjAyMi0uMDA2LjAyMy0uMDA2LjAyMS0uMDA0LjAyMi0uMDA0LjAyMS0uMDAxLjAyMS0uMDAxLjAyMS4wMDEuMDIxLjAwMS4wMjEuMDA0LjAyMS4wMDQuMDIyLjAwNi4wMjEuMDA2LjAyMy4wMDguMDIyLjAxLjAyMi4wMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNC4wMjMuMDE1LjAyNC4wMTcuMDIzLjAxOC4wMjQuMDE5LjAyNC4wMi4wMjUuMDIxLjAyNC4wMjMuMDI0LjAyMy4wMjUuMDUxLjA1LjA1Ni4wNS4wNi4wNS4wNjUuMDUxLjA3LjA1Mi4wNzQuMDUxLjA3OS4wNTIuMDgzLjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk2LjA1Mi4xMDEuMDUyLjEwNi4wNTIuMTEuMDUyLjExNC4wNTIuMTE4LjA1MS4xMjMuMDUxLjEyNi4wNTEuMTMxLjA1LjEzNi4wNS4xMzkuMDQ5LjE0My4wNDguMTQ4LjA0OC4xNTIuMDQ4LjE1NS4wNDYuMTYuMDQ2LjE2My4wNDUuMTY4LjA0My4xNzIuMDQzLjE3NS4wNDIuMTc5LjA0MS4xODMuMDQuMTg3LjAzOC4xOTEuMDM4LjE5NC4wMzYuMTk4LjAzNC4yMDIuMDMzLjIwNS4wMzIuMjEuMDMxLjIxMi4wMjguMjE2LjAyNy4yMi4wMjYuMjI0LjAyMy4yMjYuMDIyLjIzMS4wMjEuMjMzLjAxOC4yMzcuMDE2LjI0MS4wMTQuMjQ0LjAxMi4yNDcuMDExLjI1LjAwOC4yNTQuMDA1LjI1Ny4wMDQuMjYuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMi4yMjQtLjAyMy4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzguMTg3LS4wMzguMTgzLS4wNC4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0My4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ4LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNC4wMi0uMDI1LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDIzLjAxNS0uMDI0LjAxNC0uMDIzLjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMy4wMDYtLjAyMS4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwMS0uMDIxLS4wMDQtLjAyMS0uMDA0LS4wMjItLjAwNi0uMDIxLS4wMDYtLjAyMy0uMDA4LS4wMjItLjAxLS4wMjItLjAxLS4wMjMtLjAxMi0uMDIzLS4wMTMtLjAyMy0uMDE0LS4wMjMtLjAxNS0uMDI0LS4wMTctLjAyMy0uMDE4LS4wMjQtLjAxOS0uMDI0LS4wMi0uMDI1LS4wMjEtLjAyNC0uMDIzLS4wMjQtLjAyMy0uMDI1LS4wNTEtLjA1LS4wNTYtLjA1LS4wNi0uMDUtLjA2NS0uMDUxLS4wNy0uMDUyLS4wNzQtLjA1MS0uMDc5LS4wNTItLjA4My0uMDUyLS4wODgtLjA1Mi0uMDkyLS4wNTItLjA5Ni0uMDUyLS4xMDEtLjA1Mi0uMTA2LS4wNTItLjExLS4wNTItLjExNC0uMDUyLS4xMTgtLjA1MS0uMTIzLS4wNTEtLjEyNi0uMDUxLS4xMzEtLjA1LS4xMzYtLjA1LS4xMzktLjA0OS0uMTQzLS4wNDgtLjE0OC0uMDQ4LS4xNTItLjA0OC0uMTU1LS4wNDYtLjE2LS4wNDYtLjE2My0uMDQ1LS4xNjgtLjA0My0uMTcyLS4wNDMtLjE3NS0uMDQyLS4xNzktLjA0MS0uMTgzLS4wNC0uMTg3LS4wMzgtLjE5MS0uMDM4LS4xOTQtLjAzNi0uMTk4LS4wMzQtLjIwMi0uMDMzLS4yMDUtLjAzMi0uMjEtLjAzMS0uMjEyLS4wMjgtLjIxNi0uMDI3LS4yMi0uMDI2LS4yMjQtLjAyMy0uMjI2LS4wMjItLjIzMS0uMDIxLS4yMzMtLjAxOC0uMjM3LS4wMTYtLjI0MS0uMDE0LS4yNDQtLjAxMi0uMjQ3LS4wMTEtLjI1LS4wMDgtLjI1NC0uMDA1LS4yNTctLjAwNC0uMjYtLjAwMS0uMjYuMDAxeiIpfSxTVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjb21wdXRlciIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMiAydjEzaDIwdi0xM2gtMjB6bTE4IDExaC0xNnYtOWgxNnY5em0tMTAuMjI4IDZsLjQ2Ni0xaDMuNTI0bC40NjcgMWgtNC40NTd6bTE0LjIyOCAzaC0yNGwyLTZoMi4xMDRsLTEuMzMgNGgxOC40NWwtMS4yOTctNGgyLjA3M2wyIDZ6bS01LTEwaC0xNHYtN2gxNHY3eiIpfSxBVD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjbG9jayIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem01Ljg0OCAxMi40NTljLjIwMi4wMzguMjAyLjMzMy4wMDEuMzcyLTEuOTA3LjM2MS02LjA0NSAxLjExMS02LjU0NyAxLjExMS0uNzE5IDAtMS4zMDEtLjU4Mi0xLjMwMS0xLjMwMSAwLS41MTIuNzctNS40NDcgMS4xMjUtNy40NDUuMDM0LS4xOTIuMzEyLS4xODEuMzQzLjAxNGwuOTg1IDYuMjM4IDUuMzk0IDEuMDExeiIpfSxNVD1oVCxOVD1mVDtPbS5zYW5pdGl6ZVVybDtOay5wYXJzZXIueXk9Sms7dmFyIERUPXt9LE9UPXtkYXRhOntzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdmVydGljYWxQb3M6MCxzZXF1ZW5jZUl0ZW1zOltdLGFjdGl2YXRpb25zOltdLG1vZGVsczp7Z2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsMD09PXRoaXMuYWN0b3JzLmxlbmd0aD9bMF06dGhpcy5hY3RvcnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR8fDB9KSkpKygwPT09dGhpcy5sb29wcy5sZW5ndGg/MDp0aGlzLmxvb3BzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fHwwfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSkpKSsoMD09PXRoaXMubWVzc2FnZXMubGVuZ3RoPzA6dGhpcy5tZXNzYWdlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodHx8MH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKSkrKDA9PT10aGlzLm5vdGVzLmxlbmd0aD8wOnRoaXMubm90ZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR8fDB9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSkpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuYWN0b3JzPVtdLHRoaXMubG9vcHM9W10sdGhpcy5tZXNzYWdlcz1bXSx0aGlzLm5vdGVzPVtdfSxhZGRBY3RvcjpmdW5jdGlvbih0KXt0aGlzLmFjdG9ycy5wdXNoKHQpfSxhZGRMb29wOmZ1bmN0aW9uKHQpe3RoaXMubG9vcHMucHVzaCh0KX0sYWRkTWVzc2FnZTpmdW5jdGlvbih0KXt0aGlzLm1lc3NhZ2VzLnB1c2godCl9LGFkZE5vdGU6ZnVuY3Rpb24odCl7dGhpcy5ub3Rlcy5wdXNoKHQpfSxsYXN0QWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RvcnNbdGhpcy5hY3RvcnMubGVuZ3RoLTFdfSxsYXN0TG9vcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvb3BzW3RoaXMubG9vcHMubGVuZ3RoLTFdfSxsYXN0TWVzc2FnZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VzW3RoaXMubWVzc2FnZXMubGVuZ3RoLTFdfSxsYXN0Tm90ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vdGVzW3RoaXMubm90ZXMubGVuZ3RoLTFdfSxhY3RvcnM6W10sbG9vcHM6W10sbWVzc2FnZXM6W10sbm90ZXM6W119LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlSXRlbXM9W10sdGhpcy5hY3RpdmF0aW9ucz1bXSx0aGlzLm1vZGVscy5jbGVhcigpLHRoaXMuZGF0YT17c3RhcnR4OnZvaWQgMCxzdG9weDp2b2lkIDAsc3RhcnR5OnZvaWQgMCxzdG9weTp2b2lkIDB9LHRoaXMudmVydGljYWxQb3M9MCxQVChOay5wYXJzZXIueXkuZ2V0Q29uZmlnKCkpfSx1cGRhdGVWYWw6ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09dFtlXT90W2VdPW46dFtlXT1yKG4sdFtlXSl9LHVwZGF0ZUJvdW5kczpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT10aGlzLGE9MDtmdW5jdGlvbiBvKG8pe3JldHVybiBmdW5jdGlvbihzKXthKys7dmFyIGM9aS5zZXF1ZW5jZUl0ZW1zLmxlbmd0aC1hKzE7aS51cGRhdGVWYWwocywic3RhcnR5IixlLWMqRFQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbChzLCJzdG9weSIscitjKkRULmJveE1hcmdpbixNYXRoLm1heCksaS51cGRhdGVWYWwoT1QuZGF0YSwic3RhcnR4Iix0LWMqRFQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbChPVC5kYXRhLCJzdG9weCIsbitjKkRULmJveE1hcmdpbixNYXRoLm1heCksImFjdGl2YXRpb24iIT09byYmKGkudXBkYXRlVmFsKHMsInN0YXJ0eCIsdC1jKkRULmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwocywic3RvcHgiLG4rYypEVC5ib3hNYXJnaW4sTWF0aC5tYXgpLGkudXBkYXRlVmFsKE9ULmRhdGEsInN0YXJ0eSIsZS1jKkRULmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwoT1QuZGF0YSwic3RvcHkiLHIrYypEVC5ib3hNYXJnaW4sTWF0aC5tYXgpKX19dGhpcy5zZXF1ZW5jZUl0ZW1zLmZvckVhY2gobygpKSx0aGlzLmFjdGl2YXRpb25zLmZvckVhY2gobygiYWN0aXZhdGlvbiIpKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPU1hdGgubWluKHQsbiksYT1NYXRoLm1heCh0LG4pLG89TWF0aC5taW4oZSxyKSxzPU1hdGgubWF4KGUscik7dGhpcy51cGRhdGVWYWwoT1QuZGF0YSwic3RhcnR4IixpLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbChPVC5kYXRhLCJzdGFydHkiLG8sTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKE9ULmRhdGEsInN0b3B4IixhLE1hdGgubWF4KSx0aGlzLnVwZGF0ZVZhbChPVC5kYXRhLCJzdG9weSIscyxNYXRoLm1heCksdGhpcy51cGRhdGVCb3VuZHMoaSxvLGEscyl9LG5ld0FjdGl2YXRpb246ZnVuY3Rpb24odCxlLG4pe3ZhciByPW5bdC5mcm9tLmFjdG9yXSxpPWpUKHQuZnJvbS5hY3RvcikubGVuZ3RofHwwLGE9ci54K3Iud2lkdGgvMisoaS0xKSpEVC5hY3RpdmF0aW9uV2lkdGgvMjt0aGlzLmFjdGl2YXRpb25zLnB1c2goe3N0YXJ0eDphLHN0YXJ0eTp0aGlzLnZlcnRpY2FsUG9zKzIsc3RvcHg6YStEVC5hY3RpdmF0aW9uV2lkdGgsc3RvcHk6dm9pZCAwLGFjdG9yOnQuZnJvbS5hY3RvcixhbmNob3JlZDp2VChlKX0pfSxlbmRBY3RpdmF0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWN0aXZhdGlvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hY3Rvcn0pKS5sYXN0SW5kZXhPZih0LmZyb20uYWN0b3IpO3JldHVybiB0aGlzLmFjdGl2YXRpb25zLnNwbGljZShlLDEpWzBdfSxjcmVhdGVMb29wOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnttZXNzYWdlOnZvaWQgMCx3cmFwOiExLHdpZHRoOnZvaWQgMH0sZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm57c3RhcnR4OnZvaWQgMCxzdGFydHk6dGhpcy52ZXJ0aWNhbFBvcyxzdG9weDp2b2lkIDAsc3RvcHk6dm9pZCAwLHRpdGxlOnQubWVzc2FnZSx3cmFwOnQud3JhcCx3aWR0aDp0LndpZHRoLGhlaWdodDowLGZpbGw6ZX19LG5ld0xvb3A6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e21lc3NhZ2U6dm9pZCAwLHdyYXA6ITEsd2lkdGg6dm9pZCAwfSxlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3RoaXMuc2VxdWVuY2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTG9vcCh0LGUpKX0sZW5kTG9vcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlcXVlbmNlSXRlbXMucG9wKCl9LGFkZFNlY3Rpb25Ub0xvb3A6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zZXF1ZW5jZUl0ZW1zLnBvcCgpO2Uuc2VjdGlvbnM9ZS5zZWN0aW9uc3x8W10sZS5zZWN0aW9uVGl0bGVzPWUuc2VjdGlvblRpdGxlc3x8W10sZS5zZWN0aW9ucy5wdXNoKHt5Ok9ULmdldFZlcnRpY2FsUG9zKCksaGVpZ2h0OjB9KSxlLnNlY3Rpb25UaXRsZXMucHVzaCh0KSx0aGlzLnNlcXVlbmNlSXRlbXMucHVzaChlKX0sYnVtcFZlcnRpY2FsUG9zOmZ1bmN0aW9uKHQpe3RoaXMudmVydGljYWxQb3M9dGhpcy52ZXJ0aWNhbFBvcyt0LHRoaXMuZGF0YS5zdG9weT10aGlzLnZlcnRpY2FsUG9zfSxnZXRWZXJ0aWNhbFBvczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZlcnRpY2FsUG9zfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm57Ym91bmRzOnRoaXMuZGF0YSxtb2RlbHM6dGhpcy5tb2RlbHN9fX0sQlQ9ZnVuY3Rpb24odCl7cmV0dXJue2ZvbnRGYW1pbHk6dC5tZXNzYWdlRm9udEZhbWlseSxmb250U2l6ZTp0Lm1lc3NhZ2VGb250U2l6ZSxmb250V2VpZ2h0OnQubWVzc2FnZUZvbnRXZWlnaHR9fSxMVD1mdW5jdGlvbih0KXtyZXR1cm57Zm9udEZhbWlseTp0Lm5vdGVGb250RmFtaWx5LGZvbnRTaXplOnQubm90ZUZvbnRTaXplLGZvbnRXZWlnaHQ6dC5ub3RlRm9udFdlaWdodH19LElUPWZ1bmN0aW9uKHQpe3JldHVybntmb250RmFtaWx5OnQuYWN0b3JGb250RmFtaWx5LGZvbnRTaXplOnQuYWN0b3JGb250U2l6ZSxmb250V2VpZ2h0OnQuYWN0b3JGb250V2VpZ2h0fX0sUlQ9ZnVuY3Rpb24odCxlLG4scil7Zm9yKHZhciBpPTAsYT0wLG89MCxzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBjPWVbbltzXV07Yy53aWR0aD1jLndpZHRofHxEVC53aWR0aCxjLmhlaWdodD1NYXRoLm1heChjLmhlaWdodHx8RFQuaGVpZ2h0LERULmhlaWdodCksYy5tYXJnaW49Yy5tYXJnaW58fERULmFjdG9yTWFyZ2luLGMueD1pK2EsYy55PXI7dmFyIHU9Z1QodCxjLERUKTtvPU1hdGgubWF4KG8sdSksT1QuaW5zZXJ0KGMueCxyLGMueCtjLndpZHRoLGMuaGVpZ2h0KSxpKz1jLndpZHRoLGErPWMubWFyZ2luLE9ULm1vZGVscy5hZGRBY3RvcihjKX1PVC5idW1wVmVydGljYWxQb3Mobyl9LEZUPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9MCxpPTAsYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgbz1lW25bYV1dLHM9VVQobyksYz1tVCh0LG8scyxEVCxEVC5mb3JjZU1lbnVzKTtjLmhlaWdodD5yJiYocj1jLmhlaWdodCksYy53aWR0aCtvLng+aSYmKGk9Yy53aWR0aCtvLngpfXJldHVybnttYXhIZWlnaHQ6cixtYXhXaWR0aDppfX0sUFQ9ZnVuY3Rpb24odCl7THYoRFQsdCksdC5mb250RmFtaWx5JiYoRFQuYWN0b3JGb250RmFtaWx5PURULm5vdGVGb250RmFtaWx5PURULm1lc3NhZ2VGb250RmFtaWx5PXQuZm9udEZhbWlseSksdC5mb250U2l6ZSYmKERULmFjdG9yRm9udFNpemU9RFQubm90ZUZvbnRTaXplPURULm1lc3NhZ2VGb250U2l6ZT10LmZvbnRTaXplKSx0LmZvbnRXZWlnaHQmJihEVC5hY3RvckZvbnRXZWlnaHQ9RFQubm90ZUZvbnRXZWlnaHQ9RFQubWVzc2FnZUZvbnRXZWlnaHQ9dC5mb250V2VpZ2h0KX0salQ9ZnVuY3Rpb24odCl7cmV0dXJuIE9ULmFjdGl2YXRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYWN0b3I9PT10fSkpfSxZVD1mdW5jdGlvbih0LGUpe3ZhciBuPWVbdF0scj1qVCh0KTtyZXR1cm5bci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZS5zdGFydHgpfSksbi54K24ud2lkdGgvMiksci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5zdG9weCl9KSxuLngrbi53aWR0aC8yKV19O2Z1bmN0aW9uIHpUKHQsZSxuLHIsaSl7T1QuYnVtcFZlcnRpY2FsUG9zKG4pO3ZhciBhPXI7aWYoZS5pZCYmZS5tZXNzYWdlJiZ0W2UuaWRdKXt2YXIgcz10W2UuaWRdLndpZHRoLGM9QlQoRFQpO2UubWVzc2FnZT1Idi53cmFwTGFiZWwoIlsiLmNvbmNhdChlLm1lc3NhZ2UsIl0iKSxzLTIqRFQud3JhcFBhZGRpbmcsYyksZS53aWR0aD1zLGUud3JhcD0hMDt2YXIgdT1Idi5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhlLm1lc3NhZ2UsYyksbD1NYXRoLm1heCh1LmhlaWdodCxEVC5sYWJlbEJveEhlaWdodCk7YT1yK2wsby5kZWJ1ZygiIi5jb25jYXQobCwiIC0gIikuY29uY2F0KGUubWVzc2FnZSkpfWkoZSksT1QuYnVtcFZlcnRpY2FsUG9zKGEpfXZhciBVVD1mdW5jdGlvbih0KXt2YXIgZT0wLG49SVQoRFQpO2Zvcih2YXIgciBpbiB0LmxpbmtzKXt2YXIgaT1Idi5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhyLG4pLndpZHRoKzIqRFQud3JhcFBhZGRpbmcrMipEVC5ib3hNYXJnaW47ZTxpJiYoZT1pKX1yZXR1cm4gZX07Y29uc3QgcVQ9e2JvdW5kczpPVCxkcmF3QWN0b3JzOlJULGRyYXdBY3RvcnNQb3B1cDpGVCxzZXRDb25mOlBULGRyYXc6ZnVuY3Rpb24odCxlKXtEVD1KdigpLnNlcXVlbmNlLE5rLnBhcnNlci55eS5jbGVhcigpLE5rLnBhcnNlci55eS5zZXRXcmFwKERULndyYXApLE5rLnBhcnNlci5wYXJzZSh0KyJcbiIpLE9ULmluaXQoKSxvLmRlYnVnKCJDOiIuY29uY2F0KEpTT04uc3RyaW5naWZ5KERULG51bGwsMikpKTt2YXIgbj1hdSgnW2lkPSInLmNvbmNhdChlLCciXScpKSxyPU5rLnBhcnNlci55eS5nZXRBY3RvcnMoKSxpPU5rLnBhcnNlci55eS5nZXRBY3RvcktleXMoKSxhPU5rLnBhcnNlci55eS5nZXRNZXNzYWdlcygpLHM9TmsucGFyc2VyLnl5LmdldFRpdGxlKCksYz1mdW5jdGlvbih0LGUpe3ZhciBuPXt9O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHRbZS50b10mJnRbZS5mcm9tXSl7dmFyIHI9dFtlLnRvXTtpZihlLnBsYWNlbWVudD09PU5rLnBhcnNlci55eS5QTEFDRU1FTlQuTEVGVE9GJiYhci5wcmV2QWN0b3IpcmV0dXJuO2lmKGUucGxhY2VtZW50PT09TmsucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GJiYhci5uZXh0QWN0b3IpcmV0dXJuO3ZhciBpPXZvaWQgMCE9PWUucGxhY2VtZW50LGE9IWksbz1pP0xUKERUKTpCVChEVCkscz1lLndyYXA/SHYud3JhcExhYmVsKGUubWVzc2FnZSxEVC53aWR0aC0yKkRULndyYXBQYWRkaW5nLG8pOmUubWVzc2FnZSxjPUh2LmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHMsbykud2lkdGgrMipEVC53cmFwUGFkZGluZzthJiZlLmZyb209PT1yLm5leHRBY3Rvcj9uW2UudG9dPU1hdGgubWF4KG5bZS50b118fDAsYyk6YSYmZS5mcm9tPT09ci5wcmV2QWN0b3I/bltlLmZyb21dPU1hdGgubWF4KG5bZS5mcm9tXXx8MCxjKTphJiZlLmZyb209PT1lLnRvPyhuW2UuZnJvbV09TWF0aC5tYXgobltlLmZyb21dfHwwLGMvMiksbltlLnRvXT1NYXRoLm1heChuW2UudG9dfHwwLGMvMikpOmUucGxhY2VtZW50PT09TmsucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GP25bZS5mcm9tXT1NYXRoLm1heChuW2UuZnJvbV18fDAsYyk6ZS5wbGFjZW1lbnQ9PT1Oay5wYXJzZXIueXkuUExBQ0VNRU5ULkxFRlRPRj9uW3IucHJldkFjdG9yXT1NYXRoLm1heChuW3IucHJldkFjdG9yXXx8MCxjKTplLnBsYWNlbWVudD09PU5rLnBhcnNlci55eS5QTEFDRU1FTlQuT1ZFUiYmKHIucHJldkFjdG9yJiYobltyLnByZXZBY3Rvcl09TWF0aC5tYXgobltyLnByZXZBY3Rvcl18fDAsYy8yKSksci5uZXh0QWN0b3ImJihuW2UuZnJvbV09TWF0aC5tYXgobltlLmZyb21dfHwwLGMvMikpKX19KSksby5kZWJ1ZygibWF4TWVzc2FnZVdpZHRoUGVyQWN0b3I6IixuKSxufShyLGEpO0RULmhlaWdodD1mdW5jdGlvbih0LGUpe3ZhciBuPTA7Zm9yKHZhciByIGluIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXRbZV07ci53cmFwJiYoci5kZXNjcmlwdGlvbj1Idi53cmFwTGFiZWwoci5kZXNjcmlwdGlvbixEVC53aWR0aC0yKkRULndyYXBQYWRkaW5nLElUKERUKSkpO3ZhciBpPUh2LmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHIuZGVzY3JpcHRpb24sSVQoRFQpKTtyLndpZHRoPXIud3JhcD9EVC53aWR0aDpNYXRoLm1heChEVC53aWR0aCxpLndpZHRoKzIqRFQud3JhcFBhZGRpbmcpLHIuaGVpZ2h0PXIud3JhcD9NYXRoLm1heChpLmhlaWdodCxEVC5oZWlnaHQpOkRULmhlaWdodCxuPU1hdGgubWF4KG4sci5oZWlnaHQpfSkpLGUpe3ZhciBpPXRbcl07aWYoaSl7dmFyIGE9dFtpLm5leHRBY3Rvcl07aWYoYSl7dmFyIG89ZVtyXStEVC5hY3Rvck1hcmdpbi1pLndpZHRoLzItYS53aWR0aC8yO2kubWFyZ2luPU1hdGgubWF4KG8sRFQuYWN0b3JNYXJnaW4pfX19cmV0dXJuIE1hdGgubWF4KG4sRFQuaGVpZ2h0KX0ocixjKSxTVChuKSxDVChuKSxBVChuKSxSVChuLHIsaSwwKTt2YXIgdT1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhPXt9LHM9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7c3dpdGNoKHQuaWQ9SHYucmFuZG9tKHtsZW5ndGg6MTB9KSx0LnR5cGUpe2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfU1RBUlQ6Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUxUX1NUQVJUOmNhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLk9QVF9TVEFSVDpjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfU1RBUlQ6cy5wdXNoKHtpZDp0LmlkLG1zZzp0Lm1lc3NhZ2UsZnJvbTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUix0bzpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUix3aWR0aDowfSk7YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VMU0U6Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuUEFSX0FORDp0Lm1lc3NhZ2UmJihuPXMucG9wKCksYVtuLmlkXT1uLGFbdC5pZF09bixzLnB1c2gobikpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfRU5EOmNhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLkFMVF9FTkQ6Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuT1BUX0VORDpjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfRU5EOm49cy5wb3AoKSxhW24uaWRdPW47YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUNUSVZFX1NUQVJUOnZhciBjPWVbdC5mcm9tP3QuZnJvbS5hY3Rvcjp0LnRvLmFjdG9yXSx1PWpUKHQuZnJvbT90LmZyb20uYWN0b3I6dC50by5hY3RvcikubGVuZ3RoLGw9Yy54K2Mud2lkdGgvMisodS0xKSpEVC5hY3RpdmF0aW9uV2lkdGgvMixoPXtzdGFydHg6bCxzdG9weDpsK0RULmFjdGl2YXRpb25XaWR0aCxhY3Rvcjp0LmZyb20uYWN0b3IsZW5hYmxlZDohMH07T1QuYWN0aXZhdGlvbnMucHVzaChoKTticmVhaztjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5BQ1RJVkVfRU5EOnZhciBmPU9ULmFjdGl2YXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWN0b3J9KSkubGFzdEluZGV4T2YodC5mcm9tLmFjdG9yKTtkZWxldGUgT1QuYWN0aXZhdGlvbnMuc3BsaWNlKGYsMSlbMF19dm9pZCAwIT09dC5wbGFjZW1lbnQ/KHI9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW3QuZnJvbV0ueCxyPWVbdC50b10ueCxpPXQud3JhcCYmdC5tZXNzYWdlLGE9SHYuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoaT9Idi53cmFwTGFiZWwodC5tZXNzYWdlLERULndpZHRoLExUKERUKSk6dC5tZXNzYWdlLExUKERUKSkscz17d2lkdGg6aT9EVC53aWR0aDpNYXRoLm1heChEVC53aWR0aCxhLndpZHRoKzIqRFQubm90ZU1hcmdpbiksaGVpZ2h0OjAsc3RhcnR4OmVbdC5mcm9tXS54LHN0b3B4OjAsc3RhcnR5OjAsc3RvcHk6MCxtZXNzYWdlOnQubWVzc2FnZX07cmV0dXJuIHQucGxhY2VtZW50PT09TmsucGFyc2VyLnl5LlBMQUNFTUVOVC5SSUdIVE9GPyhzLndpZHRoPWk/TWF0aC5tYXgoRFQud2lkdGgsYS53aWR0aCk6TWF0aC5tYXgoZVt0LmZyb21dLndpZHRoLzIrZVt0LnRvXS53aWR0aC8yLGEud2lkdGgrMipEVC5ub3RlTWFyZ2luKSxzLnN0YXJ0eD1uKyhlW3QuZnJvbV0ud2lkdGgrRFQuYWN0b3JNYXJnaW4pLzIpOnQucGxhY2VtZW50PT09TmsucGFyc2VyLnl5LlBMQUNFTUVOVC5MRUZUT0Y/KHMud2lkdGg9aT9NYXRoLm1heChEVC53aWR0aCxhLndpZHRoKzIqRFQubm90ZU1hcmdpbik6TWF0aC5tYXgoZVt0LmZyb21dLndpZHRoLzIrZVt0LnRvXS53aWR0aC8yLGEud2lkdGgrMipEVC5ub3RlTWFyZ2luKSxzLnN0YXJ0eD1uLXMud2lkdGgrKGVbdC5mcm9tXS53aWR0aC1EVC5hY3Rvck1hcmdpbikvMik6dC50bz09PXQuZnJvbT8oYT1Idi5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhpP0h2LndyYXBMYWJlbCh0Lm1lc3NhZ2UsTWF0aC5tYXgoRFQud2lkdGgsZVt0LmZyb21dLndpZHRoKSxMVChEVCkpOnQubWVzc2FnZSxMVChEVCkpLHMud2lkdGg9aT9NYXRoLm1heChEVC53aWR0aCxlW3QuZnJvbV0ud2lkdGgpOk1hdGgubWF4KGVbdC5mcm9tXS53aWR0aCxEVC53aWR0aCxhLndpZHRoKzIqRFQubm90ZU1hcmdpbikscy5zdGFydHg9bisoZVt0LmZyb21dLndpZHRoLXMud2lkdGgpLzIpOihzLndpZHRoPU1hdGguYWJzKG4rZVt0LmZyb21dLndpZHRoLzItKHIrZVt0LnRvXS53aWR0aC8yKSkrRFQuYWN0b3JNYXJnaW4scy5zdGFydHg9bjxyP24rZVt0LmZyb21dLndpZHRoLzItRFQuYWN0b3JNYXJnaW4vMjpyK2VbdC50b10ud2lkdGgvMi1EVC5hY3Rvck1hcmdpbi8yKSxpJiYocy5tZXNzYWdlPUh2LndyYXBMYWJlbCh0Lm1lc3NhZ2Uscy53aWR0aC0yKkRULndyYXBQYWRkaW5nLExUKERUKSkpLG8uZGVidWcoIk5NOlsiLmNvbmNhdChzLnN0YXJ0eCwiLCIpLmNvbmNhdChzLnN0b3B4LCIsIikuY29uY2F0KHMuc3RhcnR5LCIsIikuY29uY2F0KHMuc3RvcHksIjoiKS5jb25jYXQocy53aWR0aCwiLCIpLmNvbmNhdChzLmhlaWdodCwiPSIpLmNvbmNhdCh0Lm1lc3NhZ2UsIl0iKSksc30odCxlKSx0Lm5vdGVNb2RlbD1yLHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7KG49dCkuZnJvbT1NYXRoLm1pbihuLmZyb20sci5zdGFydHgpLG4udG89TWF0aC5tYXgobi50byxyLnN0YXJ0eCtyLndpZHRoKSxuLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsTWF0aC5hYnMobi5mcm9tLW4udG8pKS1EVC5sYWJlbEJveFdpZHRofSkpKTooaT1mdW5jdGlvbih0LGUpe3ZhciBuPSExO2lmKFtOay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfT1BFTixOay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEX09QRU4sTmsucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElELE5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURUQsTmsucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX0NST1NTLE5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfQ1JPU1MsTmsucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX1BPSU5ULE5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlRdLmluY2x1ZGVzKHQudHlwZSkmJihuPSEwKSwhbilyZXR1cm57fTt2YXIgcj1ZVCh0LmZyb20sZSksaT1ZVCh0LnRvLGUpLGE9clswXTw9aVswXT8xOjAsbz1yWzBdPGlbMF0/MDoxLHM9ci5jb25jYXQoaSksYz1NYXRoLmFicyhpW29dLXJbYV0pO3Qud3JhcCYmdC5tZXNzYWdlJiYodC5tZXNzYWdlPUh2LndyYXBMYWJlbCh0Lm1lc3NhZ2UsTWF0aC5tYXgoYysyKkRULndyYXBQYWRkaW5nLERULndpZHRoKSxCVChEVCkpKTt2YXIgdT1Idi5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyh0Lm1lc3NhZ2UsQlQoRFQpKTtyZXR1cm57d2lkdGg6TWF0aC5tYXgodC53cmFwPzA6dS53aWR0aCsyKkRULndyYXBQYWRkaW5nLGMrMipEVC53cmFwUGFkZGluZyxEVC53aWR0aCksaGVpZ2h0OjAsc3RhcnR4OnJbYV0sc3RvcHg6aVtvXSxzdGFydHk6MCxzdG9weTowLG1lc3NhZ2U6dC5tZXNzYWdlLHR5cGU6dC50eXBlLHdyYXA6dC53cmFwLGZyb21Cb3VuZHM6TWF0aC5taW4uYXBwbHkobnVsbCxzKSx0b0JvdW5kczpNYXRoLm1heC5hcHBseShudWxsLHMpfX0odCxlKSx0Lm1zZ01vZGVsPWksaS5zdGFydHgmJmkuc3RvcHgmJnMubGVuZ3RoPjAmJnMuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYobj1yLGkuc3RhcnR4PT09aS5zdG9weCl7dmFyIGE9ZVt0LmZyb21dLG89ZVt0LnRvXTtuLmZyb209TWF0aC5taW4oYS54LWkud2lkdGgvMixhLngtYS53aWR0aC8yLG4uZnJvbSksbi50bz1NYXRoLm1heChvLngraS53aWR0aC8yLG8ueCthLndpZHRoLzIsbi50byksbi53aWR0aD1NYXRoLm1heChuLndpZHRoLE1hdGguYWJzKG4udG8tbi5mcm9tKSktRFQubGFiZWxCb3hXaWR0aH1lbHNlIG4uZnJvbT1NYXRoLm1pbihpLnN0YXJ0eCxuLmZyb20pLG4udG89TWF0aC5tYXgoaS5zdG9weCxuLnRvKSxuLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsaS53aWR0aCktRFQubGFiZWxCb3hXaWR0aH0pKSl9KSksT1QuYWN0aXZhdGlvbnM9W10sby5kZWJ1ZygiTG9vcCB0eXBlIHdpZHRoczoiLGEpLGF9KGEscik7d1QobiksRVQobiksa1QobiksVFQobik7dmFyIGw9MTthLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlLGksYTtzd2l0Y2godC50eXBlKXtjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5OT1RFOmk9dC5ub3RlTW9kZWwsZnVuY3Rpb24odCxlKXtPVC5idW1wVmVydGljYWxQb3MoRFQuYm94TWFyZ2luKSxlLmhlaWdodD1EVC5ib3hNYXJnaW4sZS5zdGFydHk9T1QuZ2V0VmVydGljYWxQb3MoKTt2YXIgbj1OVCgpO24ueD1lLnN0YXJ0eCxuLnk9ZS5zdGFydHksbi53aWR0aD1lLndpZHRofHxEVC53aWR0aCxuLmNsYXNzPSJub3RlIjt2YXIgcj10LmFwcGVuZCgiZyIpLGk9eVQocixuKSxhPU1UKCk7YS54PWUuc3RhcnR4LGEueT1lLnN0YXJ0eSxhLndpZHRoPW4ud2lkdGgsYS5keT0iMWVtIixhLnRleHQ9ZS5tZXNzYWdlLGEuY2xhc3M9Im5vdGVUZXh0IixhLmZvbnRGYW1pbHk9RFQubm90ZUZvbnRGYW1pbHksYS5mb250U2l6ZT1EVC5ub3RlRm9udFNpemUsYS5mb250V2VpZ2h0PURULm5vdGVGb250V2VpZ2h0LGEuYW5jaG9yPURULm5vdGVBbGlnbixhLnRleHRNYXJnaW49RFQubm90ZU1hcmdpbixhLnZhbGlnbj1EVC5ub3RlQWxpZ247dmFyIG89c1QocixhKSxzPU1hdGgucm91bmQoby5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybih0Ll9ncm91cHN8fHQpWzBdWzBdLmdldEJCb3goKS5oZWlnaHR9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSkpO2kuYXR0cigiaGVpZ2h0IixzKzIqRFQubm90ZU1hcmdpbiksZS5oZWlnaHQrPXMrMipEVC5ub3RlTWFyZ2luLE9ULmJ1bXBWZXJ0aWNhbFBvcyhzKzIqRFQubm90ZU1hcmdpbiksZS5zdG9weT1lLnN0YXJ0eStzKzIqRFQubm90ZU1hcmdpbixlLnN0b3B4PWUuc3RhcnR4K24ud2lkdGgsT1QuaW5zZXJ0KGUuc3RhcnR4LGUuc3RhcnR5LGUuc3RvcHgsZS5zdG9weSksT1QubW9kZWxzLmFkZE5vdGUoZSl9KG4saSk7YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUNUSVZFX1NUQVJUOk9ULm5ld0FjdGl2YXRpb24odCxuLHIpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLkFDVElWRV9FTkQ6IWZ1bmN0aW9uKHQsZSl7dmFyIHI9T1QuZW5kQWN0aXZhdGlvbih0KTtyLnN0YXJ0eSsxOD5lJiYoci5zdGFydHk9ZS02LGUrPTEyKSxiVChuLHIsZSxEVCxqVCh0LmZyb20uYWN0b3IpLmxlbmd0aCksT1QuaW5zZXJ0KHIuc3RhcnR4LGUtMTAsci5zdG9weCxlKX0odCxPVC5nZXRWZXJ0aWNhbFBvcygpKTticmVhaztjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5MT09QX1NUQVJUOnpUKHUsdCxEVC5ib3hNYXJnaW4sRFQuYm94TWFyZ2luK0RULmJveFRleHRNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBPVC5uZXdMb29wKHQpfSkpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLkxPT1BfRU5EOmU9T1QuZW5kTG9vcCgpLF9UKG4sZSwibG9vcCIsRFQpLE9ULmJ1bXBWZXJ0aWNhbFBvcyhlLnN0b3B5LU9ULmdldFZlcnRpY2FsUG9zKCkpLE9ULm1vZGVscy5hZGRMb29wKGUpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLlJFQ1RfU1RBUlQ6elQodSx0LERULmJveE1hcmdpbixEVC5ib3hNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBPVC5uZXdMb29wKHZvaWQgMCx0Lm1lc3NhZ2UpfSkpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLlJFQ1RfRU5EOmU9T1QuZW5kTG9vcCgpLHhUKG4sZSksT1QubW9kZWxzLmFkZExvb3AoZSksT1QuYnVtcFZlcnRpY2FsUG9zKGUuc3RvcHktT1QuZ2V0VmVydGljYWxQb3MoKSk7YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuT1BUX1NUQVJUOnpUKHUsdCxEVC5ib3hNYXJnaW4sRFQuYm94TWFyZ2luK0RULmJveFRleHRNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBPVC5uZXdMb29wKHQpfSkpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLk9QVF9FTkQ6ZT1PVC5lbmRMb29wKCksX1QobixlLCJvcHQiLERUKSxPVC5idW1wVmVydGljYWxQb3MoZS5zdG9weS1PVC5nZXRWZXJ0aWNhbFBvcygpKSxPVC5tb2RlbHMuYWRkTG9vcChlKTticmVhaztjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5BTFRfU1RBUlQ6elQodSx0LERULmJveE1hcmdpbixEVC5ib3hNYXJnaW4rRFQuYm94VGV4dE1hcmdpbiwoZnVuY3Rpb24odCl7cmV0dXJuIE9ULm5ld0xvb3AodCl9KSk7YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VMU0U6elQodSx0LERULmJveE1hcmdpbitEVC5ib3hUZXh0TWFyZ2luLERULmJveE1hcmdpbiwoZnVuY3Rpb24odCl7cmV0dXJuIE9ULmFkZFNlY3Rpb25Ub0xvb3AodCl9KSk7YnJlYWs7Y2FzZSBOay5wYXJzZXIueXkuTElORVRZUEUuQUxUX0VORDplPU9ULmVuZExvb3AoKSxfVChuLGUsImFsdCIsRFQpLE9ULmJ1bXBWZXJ0aWNhbFBvcyhlLnN0b3B5LU9ULmdldFZlcnRpY2FsUG9zKCkpLE9ULm1vZGVscy5hZGRMb29wKGUpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLlBBUl9TVEFSVDp6VCh1LHQsRFQuYm94TWFyZ2luLERULmJveE1hcmdpbitEVC5ib3hUZXh0TWFyZ2luLChmdW5jdGlvbih0KXtyZXR1cm4gT1QubmV3TG9vcCh0KX0pKTticmVhaztjYXNlIE5rLnBhcnNlci55eS5MSU5FVFlQRS5QQVJfQU5EOnpUKHUsdCxEVC5ib3hNYXJnaW4rRFQuYm94VGV4dE1hcmdpbixEVC5ib3hNYXJnaW4sKGZ1bmN0aW9uKHQpe3JldHVybiBPVC5hZGRTZWN0aW9uVG9Mb29wKHQpfSkpO2JyZWFrO2Nhc2UgTmsucGFyc2VyLnl5LkxJTkVUWVBFLlBBUl9FTkQ6ZT1PVC5lbmRMb29wKCksX1QobixlLCJwYXIiLERUKSxPVC5idW1wVmVydGljYWxQb3MoZS5zdG9weS1PVC5nZXRWZXJ0aWNhbFBvcygpKSxPVC5tb2RlbHMuYWRkTG9vcChlKTticmVhaztkZWZhdWx0OnRyeXsoYT10Lm1zZ01vZGVsKS5zdGFydHk9T1QuZ2V0VmVydGljYWxQb3MoKSxhLnNlcXVlbmNlSW5kZXg9bCxmdW5jdGlvbih0LGUpe09ULmJ1bXBWZXJ0aWNhbFBvcygxMCk7dmFyIG49ZS5zdGFydHgscj1lLnN0b3B4LGk9ZS5zdGFydHksYT1lLm1lc3NhZ2Usbz1lLnR5cGUscz1lLnNlcXVlbmNlSW5kZXgsYz1VbS5zcGxpdEJyZWFrcyhhKS5sZW5ndGgsdT1Idi5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhhLEJUKERUKSksbD11LmhlaWdodC9jO2UuaGVpZ2h0Kz1sLE9ULmJ1bXBWZXJ0aWNhbFBvcyhsKTt2YXIgaD1NVCgpO2gueD1uLGgueT1pKzEwLGgud2lkdGg9ci1uLGguY2xhc3M9Im1lc3NhZ2VUZXh0IixoLmR5PSIxZW0iLGgudGV4dD1hLGguZm9udEZhbWlseT1EVC5tZXNzYWdlRm9udEZhbWlseSxoLmZvbnRTaXplPURULm1lc3NhZ2VGb250U2l6ZSxoLmZvbnRXZWlnaHQ9RFQubWVzc2FnZUZvbnRXZWlnaHQsaC5hbmNob3I9RFQubWVzc2FnZUFsaWduLGgudmFsaWduPURULm1lc3NhZ2VBbGlnbixoLnRleHRNYXJnaW49RFQud3JhcFBhZGRpbmcsaC50c3Bhbj0hMSxzVCh0LGgpO3ZhciBmLGQscD11LmhlaWdodC0xMCx5PXUud2lkdGg7aWYobj09PXIpe2Q9T1QuZ2V0VmVydGljYWxQb3MoKStwLERULnJpZ2h0QW5nbGVzP2Y9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAgIi5jb25jYXQobiwiLCIpLmNvbmNhdChkLCIgSCAiKS5jb25jYXQobitNYXRoLm1heChEVC53aWR0aC8yLHkvMiksIiBWICIpLmNvbmNhdChkKzI1LCIgSCAiKS5jb25jYXQobikpOihwKz1EVC5ib3hNYXJnaW4sZD1PVC5nZXRWZXJ0aWNhbFBvcygpK3AsZj10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNICIrbisiLCIrZCsiIEMgIisobis2MCkrIiwiKyhkLTEwKSsiICIrKG4rNjApKyIsIisoZCszMCkrIiAiK24rIiwiKyhkKzIwKSkpLHArPTMwO3ZhciBnPU1hdGgubWF4KHkvMixEVC53aWR0aC8yKTtPVC5pbnNlcnQobi1nLE9ULmdldFZlcnRpY2FsUG9zKCktMTArcCxyK2csT1QuZ2V0VmVydGljYWxQb3MoKSszMCtwKX1lbHNlIHArPURULmJveE1hcmdpbixkPU9ULmdldFZlcnRpY2FsUG9zKCkrcCwoZj10LmFwcGVuZCgibGluZSIpKS5hdHRyKCJ4MSIsbiksZi5hdHRyKCJ5MSIsZCksZi5hdHRyKCJ4MiIsciksZi5hdHRyKCJ5MiIsZCksT1QuaW5zZXJ0KG4sZC0xMCxyLGQpO289PT1Oay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEfHxvPT09TmsucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TU3x8bz09PU5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlR8fG89PT1Oay5wYXJzZXIueXkuTElORVRZUEUuRE9UVEVEX09QRU4/KGYuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzLCAzIiksZi5hdHRyKCJjbGFzcyIsIm1lc3NhZ2VMaW5lMSIpKTpmLmF0dHIoImNsYXNzIiwibWVzc2FnZUxpbmUwIik7dmFyIG09IiI7RFQuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKG09KG09KG09d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksZi5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLGYuYXR0cigic3Ryb2tlIiwibm9uZSIpLGYuc3R5bGUoImZpbGwiLCJub25lIiksbyE9PU5rLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRCYmbyE9PU5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURUR8fGYuYXR0cigibWFya2VyLWVuZCIsInVybCgiK20rIiNhcnJvd2hlYWQpIiksbyE9PU5rLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRF9QT0lOVCYmbyE9PU5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfUE9JTlR8fGYuYXR0cigibWFya2VyLWVuZCIsInVybCgiK20rIiNmaWxsZWQtaGVhZCkiKSxvIT09TmsucGFyc2VyLnl5LkxJTkVUWVBFLlNPTElEX0NST1NTJiZvIT09TmsucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TU3x8Zi5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrbSsiI2Nyb3NzaGVhZCkiKSwoSmsuc2hvd1NlcXVlbmNlTnVtYmVycygpfHxEVC5zaG93U2VxdWVuY2VOdW1iZXJzKSYmKGYuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrbSsiI3NlcXVlbmNlbnVtYmVyKSIpLHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbikuYXR0cigieSIsZCs0KS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJmb250LXNpemUiLCIxMnB4IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0TGVuZ3RoIiwiMTZweCIpLmF0dHIoImNsYXNzIiwic2VxdWVuY2VOdW1iZXIiKS50ZXh0KHMpKSxPVC5idW1wVmVydGljYWxQb3MocCksZS5oZWlnaHQrPXAsZS5zdG9weT1lLnN0YXJ0eStlLmhlaWdodCxPVC5pbnNlcnQoZS5mcm9tQm91bmRzLGUuc3RhcnR5LGUudG9Cb3VuZHMsZS5zdG9weSl9KG4sYSksT1QubW9kZWxzLmFkZE1lc3NhZ2UoYSl9Y2F0Y2godCl7by5lcnJvcigiZXJyb3Igd2hpbGUgZHJhd2luZyBtZXNzYWdlIix0KX19W05rLnBhcnNlci55eS5MSU5FVFlQRS5TT0xJRF9PUEVOLE5rLnBhcnNlci55eS5MSU5FVFlQRS5ET1RURURfT1BFTixOay5wYXJzZXIueXkuTElORVRZUEUuU09MSUQsTmsucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRCxOay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfQ1JPU1MsTmsucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9DUk9TUyxOay5wYXJzZXIueXkuTElORVRZUEUuU09MSURfUE9JTlQsTmsucGFyc2VyLnl5LkxJTkVUWVBFLkRPVFRFRF9QT0lOVF0uaW5jbHVkZXModC50eXBlKSYmbCsrfSkpLERULm1pcnJvckFjdG9ycyYmKE9ULmJ1bXBWZXJ0aWNhbFBvcygyKkRULmJveE1hcmdpbiksUlQobixyLGksT1QuZ2V0VmVydGljYWxQb3MoKSksT1QuYnVtcFZlcnRpY2FsUG9zKERULmJveE1hcmdpbiksbFQobixPVC5nZXRWZXJ0aWNhbFBvcygpKSk7dmFyIGg9RlQobixyLGkpLGY9T1QuZ2V0Qm91bmRzKCkuYm91bmRzO28uZGVidWcoIkZvciBsaW5lIGhlaWdodCBmaXggUXVlcnlpbmc6ICMiK2UrIiAuYWN0b3ItbGluZSIpLG91KCIjIitlKyIgLmFjdG9yLWxpbmUiKS5hdHRyKCJ5MiIsZi5zdG9weSk7dmFyIGQ9Zi5zdG9weS1mLnN0YXJ0eTtkPGgubWF4SGVpZ2h0JiYoZD1oLm1heEhlaWdodCk7dmFyIHA9ZCsyKkRULmRpYWdyYW1NYXJnaW5ZO0RULm1pcnJvckFjdG9ycyYmKHA9cC1EVC5ib3hNYXJnaW4rRFQuYm90dG9tTWFyZ2luQWRqKTt2YXIgeT1mLnN0b3B4LWYuc3RhcnR4O3k8aC5tYXhXaWR0aCYmKHk9aC5tYXhXaWR0aCk7dmFyIGc9eSsyKkRULmRpYWdyYW1NYXJnaW5YO3MmJm4uYXBwZW5kKCJ0ZXh0IikudGV4dChzKS5hdHRyKCJ4IiwoZi5zdG9weC1mLnN0YXJ0eCkvMi0yKkRULmRpYWdyYW1NYXJnaW5YKS5hdHRyKCJ5IiwtMjUpLHp2KG4scCxnLERULnVzZU1heFdpZHRoKTt2YXIgbT1zPzQwOjA7bi5hdHRyKCJ2aWV3Qm94IixmLnN0YXJ0eC1EVC5kaWFncmFtTWFyZ2luWCsiIC0iKyhEVC5kaWFncmFtTWFyZ2luWSttKSsiICIrZysiICIrKHArbSkpLG8uZGVidWcoIm1vZGVsczoiLE9ULm1vZGVscyl9fTt2YXIgSFQ9bigzNTg0KSwkVD1uLm4oSFQpO2Z1bmN0aW9uIFdUKHQpe3JldHVybiBXVD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sV1QodCl9dmFyIFZUPWZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX0sR1Q9W10sWFQ9ZnVuY3Rpb24gdChlLG4scil7aWYoInJlbGF0aW9uIj09PW4uc3RtdCl0KGUsbi5zdGF0ZTEsITApLHQoZSxuLnN0YXRlMiwhMSk7ZWxzZSBpZigic3RhdGUiPT09bi5zdG10JiYiWypdIj09PW4uaWQmJihuLmlkPXI/ZS5pZCsiX3N0YXJ0IjplLmlkKyJfZW5kIixuLnN0YXJ0PXIpLG4uZG9jKXt2YXIgaT1bXSxhPTAsbz1bXTtmb3IoYT0wO2E8bi5kb2MubGVuZ3RoO2ErKylpZigiZGl2aWRlciI9PT1uLmRvY1thXS50eXBlKXt2YXIgcz1WVChuLmRvY1thXSk7cy5kb2M9VlQobyksaS5wdXNoKHMpLG89W119ZWxzZSBvLnB1c2gobi5kb2NbYV0pO2lmKGkubGVuZ3RoPjAmJm8ubGVuZ3RoPjApe3ZhciBjPXtzdG10OiJzdGF0ZSIsaWQ6T3YoKSx0eXBlOiJkaXZpZGVyIixkb2M6VlQobyl9O2kucHVzaChWVChjKSksbi5kb2M9aX1uLmRvYy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdChuLGUsITApfSkpfX0sWlQ9e3Jvb3Q6e3JlbGF0aW9uczpbXSxzdGF0ZXM6e30sZG9jdW1lbnRzOnt9fX0sUVQ9WlQucm9vdCxLVD0wLEpUPWZ1bmN0aW9uKHQsZSxuLHIsaSl7dm9pZCAwPT09UVQuc3RhdGVzW3RdP1FULnN0YXRlc1t0XT17aWQ6dCxkZXNjcmlwdGlvbnM6W10sdHlwZTplLGRvYzpuLG5vdGU6aX06KFFULnN0YXRlc1t0XS5kb2N8fChRVC5zdGF0ZXNbdF0uZG9jPW4pLFFULnN0YXRlc1t0XS50eXBlfHwoUVQuc3RhdGVzW3RdLnR5cGU9ZSkpLHImJihvLmluZm8oIkFkZGluZyBzdGF0ZSAiLHQsciksInN0cmluZyI9PXR5cGVvZiByJiZuRSh0LHIudHJpbSgpKSwib2JqZWN0Ij09PVdUKHIpJiZyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBuRSh0LGUudHJpbSgpKX0pKSksaSYmKFFULnN0YXRlc1t0XS5ub3RlPWksUVQuc3RhdGVzW3RdLm5vdGUudGV4dD1VbS5zYW5pdGl6ZVRleHQoUVQuc3RhdGVzW3RdLm5vdGUudGV4dCxKdigpKSl9LHRFPWZ1bmN0aW9uKCl7UVQ9KFpUPXtyb290OntyZWxhdGlvbnM6W10sc3RhdGVzOnt9LGRvY3VtZW50czp7fX19KS5yb290LFFUPVpULnJvb3QsS1Q9MCxpRT1bXX0sZUU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQsaT1lLGE9ImRlZmF1bHQiLG89ImRlZmF1bHQiOyJbKl0iPT09dCYmKHI9InN0YXJ0IisgKytLVCxhPSJzdGFydCIpLCJbKl0iPT09ZSYmKGk9ImVuZCIrS1Qsbz0iZW5kIiksSlQocixhKSxKVChpLG8pLFFULnJlbGF0aW9ucy5wdXNoKHtpZDE6cixpZDI6aSx0aXRsZTpVbS5zYW5pdGl6ZVRleHQobixKdigpKX0pfSxuRT1mdW5jdGlvbih0LGUpe3ZhciBuPVFULnN0YXRlc1t0XSxyPWU7IjoiPT09clswXSYmKHI9ci5zdWJzdHIoMSkudHJpbSgpKSxuLmRlc2NyaXB0aW9ucy5wdXNoKFVtLnNhbml0aXplVGV4dChyLEp2KCkpKX0sckU9MCxpRT1bXSxhRT0iVEIiO2NvbnN0IG9FPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7c0MucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBKdigpLnN0YXRlfSxhZGRTdGF0ZTpKVCxjbGVhcjp0RSxnZXRTdGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gUVQuc3RhdGVzW3RdfSxnZXRTdGF0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gUVQuc3RhdGVzfSxnZXRSZWxhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gUVQucmVsYXRpb25zfSxnZXRDbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJuIGlFfSxnZXREaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gYUV9LGFkZFJlbGF0aW9uOmVFLGdldERpdmlkZXJJZDpmdW5jdGlvbigpe3JldHVybiJkaXZpZGVyLWlkLSIrICsrckV9LHNldERpcmVjdGlvbjpmdW5jdGlvbih0KXthRT10fSxjbGVhbnVwTGFiZWw6ZnVuY3Rpb24odCl7cmV0dXJuIjoiPT09dC5zdWJzdHJpbmcoMCwxKT90LnN1YnN0cigyKS50cmltKCk6dC50cmltKCl9LGxpbmVUeXBlOntMSU5FOjAsRE9UVEVEX0xJTkU6MX0scmVsYXRpb25UeXBlOntBR0dSRUdBVElPTjowLEVYVEVOU0lPTjoxLENPTVBPU0lUSU9OOjIsREVQRU5ERU5DWTozfSxsb2dEb2N1bWVudHM6ZnVuY3Rpb24oKXtvLmluZm8oIkRvY3VtZW50cyA9ICIsWlQpfSxnZXRSb290RG9jOmZ1bmN0aW9uKCl7cmV0dXJuIEdUfSxzZXRSb290RG9jOmZ1bmN0aW9uKHQpe28uaW5mbygiU2V0dGluZyByb290IGRvYyIsdCksR1Q9dH0sZ2V0Um9vdERvY1YyOmZ1bmN0aW9uKCl7cmV0dXJuIFhUKHtpZDoicm9vdCJ9LHtpZDoicm9vdCIsZG9jOkdUfSwhMCkse2lkOiJyb290Iixkb2M6R1R9fSxleHRyYWN0OmZ1bmN0aW9uKHQpe3ZhciBlO2U9dC5kb2M/dC5kb2M6dCxvLmluZm8oZSksdEUoKSxvLmluZm8oIkV4dHJhY3QiLGUpLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7InN0YXRlIj09PXQuc3RtdCYmSlQodC5pZCx0LnR5cGUsdC5kb2MsdC5kZXNjcmlwdGlvbix0Lm5vdGUpLCJyZWxhdGlvbiI9PT10LnN0bXQmJmVFKHQuc3RhdGUxLmlkLHQuc3RhdGUyLmlkLHQuZGVzY3JpcHRpb24pfSkpfSx0cmltQ29sb246ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI6Ij09PXRbMF0/dC5zdWJzdHIoMSkudHJpbSgpOnQudHJpbSgpfX07dmFyIHNFPXt9O2Z1bmN0aW9uIGNFKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9dmFyIHVFLGxFPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpPUp2KCkuc3RhdGUucGFkZGluZyxhPTIqSnYoKS5zdGF0ZS5wYWRkaW5nLG89dC5ub2RlKCkuZ2V0QkJveCgpLHM9by53aWR0aCxjPW8ueCx1PXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMCkuYXR0cigieSIsSnYoKS5zdGF0ZS50aXRsZVNoaWZ0KS5hdHRyKCJmb250LXNpemUiLEp2KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuaWQpLGw9dS5ub2RlKCkuZ2V0QkJveCgpLndpZHRoK2EsaD1NYXRoLm1heChsLHMpO2g9PT1zJiYoaCs9YSk7dmFyIGY9dC5ub2RlKCkuZ2V0QkJveCgpO2UuZG9jLHI9Yy1pLGw+cyYmKHI9KHMtaCkvMitpKSxNYXRoLmFicyhjLWYueCk8aSYmbD5zJiYocj1jLShsLXMpLzIpO3ZhciBkPTEtSnYoKS5zdGF0ZS50ZXh0SGVpZ2h0O3JldHVybiB0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLGQpLmF0dHIoImNsYXNzIixuPyJhbHQtY29tcG9zaXQiOiJjb21wb3NpdCIpLmF0dHIoIndpZHRoIixoKS5hdHRyKCJoZWlnaHQiLGYuaGVpZ2h0K0p2KCkuc3RhdGUudGV4dEhlaWdodCtKdigpLnN0YXRlLnRpdGxlU2hpZnQrMSkuYXR0cigicngiLCIwIiksdS5hdHRyKCJ4IixyK2kpLGw8PXMmJnUuYXR0cigieCIsYysoaC1hKS8yLWwvMitpKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLEp2KCkuc3RhdGUudGl0bGVTaGlmdC1KdigpLnN0YXRlLnRleHRIZWlnaHQtSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IiwzKkp2KCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cigicngiLEp2KCkuc3RhdGUucmFkaXVzKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLHIpLmF0dHIoInkiLEp2KCkuc3RhdGUudGl0bGVTaGlmdC1KdigpLnN0YXRlLnRleHRIZWlnaHQtSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IixmLmhlaWdodCszKzIqSnYoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJyeCIsSnYoKS5zdGF0ZS5yYWRpdXMpLHR9LGhFPWZ1bmN0aW9uKHQsZSl7ZS5hdHRyKCJjbGFzcyIsInN0YXRlLW5vdGUiKTt2YXIgbj1lLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLEp2KCkuc3RhdGUucGFkZGluZykscj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT0wLGE9ci5hcHBlbmQoInRleHQiKTthLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IiksYS5hdHRyKCJjbGFzcyIsIm5vdGVUZXh0Iik7dmFyIG8scz10LnJlcGxhY2UoL1xyXG4vZywiPGJyLz4iKSxjPShzPXMucmVwbGFjZSgvXG4vZywiPGJyLz4iKSkuc3BsaXQoVW0ubGluZUJyZWFrUmVnZXgpLHU9MS4yNSpKdigpLnN0YXRlLm5vdGVNYXJnaW4sbD1mdW5jdGlvbih0LGUpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighbil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGNFKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Y0UodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciByPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIHI+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3IrK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9bi5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19KGMpO3RyeXtmb3IobC5zKCk7IShvPWwubigpKS5kb25lOyl7dmFyIGg9by52YWx1ZS50cmltKCk7aWYoaC5sZW5ndGg+MCl7dmFyIGY9YS5hcHBlbmQoInRzcGFuIik7Zi50ZXh0KGgpLDA9PT11JiYodSs9Zi5ub2RlKCkuZ2V0QkJveCgpLmhlaWdodCksaSs9dSxmLmF0dHIoIngiLDArSnYoKS5zdGF0ZS5ub3RlTWFyZ2luKSxmLmF0dHIoInkiLDAraSsxLjI1Kkp2KCkuc3RhdGUubm90ZU1hcmdpbil9fX1jYXRjaCh0KXtsLmUodCl9ZmluYWxseXtsLmYoKX1yZXR1cm57dGV4dFdpZHRoOmEubm9kZSgpLmdldEJCb3goKS53aWR0aCx0ZXh0SGVpZ2h0Oml9fSh0LDAsMCxlLmFwcGVuZCgiZyIpKSxpPXIudGV4dFdpZHRoLGE9ci50ZXh0SGVpZ2h0O3JldHVybiBuLmF0dHIoImhlaWdodCIsYSsyKkp2KCkuc3RhdGUubm90ZU1hcmdpbiksbi5hdHRyKCJ3aWR0aCIsaSsyKkp2KCkuc3RhdGUubm90ZU1hcmdpbiksbn0sZkU9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmlkLHI9e2lkOm4sbGFiZWw6ZS5pZCx3aWR0aDowLGhlaWdodDowfSxpPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLG4pLmF0dHIoImNsYXNzIiwic3RhdGVHcm91cCIpOyJzdGFydCI9PT1lLnR5cGUmJmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsInN0YXJ0LXN0YXRlIikuYXR0cigiciIsSnYoKS5zdGF0ZS5zaXplVW5pdCkuYXR0cigiY3giLEp2KCkuc3RhdGUucGFkZGluZytKdigpLnN0YXRlLnNpemVVbml0KS5hdHRyKCJjeSIsSnYoKS5zdGF0ZS5wYWRkaW5nK0p2KCkuc3RhdGUuc2l6ZVVuaXQpfShpKSwiZW5kIj09PWUudHlwZSYmZnVuY3Rpb24odCl7dC5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImNsYXNzIiwiZW5kLXN0YXRlLW91dGVyIikuYXR0cigiciIsSnYoKS5zdGF0ZS5zaXplVW5pdCtKdigpLnN0YXRlLm1pbmlQYWRkaW5nKS5hdHRyKCJjeCIsSnYoKS5zdGF0ZS5wYWRkaW5nK0p2KCkuc3RhdGUuc2l6ZVVuaXQrSnYoKS5zdGF0ZS5taW5pUGFkZGluZykuYXR0cigiY3kiLEp2KCkuc3RhdGUucGFkZGluZytKdigpLnN0YXRlLnNpemVVbml0K0p2KCkuc3RhdGUubWluaVBhZGRpbmcpLHQuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsImVuZC1zdGF0ZS1pbm5lciIpLmF0dHIoInIiLEp2KCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoImN4IixKdigpLnN0YXRlLnBhZGRpbmcrSnYoKS5zdGF0ZS5zaXplVW5pdCsyKS5hdHRyKCJjeSIsSnYoKS5zdGF0ZS5wYWRkaW5nK0p2KCkuc3RhdGUuc2l6ZVVuaXQrMil9KGkpLCJmb3JrIiE9PWUudHlwZSYmImpvaW4iIT09ZS50eXBlfHxmdW5jdGlvbih0LGUpe3ZhciBuPUp2KCkuc3RhdGUuZm9ya1dpZHRoLHI9SnYoKS5zdGF0ZS5mb3JrSGVpZ2h0O2lmKGUucGFyZW50SWQpe3ZhciBpPW47bj1yLHI9aX10LmFwcGVuZCgicmVjdCIpLnN0eWxlKCJzdHJva2UiLCJibGFjayIpLnN0eWxlKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJ3aWR0aCIsbikuYXR0cigiaGVpZ2h0IixyKS5hdHRyKCJ4IixKdigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInkiLEp2KCkuc3RhdGUucGFkZGluZyl9KGksZSksIm5vdGUiPT09ZS50eXBlJiZoRShlLm5vdGUudGV4dCxpKSwiZGl2aWRlciI9PT1lLnR5cGUmJmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImdyZXkiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjMiKS5hdHRyKCJ4MSIsSnYoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4MiIsMipKdigpLnN0YXRlLnRleHRIZWlnaHQpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCl9KGkpLCJkZWZhdWx0Ij09PWUudHlwZSYmMD09PWUuZGVzY3JpcHRpb25zLmxlbmd0aCYmZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLDIqSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ5IixKdigpLnN0YXRlLnRleHRIZWlnaHQrMipKdigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoImZvbnQtc2l6ZSIsSnYoKS5zdGF0ZS5mb250U2l6ZSkuYXR0cigiY2xhc3MiLCJzdGF0ZS10aXRsZSIpLnRleHQoZS5pZCkubm9kZSgpLmdldEJCb3goKTt0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLEp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsbi53aWR0aCsyKkp2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0IixuLmhlaWdodCsyKkp2KCkuc3RhdGUucGFkZGluZykuYXR0cigicngiLEp2KCkuc3RhdGUucmFkaXVzKX0oaSxlKSwiZGVmYXVsdCI9PT1lLnR5cGUmJmUuZGVzY3JpcHRpb25zLmxlbmd0aD4wJiZmdW5jdGlvbih0LGUpe3ZhciBuPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMipKdigpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInkiLEp2KCkuc3RhdGUudGV4dEhlaWdodCsxLjMqSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJmb250LXNpemUiLEp2KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuZGVzY3JpcHRpb25zWzBdKS5ub2RlKCkuZ2V0QkJveCgpLHI9bi5oZWlnaHQsaT10LmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLEp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIscisuNCpKdigpLnN0YXRlLnBhZGRpbmcrSnYoKS5zdGF0ZS5kaXZpZGVyTWFyZ2luK0p2KCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cigiY2xhc3MiLCJzdGF0ZS1kZXNjcmlwdGlvbiIpLGE9ITAsbz0hMDtlLmRlc2NyaXB0aW9ucy5mb3JFYWNoKChmdW5jdGlvbih0KXthfHwoZnVuY3Rpb24odCxlLG4pe3ZhciByPXQuYXBwZW5kKCJ0c3BhbiIpLmF0dHIoIngiLDIqSnYoKS5zdGF0ZS5wYWRkaW5nKS50ZXh0KGUpO258fHIuYXR0cigiZHkiLEp2KCkuc3RhdGUudGV4dEhlaWdodCl9KGksdCxvKSxvPSExKSxhPSExfSkpO3ZhciBzPXQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLEp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieTEiLEp2KCkuc3RhdGUucGFkZGluZytyK0p2KCkuc3RhdGUuZGl2aWRlck1hcmdpbi8yKS5hdHRyKCJ5MiIsSnYoKS5zdGF0ZS5wYWRkaW5nK3IrSnYoKS5zdGF0ZS5kaXZpZGVyTWFyZ2luLzIpLmF0dHIoImNsYXNzIiwiZGVzY3ItZGl2aWRlciIpLGM9aS5ub2RlKCkuZ2V0QkJveCgpLHU9TWF0aC5tYXgoYy53aWR0aCxuLndpZHRoKTtzLmF0dHIoIngyIix1KzMqSnYoKS5zdGF0ZS5wYWRkaW5nKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLEp2KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsdSsyKkp2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0IixjLmhlaWdodCtyKzIqSnYoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJyeCIsSnYoKS5zdGF0ZS5yYWRpdXMpfShpLGUpO3ZhciBhLG89aS5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiByLndpZHRoPW8ud2lkdGgrMipKdigpLnN0YXRlLnBhZGRpbmcsci5oZWlnaHQ9by5oZWlnaHQrMipKdigpLnN0YXRlLnBhZGRpbmcsYT1yLHNFW25dPWEscn0sZEU9MDtIVC5wYXJzZXIueXk9b0U7dmFyIHBFPXt9LHlFPWZ1bmN0aW9uIHQoZSxuLHIsaSl7dmFyIGEscz1uZXcod2IoKS5HcmFwaCkoe2NvbXBvdW5kOiEwLG11bHRpZ3JhcGg6ITB9KSxjPSEwO2ZvcihhPTA7YTxlLmxlbmd0aDthKyspaWYoInJlbGF0aW9uIj09PWVbYV0uc3RtdCl7Yz0hMTticmVha31yP3Muc2V0R3JhcGgoe3JhbmtkaXI6IkxSIixtdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwLHJhbmtlcjoidGlnaHQtdHJlZSIscmFua3NlcDpjPzE6dUUuZWRnZUxlbmd0aEZhY3Rvcixub2RlU2VwOmM/MTo1MCxpc011bHRpR3JhcGg6ITB9KTpzLnNldEdyYXBoKHtyYW5rZGlyOiJUQiIsbXVsdGlncmFwaDohMCxjb21wb3VuZDohMCxyYW5rc2VwOmM/MTp1RS5lZGdlTGVuZ3RoRmFjdG9yLG5vZGVTZXA6Yz8xOjUwLHJhbmtlcjoidGlnaHQtdHJlZSIsaXNNdWx0aUdyYXBoOiEwfSkscy5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpLG9FLmV4dHJhY3QoZSk7Zm9yKHZhciB1PW9FLmdldFN0YXRlcygpLGw9b0UuZ2V0UmVsYXRpb25zKCksaD1PYmplY3Qua2V5cyh1KSxmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciBkPXVbaFtmXV07ciYmKGQucGFyZW50SWQ9cik7dmFyIHA9dm9pZCAwO2lmKGQuZG9jKXt2YXIgeT1uLmFwcGVuZCgiZyIpLmF0dHIoImlkIixkLmlkKS5hdHRyKCJjbGFzcyIsInN0YXRlR3JvdXAiKTtwPXQoZC5kb2MseSxkLmlkLCFpKTt2YXIgZz0oeT1sRSh5LGQsaSkpLm5vZGUoKS5nZXRCQm94KCk7cC53aWR0aD1nLndpZHRoLHAuaGVpZ2h0PWcuaGVpZ2h0K3VFLnBhZGRpbmcvMixwRVtkLmlkXT17eTp1RS5jb21wb3NpdFRpdGxlU2l6ZX19ZWxzZSBwPWZFKG4sZCk7aWYoZC5ub3RlKXt2YXIgbT17ZGVzY3JpcHRpb25zOltdLGlkOmQuaWQrIi1ub3RlIixub3RlOmQubm90ZSx0eXBlOiJub3RlIn0sdj1mRShuLG0pOyJsZWZ0IG9mIj09PWQubm90ZS5wb3NpdGlvbj8ocy5zZXROb2RlKHAuaWQrIi1ub3RlIix2KSxzLnNldE5vZGUocC5pZCxwKSk6KHMuc2V0Tm9kZShwLmlkLHApLHMuc2V0Tm9kZShwLmlkKyItbm90ZSIsdikpLHMuc2V0UGFyZW50KHAuaWQscC5pZCsiLWdyb3VwIikscy5zZXRQYXJlbnQocC5pZCsiLW5vdGUiLHAuaWQrIi1ncm91cCIpfWVsc2Ugcy5zZXROb2RlKHAuaWQscCl9by5kZWJ1ZygiQ291bnQ9IixzLm5vZGVDb3VudCgpLHMpO3ZhciBiPTA7bC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTtiKyssby5kZWJ1ZygiU2V0dGluZyBlZGdlIix0KSxzLnNldEVkZ2UodC5pZDEsdC5pZDIse3JlbGF0aW9uOnQsd2lkdGg6KGU9dC50aXRsZSxlP2UubGVuZ3RoKnVFLmZvbnRTaXplRmFjdG9yOjEpLGhlaWdodDp1RS5sYWJlbEhlaWdodCpVbS5nZXRSb3dzKHQudGl0bGUpLmxlbmd0aCxsYWJlbHBvczoiYyJ9LCJpZCIrYil9KSksX2IoKS5sYXlvdXQocyksby5kZWJ1ZygiR3JhcGggYWZ0ZXIgbGF5b3V0IixzLm5vZGVzKCkpO3ZhciBfPW4ubm9kZSgpO3Mubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2b2lkIDAhPT10JiZ2b2lkIDAhPT1zLm5vZGUodCk/KG8ud2FybigiTm9kZSAiK3QrIjogIitKU09OLnN0cmluZ2lmeShzLm5vZGUodCkpKSxhdSgiIyIrXy5pZCsiICMiK3QpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhzLm5vZGUodCkueC1zLm5vZGUodCkud2lkdGgvMikrIiwiKyhzLm5vZGUodCkueSsocEVbdF0/cEVbdF0ueTowKS1zLm5vZGUodCkuaGVpZ2h0LzIpKyIgKSIpLGF1KCIjIitfLmlkKyIgIyIrdCkuYXR0cigiZGF0YS14LXNoaWZ0IixzLm5vZGUodCkueC1zLm5vZGUodCkud2lkdGgvMiksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiIyIrXy5pZCsiICMiK3QrIiAuZGl2aWRlciIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyZW50RWxlbWVudCxuPTAscj0wO2UmJihlLnBhcmVudEVsZW1lbnQmJihuPWUucGFyZW50RWxlbWVudC5nZXRCQm94KCkud2lkdGgpLHI9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoImRhdGEteC1zaGlmdCIpLDEwKSxOdW1iZXIuaXNOYU4ocikmJihyPTApKSx0LnNldEF0dHJpYnV0ZSgieDEiLDAtcis4KSx0LnNldEF0dHJpYnV0ZSgieDIiLG4tci04KX0pKSk6by5kZWJ1ZygiTm8gTm9kZSAiK3QrIjogIitKU09OLnN0cmluZ2lmeShzLm5vZGUodCkpKX0pKTt2YXIgeD1fLmdldEJCb3goKTtzLmVkZ2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmdm9pZCAwIT09cy5lZGdlKHQpJiYoby5kZWJ1ZygiRWRnZSAiK3QudisiIC0+ICIrdC53KyI6ICIrSlNPTi5zdHJpbmdpZnkocy5lZGdlKHQpKSksZnVuY3Rpb24odCxlLG4pe2UucG9pbnRzPWUucG9pbnRzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIU51bWJlci5pc05hTih0LnkpfSkpO3ZhciByPWUucG9pbnRzLGk9enUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSkuY3VydmUoVnUpLGE9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixpKHIpKS5hdHRyKCJpZCIsImVkZ2UiK2RFKS5hdHRyKCJjbGFzcyIsInRyYW5zaXRpb24iKSxzPSIiO2lmKEp2KCkuc3RhdGUuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKHM9KHM9KHM9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnJlcGxhY2UoL1woL2csIlxcKCIpKS5yZXBsYWNlKC9cKS9nLCJcXCkiKSksYS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrcysiIyIrZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2Ugb0UucmVsYXRpb25UeXBlLkFHR1JFR0FUSU9OOnJldHVybiJhZ2dyZWdhdGlvbiI7Y2FzZSBvRS5yZWxhdGlvblR5cGUuRVhURU5TSU9OOnJldHVybiJleHRlbnNpb24iO2Nhc2Ugb0UucmVsYXRpb25UeXBlLkNPTVBPU0lUSU9OOnJldHVybiJjb21wb3NpdGlvbiI7Y2FzZSBvRS5yZWxhdGlvblR5cGUuREVQRU5ERU5DWTpyZXR1cm4iZGVwZW5kZW5jeSJ9fShvRS5yZWxhdGlvblR5cGUuREVQRU5ERU5DWSkrIkVuZCkiKSx2b2lkIDAhPT1uLnRpdGxlKXtmb3IodmFyIGM9dC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInN0YXRlTGFiZWwiKSx1PUh2LmNhbGNMYWJlbFBvc2l0aW9uKGUucG9pbnRzKSxsPXUueCxoPXUueSxmPVVtLmdldFJvd3Mobi50aXRsZSksZD0wLHA9W10seT0wLGc9MCxtPTA7bTw9Zi5sZW5ndGg7bSsrKXt2YXIgdj1jLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChmW21dKS5hdHRyKCJ4IixsKS5hdHRyKCJ5IixoK2QpLGI9di5ub2RlKCkuZ2V0QkJveCgpO2lmKHk9TWF0aC5tYXgoeSxiLndpZHRoKSxnPU1hdGgubWluKGcsYi54KSxvLmluZm8oYi54LGwsaCtkKSwwPT09ZCl7dmFyIF89di5ub2RlKCkuZ2V0QkJveCgpO2Q9Xy5oZWlnaHQsby5pbmZvKCJUaXRsZSBoZWlnaHQiLGQsaCl9cC5wdXNoKHYpfXZhciB4PWQqZi5sZW5ndGg7aWYoZi5sZW5ndGg+MSl7dmFyIHc9KGYubGVuZ3RoLTEpKmQqLjU7cC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmF0dHIoInkiLGgrZSpkLXcpfSkpLHg9ZCpmLmxlbmd0aH12YXIgaz1jLm5vZGUoKS5nZXRCQm94KCk7Yy5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJjbGFzcyIsImJveCIpLmF0dHIoIngiLGwteS8yLUp2KCkuc3RhdGUucGFkZGluZy8yKS5hdHRyKCJ5IixoLXgvMi1KdigpLnN0YXRlLnBhZGRpbmcvMi0zLjUpLmF0dHIoIndpZHRoIix5K0p2KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0Iix4K0p2KCkuc3RhdGUucGFkZGluZyksby5pbmZvKGspfWRFKyt9KG4scy5lZGdlKHQpLHMuZWRnZSh0KS5yZWxhdGlvbikpfSkpLHg9Xy5nZXRCQm94KCk7dmFyIHc9e2lkOnJ8fCJyb290IixsYWJlbDpyfHwicm9vdCIsd2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIHcud2lkdGg9eC53aWR0aCsyKnVFLnBhZGRpbmcsdy5oZWlnaHQ9eC5oZWlnaHQrMip1RS5wYWRkaW5nLG8uZGVidWcoIkRvYyByZW5kZXJlZCIsdyxzKSx3fTtjb25zdCBnRT1mdW5jdGlvbih0LGUpe3VFPUp2KCkuc3RhdGUsSFQucGFyc2VyLnl5LmNsZWFyKCksSFQucGFyc2VyLnBhcnNlKHQpLG8uZGVidWcoIlJlbmRlcmluZyBkaWFncmFtICIrdCk7dmFyIG49YXUoIltpZD0nIi5jb25jYXQoZSwiJ10iKSk7bi5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZGVwZW5kZW5jeUVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOSw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpLG5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMCxyYW5rZGlyOiJSTCJ9KS5zZXREZWZhdWx0RWRnZUxhYmVsKChmdW5jdGlvbigpe3JldHVybnt9fSkpO3ZhciByPW9FLmdldFJvb3REb2MoKTt5RShyLG4sdm9pZCAwLCExKTt2YXIgaT11RS5wYWRkaW5nLGE9bi5ub2RlKCkuZ2V0QkJveCgpLHM9YS53aWR0aCsyKmksYz1hLmhlaWdodCsyKmk7enYobixjLDEuNzUqcyx1RS51c2VNYXhXaWR0aCksbi5hdHRyKCJ2aWV3Qm94IiwiIi5jb25jYXQoYS54LXVFLnBhZGRpbmcsIiAgIikuY29uY2F0KGEueS11RS5wYWRkaW5nLCIgIikrcysiICIrYyl9O3ZhciBtRT17fSx2RT17fSxiRT1mdW5jdGlvbih0LGUsbixyKXtpZigicm9vdCIhPT1uLmlkKXt2YXIgaT0icmVjdCI7ITA9PT1uLnN0YXJ0JiYoaT0ic3RhcnQiKSwhMT09PW4uc3RhcnQmJihpPSJlbmQiKSwiZGVmYXVsdCIhPT1uLnR5cGUmJihpPW4udHlwZSksdkVbbi5pZF18fCh2RVtuLmlkXT17aWQ6bi5pZCxzaGFwZTppLGRlc2NyaXB0aW9uOlVtLnNhbml0aXplVGV4dChuLmlkLEp2KCkpLGNsYXNzZXM6InN0YXRlZGlhZ3JhbS1zdGF0ZSJ9KSxuLmRlc2NyaXB0aW9uJiYoQXJyYXkuaXNBcnJheSh2RVtuLmlkXS5kZXNjcmlwdGlvbik/KHZFW24uaWRdLnNoYXBlPSJyZWN0V2l0aFRpdGxlIix2RVtuLmlkXS5kZXNjcmlwdGlvbi5wdXNoKG4uZGVzY3JpcHRpb24pKTp2RVtuLmlkXS5kZXNjcmlwdGlvbi5sZW5ndGg+MD8odkVbbi5pZF0uc2hhcGU9InJlY3RXaXRoVGl0bGUiLHZFW24uaWRdLmRlc2NyaXB0aW9uPT09bi5pZD92RVtuLmlkXS5kZXNjcmlwdGlvbj1bbi5kZXNjcmlwdGlvbl06dkVbbi5pZF0uZGVzY3JpcHRpb249W3ZFW24uaWRdLmRlc2NyaXB0aW9uLG4uZGVzY3JpcHRpb25dKToodkVbbi5pZF0uc2hhcGU9InJlY3QiLHZFW24uaWRdLmRlc2NyaXB0aW9uPW4uZGVzY3JpcHRpb24pLHZFW24uaWRdLmRlc2NyaXB0aW9uPVVtLnNhbml0aXplVGV4dE9yQXJyYXkodkVbbi5pZF0uZGVzY3JpcHRpb24sSnYoKSkpLDE9PT12RVtuLmlkXS5kZXNjcmlwdGlvbi5sZW5ndGgmJiJyZWN0V2l0aFRpdGxlIj09PXZFW24uaWRdLnNoYXBlJiYodkVbbi5pZF0uc2hhcGU9InJlY3QiKSwhdkVbbi5pZF0udHlwZSYmbi5kb2MmJihvLmluZm8oIlNldHRpbmcgY2x1c3RlciBmb3IgIixuLmlkLHdFKG4pKSx2RVtuLmlkXS50eXBlPSJncm91cCIsdkVbbi5pZF0uZGlyPXdFKG4pLHZFW24uaWRdLnNoYXBlPSJkaXZpZGVyIj09PW4udHlwZT8iZGl2aWRlciI6InJvdW5kZWRXaXRoVGl0bGUiLHZFW24uaWRdLmNsYXNzZXM9dkVbbi5pZF0uY2xhc3NlcysiICIrKHI/InN0YXRlZGlhZ3JhbS1jbHVzdGVyIHN0YXRlZGlhZ3JhbS1jbHVzdGVyLWFsdCI6InN0YXRlZGlhZ3JhbS1jbHVzdGVyIikpO3ZhciBhPXtsYWJlbFN0eWxlOiIiLHNoYXBlOnZFW24uaWRdLnNoYXBlLGxhYmVsVGV4dDp2RVtuLmlkXS5kZXNjcmlwdGlvbixjbGFzc2VzOnZFW24uaWRdLmNsYXNzZXMsc3R5bGU6IiIsaWQ6bi5pZCxkaXI6dkVbbi5pZF0uZGlyLGRvbUlkOiJzdGF0ZS0iK24uaWQrIi0iK19FLHR5cGU6dkVbbi5pZF0udHlwZSxwYWRkaW5nOjE1fTtpZihuLm5vdGUpe3ZhciBzPXtsYWJlbFN0eWxlOiIiLHNoYXBlOiJub3RlIixsYWJlbFRleHQ6bi5ub3RlLnRleHQsY2xhc3Nlczoic3RhdGVkaWFncmFtLW5vdGUiLHN0eWxlOiIiLGlkOm4uaWQrIi0tLS1ub3RlLSIrX0UsZG9tSWQ6InN0YXRlLSIrbi5pZCsiLS0tLW5vdGUtIitfRSx0eXBlOnZFW24uaWRdLnR5cGUscGFkZGluZzoxNX0sYz17bGFiZWxTdHlsZToiIixzaGFwZToibm90ZUdyb3VwIixsYWJlbFRleHQ6bi5ub3RlLnRleHQsY2xhc3Nlczp2RVtuLmlkXS5jbGFzc2VzLHN0eWxlOiIiLGlkOm4uaWQrIi0tLS1wYXJlbnQiLGRvbUlkOiJzdGF0ZS0iK24uaWQrIi0tLS1wYXJlbnQtIitfRSx0eXBlOiJncm91cCIscGFkZGluZzowfTtfRSsrLHQuc2V0Tm9kZShuLmlkKyItLS0tcGFyZW50IixjKSx0LnNldE5vZGUocy5pZCxzKSx0LnNldE5vZGUobi5pZCxhKSx0LnNldFBhcmVudChuLmlkLG4uaWQrIi0tLS1wYXJlbnQiKSx0LnNldFBhcmVudChzLmlkLG4uaWQrIi0tLS1wYXJlbnQiKTt2YXIgdT1uLmlkLGw9cy5pZDsibGVmdCBvZiI9PT1uLm5vdGUucG9zaXRpb24mJih1PXMuaWQsbD1uLmlkKSx0LnNldEVkZ2UodSxsLHthcnJvd2hlYWQ6Im5vbmUiLGFycm93VHlwZToiIixzdHlsZToiZmlsbDpub25lIixsYWJlbFN0eWxlOiIiLGNsYXNzZXM6InRyYW5zaXRpb24gbm90ZS1lZGdlIixhcnJvd2hlYWRTdHlsZToiZmlsbDogIzMzMyIsbGFiZWxwb3M6ImMiLGxhYmVsVHlwZToidGV4dCIsdGhpY2tuZXNzOiJub3JtYWwifSl9ZWxzZSB0LnNldE5vZGUobi5pZCxhKX1lJiYicm9vdCIhPT1lLmlkJiYoby50cmFjZSgiU2V0dGluZyBub2RlICIsbi5pZCwiIHRvIGJlIGNoaWxkIG9mIGl0cyBwYXJlbnQgIixlLmlkKSx0LnNldFBhcmVudChuLmlkLGUuaWQpKSxuLmRvYyYmKG8udHJhY2UoIkFkZGluZyBub2RlcyBjaGlsZHJlbiAiKSx4RSh0LG4sbi5kb2MsIXIpKX0sX0U9MCx4RT1mdW5jdGlvbih0LGUsbixyKXtvLnRyYWNlKCJpdGVtcyIsbiksbi5mb3JFYWNoKChmdW5jdGlvbihuKXtpZigic3RhdGUiPT09bi5zdG10fHwiZGVmYXVsdCI9PT1uLnN0bXQpYkUodCxlLG4scik7ZWxzZSBpZigicmVsYXRpb24iPT09bi5zdG10KXtiRSh0LGUsbi5zdGF0ZTEsciksYkUodCxlLG4uc3RhdGUyLHIpO3ZhciBpPXtpZDoiZWRnZSIrX0UsYXJyb3doZWFkOiJub3JtYWwiLGFycm93VHlwZUVuZDoiYXJyb3dfYmFyYiIsc3R5bGU6ImZpbGw6bm9uZSIsbGFiZWxTdHlsZToiIixsYWJlbDpVbS5zYW5pdGl6ZVRleHQobi5kZXNjcmlwdGlvbixKdigpKSxhcnJvd2hlYWRTdHlsZToiZmlsbDogIzMzMyIsbGFiZWxwb3M6ImMiLGxhYmVsVHlwZToidGV4dCIsdGhpY2tuZXNzOiJub3JtYWwiLGNsYXNzZXM6InRyYW5zaXRpb24ifSxhPW4uc3RhdGUxLmlkLG89bi5zdGF0ZTIuaWQ7dC5zZXRFZGdlKGEsbyxpLF9FKSxfRSsrfX0pKX0sd0U9ZnVuY3Rpb24odCxlKXt2YXIgbj1lfHwiVEIiO2lmKHQuZG9jKWZvcih2YXIgcj0wO3I8dC5kb2MubGVuZ3RoO3IrKyl7dmFyIGk9dC5kb2Nbcl07ImRpciI9PT1pLnN0bXQmJihuPWkudmFsdWUpfXJldHVybiBufTtjb25zdCBrRT1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKW1FW2Vbbl1dPXRbZVtuXV19O2Z1bmN0aW9uIFRFKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBFRSh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBFRSh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0VFKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRUUodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgQ0U9IiIsU0U9IiIsQUU9W10sTUU9W10sTkU9W10sREU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT0wO2U8TkUubGVuZ3RoO2UrKylORVtlXS5wcm9jZXNzZWQsdD10JiZORVtlXS5wcm9jZXNzZWQ7cmV0dXJuIHR9O2NvbnN0IE9FPXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUsbil7c0MucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUsbil9LGdldENvbmZpZzpmdW5jdGlvbigpe3JldHVybiBKdigpLmpvdXJuZXl9LGNsZWFyOmZ1bmN0aW9uKCl7QUUubGVuZ3RoPTAsTUUubGVuZ3RoPTAsU0U9IiIsQ0U9IiIsTkUubGVuZ3RoPTB9LHNldFRpdGxlOmZ1bmN0aW9uKHQpe0NFPXR9LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIENFfSxhZGRTZWN0aW9uOmZ1bmN0aW9uKHQpe1NFPXQsQUUucHVzaCh0KX0sZ2V0U2VjdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gQUV9LGdldFRhc2tzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PURFKCksZT0wOyF0JiZlPDEwMDspdD1ERSgpLGUrKztyZXR1cm4gTUUucHVzaC5hcHBseShNRSxORSksTUV9LGFkZFRhc2s6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnN1YnN0cigxKS5zcGxpdCgiOiIpLHI9MCxpPVtdOzE9PT1uLmxlbmd0aD8ocj1OdW1iZXIoblswXSksaT1bXSk6KHI9TnVtYmVyKG5bMF0pLGk9blsxXS5zcGxpdCgiLCIpKTt2YXIgYT1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpfSkpLG89e3NlY3Rpb246U0UsdHlwZTpTRSxwZW9wbGU6YSx0YXNrOnQsc2NvcmU6cn07TkUucHVzaChvKX0sYWRkVGFza09yZzpmdW5jdGlvbih0KXt2YXIgZT17c2VjdGlvbjpTRSx0eXBlOlNFLGRlc2NyaXB0aW9uOnQsdGFzazp0LGNsYXNzZXM6W119O01FLnB1c2goZSl9LGdldEFjdG9yczpmdW5jdGlvbigpe3JldHVybiB0PVtdLE1FLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucGVvcGxlJiZ0LnB1c2guYXBwbHkodCxURShlLnBlb3BsZSkpfSkpLFRFKG5ldyBTZXQodCkpLnNvcnQoKTt2YXIgdH19O3ZhciBCRT1uKDk3NjMpLExFPW4ubihCRSksSUU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgicmVjdCIpO3JldHVybiBuLmF0dHIoIngiLGUueCksbi5hdHRyKCJ5IixlLnkpLG4uYXR0cigiZmlsbCIsZS5maWxsKSxuLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLG4uYXR0cigid2lkdGgiLGUud2lkdGgpLG4uYXR0cigiaGVpZ2h0IixlLmhlaWdodCksbi5hdHRyKCJyeCIsZS5yeCksbi5hdHRyKCJyeSIsZS5yeSksdm9pZCAwIT09ZS5jbGFzcyYmbi5hdHRyKCJjbGFzcyIsZS5jbGFzcyksbn0sUkU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmFwcGVuZCgiY2lyY2xlIik7cmV0dXJuIG4uYXR0cigiY3giLGUuY3gpLG4uYXR0cigiY3kiLGUuY3kpLG4uYXR0cigiY2xhc3MiLCJhY3Rvci0iK2UucG9zKSxuLmF0dHIoImZpbGwiLGUuZmlsbCksbi5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKSxuLmF0dHIoInIiLGUuciksdm9pZCAwIT09bi5jbGFzcyYmbi5hdHRyKCJjbGFzcyIsbi5jbGFzcyksdm9pZCAwIT09ZS50aXRsZSYmbi5hcHBlbmQoInRpdGxlIikudGV4dChlLnRpdGxlKSxufSxGRT0tMSxQRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSxhLG8scyxjKXtyKGUuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbithLzIpLmF0dHIoInkiLGkrby8yKzUpLnN0eWxlKCJmb250LWNvbG9yIixjKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KHQpLHMpfWZ1bmN0aW9uIGUodCxlLG4saSxhLG8scyxjLHUpe2Zvcih2YXIgbD1jLnRhc2tGb250U2l6ZSxoPWMudGFza0ZvbnRGYW1pbHksZj10LnNwbGl0KC88YnJccypcLz8+L2dpKSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWQqbC1sKihmLmxlbmd0aC0xKS8yLHk9ZS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixuK2EvMikuYXR0cigieSIsaSkuYXR0cigiZmlsbCIsdSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUoImZvbnQtc2l6ZSIsbCkuc3R5bGUoImZvbnQtZmFtaWx5IixoKTt5LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixuK2EvMikuYXR0cigiZHkiLHApLnRleHQoZltkXSkseS5hdHRyKCJ5IixpK28vMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLHIoeSxzKX19ZnVuY3Rpb24gbih0LG4saSxhLG8scyxjLHUpe3ZhciBsPW4uYXBwZW5kKCJzd2l0Y2giKSxoPWwuYXBwZW5kKCJmb3JlaWduT2JqZWN0IikuYXR0cigieCIsaSkuYXR0cigieSIsYSkuYXR0cigid2lkdGgiLG8pLmF0dHIoImhlaWdodCIscykuYXR0cigicG9zaXRpb24iLCJmaXhlZCIpLmFwcGVuZCgieGh0bWw6ZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZSIpLnN0eWxlKCJoZWlnaHQiLCIxMDAlIikuc3R5bGUoIndpZHRoIiwiMTAwJSIpO2guYXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsImxhYmVsIikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KHQpLGUodCxsLGksYSxvLHMsYyx1KSxyKGgsYyl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbiBpbiBlKW4gaW4gZSYmdC5hdHRyKG4sZVtuXSl9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiJmbyI9PT1yLnRleHRQbGFjZW1lbnQ/bjoib2xkIj09PXIudGV4dFBsYWNlbWVudD90OmV9fSgpO2NvbnN0IGpFPVJFLFlFPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmFwcGVuZCgiZyIpLGk9e3g6MCx5OjAsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfTtpLng9ZS54LGkueT1lLnksaS5maWxsPWUuZmlsbCxpLndpZHRoPW4ud2lkdGgsaS5oZWlnaHQ9bi5oZWlnaHQsaS5jbGFzcz0iam91cm5leS1zZWN0aW9uIHNlY3Rpb24tdHlwZS0iK2UubnVtLGkucng9MyxpLnJ5PTMsSUUocixpKSxQRShuKShlLnRleHQscixpLngsaS55LGkud2lkdGgsaS5oZWlnaHQse2NsYXNzOiJqb3VybmV5LXNlY3Rpb24gc2VjdGlvbi10eXBlLSIrZS5udW19LG4sZS5jb2xvdXIpfSx6RT1mdW5jdGlvbih0LGUpe3ZhciBuPWUudGV4dC5yZXBsYWNlKC88YnJccypcLz8+L2dpLCIgIikscj10LmFwcGVuZCgidGV4dCIpO3IuYXR0cigieCIsZS54KSxyLmF0dHIoInkiLGUueSksci5hdHRyKCJjbGFzcyIsImxlZ2VuZCIpLHIuc3R5bGUoInRleHQtYW5jaG9yIixlLmFuY2hvciksdm9pZCAwIT09ZS5jbGFzcyYmci5hdHRyKCJjbGFzcyIsZS5jbGFzcyk7dmFyIGk9ci5hcHBlbmQoInRzcGFuIik7cmV0dXJuIGkuYXR0cigieCIsZS54KzIqZS50ZXh0TWFyZ2luKSxpLnRleHQobikscn0sVUU9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPWUueCtuLndpZHRoLzIscz10LmFwcGVuZCgiZyIpO0ZFKysscy5hcHBlbmQoImxpbmUiKS5hdHRyKCJpZCIsInRhc2siK0ZFKS5hdHRyKCJ4MSIsbykuYXR0cigieTEiLGUueSkuYXR0cigieDIiLG8pLmF0dHIoInkyIiw0NTApLmF0dHIoImNsYXNzIiwidGFzay1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsIjQgMiIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKSxyPXMsaT17Y3g6byxjeTozMDArMzAqKDUtZS5zY29yZSksc2NvcmU6ZS5zY29yZX0sci5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixpLmN4KS5hdHRyKCJjeSIsaS5jeSkuYXR0cigiY2xhc3MiLCJmYWNlIikuYXR0cigiciIsMTUpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigib3ZlcmZsb3ciLCJ2aXNpYmxlIiksKGE9ci5hcHBlbmQoImciKSkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsaS5jeC01KS5hdHRyKCJjeSIsaS5jeS01KS5hdHRyKCJyIiwxLjUpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigiZmlsbCIsIiM2NjYiKS5hdHRyKCJzdHJva2UiLCIjNjY2IiksYS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixpLmN4KzUpLmF0dHIoImN5IixpLmN5LTUpLmF0dHIoInIiLDEuNSkuYXR0cigic3Ryb2tlLXdpZHRoIiwyKS5hdHRyKCJmaWxsIiwiIzY2NiIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKSxpLnNjb3JlPjM/ZnVuY3Rpb24odCl7dmFyIGU9SXUoKS5zdGFydEFuZ2xlKE1hdGguUEkvMikuZW5kQW5nbGUoTWF0aC5QSS8yKjMpLmlubmVyUmFkaXVzKDcuNSkub3V0ZXJSYWRpdXMoMTUvMi4yKTt0LmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibW91dGgiKS5hdHRyKCJkIixlKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmN4KyIsIisoaS5jeSsyKSsiKSIpfShhKTppLnNjb3JlPDM/ZnVuY3Rpb24odCl7dmFyIGU9SXUoKS5zdGFydEFuZ2xlKDMqTWF0aC5QSS8yKS5lbmRBbmdsZShNYXRoLlBJLzIqNSkuaW5uZXJSYWRpdXMoNy41KS5vdXRlclJhZGl1cygxNS8yLjIpO3QuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoImQiLGUpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2kuY3grIiwiKyhpLmN5KzcpKyIpIil9KGEpOmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoInN0cm9rZSIsMikuYXR0cigieDEiLGkuY3gtNSkuYXR0cigieTEiLGkuY3krNykuYXR0cigieDIiLGkuY3grNSkuYXR0cigieTIiLGkuY3krNykuYXR0cigiY2xhc3MiLCJtb3V0aCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKX0oYSk7dmFyIGM9e3g6MCx5OjAsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfTtjLng9ZS54LGMueT1lLnksYy5maWxsPWUuZmlsbCxjLndpZHRoPW4ud2lkdGgsYy5oZWlnaHQ9bi5oZWlnaHQsYy5jbGFzcz0idGFzayB0YXNrLXR5cGUtIitlLm51bSxjLnJ4PTMsYy5yeT0zLElFKHMsYyk7dmFyIHU9ZS54KzE0O2UucGVvcGxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuYWN0b3JzW3RdLmNvbG9yLHI9e2N4OnUsY3k6ZS55LHI6NyxmaWxsOm4sc3Ryb2tlOiIjMDAwIix0aXRsZTp0LHBvczplLmFjdG9yc1t0XS5wb3NpdGlvbn07UkUocyxyKSx1Kz0xMH0pKSxQRShuKShlLnRhc2sscyxjLngsYy55LGMud2lkdGgsYy5oZWlnaHQse2NsYXNzOiJ0YXNrIn0sbixlLmNvbG91cil9O0JFLnBhcnNlci55eT1PRTt2YXIgcUU9e30sSEU9SnYoKS5qb3VybmV5LCRFPUp2KCkuam91cm5leS5sZWZ0TWFyZ2luLFdFPXtkYXRhOntzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdmVydGljYWxQb3M6MCxzZXF1ZW5jZUl0ZW1zOltdLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlSXRlbXM9W10sdGhpcy5kYXRhPXtzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMH0sdGhpcy52ZXJ0aWNhbFBvcz0wfSx1cGRhdGVWYWw6ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09dFtlXT90W2VdPW46dFtlXT1yKG4sdFtlXSl9LHVwZGF0ZUJvdW5kczpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1KdigpLmpvdXJuZXksYT10aGlzLG89MDt0aGlzLnNlcXVlbmNlSXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24ocyl7bysrO3ZhciBjPWEuc2VxdWVuY2VJdGVtcy5sZW5ndGgtbysxO2EudXBkYXRlVmFsKHMsInN0YXJ0eSIsZS1jKmkuYm94TWFyZ2luLE1hdGgubWluKSxhLnVwZGF0ZVZhbChzLCJzdG9weSIscitjKmkuYm94TWFyZ2luLE1hdGgubWF4KSxhLnVwZGF0ZVZhbChXRS5kYXRhLCJzdGFydHgiLHQtYyppLmJveE1hcmdpbixNYXRoLm1pbiksYS51cGRhdGVWYWwoV0UuZGF0YSwic3RvcHgiLG4rYyppLmJveE1hcmdpbixNYXRoLm1heCksYS51cGRhdGVWYWwocywic3RhcnR4Iix0LWMqaS5ib3hNYXJnaW4sTWF0aC5taW4pLGEudXBkYXRlVmFsKHMsInN0b3B4IixuK2MqaS5ib3hNYXJnaW4sTWF0aC5tYXgpLGEudXBkYXRlVmFsKFdFLmRhdGEsInN0YXJ0eSIsZS1jKmkuYm94TWFyZ2luLE1hdGgubWluKSxhLnVwZGF0ZVZhbChXRS5kYXRhLCJzdG9weSIscitjKmkuYm94TWFyZ2luLE1hdGgubWF4KX0pKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPU1hdGgubWluKHQsbiksYT1NYXRoLm1heCh0LG4pLG89TWF0aC5taW4oZSxyKSxzPU1hdGgubWF4KGUscik7dGhpcy51cGRhdGVWYWwoV0UuZGF0YSwic3RhcnR4IixpLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbChXRS5kYXRhLCJzdGFydHkiLG8sTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKFdFLmRhdGEsInN0b3B4IixhLE1hdGgubWF4KSx0aGlzLnVwZGF0ZVZhbChXRS5kYXRhLCJzdG9weSIscyxNYXRoLm1heCksdGhpcy51cGRhdGVCb3VuZHMoaSxvLGEscyl9LGJ1bXBWZXJ0aWNhbFBvczpmdW5jdGlvbih0KXt0aGlzLnZlcnRpY2FsUG9zPXRoaXMudmVydGljYWxQb3MrdCx0aGlzLmRhdGEuc3RvcHk9dGhpcy52ZXJ0aWNhbFBvc30sZ2V0VmVydGljYWxQb3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52ZXJ0aWNhbFBvc30sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX19LFZFPUhFLnNlY3Rpb25GaWxscyxHRT1IRS5zZWN0aW9uQ29sb3Vycztjb25zdCBYRT1mdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXtIRVtlXT10W2VdfSkpfSxaRT1mdW5jdGlvbih0LGUpe3ZhciBuPUp2KCkuam91cm5leTtCRS5wYXJzZXIueXkuY2xlYXIoKSxCRS5wYXJzZXIucGFyc2UodCsiXG4iKSxXRS5pbml0KCk7dmFyIHI9YXUoIiMiK2UpO3IuYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksci5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiYXJyb3doZWFkIikuYXR0cigicmVmWCIsNSkuYXR0cigicmVmWSIsMikuYXR0cigibWFya2VyV2lkdGgiLDYpLmF0dHIoIm1hcmtlckhlaWdodCIsNCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAsMCBWIDQgTDYsMiBaIik7dmFyIGk9QkUucGFyc2VyLnl5LmdldFRhc2tzKCksYT1CRS5wYXJzZXIueXkuZ2V0VGl0bGUoKSxvPUJFLnBhcnNlci55eS5nZXRBY3RvcnMoKTtmb3IodmFyIHMgaW4gcUUpZGVsZXRlIHFFW3NdO3ZhciBjPTA7by5mb3JFYWNoKChmdW5jdGlvbih0KXtxRVt0XT17Y29sb3I6bi5hY3RvckNvbG91cnNbYyVuLmFjdG9yQ29sb3Vycy5sZW5ndGhdLHBvc2l0aW9uOmN9LGMrK30pKSxmdW5jdGlvbih0KXt2YXIgZT1KdigpLmpvdXJuZXksbj02MDtPYmplY3Qua2V5cyhxRSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGk9cUVbcl0uY29sb3IsYT17Y3g6MjAsY3k6bixyOjcsZmlsbDppLHN0cm9rZToiIzAwMCIscG9zOnFFW3JdLnBvc2l0aW9ufTtqRSh0LGEpO3ZhciBvPXt4OjQwLHk6bis3LGZpbGw6IiM2NjYiLHRleHQ6cix0ZXh0TWFyZ2luOjV8ZS5ib3hUZXh0TWFyZ2lufTt6RSh0LG8pLG4rPTIwfSkpfShyKSxXRS5pbnNlcnQoMCwwLCRFLDUwKk9iamVjdC5rZXlzKHFFKS5sZW5ndGgpLGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9SnYoKS5qb3VybmV5LGk9IiIsYT1uKygyKnIuaGVpZ2h0K3IuZGlhZ3JhbU1hcmdpblkpLG89MCxzPSIjQ0NDIixjPSJibGFjayIsdT0wLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGg9ZVtsXTtpZihpIT09aC5zZWN0aW9uKXtzPVZFW28lVkUubGVuZ3RoXSx1PW8lVkUubGVuZ3RoLGM9R0VbbyVHRS5sZW5ndGhdO3ZhciBmPXt4Omwqci50YXNrTWFyZ2luK2wqci53aWR0aCskRSx5OjUwLHRleHQ6aC5zZWN0aW9uLGZpbGw6cyxudW06dSxjb2xvdXI6Y307WUUodCxmLHIpLGk9aC5zZWN0aW9uLG8rK312YXIgZD1oLnBlb3BsZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHFFW2VdJiYodFtlXT1xRVtlXSksdH0pLHt9KTtoLng9bCpyLnRhc2tNYXJnaW4rbCpyLndpZHRoKyRFLGgueT1hLGgud2lkdGg9ci5kaWFncmFtTWFyZ2luWCxoLmhlaWdodD1yLmRpYWdyYW1NYXJnaW5ZLGguY29sb3VyPWMsaC5maWxsPXMsaC5udW09dSxoLmFjdG9ycz1kLFVFKHQsaCxyKSxXRS5pbnNlcnQoaC54LGgueSxoLngraC53aWR0aCtyLnRhc2tNYXJnaW4sNDUwKX19KHIsaSwwKTt2YXIgdT1XRS5nZXRCb3VuZHMoKTthJiZyLmFwcGVuZCgidGV4dCIpLnRleHQoYSkuYXR0cigieCIsJEUpLmF0dHIoImZvbnQtc2l6ZSIsIjRleCIpLmF0dHIoImZvbnQtd2VpZ2h0IiwiYm9sZCIpLmF0dHIoInkiLDI1KTt2YXIgbD11LnN0b3B5LXUuc3RhcnR5KzIqbi5kaWFncmFtTWFyZ2luWSxoPSRFK3Uuc3RvcHgrMipuLmRpYWdyYW1NYXJnaW5YO3p2KHIsbCxoLG4udXNlTWF4V2lkdGgpLHIuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLCRFKS5hdHRyKCJ5MSIsNCpuLmhlaWdodCkuYXR0cigieDIiLGgtJEUtNCkuYXR0cigieTIiLDQqbi5oZWlnaHQpLmF0dHIoInN0cm9rZS13aWR0aCIsNCkuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCNhcnJvd2hlYWQpIik7dmFyIGY9YT83MDowO3IuYXR0cigidmlld0JveCIsIiIuY29uY2F0KHUuc3RhcnR4LCIgLTI1ICIpLmNvbmNhdChoLCIgIikuY29uY2F0KGwrZikpLHIuYXR0cigicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSxyLmF0dHIoImhlaWdodCIsbCtmKzI1KX07dmFyIFFFPXt9O2NvbnN0IEtFPWZ1bmN0aW9uKHQpe3JldHVybiJnLmNsYXNzR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBmaWxsOiAiKS5jb25jYXQodC5jbGFzc1RleHQsIjtcbiAgc3Ryb2tlOiBub25lO1xuICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICBmb250LXNpemU6IDEwcHg7XG5cbiAgLnRpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbn1cblxuLm5vZGVMYWJlbCwgLmVkZ2VMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5jbGFzc1RleHQsIjtcbn1cbi5lZGdlTGFiZWwgLmxhYmVsIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG59XG4ubGFiZWwgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmNsYXNzVGV4dCwiO1xufVxuLmVkZ2VMYWJlbCAubGFiZWwgc3BhbiB7XG4gIGJhY2tncm91bmQ6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbn1cblxuLmNsYXNzVGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuLm5vZGUgcmVjdCxcbiAgLm5vZGUgY2lyY2xlLFxuICAubm9kZSBlbGxpcHNlLFxuICAubm9kZSBwb2x5Z29uLFxuICAubm9kZSBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuXG4uZGl2aWRlciB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBzdHJva2U6IDE7XG59XG5cbmcuY2xpY2thYmxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5nLmNsYXNzR3JvdXAgcmVjdCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG59XG5cbmcuY2xhc3NHcm91cCBsaW5lIHtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuLmNsYXNzTGFiZWwgLmJveCB7XG4gIHN0cm9rZTogbm9uZTtcbiAgc3Ryb2tlLXdpZHRoOiAwO1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuLmNsYXNzTGFiZWwgLmxhYmVsIHtcbiAgZmlsbDogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICBmb250LXNpemU6IDEwcHg7XG59XG5cbi5yZWxhdGlvbiB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbiAgZmlsbDogbm9uZTtcbn1cblxuLmRhc2hlZC1saW5le1xuICBzdHJva2UtZGFzaGFycmF5OiAzO1xufVxuXG4jY29tcG9zaXRpb25TdGFydCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNjb21wb3NpdGlvbkVuZCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNleHRlbnNpb25TdGFydCwgLmV4dGVuc2lvbiB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmxpbmVDb2xvciwiICFpbXBvcnRhbnQ7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4jZXh0ZW5zaW9uRW5kLCAuZXh0ZW5zaW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhZ2dyZWdhdGlvblN0YXJ0LCAuYWdncmVnYXRpb24ge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIiAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhZ2dyZWdhdGlvbkVuZCwgLmFnZ3JlZ2F0aW9uIHtcbiAgZmlsbDogIikuY29uY2F0KHQubWFpbkJrZywiICFpbXBvcnRhbnQ7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4uZWRnZVRlcm1pbmFscyB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbn1cblxuIil9LEpFPWZ1bmN0aW9uKHQpe3JldHVybiIubGFiZWwge1xuICAgIGZvbnQtZmFtaWx5OiAiLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBjb2xvcjogIikuY29uY2F0KHQubm9kZVRleHRDb2xvcnx8dC50ZXh0Q29sb3IsIjtcbiAgfVxuICAuY2x1c3Rlci1sYWJlbCB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cbiAgLmNsdXN0ZXItbGFiZWwgc3BhbiB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0LHNwYW4ge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm5vZGVUZXh0Q29sb3J8fHQudGV4dENvbG9yLCI7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0Lm5vZGVUZXh0Q29sb3J8fHQudGV4dENvbG9yLCI7XG4gIH1cblxuICAubm9kZSByZWN0LFxuICAubm9kZSBjaXJjbGUsXG4gIC5ub2RlIGVsbGlwc2UsXG4gIC5ub2RlIHBvbHlnb24sXG4gIC5ub2RlIHBhdGgge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5ub2RlIC5sYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIC5ub2RlLmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmFycm93aGVhZFBhdGgge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFycm93aGVhZENvbG9yLCI7XG4gIH1cblxuICAuZWRnZVBhdGggLnBhdGgge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyLjBweDtcbiAgfVxuXG4gIC5mbG93Y2hhcnQtbGluayB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgICBmaWxsOiBub25lO1xuICB9XG5cbiAgLmVkZ2VMYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgIHJlY3Qge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgICAgZmlsbDogIikuY29uY2F0KHQuZWRnZUxhYmVsQmFja2dyb3VuZCwiO1xuICAgIH1cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuY2x1c3RlciByZWN0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5jbHVzdGVyQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jbHVzdGVyQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuICAuY2x1c3RlciB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICAuY2x1c3RlciBzcGFuIHtcbiAgICBjb2xvcjogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG4gIC8qIC5jbHVzdGVyIGRpdiB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfSAqL1xuXG4gIGRpdi5tZXJtYWlkVG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBiYWNrZ3JvdW5kOiAiKS5jb25jYXQodC50ZXJ0aWFyeUNvbG9yLCI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIikuY29uY2F0KHQuYm9yZGVyMiwiO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gIH1cbiIpfSx0Qz1mdW5jdGlvbih0KXtyZXR1cm4iXG5kZWZzICNzdGF0ZWRpYWdyYW0tYmFyYkVuZCB7XG4gICAgZmlsbDogIi5jb25jYXQodC50cmFuc2l0aW9uQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRyYW5zaXRpb25Db2xvciwiO1xuICB9XG5nLnN0YXRlR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgc3Ryb2tlOiBub25lO1xuICBmb250LXNpemU6IDEwcHg7XG59XG5nLnN0YXRlR3JvdXAgdGV4dCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiO1xuICBzdHJva2U6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTBweDtcblxufVxuZy5zdGF0ZUdyb3VwIC5zdGF0ZS10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnN0YXRlTGFiZWxDb2xvciwiO1xufVxuXG5nLnN0YXRlR3JvdXAgcmVjdCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm1haW5Ca2csIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG59XG5cbmcuc3RhdGVHcm91cCBsaW5lIHtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4udHJhbnNpdGlvbiB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQudHJhbnNpdGlvbkNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbiAgZmlsbDogbm9uZTtcbn1cblxuLnN0YXRlR3JvdXAgLmNvbXBvc2l0IHtcbiAgZmlsbDogIikuY29uY2F0KHQuYmFja2dyb3VuZCwiO1xuICBib3JkZXItYm90dG9tOiAxcHhcbn1cblxuLnN0YXRlR3JvdXAgLmFsdC1jb21wb3NpdCB7XG4gIGZpbGw6ICNlMGUwZTA7XG4gIGJvcmRlci1ib3R0b206IDFweFxufVxuXG4uc3RhdGUtbm90ZSB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gIGZpbGw6ICIpLmNvbmNhdCh0Lm5vdGVCa2dDb2xvciwiO1xuXG4gIHRleHQge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lm5vdGVUZXh0Q29sb3IsIjtcbiAgICBzdHJva2U6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICB9XG59XG5cbi5zdGF0ZUxhYmVsIC5ib3gge1xuICBzdHJva2U6IG5vbmU7XG4gIHN0cm9rZS13aWR0aDogMDtcbiAgZmlsbDogIikuY29uY2F0KHQubWFpbkJrZywiO1xuICBvcGFjaXR5OiAwLjU7XG59XG5cbi5lZGdlTGFiZWwgLmxhYmVsIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5sYWJlbEJhY2tncm91bmRDb2xvciwiO1xuICBvcGFjaXR5OiAwLjU7XG59XG4uZWRnZUxhYmVsIC5sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHQudGVydGlhcnlUZXh0Q29sb3IsIjtcbn1cbi5sYWJlbCBkaXYgLmVkZ2VMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dC50ZXJ0aWFyeVRleHRDb2xvciwiO1xufVxuXG4uc3RhdGVMYWJlbCB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQuc3RhdGVMYWJlbENvbG9yLCI7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5ub2RlIGNpcmNsZS5zdGF0ZS1zdGFydCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnNwZWNpYWxTdGF0ZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3BlY2lhbFN0YXRlQ29sb3IsIjtcbn1cblxuLm5vZGUgLmZvcmstam9pbiB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LnNwZWNpYWxTdGF0ZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3BlY2lhbFN0YXRlQ29sb3IsIjtcbn1cblxuLm5vZGUgY2lyY2xlLnN0YXRlLWVuZCB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmlubmVyRW5kQmFja2dyb3VuZCwiO1xuICBzdHJva2U6ICIpLmNvbmNhdCh0LmJhY2tncm91bmQsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxLjVcbn1cbi5lbmQtc3RhdGUtaW5uZXIge1xuICBmaWxsOiAiKS5jb25jYXQodC5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0LmJhY2tncm91bmQsIjtcbiAgLy8gc3Ryb2tlOiAiKS5jb25jYXQodC5iYWNrZ3JvdW5kLCI7XG4gIHN0cm9rZS13aWR0aDogMS41XG59XG5cbi5ub2RlIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5zdGF0ZUJrZ3x8dC5tYWluQmtnLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cbi5ub2RlIHBvbHlnb24ge1xuICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiOztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG4jc3RhdGVkaWFncmFtLWJhcmJFbmQge1xuICBmaWxsOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQsIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5zdGF0ZUJvcmRlcnx8dC5ub2RlQm9yZGVyLCI7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4uY2x1c3Rlci1sYWJlbCwgLm5vZGVMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5zdGF0ZUxhYmVsQ29sb3IsIjtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3Qub3V0ZXIge1xuICByeDogNXB4O1xuICByeTogNXB4O1xufVxuLnN0YXRlZGlhZ3JhbS1zdGF0ZSAuZGl2aWRlciB7XG4gIHN0cm9rZTogIikuY29uY2F0KHQuc3RhdGVCb3JkZXJ8fHQubm9kZUJvcmRlciwiO1xufVxuXG4uc3RhdGVkaWFncmFtLXN0YXRlIC50aXRsZS1zdGF0ZSB7XG4gIHJ4OiA1cHg7XG4gIHJ5OiA1cHg7XG59XG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIuc3RhdGVkaWFncmFtLWNsdXN0ZXIgLmlubmVyIHtcbiAgZmlsbDogIikuY29uY2F0KHQuY29tcG9zaXRlQmFja2dyb3VuZHx8dC5iYWNrZ3JvdW5kLCI7XG59XG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIuc3RhdGVkaWFncmFtLWNsdXN0ZXItYWx0IC5pbm5lciB7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmFsdEJhY2tncm91bmQ/dC5hbHRCYWNrZ3JvdW5kOiIjZWZlZmVmIiwiO1xufVxuXG4uc3RhdGVkaWFncmFtLWNsdXN0ZXIgLmlubmVyIHtcbiAgcng6MDtcbiAgcnk6MDtcbn1cblxuLnN0YXRlZGlhZ3JhbS1zdGF0ZSByZWN0LmJhc2ljIHtcbiAgcng6IDVweDtcbiAgcnk6IDVweDtcbn1cbi5zdGF0ZWRpYWdyYW0tc3RhdGUgcmVjdC5kaXZpZGVyIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogMTAsMTA7XG4gIGZpbGw6ICIpLmNvbmNhdCh0LmFsdEJhY2tncm91bmQ/dC5hbHRCYWNrZ3JvdW5kOiIjZWZlZmVmIiwiO1xufVxuXG4ubm90ZS1lZGdlIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogNTtcbn1cblxuLnN0YXRlZGlhZ3JhbS1ub3RlIHJlY3Qge1xuICBmaWxsOiAiKS5jb25jYXQodC5ub3RlQmtnQ29sb3IsIjtcbiAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub3RlQm9yZGVyQ29sb3IsIjtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIHJ4OiAwO1xuICByeTogMDtcbn1cbi5zdGF0ZWRpYWdyYW0tbm90ZSByZWN0IHtcbiAgZmlsbDogIikuY29uY2F0KHQubm90ZUJrZ0NvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICByeDogMDtcbiAgcnk6IDA7XG59XG5cbi5zdGF0ZWRpYWdyYW0tbm90ZSB0ZXh0IHtcbiAgZmlsbDogIikuY29uY2F0KHQubm90ZVRleHRDb2xvciwiO1xufVxuXG4uc3RhdGVkaWFncmFtLW5vdGUgLm5vZGVMYWJlbCB7XG4gIGNvbG9yOiAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG59XG4uc3RhdGVkaWFncmFtIC5lZGdlTGFiZWwge1xuICBjb2xvcjogcmVkOyAvLyAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsICNkZXBlbmRlbmN5RW5kIHtcbiAgZmlsbDogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cbiIpfTt2YXIgZUM9e2Zsb3djaGFydDpKRSwiZmxvd2NoYXJ0LXYyIjpKRSxzZXF1ZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4iLmFjdG9yIHtcbiAgICBzdHJva2U6ICIuY29uY2F0KHQuYWN0b3JCb3JkZXIsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RvckJrZywiO1xuICB9XG5cbiAgdGV4dC5hY3RvciA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RvclRleHRDb2xvciwiO1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5hY3Rvci1saW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdG9yTGluZUNvbG9yLCI7XG4gIH1cblxuICAubWVzc2FnZUxpbmUwIHtcbiAgICBzdHJva2Utd2lkdGg6IDEuNTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiBub25lO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5tZXNzYWdlTGluZTEge1xuICAgIHN0cm9rZS13aWR0aDogMS41O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICB9XG5cbiAgI2Fycm93aGVhZCBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5zZXF1ZW5jZU51bWJlciB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2VxdWVuY2VOdW1iZXJDb2xvciwiO1xuICB9XG5cbiAgI3NlcXVlbmNlbnVtYmVyIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICB9XG5cbiAgI2Nyb3NzaGVhZCBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5zaWduYWxDb2xvciwiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuc2lnbmFsQ29sb3IsIjtcbiAgfVxuXG4gIC5tZXNzYWdlVGV4dCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2lnbmFsVGV4dENvbG9yLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5zaWduYWxUZXh0Q29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbEJveCB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5sYWJlbEJveEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubGFiZWxCb3hCa2dDb2xvciwiO1xuICB9XG5cbiAgLmxhYmVsVGV4dCwgLmxhYmVsVGV4dCA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5sYWJlbFRleHRDb2xvciwiO1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5sb29wVGV4dCwgLmxvb3BUZXh0ID4gdHNwYW4ge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0Lmxvb3BUZXh0Q29sb3IsIjtcbiAgICBzdHJva2U6IG5vbmU7XG4gIH1cblxuICAubG9vcExpbmUge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5sYWJlbEJveEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubGFiZWxCb3hCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLm5vdGUge1xuICAgIC8vc3Ryb2tlOiAjZGVjYzkzO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm90ZUJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQubm90ZUJrZ0NvbG9yLCI7XG4gIH1cblxuICAubm90ZVRleHQsIC5ub3RlVGV4dCA+IHRzcGFuIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5ub3RlVGV4dENvbG9yLCI7XG4gICAgc3Ryb2tlOiBub25lO1xuICB9XG5cbiAgLmFjdGl2YXRpb24wIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2YXRpb24xIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2YXRpb24yIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmF0aW9uQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2YXRpb25Cb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdG9yUG9wdXBNZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAuYWN0b3JQb3B1cE1lbnVQYW5lbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFjdG9yQmtnLCI7XG4gICAgYm94LXNoYWRvdzogMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsMCwwLDAuMik7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygzcHggNXB4IDJweCByZ2IoMCAwIDAgLyAwLjQpKTtcbn1cbiAgLmFjdG9yLW1hbiBsaW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdG9yQm9yZGVyLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQuYWN0b3JCa2csIjtcbiAgfVxuICAuYWN0b3ItbWFuIGNpcmNsZSwgbGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5hY3RvckJvcmRlciwiO1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LmFjdG9yQmtnLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiIpfSxnYW50dDpmdW5jdGlvbih0KXtyZXR1cm4nXG4gIC5tZXJtYWlkLW1haW4tZm9udCB7XG4gICAgZm9udC1mYW1pbHk6ICJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cbiAgLmV4Y2x1ZGUtcmFuZ2Uge1xuICAgIGZpbGw6ICcuY29uY2F0KHQuZXhjbHVkZUJrZ0NvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvbiB7XG4gICAgc3Ryb2tlOiBub25lO1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgfVxuXG4gIC5zZWN0aW9uMCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQuc2VjdGlvbkJrZ0NvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvbjIge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnNlY3Rpb25Ca2dDb2xvcjIsIjtcbiAgfVxuXG4gIC5zZWN0aW9uMSxcbiAgLnNlY3Rpb24zIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hbHRTZWN0aW9uQmtnQ29sb3IsIjtcbiAgICBvcGFjaXR5OiAwLjI7XG4gIH1cblxuICAuc2VjdGlvblRpdGxlMCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG5cbiAgLnNlY3Rpb25UaXRsZTEge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRpdGxlQ29sb3IsIjtcbiAgfVxuXG4gIC5zZWN0aW9uVGl0bGUyIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICAuc2VjdGlvblRpdGxlMyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGl0bGVDb2xvciwiO1xuICB9XG5cbiAgLnNlY3Rpb25UaXRsZSB7XG4gICAgdGV4dC1hbmNob3I6IHN0YXJ0O1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICAgIC8vIHRleHQtaGVpZ2h0OiAxNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuXG4gIH1cblxuXG4gIC8qIEdyaWQgYW5kIGF4aXMgKi9cblxuICAuZ3JpZCAudGljayB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ncmlkQ29sb3IsIjtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzO1xuICAgIHRleHQge1xuICAgICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiO1xuICAgIH1cbiAgfVxuXG4gIC5ncmlkIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMDtcbiAgfVxuXG5cbiAgLyogVG9kYXkgbGluZSAqL1xuXG4gIC50b2RheSB7XG4gICAgZmlsbDogbm9uZTtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRvZGF5TGluZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cblxuXG4gIC8qIFRhc2sgc3R5bGluZyAqL1xuXG4gIC8qIERlZmF1bHQgdGFzayAqL1xuXG4gIC50YXNrIHtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAudGFza1RleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cblxuICAvLyAudGFza1RleHQ6bm90KFtmb250LXNpemVdKSB7XG4gIC8vICAgZm9udC1zaXplOiAiKS5jb25jYXQodC5nYW50dEZvbnRTaXplLCI7XG4gIC8vIH1cblxuICAudGFza1RleHRPdXRzaWRlUmlnaHQge1xuICAgIGZpbGw6ICIpLmNvbmNhdCh0LnRhc2tUZXh0RGFya0NvbG9yLCI7XG4gICAgdGV4dC1hbmNob3I6IHN0YXJ0O1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuXG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlTGVmdCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHREYXJrQ29sb3IsIjtcbiAgICB0ZXh0LWFuY2hvcjogZW5kO1xuICAgIC8vIGZvbnQtc2l6ZTogIikuY29uY2F0KHQuZ2FudHRGb250U2l6ZSwiO1xuICB9XG5cbiAgLyogU3BlY2lhbCBjYXNlIGNsaWNrYWJsZSAqL1xuICAudGFzay5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAudGFza1RleHQuY2xpY2thYmxlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHRDbGlja2FibGVDb2xvciwiICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlTGVmdC5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dENsaWNrYWJsZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC50YXNrVGV4dE91dHNpZGVSaWdodC5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dENsaWNrYWJsZUNvbG9yLCIgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC8qIFNwZWNpZmljIHRhc2sgc2V0dGluZ3MgZm9yIHRoZSBzZWN0aW9ucyovXG5cbiAgLnRhc2tUZXh0MCxcbiAgLnRhc2tUZXh0MSxcbiAgLnRhc2tUZXh0MixcbiAgLnRhc2tUZXh0MyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHRDb2xvciwiO1xuICB9XG5cbiAgLnRhc2swLFxuICAudGFzazEsXG4gIC50YXNrMixcbiAgLnRhc2szIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRhc2tCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLnRhc2tUZXh0T3V0c2lkZTAsXG4gIC50YXNrVGV4dE91dHNpZGUyXG4gIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dE91dHNpZGVDb2xvciwiO1xuICB9XG5cbiAgLnRhc2tUZXh0T3V0c2lkZTEsXG4gIC50YXNrVGV4dE91dHNpZGUzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dE91dHNpZGVDb2xvciwiO1xuICB9XG5cblxuICAvKiBBY3RpdmUgdGFzayAqL1xuXG4gIC5hY3RpdmUwLFxuICAuYWN0aXZlMSxcbiAgLmFjdGl2ZTIsXG4gIC5hY3RpdmUzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hY3RpdmVUYXNrQmtnQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmFjdGl2ZVRhc2tCb3JkZXJDb2xvciwiO1xuICB9XG5cbiAgLmFjdGl2ZVRleHQwLFxuICAuYWN0aXZlVGV4dDEsXG4gIC5hY3RpdmVUZXh0MixcbiAgLmFjdGl2ZVRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuXG4gIC8qIENvbXBsZXRlZCB0YXNrICovXG5cbiAgLmRvbmUwLFxuICAuZG9uZTEsXG4gIC5kb25lMixcbiAgLmRvbmUzIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmRvbmVUYXNrQm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5kb25lVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICB9XG5cbiAgLmRvbmVUZXh0MCxcbiAgLmRvbmVUZXh0MSxcbiAgLmRvbmVUZXh0MixcbiAgLmRvbmVUZXh0MyB7XG4gICAgZmlsbDogIikuY29uY2F0KHQudGFza1RleHREYXJrQ29sb3IsIiAhaW1wb3J0YW50O1xuICB9XG5cblxuICAvKiBUYXNrcyBvbiB0aGUgY3JpdGljYWwgbGluZSAqL1xuXG4gIC5jcml0MCxcbiAgLmNyaXQxLFxuICAuY3JpdDIsXG4gIC5jcml0MyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jcml0Qm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5jcml0QmtnQ29sb3IsIjtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAuYWN0aXZlQ3JpdDAsXG4gIC5hY3RpdmVDcml0MSxcbiAgLmFjdGl2ZUNyaXQyLFxuICAuYWN0aXZlQ3JpdDMge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQuY3JpdEJvcmRlckNvbG9yLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQuYWN0aXZlVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICB9XG5cbiAgLmRvbmVDcml0MCxcbiAgLmRvbmVDcml0MSxcbiAgLmRvbmVDcml0MixcbiAgLmRvbmVDcml0MyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5jcml0Qm9yZGVyQ29sb3IsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5kb25lVGFza0JrZ0NvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7XG4gIH1cblxuICAubWlsZXN0b25lIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgc2NhbGUoMC44LDAuOCk7XG4gIH1cblxuICAubWlsZXN0b25lVGV4dCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICB9XG4gIC5kb25lQ3JpdFRleHQwLFxuICAuZG9uZUNyaXRUZXh0MSxcbiAgLmRvbmVDcml0VGV4dDIsXG4gIC5kb25lQ3JpdFRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuYWN0aXZlQ3JpdFRleHQwLFxuICAuYWN0aXZlQ3JpdFRleHQxLFxuICAuYWN0aXZlQ3JpdFRleHQyLFxuICAuYWN0aXZlQ3JpdFRleHQzIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50YXNrVGV4dERhcmtDb2xvciwiICFpbXBvcnRhbnQ7XG4gIH1cblxuICAudGl0bGVUZXh0IHtcbiAgICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXh0Q29sb3IsIiAgICA7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cbiIpfSxjbGFzc0RpYWdyYW06S0UsImNsYXNzRGlhZ3JhbS12MiI6S0UsY2xhc3M6S0Usc3RhdGVEaWFncmFtOnRDLHN0YXRlOnRDLGdpdDpmdW5jdGlvbigpe3JldHVybiJcbiAgLmNvbW1pdC1pZCxcbiAgLmNvbW1pdC1tc2csXG4gIC5icmFuY2gtbGFiZWwge1xuICAgIGZpbGw6IGxpZ2h0Z3JleTtcbiAgICBjb2xvcjogbGlnaHRncmV5O1xuICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuICB9XG4ifSxpbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHBpZTpmdW5jdGlvbih0KXtyZXR1cm4iXG4gIC5waWVDaXJjbGV7XG4gICAgc3Ryb2tlOiAiLmNvbmNhdCh0LnBpZVN0cm9rZUNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoIDogIikuY29uY2F0KHQucGllU3Ryb2tlV2lkdGgsIjtcbiAgICBvcGFjaXR5IDogIikuY29uY2F0KHQucGllT3BhY2l0eSwiO1xuICB9XG4gIC5waWVUaXRsZVRleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1zaXplOiAiKS5jb25jYXQodC5waWVUaXRsZVRleHRTaXplLCI7XG4gICAgZmlsbDogIikuY29uY2F0KHQucGllVGl0bGVUZXh0Q29sb3IsIjtcbiAgICBmb250LWZhbWlseTogIikuY29uY2F0KHQuZm9udEZhbWlseSwiO1xuICB9XG4gIC5zbGljZSB7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5waWVTZWN0aW9uVGV4dENvbG9yLCI7XG4gICAgZm9udC1zaXplOiIpLmNvbmNhdCh0LnBpZVNlY3Rpb25UZXh0U2l6ZSwiO1xuICAgIC8vIGZpbGw6IHdoaXRlO1xuICB9XG4gIC5sZWdlbmQgdGV4dCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQucGllTGVnZW5kVGV4dENvbG9yLCI7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdCh0LnBpZUxlZ2VuZFRleHRTaXplLCI7XG4gIH1cbiIpfSxlcjpmdW5jdGlvbih0KXtyZXR1cm4iXG4gIC5lbnRpdHlCb3gge1xuICAgIGZpbGw6ICIuY29uY2F0KHQubWFpbkJrZywiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICB9XG5cbiAgLmF0dHJpYnV0ZUJveE9kZCB7XG4gICAgZmlsbDogI2ZmZmZmZjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0Lm5vZGVCb3JkZXIsIjtcbiAgfVxuXG4gIC5hdHRyaWJ1dGVCb3hFdmVuIHtcbiAgICBmaWxsOiAjZjJmMmYyO1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubm9kZUJvcmRlciwiO1xuICB9XG5cbiAgLnJlbGF0aW9uc2hpcExhYmVsQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXJ0aWFyeUNvbG9yLCI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICIpLmNvbmNhdCh0LnRlcnRpYXJ5Q29sb3IsIjtcbiAgICAgIHJlY3Qge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gIH1cblxuICAgIC5yZWxhdGlvbnNoaXBMaW5lIHtcbiAgICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgfVxuIil9LGpvdXJuZXk6ZnVuY3Rpb24odCl7cmV0dXJuIi5sYWJlbCB7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gICAgY29sb3I6ICIuY29uY2F0KHQudGV4dENvbG9yLCI7XG4gIH1cbiAgLm1vdXRoIHtcbiAgICBzdHJva2U6ICM2NjY7XG4gIH1cblxuICBsaW5lIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiXG4gIH1cblxuICAubGVnZW5kIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50ZXh0Q29sb3IsIjtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0IHtcbiAgICBmaWxsOiAjMzMzO1xuICB9XG4gIC5sYWJlbCB7XG4gICAgY29sb3I6ICIpLmNvbmNhdCh0LnRleHRDb2xvciwiXG4gIH1cblxuICAuZmFjZSB7XG4gICAgIikuY29uY2F0KHQuZmFjZUNvbG9yPyJmaWxsOiAiLmNvbmNhdCh0LmZhY2VDb2xvcik6ImZpbGw6ICNGRkY4REMiLCI7XG4gICAgc3Ryb2tlOiAjOTk5O1xuICB9XG5cbiAgLm5vZGUgcmVjdCxcbiAgLm5vZGUgY2lyY2xlLFxuICAubm9kZSBlbGxpcHNlLFxuICAubm9kZSBwb2x5Z29uLFxuICAubm9kZSBwYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5tYWluQmtnLCI7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5ub2RlQm9yZGVyLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuICAubm9kZSAubGFiZWwge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAubm9kZS5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5hcnJvd2hlYWRQYXRoIHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5hcnJvd2hlYWRDb2xvciwiO1xuICB9XG5cbiAgLmVkZ2VQYXRoIC5wYXRoIHtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LmxpbmVDb2xvciwiO1xuICAgIHN0cm9rZS13aWR0aDogMS41cHg7XG4gIH1cblxuICAuZmxvd2NoYXJ0LWxpbmsge1xuICAgIHN0cm9rZTogIikuY29uY2F0KHQubGluZUNvbG9yLCI7XG4gICAgZmlsbDogbm9uZTtcbiAgfVxuXG4gIC5lZGdlTGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICIpLmNvbmNhdCh0LmVkZ2VMYWJlbEJhY2tncm91bmQsIjtcbiAgICByZWN0IHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmNsdXN0ZXIgcmVjdCB7XG4gIH1cblxuICAuY2x1c3RlciB0ZXh0IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC50aXRsZUNvbG9yLCI7XG4gIH1cblxuICBkaXYubWVybWFpZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6ICIpLmNvbmNhdCh0LnRlcnRpYXJ5Q29sb3IsIjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAiKS5jb25jYXQodC5ib3JkZXIyLCI7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxuXG4gIC50YXNrLXR5cGUtMCwgLnNlY3Rpb24tdHlwZS0wICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlMCk6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTEsIC5zZWN0aW9uLXR5cGUtMSAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTEpOiIiLCI7XG4gIH1cbiAgLnRhc2stdHlwZS0yLCAuc2VjdGlvbi10eXBlLTIgIHtcbiAgICAiKS5jb25jYXQodC5maWxsVHlwZTA/ImZpbGw6ICIuY29uY2F0KHQuZmlsbFR5cGUyKToiIiwiO1xuICB9XG4gIC50YXNrLXR5cGUtMywgLnNlY3Rpb24tdHlwZS0zICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlMyk6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTQsIC5zZWN0aW9uLXR5cGUtNCAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTQpOiIiLCI7XG4gIH1cbiAgLnRhc2stdHlwZS01LCAuc2VjdGlvbi10eXBlLTUgIHtcbiAgICAiKS5jb25jYXQodC5maWxsVHlwZTA/ImZpbGw6ICIuY29uY2F0KHQuZmlsbFR5cGU1KToiIiwiO1xuICB9XG4gIC50YXNrLXR5cGUtNiwgLnNlY3Rpb24tdHlwZS02ICB7XG4gICAgIikuY29uY2F0KHQuZmlsbFR5cGUwPyJmaWxsOiAiLmNvbmNhdCh0LmZpbGxUeXBlNik6IiIsIjtcbiAgfVxuICAudGFzay10eXBlLTcsIC5zZWN0aW9uLXR5cGUtNyAge1xuICAgICIpLmNvbmNhdCh0LmZpbGxUeXBlMD8iZmlsbDogIi5jb25jYXQodC5maWxsVHlwZTcpOiIiLCI7XG4gIH1cblxuICAuYWN0b3ItMCB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IwPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMCk6IiIsIjtcbiAgfVxuICAuYWN0b3ItMSB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IxPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMSk6IiIsIjtcbiAgfVxuICAuYWN0b3ItMiB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IyPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMik6IiIsIjtcbiAgfVxuICAuYWN0b3ItMyB7XG4gICAgIikuY29uY2F0KHQuYWN0b3IzPyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yMyk6IiIsIjtcbiAgfVxuICAuYWN0b3ItNCB7XG4gICAgIikuY29uY2F0KHQuYWN0b3I0PyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yNCk6IiIsIjtcbiAgfVxuICAuYWN0b3ItNSB7XG4gICAgIikuY29uY2F0KHQuYWN0b3I1PyJmaWxsOiAiLmNvbmNhdCh0LmFjdG9yNSk6IiIsIjtcbiAgfVxuXG4gIH1cbiIpfSxyZXF1aXJlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4iXG5cbiAgbWFya2VyIHtcbiAgICBmaWxsOiAiLmNvbmNhdCh0LnJlbGF0aW9uQ29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdCh0LnJlbGF0aW9uQ29sb3IsIjtcbiAgfVxuXG4gIG1hcmtlci5jcm9zcyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5saW5lQ29sb3IsIjtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdCh0LmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdCh0LmZvbnRTaXplLCI7XG4gIH1cblxuICAucmVxQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJhY2tncm91bmQsIjtcbiAgICBmaWxsLW9wYWNpdHk6IDEwMCU7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlckNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlclNpemUsIjtcbiAgfVxuICBcbiAgLnJlcVRpdGxlLCAucmVxTGFiZWx7XG4gICAgZmlsbDogICIpLmNvbmNhdCh0LnJlcXVpcmVtZW50VGV4dENvbG9yLCI7XG4gIH1cbiAgLnJlcUxhYmVsQm94IHtcbiAgICBmaWxsOiAiKS5jb25jYXQodC5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZCwiO1xuICAgIGZpbGwtb3BhY2l0eTogMTAwJTtcbiAgfVxuXG4gIC5yZXEtdGl0bGUtbGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlckNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAiKS5jb25jYXQodC5yZXF1aXJlbWVudEJvcmRlclNpemUsIjtcbiAgfVxuICAucmVsYXRpb25zaGlwTGluZSB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQodC5yZWxhdGlvbkNvbG9yLCI7XG4gICAgc3Ryb2tlLXdpZHRoOiAxO1xuICB9XG4gIC5yZWxhdGlvbnNoaXBMYWJlbCB7XG4gICAgZmlsbDogIikuY29uY2F0KHQucmVsYXRpb25MYWJlbENvbG9yLCI7XG4gIH1cblxuIil9fTtmdW5jdGlvbiBuQyh0KXtyZXR1cm4gbkM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG5DKHQpfXZhciByQz1mdW5jdGlvbih0KXt2YXIgZT10O3JldHVybihlPShlPWUucmVwbGFjZSgv76yCwrDCsC9nLChmdW5jdGlvbigpe3JldHVybiImIyJ9KSkpLnJlcGxhY2UoL++sgsKwL2csKGZ1bmN0aW9uKCl7cmV0dXJuIiYifSkpKS5yZXBsYWNlKC/CtsOfL2csKGZ1bmN0aW9uKCl7cmV0dXJuIjsifSkpfSxpQz17fTtmdW5jdGlvbiBhQyh0KXt2YXIgZTtYdyh0LmdpdCksUngodC5mbG93Y2hhcnQpLGp4KHQuZmxvd2NoYXJ0KSx2b2lkIDAhPT10LnNlcXVlbmNlRGlhZ3JhbSYmcVQuc2V0Q29uZihMdih0LnNlcXVlbmNlLHQuc2VxdWVuY2VEaWFncmFtKSkscVQuc2V0Q29uZih0LnNlcXVlbmNlKSx0LmdhbnR0LEZiKHQuY2xhc3MpLHQuc3RhdGUsa0UodC5zdGF0ZSksbmsodC5jbGFzcyksel8odC5lciksWEUodC5qb3VybmV5KSxBayh0LnJlcXVpcmVtZW50KSxlPXQuY2xhc3MsT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7UUVbdF09ZVt0XX0pKX12YXIgb0M9T2JqZWN0LmZyZWV6ZSh7cmVuZGVyOmZ1bmN0aW9uKHQsZSxuLHIpe25iKCk7dmFyIGk9ZSxhPUh2LmRldGVjdEluaXQoaSk7YSYmKFV2KGEpLGViKGEpKTt2YXIgcz1KdigpO2lmKGUubGVuZ3RoPnMubWF4VGV4dFNpemUmJihpPSJncmFwaCBUQjthW01heGltdW0gdGV4dCBzaXplIGluIGRpYWdyYW0gZXhjZWVkZWRdO3N0eWxlIGEgZmlsbDojZmFhIiksdm9pZCAwIT09cilyLmlubmVySFRNTD0iIixhdShyKS5hcHBlbmQoImRpdiIpLmF0dHIoImlkIiwiZCIrdCkuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitzLmZvbnRGYW1pbHkpLmFwcGVuZCgic3ZnIikuYXR0cigiaWQiLHQpLmF0dHIoIndpZHRoIiwiMTAwJSIpLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKS5hcHBlbmQoImciKTtlbHNle3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO2MmJmMucmVtb3ZlKCk7dmFyIHU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2QiK3QpO3UmJnUucmVtb3ZlKCksYXUoImJvZHkiKS5hcHBlbmQoImRpdiIpLmF0dHIoImlkIiwiZCIrdCkuYXBwZW5kKCJzdmciKS5hdHRyKCJpZCIsdCkuYXR0cigid2lkdGgiLCIxMDAlIikuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIpLmFwcGVuZCgiZyIpfXdpbmRvdy50eHQ9aSxpPWkucmVwbGFjZSgvc3R5bGUuKjpcUyojLio7L2csKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnN0cmluZygwLHQubGVuZ3RoLTEpfSkpLnJlcGxhY2UoL2NsYXNzRGVmLio6XFMqIy4qOy9nLChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0xKX0pKS5yZXBsYWNlKC8jXHcrOy9nLChmdW5jdGlvbih0KXt2YXIgZT10LnN1YnN0cmluZygxLHQubGVuZ3RoLTEpO3JldHVybi9eXCs/XGQrJC8udGVzdChlKT8i76yCwrDCsCIrZSsiwrbDnyI6Iu+sgsKwIitlKyLCtsOfIn0pKTt2YXIgbD1hdSgiI2QiK3QpLm5vZGUoKSxoPUh2LmRldGVjdFR5cGUoaSxzKSxmPWwuZmlyc3RDaGlsZCxkPWYuZmlyc3RDaGlsZCxwPSIiO2lmKHZvaWQgMCE9PXMudGhlbWVDU1MmJihwKz0iXG4iLmNvbmNhdChzLnRoZW1lQ1NTKSksdm9pZCAwIT09cy5mb250RmFtaWx5JiYocCs9IlxuOnJvb3QgeyAtLW1lcm1haWQtZm9udC1mYW1pbHk6ICIuY29uY2F0KHMuZm9udEZhbWlseSwifSIpKSx2b2lkIDAhPT1zLmFsdEZvbnRGYW1pbHkmJihwKz0iXG46cm9vdCB7IC0tbWVybWFpZC1hbHQtZm9udC1mYW1pbHk6ICIuY29uY2F0KHMuYWx0Rm9udEZhbWlseSwifSIpKSwiZmxvd2NoYXJ0Ij09PWh8fCJmbG93Y2hhcnQtdjIiPT09aHx8ImdyYXBoIj09PWgpe3ZhciB5PWZ1bmN0aW9uKHQpe28uaW5mbygiRXh0cmFjdGluZyBjbGFzc2VzIikseXguY2xlYXIoKTt0cnl7dmFyIGU9bXgoKS5wYXJzZXI7cmV0dXJuIGUueXk9eXgsZS5wYXJzZSh0KSx5eC5nZXRDbGFzc2VzKCl9Y2F0Y2godCl7cmV0dXJufX0oaSksZz1zLmh0bWxMYWJlbHN8fHMuZmxvd2NoYXJ0Lmh0bWxMYWJlbHM7Zm9yKHZhciBtIGluIHkpZz8ocCs9IlxuLiIuY29uY2F0KG0sIiA+ICogeyAiKS5jb25jYXQoeVttXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpLHArPSJcbi4iLmNvbmNhdChtLCIgc3BhbiB7ICIpLmNvbmNhdCh5W21dLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIiksIiAhaW1wb3J0YW50OyB9IikpOihwKz0iXG4uIi5jb25jYXQobSwiIHBhdGggeyAiKS5jb25jYXQoeVttXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpLHArPSJcbi4iLmNvbmNhdChtLCIgcmVjdCB7ICIpLmNvbmNhdCh5W21dLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIiksIiAhaW1wb3J0YW50OyB9IikscCs9IlxuLiIuY29uY2F0KG0sIiBwb2x5Z29uIHsgIikuY29uY2F0KHlbbV0uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKSwiICFpbXBvcnRhbnQ7IH0iKSxwKz0iXG4uIi5jb25jYXQobSwiIGVsbGlwc2UgeyAiKS5jb25jYXQoeVttXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpLCIgIWltcG9ydGFudDsgfSIpLHArPSJcbi4iLmNvbmNhdChtLCIgY2lyY2xlIHsgIikuY29uY2F0KHlbbV0uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKSwiICFpbXBvcnRhbnQ7IH0iKSx5W21dLnRleHRTdHlsZXMmJihwKz0iXG4uIi5jb25jYXQobSwiIHRzcGFuIHsgIikuY29uY2F0KHlbbV0udGV4dFN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIiksIiAhaW1wb3J0YW50OyB9IikpKX12YXIgdj1mdW5jdGlvbih0LGUpe3JldHVybiBhbShDbSgiIi5jb25jYXQodCwieyIpLmNvbmNhdChlLCJ9IikpLG9tKX0oIiMiLmNvbmNhdCh0KSxmdW5jdGlvbih0LGUsbil7cmV0dXJuIiB7XG4gICAgZm9udC1mYW1pbHk6ICIuY29uY2F0KG4uZm9udEZhbWlseSwiO1xuICAgIGZvbnQtc2l6ZTogIikuY29uY2F0KG4uZm9udFNpemUsIjtcbiAgICBmaWxsOiAiKS5jb25jYXQobi50ZXh0Q29sb3IsIlxuICB9XG5cbiAgLyogQ2xhc3NlcyBjb21tb24gZm9yIG11bHRpcGxlIGRpYWdyYW1zICovXG5cbiAgLmVycm9yLWljb24ge1xuICAgIGZpbGw6ICIpLmNvbmNhdChuLmVycm9yQmtnQ29sb3IsIjtcbiAgfVxuICAuZXJyb3ItdGV4dCB7XG4gICAgZmlsbDogIikuY29uY2F0KG4uZXJyb3JUZXh0Q29sb3IsIjtcbiAgICBzdHJva2U6ICIpLmNvbmNhdChuLmVycm9yVGV4dENvbG9yLCI7XG4gIH1cblxuICAuZWRnZS10aGlja25lc3Mtbm9ybWFsIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICAuZWRnZS10aGlja25lc3MtdGhpY2sge1xuICAgIHN0cm9rZS13aWR0aDogMy41cHhcbiAgfVxuICAuZWRnZS1wYXR0ZXJuLXNvbGlkIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwO1xuICB9XG5cbiAgLmVkZ2UtcGF0dGVybi1kYXNoZWR7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMztcbiAgfVxuICAuZWRnZS1wYXR0ZXJuLWRvdHRlZCB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMjtcbiAgfVxuXG4gIC5tYXJrZXIge1xuICAgIGZpbGw6ICIpLmNvbmNhdChuLmxpbmVDb2xvciwiO1xuICAgIHN0cm9rZTogIikuY29uY2F0KG4ubGluZUNvbG9yLCI7XG4gIH1cbiAgLm1hcmtlci5jcm9zcyB7XG4gICAgc3Ryb2tlOiAiKS5jb25jYXQobi5saW5lQ29sb3IsIjtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgZm9udC1mYW1pbHk6ICIpLmNvbmNhdChuLmZvbnRGYW1pbHksIjtcbiAgICBmb250LXNpemU6ICIpLmNvbmNhdChuLmZvbnRTaXplLCI7XG4gIH1cblxuICAiKS5jb25jYXQoZUNbdF0obiksIlxuXG4gICIpLmNvbmNhdChlLCJcbiIpfShoLHAscy50aGVtZVZhcmlhYmxlcykpLGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtiLmlubmVySFRNTD0iIyIuY29uY2F0KHQsIiAiKSt2LGYuaW5zZXJ0QmVmb3JlKGIsZCk7dHJ5e3N3aXRjaChoKXtjYXNlImdpdCI6cy5mbG93Y2hhcnQuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUsWHcocy5naXQpLGZ1bmN0aW9uKHQsZSxuKXt0cnl7dmFyIHI9ancoKS5wYXJzZXI7ci55eT1SdyxyLnl5LmNsZWFyKCksby5kZWJ1ZygiaW4gZ2l0Z3JhcGggcmVuZGVyZXIiLHQrIlxuIiwiaWQ6IixlLG4pLHIucGFyc2UodCsiXG4iKSx6dz1PYmplY3QuYXNzaWduKHp3LFV3LFJ3LmdldE9wdGlvbnMoKSksby5kZWJ1ZygiZWZmZWN0aXZlIG9wdGlvbnMiLHp3KTt2YXIgaT1Sdy5nZXREaXJlY3Rpb24oKTtZdz1Sdy5nZXRDb21taXRzKCk7dmFyIGE9UncuZ2V0QnJhbmNoZXNBc09iakFycmF5KCk7IkJUIj09PWkmJih6dy5ub2RlTGFiZWwueD1hLmxlbmd0aCp6dy5icmFuY2hPZmZzZXQsencubm9kZUxhYmVsLndpZHRoPSIxMDAlIix6dy5ub2RlTGFiZWwueT0tMip6dy5ub2RlUmFkaXVzKTt2YXIgcz1hdSgnW2lkPSInLmNvbmNhdChlLCciXScpKTtmb3IodmFyIGMgaW4gZnVuY3Rpb24odCl7dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoImciKS5hdHRyKCJpZCIsImRlZi1jb21taXQiKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLHp3Lm5vZGVSYWRpdXMpLmF0dHIoImN4IiwwKS5hdHRyKCJjeSIsMCksdC5zZWxlY3QoIiNkZWYtY29tbWl0IikuYXBwZW5kKCJmb3JlaWduT2JqZWN0IikuYXR0cigid2lkdGgiLHp3Lm5vZGVMYWJlbC53aWR0aCkuYXR0cigiaGVpZ2h0Iix6dy5ub2RlTGFiZWwuaGVpZ2h0KS5hdHRyKCJ4Iix6dy5ub2RlTGFiZWwueCkuYXR0cigieSIsencubm9kZUxhYmVsLnkpLmF0dHIoImNsYXNzIiwibm9kZS1sYWJlbCIpLmF0dHIoInJlcXVpcmVkRmVhdHVyZXMiLCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiKS5hcHBlbmQoInAiKS5odG1sKCIiKX0ocyksRnc9MSxhKXt2YXIgdT1hW2NdO1Z3KHMsdS5jb21taXQuaWQsYSxpKSxHdyhzLHUuY29tbWl0LGkpLEZ3Kyt9cy5hdHRyKCJoZWlnaHQiLChmdW5jdGlvbigpe3JldHVybiJCVCI9PT1pP09iamVjdC5rZXlzKFl3KS5sZW5ndGgqencubm9kZVNwYWNpbmc6KGEubGVuZ3RoKzEpKnp3LmJyYW5jaE9mZnNldH0pKX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgZ2l0Z3JhcGgiKSxvLmVycm9yKHQubWVzc2FnZSl9fShpLHQsITEpO2JyZWFrO2Nhc2UiZmxvd2NoYXJ0IjpzLmZsb3djaGFydC5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxSeChzLmZsb3djaGFydCksRngoaSx0KTticmVhaztjYXNlImZsb3djaGFydC12MiI6cy5mbG93Y2hhcnQuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUsangocy5mbG93Y2hhcnQpLFl4KGksdCk7YnJlYWs7Y2FzZSJzZXF1ZW5jZSI6cy5zZXF1ZW5jZS5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxzLnNlcXVlbmNlRGlhZ3JhbT8ocVQuc2V0Q29uZihPYmplY3QuYXNzaWduKHMuc2VxdWVuY2Uscy5zZXF1ZW5jZURpYWdyYW0pKSxjb25zb2xlLmVycm9yKCJgbWVybWFpZCBjb25maWcuc2VxdWVuY2VEaWFncmFtYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBjb25maWcuc2VxdWVuY2VgLiBQbGVhc2UgdXBkYXRlIHlvdXIgbWVybWFpZCBjb25maWcuIikpOnFULnNldENvbmYocy5zZXF1ZW5jZSkscVQuZHJhdyhpLHQpO2JyZWFrO2Nhc2UiZ2FudHQiOnMuZ2FudHQuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUscy5nYW50dCxrdyhpLHQpO2JyZWFrO2Nhc2UiY2xhc3MiOnMuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT1zLmFycm93TWFya2VyQWJzb2x1dGUsRmIocy5jbGFzcyksUGIoaSx0KTticmVhaztjYXNlImNsYXNzRGlhZ3JhbSI6cy5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxmdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXtTX1tlXT10W2VdfSkpfShzLmNsYXNzKSxmdW5jdGlvbih0LGUpe28uaW5mbygiRHJhd2luZyBjbGFzcyIpLHZiLmNsZWFyKCksa2IucGFyc2VyLnBhcnNlKHQpO3ZhciBuPUp2KCkuZmxvd2NoYXJ0O28uaW5mbygiY29uZmlnOiIsbik7dmFyIHI9bi5ub2RlU3BhY2luZ3x8NTAsaT1uLnJhbmtTcGFjaW5nfHw1MCxhPW5ldyh3YigpLkdyYXBoKSh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOnZiLmdldERpcmVjdGlvbigpLG5vZGVzZXA6cixyYW5rc2VwOmksbWFyZ2lueDo4LG1hcmdpbnk6OH0pLnNldERlZmF1bHRFZGdlTGFiZWwoKGZ1bmN0aW9uKCl7cmV0dXJue319KSkscz12Yi5nZXRDbGFzc2VzKCksYz12Yi5nZXRSZWxhdGlvbnMoKTtvLmluZm8oYyksZnVuY3Rpb24odCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtvLmluZm8oImtleXM6IixuKSxvLmluZm8odCksbi5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj10W25dLGk9IiI7ci5jc3NDbGFzc2VzLmxlbmd0aD4wJiYoaT1pKyIgIityLmNzc0NsYXNzZXMuam9pbigiICIpKTt2YXIgYSxzPXtsYWJlbFN0eWxlOiIifSxjPXZvaWQgMCE9PXIudGV4dD9yLnRleHQ6ci5pZDtyLnR5cGUsYT0iY2xhc3NfYm94IixlLnNldE5vZGUoci5pZCx7bGFiZWxTdHlsZTpzLmxhYmVsU3R5bGUsc2hhcGU6YSxsYWJlbFRleHQ6YyxjbGFzc0RhdGE6cixyeDowLHJ5OjAsY2xhc3M6aSxzdHlsZTpzLnN0eWxlLGlkOnIuaWQsZG9tSWQ6ci5kb21JZCxoYXZlQ2FsbGJhY2s6ci5oYXZlQ2FsbGJhY2ssbGluazpyLmxpbmssd2lkdGg6Imdyb3VwIj09PXIudHlwZT81MDA6dm9pZCAwLHR5cGU6ci50eXBlLHBhZGRpbmc6SnYoKS5mbG93Y2hhcnQucGFkZGluZ30pLG8uaW5mbygic2V0Tm9kZSIse2xhYmVsU3R5bGU6cy5sYWJlbFN0eWxlLHNoYXBlOmEsbGFiZWxUZXh0OmMscng6MCxyeTowLGNsYXNzOmksc3R5bGU6cy5zdHlsZSxpZDpyLmlkLHdpZHRoOiJncm91cCI9PT1yLnR5cGU/NTAwOnZvaWQgMCx0eXBlOnIudHlwZSxwYWRkaW5nOkp2KCkuZmxvd2NoYXJ0LnBhZGRpbmd9KX0pKX0ocyxhKSxmdW5jdGlvbih0LGUpe3ZhciBuPTA7dC5mb3JFYWNoKChmdW5jdGlvbihyKXtuKys7dmFyIGk9e2NsYXNzZXM6InJlbGF0aW9uIn07aS5wYXR0ZXJuPTE9PXIucmVsYXRpb24ubGluZVR5cGU/ImRhc2hlZCI6InNvbGlkIixpLmlkPSJpZCIrbiwiYXJyb3dfb3BlbiI9PT1yLnR5cGU/aS5hcnJvd2hlYWQ9Im5vbmUiOmkuYXJyb3doZWFkPSJub3JtYWwiLG8uaW5mbyhpLHIpLGkuc3RhcnRMYWJlbFJpZ2h0PSJub25lIj09PXIucmVsYXRpb25UaXRsZTE/IiI6ci5yZWxhdGlvblRpdGxlMSxpLmVuZExhYmVsTGVmdD0ibm9uZSI9PT1yLnJlbGF0aW9uVGl0bGUyPyIiOnIucmVsYXRpb25UaXRsZTIsaS5hcnJvd1R5cGVTdGFydD1BXyhyLnJlbGF0aW9uLnR5cGUxKSxpLmFycm93VHlwZUVuZD1BXyhyLnJlbGF0aW9uLnR5cGUyKTt2YXIgYT0iIixzPSIiO2lmKHZvaWQgMCE9PXIuc3R5bGUpe3ZhciBjPU52KHIuc3R5bGUpO2E9Yy5zdHlsZSxzPWMubGFiZWxTdHlsZX1lbHNlIGE9ImZpbGw6bm9uZSI7aS5zdHlsZT1hLGkubGFiZWxTdHlsZT1zLHZvaWQgMCE9PXIuaW50ZXJwb2xhdGU/aS5jdXJ2ZT1BdihyLmludGVycG9sYXRlLFB1KTp2b2lkIDAhPT10LmRlZmF1bHRJbnRlcnBvbGF0ZT9pLmN1cnZlPUF2KHQuZGVmYXVsdEludGVycG9sYXRlLFB1KTppLmN1cnZlPUF2KFNfLmN1cnZlLFB1KSxyLnRleHQ9ci50aXRsZSx2b2lkIDA9PT1yLnRleHQ/dm9pZCAwIT09ci5zdHlsZSYmKGkuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiKTooaS5hcnJvd2hlYWRTdHlsZT0iZmlsbDogIzMzMyIsaS5sYWJlbHBvcz0iYyIsSnYoKS5mbG93Y2hhcnQuaHRtbExhYmVscz8oaS5sYWJlbFR5cGU9Imh0bWwiLGkubGFiZWw9JzxzcGFuIGNsYXNzPSJlZGdlTGFiZWwiPicrci50ZXh0KyI8L3NwYW4+Iik6KGkubGFiZWxUeXBlPSJ0ZXh0IixpLmxhYmVsPXIudGV4dC5yZXBsYWNlKFVtLmxpbmVCcmVha1JlZ2V4LCJcbiIpLHZvaWQgMD09PXIuc3R5bGUmJihpLnN0eWxlPWkuc3R5bGV8fCJzdHJva2U6ICMzMzM7IHN0cm9rZS13aWR0aDogMS41cHg7ZmlsbDpub25lIiksaS5sYWJlbFN0eWxlPWkubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpKSksZS5zZXRFZGdlKHIuaWQxLHIuaWQyLGksbil9KSl9KGMsYSk7dmFyIHU9YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSk7dS5hdHRyKCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKTt2YXIgbD1hdSgiIyIrZSsiIGciKTtDXyhsLGEsWyJhZ2dyZWdhdGlvbiIsImV4dGVuc2lvbiIsImNvbXBvc2l0aW9uIiwiZGVwZW5kZW5jeSJdLCJjbGFzc0RpYWdyYW0iLGUpO3ZhciBoPXUubm9kZSgpLmdldEJCb3goKSxmPWgud2lkdGgrMTYsZD1oLmhlaWdodCsxNjtpZihvLmRlYnVnKCJuZXcgVmlld0JveCAwIDAgIi5jb25jYXQoZiwiICIpLmNvbmNhdChkKSwidHJhbnNsYXRlKCIuY29uY2F0KDgtYS5fbGFiZWwubWFyZ2lueCwiLCAiKS5jb25jYXQoOC1hLl9sYWJlbC5tYXJnaW55LCIpIikpLHp2KHUsZCxmLG4udXNlTWF4V2lkdGgpLHUuYXR0cigidmlld0JveCIsIjAgMCAiLmNvbmNhdChmLCIgIikuY29uY2F0KGQpKSx1LnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiLmNvbmNhdCg4LWEuX2xhYmVsLm1hcmdpbngsIiwgIikuY29uY2F0KDgtaC55LCIpIikpLCFuLmh0bWxMYWJlbHMpZm9yKHZhciBwPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJytlKyciXSAuZWRnZUxhYmVsIC5sYWJlbCcpLHk9MDt5PHAubGVuZ3RoO3krKyl7dmFyIGc9cFt5XSxtPWcuZ2V0QkJveCgpLHY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlY3QiKTt2LnNldEF0dHJpYnV0ZSgicngiLDApLHYuc2V0QXR0cmlidXRlKCJyeSIsMCksdi5zZXRBdHRyaWJ1dGUoIndpZHRoIixtLndpZHRoKSx2LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixtLmhlaWdodCksZy5pbnNlcnRCZWZvcmUodixnLmZpcnN0Q2hpbGQpfX0oaSx0KTticmVhaztjYXNlInN0YXRlIjpzLmNsYXNzLmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLHMuc3RhdGUsZ0UoaSx0KTticmVhaztjYXNlInN0YXRlRGlhZ3JhbSI6cy5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlPXMuYXJyb3dNYXJrZXJBYnNvbHV0ZSxrRShzLnN0YXRlKSxmdW5jdGlvbih0LGUpe28uaW5mbygiRHJhd2luZyBzdGF0ZSBkaWFncmFtICh2MikiLGUpLG9FLmNsZWFyKCksdkU9e307dmFyIG49JFQoKS5wYXJzZXI7bi55eT1vRSxuLnBhcnNlKHQpO3ZhciByPW9FLmdldERpcmVjdGlvbigpO3ZvaWQgMD09PXImJihyPSJMUiIpO3ZhciBpPUp2KCkuc3RhdGUsYT1pLm5vZGVTcGFjaW5nfHw1MCxzPWkucmFua1NwYWNpbmd8fDUwO28uaW5mbyhvRS5nZXRSb290RG9jVjIoKSksb0UuZXh0cmFjdChvRS5nZXRSb290RG9jVjIoKSksby5pbmZvKG9FLmdldFJvb3REb2NWMigpKTt2YXIgYz1uZXcod2IoKS5HcmFwaCkoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KS5zZXRHcmFwaCh7cmFua2Rpcjp3RShvRS5nZXRSb290RG9jVjIoKSksbm9kZXNlcDphLHJhbmtzZXA6cyxtYXJnaW54OjgsbWFyZ2lueTo4fSkuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoZnVuY3Rpb24oKXtyZXR1cm57fX0pKTtiRShjLHZvaWQgMCxvRS5nZXRSb290RG9jVjIoKSwhMCk7dmFyIHU9YXUoJ1tpZD0iJy5jb25jYXQoZSwnIl0nKSksbD1hdSgiIyIrZSsiIGciKTtDXyhsLGMsWyJiYXJiIl0sInN0YXRlZGlhZ3JhbSIsZSk7dmFyIGg9dS5ub2RlKCkuZ2V0QkJveCgpLGY9aC53aWR0aCsxNixkPWguaGVpZ2h0KzE2O3UuYXR0cigiY2xhc3MiLCJzdGF0ZWRpYWdyYW0iKTt2YXIgcD11Lm5vZGUoKS5nZXRCQm94KCk7enYodSxkLDEuNzUqZixpLnVzZU1heFdpZHRoKTt2YXIgeT0iIi5jb25jYXQocC54LTgsIiAiKS5jb25jYXQocC55LTgsIiAiKS5jb25jYXQoZiwiICIpLmNvbmNhdChkKTtvLmRlYnVnKCJ2aWV3Qm94ICIuY29uY2F0KHkpKSx1LmF0dHIoInZpZXdCb3giLHkpO2Zvcih2YXIgZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9IicrZSsnIl0gLmVkZ2VMYWJlbCAubGFiZWwnKSxtPTA7bTxnLmxlbmd0aDttKyspe3ZhciB2PWdbbV0sYj12LmdldEJCb3goKSxfPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWN0Iik7Xy5zZXRBdHRyaWJ1dGUoInJ4IiwwKSxfLnNldEF0dHJpYnV0ZSgicnkiLDApLF8uc2V0QXR0cmlidXRlKCJ3aWR0aCIsYi53aWR0aCksXy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYi5oZWlnaHQpLHYuaW5zZXJ0QmVmb3JlKF8sdi5maXJzdENoaWxkKX19KGksdCk7YnJlYWs7Y2FzZSJpbmZvIjpzLmNsYXNzLmFycm93TWFya2VyQWJzb2x1dGU9cy5hcnJvd01hcmtlckFic29sdXRlLG5rKHMuY2xhc3MpLGZ1bmN0aW9uKHQsZSxuKXt0cnl7dmFyIHI9dGsoKS5wYXJzZXI7ci55eT1LdyxvLmRlYnVnKCJSZW5lcmluZyBpbmZvIGRpYWdyYW1cbiIrdCksci5wYXJzZSh0KSxvLmRlYnVnKCJQYXJzZWQgaW5mbyBkaWFncmFtIik7dmFyIGk9YXUoIiMiK2UpO2kuYXBwZW5kKCJnIikuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMTAwKS5hdHRyKCJ5Iiw0MCkuYXR0cigiY2xhc3MiLCJ2ZXJzaW9uIikuYXR0cigiZm9udC1zaXplIiwiMzJweCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoInYgIituKSxpLmF0dHIoImhlaWdodCIsMTAwKSxpLmF0dHIoIndpZHRoIiw0MDApfWNhdGNoKHQpe28uZXJyb3IoIkVycm9yIHdoaWxlIHJlbmRlcmluZyBpbmZvIGRpYWdyYW0iKSxvLmVycm9yKHQubWVzc2FnZSl9fShpLHQsRG0pO2JyZWFrO2Nhc2UicGllIjpoayhpLHQpO2JyZWFrO2Nhc2UiZXIiOnpfKHMuZXIpLFVfKGksdCk7YnJlYWs7Y2FzZSJqb3VybmV5IjpYRShzLmpvdXJuZXkpLFpFKGksdCk7YnJlYWs7Y2FzZSJyZXF1aXJlbWVudCI6QWsocy5yZXF1aXJlbWVudCksTWsoaSx0KX19Y2F0Y2goZSl7dGhyb3cgZnVuY3Rpb24odCxlKXt0cnl7by5kZWJ1ZygiUmVuZXJpbmcgc3ZnIGZvciBzeW50YXggZXJyb3JcbiIpO3ZhciBuPWF1KCIjIit0KSxyPW4uYXBwZW5kKCJnIik7ci5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImVycm9yLWljb24iKS5hdHRyKCJkIiwibTQxMS4zMTMsMTIzLjMxM2M2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMi05LjM3NSw5LjM3NS0yMC42ODgtMjAuNjg4Yy0xMi40ODQtMTIuNS0zMi43NjYtMTIuNS00NS4yNSwwbC0xNiwxNmMtMS4yNjEsMS4yNjEtMi4zMDQsMi42NDgtMy4zMSw0LjA1MS0yMS43MzktOC41NjEtNDUuMzI0LTEzLjQyNi03MC4wNjUtMTMuNDI2LTEwNS44NjcsMC0xOTIsODYuMTMzLTE5MiwxOTJzODYuMTMzLDE5MiAxOTIsMTkyIDE5Mi04Ni4xMzMgMTkyLTE5MmMwLTI0Ljc0MS00Ljg2NC00OC4zMjctMTMuNDI2LTcwLjA2NSAxLjQwMi0xLjAwNyAyLjc5LTIuMDQ5IDQuMDUxLTMuMzFsMTYtMTZjMTIuNS0xMi40OTIgMTIuNS0zMi43NTggMC00NS4yNWwtMjAuNjg4LTIwLjY4OCA5LjM3NS05LjM3NSAzMi4wMDEtMzEuOTk5em0tMjE5LjMxMywxMDAuNjg3Yy01Mi45MzgsMC05Niw0My4wNjMtOTYsOTYgMCw4LjgzNi03LjE2NCwxNi0xNiwxNnMtMTYtNy4xNjQtMTYtMTZjMC03MC41NzggNTcuNDIyLTEyOCAxMjgtMTI4IDguODM2LDAgMTYsNy4xNjQgMTYsMTZzLTcuMTY0LDE2LTE2LDE2eiIpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00NTkuMDIsMTQ4Ljk4Yy02LjI1LTYuMjUtMTYuMzc1LTYuMjUtMjIuNjI1LDBzLTYuMjUsMTYuMzc1IDAsMjIuNjI1bDE2LDE2YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OCA2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVsLTE2LjAwMS0xNnoiKSxyLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItaWNvbiIpLmF0dHIoImQiLCJtMzQwLjM5NSw3NS42MDVjMy4xMjUsMy4xMjUgNy4yMTksNC42ODggMTEuMzEzLDQuNjg4IDQuMDk0LDAgOC4xODgtMS41NjMgMTEuMzEzLTQuNjg4IDYuMjUtNi4yNSA2LjI1LTE2LjM3NSAwLTIyLjYyNWwtMTYtMTZjLTYuMjUtNi4yNS0xNi4zNzUtNi4yNS0yMi42MjUsMHMtNi4yNSwxNi4zNzUgMCwyMi42MjVsMTUuOTk5LDE2eiIpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00MDAsNjRjOC44NDQsMCAxNi03LjE2NCAxNi0xNnYtMzJjMC04LjgzNi03LjE1Ni0xNi0xNi0xNi04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2djMyYzAsOC44MzYgNy4xNTYsMTYgMTYsMTZ6Iiksci5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImVycm9yLWljb24iKS5hdHRyKCJkIiwibTQ5Niw5Ni41ODZoLTMyYy04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2IDAsOC44MzYgNy4xNTYsMTYgMTYsMTZoMzJjOC44NDQsMCAxNi03LjE2NCAxNi0xNiAwLTguODM2LTcuMTU2LTE2LTE2LTE2eiIpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00MzYuOTgsNzUuNjA1YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OGwzMi0zMmM2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMmMtNi4yNTEsNi4yNS02LjI1MSwxNi4zNzUtMC4wMDEsMjIuNjI1eiIpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlcnJvci10ZXh0IikuYXR0cigieCIsMTI0MCkuYXR0cigieSIsMjUwKS5hdHRyKCJmb250LXNpemUiLCIxNTBweCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoIlN5bnRheCBlcnJvciBpbiBncmFwaCIpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlcnJvci10ZXh0IikuYXR0cigieCIsMTA1MCkuYXR0cigieSIsNDAwKS5hdHRyKCJmb250LXNpemUiLCIxMDBweCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoIm1lcm1haWQgdmVyc2lvbiAiK2UpLG4uYXR0cigiaGVpZ2h0IiwxMDApLG4uYXR0cigid2lkdGgiLDQwMCksbi5hdHRyKCJ2aWV3Qm94IiwiNzY4IDAgNTEyIDUxMiIpfWNhdGNoKHQpe28uZXJyb3IoIkVycm9yIHdoaWxlIHJlbmRlcmluZyBpbmZvIGRpYWdyYW0iKSxvLmVycm9yKHQubWVzc2FnZSl9fSh0LERtKSxlfWF1KCdbaWQ9IicuY29uY2F0KHQsJyJdJykpLnNlbGVjdEFsbCgiZm9yZWlnbm9iamVjdCA+ICoiKS5hdHRyKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKTt2YXIgXz1hdSgiI2QiK3QpLm5vZGUoKS5pbm5lckhUTUw7aWYoby5kZWJ1ZygiY25mLmFycm93TWFya2VyQWJzb2x1dGUiLHMuYXJyb3dNYXJrZXJBYnNvbHV0ZSkscy5hcnJvd01hcmtlckFic29sdXRlJiYiZmFsc2UiIT09cy5hcnJvd01hcmtlckFic29sdXRlfHwoXz1fLnJlcGxhY2UoL21hcmtlci1lbmQ9InVybFwoLio/Iy9nLCdtYXJrZXItZW5kPSJ1cmwoIycsImciKSksXz0oXz1yQyhfKSkucmVwbGFjZSgvPGJyPi9nLCI8YnIvPiIpLHZvaWQgMCE9PW4pc3dpdGNoKGgpe2Nhc2UiZmxvd2NoYXJ0IjpjYXNlImZsb3djaGFydC12MiI6bihfLHl4LmJpbmRGdW5jdGlvbnMpO2JyZWFrO2Nhc2UiZ2FudHQiOm4oXyx2dy5iaW5kRnVuY3Rpb25zKTticmVhaztjYXNlImNsYXNzIjpjYXNlImNsYXNzRGlhZ3JhbSI6bihfLHZiLmJpbmRGdW5jdGlvbnMpO2JyZWFrO2RlZmF1bHQ6bihfKX1lbHNlIG8uZGVidWcoIkNCID0gdW5kZWZpbmVkISIpO3RULmZvckVhY2goKGZ1bmN0aW9uKHQpe3QoKX0pKSx0VD1bXTt2YXIgeD1hdSgiI2QiK3QpLm5vZGUoKTtyZXR1cm4gbnVsbCE9PXgmJiJmdW5jdGlvbiI9PXR5cGVvZiB4LnJlbW92ZSYmYXUoIiNkIit0KS5ub2RlKCkucmVtb3ZlKCksX30scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9SnYoKSxuPUh2LmRldGVjdEluaXQodCxlKTtuJiZvLmRlYnVnKCJyZWluaXQgIixuKTt2YXIgcixpPUh2LmRldGVjdFR5cGUodCxlKTtzd2l0Y2goby5kZWJ1ZygiVHlwZSAiK2kpLGkpe2Nhc2UiZ2l0Ijoocj1qdygpKS5wYXJzZXIueXk9Unc7YnJlYWs7Y2FzZSJmbG93Y2hhcnQiOmNhc2UiZmxvd2NoYXJ0LXYyIjp5eC5jbGVhcigpLChyPW14KCkpLnBhcnNlci55eT15eDticmVhaztjYXNlInNlcXVlbmNlIjoocj1EaygpKS5wYXJzZXIueXk9Sms7YnJlYWs7Y2FzZSJnYW50dCI6KHI9d3coKSkucGFyc2VyLnl5PXZ3O2JyZWFrO2Nhc2UiY2xhc3MiOmNhc2UiY2xhc3NEaWFncmFtIjoocj1UYigpKS5wYXJzZXIueXk9dmI7YnJlYWs7Y2FzZSJzdGF0ZSI6Y2FzZSJzdGF0ZURpYWdyYW0iOihyPSRUKCkpLnBhcnNlci55eT1vRTticmVhaztjYXNlImluZm8iOm8uZGVidWcoImluZm8gaW5mbyBpbmZvIiksKHI9dGsoKSkucGFyc2VyLnl5PUt3O2JyZWFrO2Nhc2UicGllIjpvLmRlYnVnKCJwaWUiKSwocj1paygpKS5wYXJzZXIueXk9Y2s7YnJlYWs7Y2FzZSJlciI6by5kZWJ1ZygiZXIiKSwocj1JXygpKS5wYXJzZXIueXk9Ql87YnJlYWs7Y2FzZSJqb3VybmV5IjpvLmRlYnVnKCJKb3VybmV5IiksKHI9TEUoKSkucGFyc2VyLnl5PU9FO2JyZWFrO2Nhc2UicmVxdWlyZW1lbnQiOmNhc2UicmVxdWlyZW1lbnREaWFncmFtIjpvLmRlYnVnKCJSZXF1aXJlbWVudERpYWdyYW0iKSwocj1kaygpKS5wYXJzZXIueXk9Ymt9cmV0dXJuIHIucGFyc2VyLnl5LmdyYXBoVHlwZT1pLHIucGFyc2VyLnl5LnBhcnNlRXJyb3I9ZnVuY3Rpb24odCxlKXt0aHJvd3tzdHI6dCxoYXNoOmV9fSxyLnBhcnNlKHQpLHJ9LHBhcnNlRGlyZWN0aXZlOmZ1bmN0aW9uKHQsZSxuLHIpe3RyeXtpZih2b2lkIDAhPT1lKXN3aXRjaChlPWUudHJpbSgpLG4pe2Nhc2Uib3Blbl9kaXJlY3RpdmUiOmlDPXt9O2JyZWFrO2Nhc2UidHlwZV9kaXJlY3RpdmUiOmlDLnR5cGU9ZS50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UiYXJnX2RpcmVjdGl2ZSI6aUMuYXJncz1KU09OLnBhcnNlKGUpO2JyZWFrO2Nhc2UiY2xvc2VfZGlyZWN0aXZlIjooZnVuY3Rpb24odCxlLG4pe3N3aXRjaChvLmRlYnVnKCJEaXJlY3RpdmUgdHlwZT0iLmNvbmNhdChlLnR5cGUsIiB3aXRoIGFyZ3M6IiksZS5hcmdzKSxlLnR5cGUpe2Nhc2UiaW5pdCI6Y2FzZSJpbml0aWFsaXplIjpbImNvbmZpZyJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWUuYXJnc1t0XSYmKCJmbG93Y2hhcnQtdjIiPT09biYmKG49ImZsb3djaGFydCIpLGUuYXJnc1tuXT1lLmFyZ3NbdF0sZGVsZXRlIGUuYXJnc1t0XSl9KSksby5kZWJ1Zygic2FuaXRpemUgaW4gaGFuZGxlRGlyZWN0aXZlIixlLmFyZ3MpLFV2KGUuYXJncyksby5kZWJ1Zygic2FuaXRpemUgaW4gaGFuZGxlRGlyZWN0aXZlIChkb25lKSIsZS5hcmdzKSxlLmFyZ3MsZWIoZS5hcmdzKTticmVhaztjYXNlIndyYXAiOmNhc2Uibm93cmFwIjp0JiZ0LnNldFdyYXAmJnQuc2V0V3JhcCgid3JhcCI9PT1lLnR5cGUpO2JyZWFrO2Nhc2UidGhlbWVDc3MiOm8ud2FybigidGhlbWVDc3MgZW5jb3VudGVyZWQiKTticmVhaztkZWZhdWx0Om8ud2FybigiVW5oYW5kbGVkIGRpcmVjdGl2ZTogc291cmNlOiAnJSV7Ii5jb25jYXQoZS50eXBlLCI6ICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShlLmFyZ3M/ZS5hcmdzOnt9KSwifSUlIiksZSl9fSkodCxpQyxyKSxpQz1udWxsfX1jYXRjaCh0KXtvLmVycm9yKCJFcnJvciB3aGlsZSByZW5kZXJpbmcgc2VxdWVuY2VEaWFncmFtIGRpcmVjdGl2ZTogIi5jb25jYXQoZSwiIGppc29uIGNvbnRleHQ6ICIpLmNvbmNhdChuKSksby5lcnJvcih0Lm1lc3NhZ2UpfX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0JiZ0LmZvbnRGYW1pbHkmJih0LnRoZW1lVmFyaWFibGVzJiZ0LnRoZW1lVmFyaWFibGVzLmZvbnRGYW1pbHl8fCh0LnRoZW1lVmFyaWFibGVzPXtmb250RmFtaWx5OnQuZm9udEZhbWlseX0pKSxmdW5jdGlvbih0KXtXdj1Mdih7fSx0KX0odCksdCYmdC50aGVtZSYmb3ZbdC50aGVtZV0/dC50aGVtZVZhcmlhYmxlcz1vdlt0LnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyh0LnRoZW1lVmFyaWFibGVzKTp0JiYodC50aGVtZVZhcmlhYmxlcz1vdi5kZWZhdWx0LmdldFRoZW1lVmFyaWFibGVzKHQudGhlbWVWYXJpYWJsZXMpKTt2YXIgZT0ib2JqZWN0Ij09PW5DKHQpP2Z1bmN0aW9uKHQpe3JldHVybiBHdj1Mdih7fSxWdiksR3Y9THYoR3YsdCksdC50aGVtZSYmKEd2LnRoZW1lVmFyaWFibGVzPW92W3QudGhlbWVdLmdldFRoZW1lVmFyaWFibGVzKHQudGhlbWVWYXJpYWJsZXMpKSxadj1RdihHdixYdiksR3Z9KHQpOkt2KCk7YUMoZSkscyhlLmxvZ0xldmVsKX0scmVpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxnZXRDb25maWc6SnYsc2V0Q29uZmlnOmZ1bmN0aW9uKHQpe3JldHVybiBMdihadix0KSxKdigpfSxnZXRTaXRlQ29uZmlnOkt2LHVwZGF0ZVNpdGVDb25maWc6ZnVuY3Rpb24odCl7cmV0dXJuIEd2PUx2KEd2LHQpLFF2KEd2LFh2KSxHdn0scmVzZXQ6ZnVuY3Rpb24oKXtuYigpfSxnbG9iYWxSZXNldDpmdW5jdGlvbigpe25iKCksYUMoSnYoKSl9LGRlZmF1bHRDb25maWc6VnZ9KTtzKEp2KCkubG9nTGV2ZWwpLG5iKEp2KCkpO2NvbnN0IHNDPW9DO3ZhciBjQz1mdW5jdGlvbigpe3VDLnN0YXJ0T25Mb2FkP3NDLmdldENvbmZpZygpLnN0YXJ0T25Mb2FkJiZ1Qy5pbml0KCk6dm9pZCAwPT09dUMuc3RhcnRPbkxvYWQmJihvLmRlYnVnKCJJbiBzdGFydCwgbm8gY29uZmlnIiksc0MuZ2V0Q29uZmlnKCkuc3RhcnRPbkxvYWQmJnVDLmluaXQoKSl9OyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXtjQygpfSksITEpO3ZhciB1Qz17c3RhcnRPbkxvYWQ6ITAsaHRtbExhYmVsczohMCxtZXJtYWlkQVBJOnNDLHBhcnNlOnNDLnBhcnNlLHJlbmRlcjpzQy5yZW5kZXIsaW5pdDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9c0MuZ2V0Q29uZmlnKCk7YXJndW1lbnRzLmxlbmd0aD49Mj8odm9pZCAwIT09YXJndW1lbnRzWzBdJiYodUMuc2VxdWVuY2VDb25maWc9YXJndW1lbnRzWzBdKSx0PWFyZ3VtZW50c1sxXSk6dD1hcmd1bWVudHNbMF0sImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdPyhlPWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLG8uZGVidWcoIkNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpOnZvaWQgMCE9PXIubWVybWFpZCYmKCJmdW5jdGlvbiI9PXR5cGVvZiByLm1lcm1haWQuY2FsbGJhY2s/KGU9ci5tZXJtYWlkLmNhbGxiYWNrLG8uZGVidWcoIkNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpOm8uZGVidWcoIk5vIENhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kIikpLHQ9dm9pZCAwPT09dD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIubWVybWFpZCIpOiJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpOnQgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZT9bdF06dCxvLmRlYnVnKCJTdGFydCBPbiBMb2FkIGJlZm9yZTogIit1Qy5zdGFydE9uTG9hZCksdm9pZCAwIT09dUMuc3RhcnRPbkxvYWQmJihvLmRlYnVnKCJTdGFydCBPbiBMb2FkIGlubmVyOiAiK3VDLnN0YXJ0T25Mb2FkKSxzQy51cGRhdGVTaXRlQ29uZmlnKHtzdGFydE9uTG9hZDp1Qy5zdGFydE9uTG9hZH0pKSx2b2lkIDAhPT11Qy5nYW50dENvbmZpZyYmc0MudXBkYXRlU2l0ZUNvbmZpZyh7Z2FudHQ6dUMuZ2FudHRDb25maWd9KTtmb3IodmFyIGksYT1uZXcgSHYuaW5pdElkR2VuZXJhdGlvcihyLmRldGVybWluaXN0aWNJZHMsci5kZXRlcm1pbmlzdGljSURTZWVkKSxzPWZ1bmN0aW9uKHIpe3ZhciBzPXRbcl07aWYocy5nZXRBdHRyaWJ1dGUoImRhdGEtcHJvY2Vzc2VkIikpcmV0dXJuImNvbnRpbnVlIjtzLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiLCEwKTt2YXIgYz0ibWVybWFpZC0iLmNvbmNhdChhLm5leHQoKSk7aT1zLmlubmVySFRNTCxpPUh2LmVudGl0eURlY29kZShpKS50cmltKCkucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwiPGJyLz4iKTt2YXIgdT1Idi5kZXRlY3RJbml0KGkpO3UmJm8uZGVidWcoIkRldGVjdGVkIGVhcmx5IHJlaW5pdDogIix1KTt0cnl7c0MucmVuZGVyKGMsaSwoZnVuY3Rpb24odCxuKXtzLmlubmVySFRNTD10LHZvaWQgMCE9PWUmJmUoYyksbiYmbihzKX0pLHMpfWNhdGNoKHQpe28ud2FybigiU3ludGF4IEVycm9yIHJlbmRlcmluZyIpLG8ud2Fybih0KSxuLnBhcnNlRXJyb3ImJm4ucGFyc2VFcnJvcih0KX19LGM9MDtjPHQubGVuZ3RoO2MrKylzKGMpfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQubWVybWFpZCYmKHZvaWQgMCE9PXQubWVybWFpZC5zdGFydE9uTG9hZCYmKHVDLnN0YXJ0T25Mb2FkPXQubWVybWFpZC5zdGFydE9uTG9hZCksdm9pZCAwIT09dC5tZXJtYWlkLmh0bWxMYWJlbHMmJih1Qy5odG1sTGFiZWxzPSJmYWxzZSIhPT10Lm1lcm1haWQuaHRtbExhYmVscyYmITEhPT10Lm1lcm1haWQuaHRtbExhYmVscykpLHNDLmluaXRpYWxpemUodCl9LGNvbnRlbnRMb2FkZWQ6Y0N9O2NvbnN0IGxDPXVDfSw0OTQ5Oih0LGUsbik9Pnt0LmV4cG9ydHM9e2dyYXBobGliOm4oNjYxNCksZGFncmU6bigxNDYzKSxpbnRlcnNlY3Q6big4MTE0KSxyZW5kZXI6big1Nzg3KSx1dGlsOm4oODM1NSksdmVyc2lvbjpuKDU2ODkpfX0sOTE0NDoodCxlLG4pPT57dmFyIHI9big4MzU1KTtmdW5jdGlvbiBpKHQsZSxuLGkpe3ZhciBhPXQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIik7ci5hcHBseVN0eWxlKGEsbltpKyJTdHlsZSJdKSxuW2krIkNsYXNzIl0mJmEuYXR0cigiY2xhc3MiLG5baSsiQ2xhc3MiXSl9dC5leHBvcnRzPXtkZWZhdWx0Omksbm9ybWFsOmksdmVlOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBhPXQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgTCA0IDUgeiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIik7ci5hcHBseVN0eWxlKGEsbltpKyJTdHlsZSJdKSxuW2krIkNsYXNzIl0mJmEuYXR0cigiY2xhc3MiLG5baSsiQ2xhc3MiXSl9LHVuZGlyZWN0ZWQ6ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDUgTCAxMCA1Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKTtyLmFwcGx5U3R5bGUoYSxuW2krIlN0eWxlIl0pLG5baSsiQ2xhc3MiXSYmYS5hdHRyKCJjbGFzcyIsbltpKyJDbGFzcyJdKX19fSw1NjMyOih0LGUsbik9Pnt2YXIgcj1uKDgzNTUpLGk9big0MzIyKSxhPW4oMTMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz1lLm5vZGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gci5pc1N1YmdyYXBoKGUsdCl9KSkscz10LnNlbGVjdEFsbCgiZy5jbHVzdGVyIikuZGF0YShvLChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTtyZXR1cm4gcy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKSxzLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyIikuYXR0cigiaWQiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5ub2RlKHQpLmlkfSkpLnN0eWxlKCJvcGFjaXR5IiwwKSxzPXQuc2VsZWN0QWxsKCJnLmNsdXN0ZXIiKSxyLmFwcGx5VHJhbnNpdGlvbihzLGUpLnN0eWxlKCJvcGFjaXR5IiwxKSxzLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KSxyPWkuc2VsZWN0KHRoaXMpO2kuc2VsZWN0KHRoaXMpLmFwcGVuZCgicmVjdCIpO3ZhciBvPXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO2EobyxuLG4uY2x1c3RlckxhYmVsUG9zKX0pKSxzLnNlbGVjdEFsbCgicmVjdCIpLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KSxhPWkuc2VsZWN0KHRoaXMpO3IuYXBwbHlTdHlsZShhLG4uc3R5bGUpfSkpLG49cy5leGl0P3MuZXhpdCgpOnMuc2VsZWN0QWxsKG51bGwpLHIuYXBwbHlUcmFuc2l0aW9uKG4sZSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLHN9fSw2MzE1Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9bigxMDM0KSxpPW4oMTMyMiksYT1uKDgzNTUpLG89big0MzIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixzPXQuc2VsZWN0QWxsKCJnLmVkZ2VMYWJlbCIpLmRhdGEoZS5lZGdlcygpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5lZGdlVG9JZCh0KX0pKS5jbGFzc2VkKCJ1cGRhdGUiLCEwKTtyZXR1cm4gcy5leGl0KCkucmVtb3ZlKCkscy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImVkZ2VMYWJlbCIsITApLnN0eWxlKCJvcGFjaXR5IiwwKSwocz10LnNlbGVjdEFsbCgiZy5lZGdlTGFiZWwiKSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIG49by5zZWxlY3QodGhpcyk7bi5zZWxlY3QoIi5sYWJlbCIpLnJlbW92ZSgpO3ZhciBhPWUuZWRnZSh0KSxzPWkobixlLmVkZ2UodCksMCwwKS5jbGFzc2VkKCJsYWJlbCIsITApLGM9cy5ub2RlKCkuZ2V0QkJveCgpO2EubGFiZWxJZCYmcy5hdHRyKCJpZCIsYS5sYWJlbElkKSxyLmhhcyhhLCJ3aWR0aCIpfHwoYS53aWR0aD1jLndpZHRoKSxyLmhhcyhhLCJoZWlnaHQiKXx8KGEuaGVpZ2h0PWMuaGVpZ2h0KX0pKSxuPXMuZXhpdD9zLmV4aXQoKTpzLnNlbGVjdEFsbChudWxsKSxhLmFwcGx5VHJhbnNpdGlvbihuLGUpLnN0eWxlKCJvcGFjaXR5IiwwKS5yZW1vdmUoKSxzfX0sOTQwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9bigxMDM0KSxpPW4oNzU4NCksYT1uKDgzNTUpLG89big0MzIyKTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49KG8ubGluZXx8by5zdmcubGluZSkoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSk7cmV0dXJuKG4uY3VydmV8fG4uaW50ZXJwb2xhdGUpKHQuY3VydmUpLG4oZSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYz10LnNlbGVjdEFsbCgiZy5lZGdlUGF0aCIpLmRhdGEoZS5lZGdlcygpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5lZGdlVG9JZCh0KX0pKS5jbGFzc2VkKCJ1cGRhdGUiLCEwKSx1PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZWRnZVBhdGgiKS5zdHlsZSgib3BhY2l0eSIsMCk7cmV0dXJuIG4uYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZWRnZSh0KSxpPWUubm9kZSh0LnYpLmVsZW07cmV0dXJuIHMobixyLnJhbmdlKG4ucG9pbnRzLmxlbmd0aCkubWFwKChmdW5jdGlvbigpe3JldHVybiBlPSh0PWkpLmdldEJCb3goKSx7eDoobj10Lm93bmVyU1ZHRWxlbWVudC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkubXVsdGlwbHkodC5nZXRTY3JlZW5DVE0oKSkudHJhbnNsYXRlKGUud2lkdGgvMixlLmhlaWdodC8yKSkuZSx5Om4uZn07dmFyIHQsZSxufSkpKX0pKSxuLmFwcGVuZCgiZGVmcyIpLG59KGMsZSk7IWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leGl0KCk7YS5hcHBseVRyYW5zaXRpb24obixlKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCl9KGMsZSk7dmFyIGw9dm9pZCAwIT09Yy5tZXJnZT9jLm1lcmdlKHUpOmM7cmV0dXJuIGEuYXBwbHlUcmFuc2l0aW9uKGwsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLGwuZWFjaCgoZnVuY3Rpb24odCl7dmFyIG49by5zZWxlY3QodGhpcykscj1lLmVkZ2UodCk7ci5lbGVtPXRoaXMsci5pZCYmbi5hdHRyKCJpZCIsci5pZCksYS5hcHBseUNsYXNzKG4sci5jbGFzcywobi5jbGFzc2VkKCJ1cGRhdGUiKT8idXBkYXRlICI6IiIpKyJlZGdlUGF0aCIpfSkpLGwuc2VsZWN0QWxsKCJwYXRoLnBhdGgiKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7bi5hcnJvd2hlYWRJZD1yLnVuaXF1ZUlkKCJhcnJvd2hlYWQiKTt2YXIgYz1vLnNlbGVjdCh0aGlzKS5hdHRyKCJtYXJrZXItZW5kIiwoZnVuY3Rpb24oKXtyZXR1cm4idXJsKCIrKHQ9bG9jYXRpb24uaHJlZixlPW4uYXJyb3doZWFkSWQsdC5zcGxpdCgiIyIpWzBdKyIjIitlKyIpIik7dmFyIHQsZX0pKS5zdHlsZSgiZmlsbCIsIm5vbmUiKTthLmFwcGx5VHJhbnNpdGlvbihjLGUpLmF0dHIoImQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj10LmVkZ2UoZSkscj10Lm5vZGUoZS52KSxhPXQubm9kZShlLncpLG89bi5wb2ludHMuc2xpY2UoMSxuLnBvaW50cy5sZW5ndGgtMSk7cmV0dXJuIG8udW5zaGlmdChpKHIsb1swXSkpLG8ucHVzaChpKGEsb1tvLmxlbmd0aC0xXSkpLHMobixvKX0oZSx0KX0pKSxhLmFwcGx5U3R5bGUoYyxuLnN0eWxlKX0pKSxsLnNlbGVjdEFsbCgiZGVmcyAqIikucmVtb3ZlKCksbC5zZWxlY3RBbGwoImRlZnMiKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgcj1lLmVkZ2UodCk7KDAsbltyLmFycm93aGVhZF0pKG8uc2VsZWN0KHRoaXMpLHIuYXJyb3doZWFkSWQsciwiYXJyb3doZWFkIil9KSksbH19LDYwNzoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oMTAzNCksaT1uKDEzMjIpLGE9big4MzU1KSxvPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcyxjPWUubm9kZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFhLmlzU3ViZ3JhcGgoZSx0KX0pKSx1PXQuc2VsZWN0QWxsKCJnLm5vZGUiKS5kYXRhKGMsKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLmNsYXNzZWQoInVwZGF0ZSIsITApO3JldHVybiB1LmV4aXQoKS5yZW1vdmUoKSx1LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJub2RlIikuc3R5bGUoIm9wYWNpdHkiLDApLCh1PXQuc2VsZWN0QWxsKCJnLm5vZGUiKSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHM9ZS5ub2RlKHQpLGM9by5zZWxlY3QodGhpcyk7YS5hcHBseUNsYXNzKGMscy5jbGFzcywoYy5jbGFzc2VkKCJ1cGRhdGUiKT8idXBkYXRlICI6IiIpKyJub2RlIiksYy5zZWxlY3QoImcubGFiZWwiKS5yZW1vdmUoKTt2YXIgdT1jLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxsPWkodSxzKSxoPW5bcy5zaGFwZV0sZj1yLnBpY2sobC5ub2RlKCkuZ2V0QkJveCgpLCJ3aWR0aCIsImhlaWdodCIpO3MuZWxlbT10aGlzLHMuaWQmJmMuYXR0cigiaWQiLHMuaWQpLHMubGFiZWxJZCYmdS5hdHRyKCJpZCIscy5sYWJlbElkKSxyLmhhcyhzLCJ3aWR0aCIpJiYoZi53aWR0aD1zLndpZHRoKSxyLmhhcyhzLCJoZWlnaHQiKSYmKGYuaGVpZ2h0PXMuaGVpZ2h0KSxmLndpZHRoKz1zLnBhZGRpbmdMZWZ0K3MucGFkZGluZ1JpZ2h0LGYuaGVpZ2h0Kz1zLnBhZGRpbmdUb3Arcy5wYWRkaW5nQm90dG9tLHUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHMucGFkZGluZ0xlZnQtcy5wYWRkaW5nUmlnaHQpLzIrIiwiKyhzLnBhZGRpbmdUb3Atcy5wYWRkaW5nQm90dG9tKS8yKyIpIik7dmFyIGQ9by5zZWxlY3QodGhpcyk7ZC5zZWxlY3QoIi5sYWJlbC1jb250YWluZXIiKS5yZW1vdmUoKTt2YXIgcD1oKGQsZixzKS5jbGFzc2VkKCJsYWJlbC1jb250YWluZXIiLCEwKTthLmFwcGx5U3R5bGUocCxzLnN0eWxlKTt2YXIgeT1wLm5vZGUoKS5nZXRCQm94KCk7cy53aWR0aD15LndpZHRoLHMuaGVpZ2h0PXkuaGVpZ2h0fSkpLHM9dS5leGl0P3UuZXhpdCgpOnUuc2VsZWN0QWxsKG51bGwpLGEuYXBwbHlUcmFuc2l0aW9uKHMsZSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLHV9fSw0MzIyOih0LGUsbik9Pnt2YXIgcjtpZighcil0cnl7cj1uKDcxODgpfWNhdGNoKHQpe31yfHwocj13aW5kb3cuZDMpLHQuZXhwb3J0cz1yfSwxNDYzOih0LGUsbik9Pnt2YXIgcjt0cnl7cj1uKDY4MSl9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5kYWdyZSksdC5leHBvcnRzPXJ9LDY2MTQ6KHQsZSxuKT0+e3ZhciByO3RyeXtyPW4oODI4Mil9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5ncmFwaGxpYiksdC5leHBvcnRzPXJ9LDgxMTQ6KHQsZSxuKT0+e3QuZXhwb3J0cz17bm9kZTpuKDc1ODQpLGNpcmNsZTpuKDY1ODcpLGVsbGlwc2U6bigzMjYwKSxwb2x5Z29uOm4oNTMzNykscmVjdDpuKDgwNDkpfX0sNjU4NzoodCxlLG4pPT57dmFyIHI9bigzMjYwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByKHQsZSxlLG4pfX0sMzI2MDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXQueCxhPXQueSxvPWktci54LHM9YS1yLnksYz1NYXRoLnNxcnQoZSplKnMqcytuKm4qbypvKSx1PU1hdGguYWJzKGUqbipvL2MpO3IueDxpJiYodT0tdSk7dmFyIGw9TWF0aC5hYnMoZSpuKnMvYyk7cmV0dXJuIHIueTxhJiYobD0tbCkse3g6aSt1LHk6YStsfX19LDY4MDg6dD0+e2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdCplPjB9dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGkpe3ZhciBhLG8scyxjLHUsbCxoLGYsZCxwLHksZyxtO2lmKCEoYT1uLnktdC55LHM9dC54LW4ueCx1PW4ueCp0LnktdC54Km4ueSxkPWEqci54K3Mqci55K3UscD1hKmkueCtzKmkueSt1LDAhPT1kJiYwIT09cCYmZShkLHApfHwobz1pLnktci55LGM9ci54LWkueCxsPWkueCpyLnktci54KmkueSxoPW8qdC54K2MqdC55K2wsZj1vKm4ueCtjKm4ueStsLDAhPT1oJiYwIT09ZiYmZShoLGYpfHwwPT0oeT1hKmMtbypzKSkpKXJldHVybiBnPU1hdGguYWJzKHkvMikse3g6KG09cypsLWMqdSk8MD8obS1nKS95OihtK2cpL3kseToobT1vKnUtYSpsKTwwPyhtLWcpL3k6KG0rZykveX19fSw3NTg0OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbnRlcnNlY3QoZSl9fSw1MzM3Oih0LGUsbik9Pnt2YXIgcj1uKDY4MDgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC54LGE9dC55LG89W10scz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtzPU1hdGgubWluKHMsdC54KSxjPU1hdGgubWluKGMsdC55KX0pKTtmb3IodmFyIHU9aS10LndpZHRoLzItcyxsPWEtdC5oZWlnaHQvMi1jLGg9MDtoPGUubGVuZ3RoO2grKyl7dmFyIGY9ZVtoXSxkPWVbaDxlLmxlbmd0aC0xP2grMTowXSxwPXIodCxuLHt4OnUrZi54LHk6bCtmLnl9LHt4OnUrZC54LHk6bCtkLnl9KTtwJiZvLnB1c2gocCl9cmV0dXJuIG8ubGVuZ3RoPyhvLmxlbmd0aD4xJiZvLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LW4ueCxpPXQueS1uLnksYT1NYXRoLnNxcnQocipyK2kqaSksbz1lLngtbi54LHM9ZS55LW4ueSxjPU1hdGguc3FydChvKm8rcypzKTtyZXR1cm4gYTxjPy0xOmE9PT1jPzA6MX0pKSxvWzBdKTooY29uc29sZS5sb2coIk5PIElOVEVSU0VDVElPTiBGT1VORCwgUkVUVVJOIE5PREUgQ0VOVEVSIix0KSx0KX19LDgwNDk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaT10LngsYT10Lnksbz1lLngtaSxzPWUueS1hLGM9dC53aWR0aC8yLHU9dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5hYnMocykqYz5NYXRoLmFicyhvKSp1PyhzPDAmJih1PS11KSxuPTA9PT1zPzA6dSpvL3Mscj11KToobzwwJiYoYz0tYyksbj1jLHI9MD09PW8/MDpjKnMvbykse3g6aStuLHk6YStyfX19LDgyODQ6KHQsZSxuKT0+e3ZhciByPW4oODM1NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ3aWR0aCIsIjEwMDAwMCIpLGk9bi5hcHBlbmQoInhodG1sOmRpdiIpO2kuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIik7dmFyIGE9ZS5sYWJlbDtzd2l0Y2godHlwZW9mIGEpe2Nhc2UiZnVuY3Rpb24iOmkuaW5zZXJ0KGEpO2JyZWFrO2Nhc2Uib2JqZWN0IjppLmluc2VydCgoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTticmVhaztkZWZhdWx0OmkuaHRtbChhKX1yLmFwcGx5U3R5bGUoaSxlLmxhYmVsU3R5bGUpLGkuc3R5bGUoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSxpLnN0eWxlKCJ3aGl0ZS1zcGFjZSIsIm5vd3JhcCIpO3ZhciBvPWkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBuLmF0dHIoIndpZHRoIixvLndpZHRoKS5hdHRyKCJoZWlnaHQiLG8uaGVpZ2h0KSxufX0sMTMyMjoodCxlLG4pPT57dmFyIHI9big3MzE4KSxpPW4oODI4NCksYT1uKDgyODcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIG89ZS5sYWJlbCxzPXQuYXBwZW5kKCJnIik7InN2ZyI9PT1lLmxhYmVsVHlwZT9hKHMsZSk6InN0cmluZyIhPXR5cGVvZiBvfHwiaHRtbCI9PT1lLmxhYmVsVHlwZT9pKHMsZSk6cihzLGUpO3ZhciBjLHU9cy5ub2RlKCkuZ2V0QkJveCgpO3N3aXRjaChuKXtjYXNlInRvcCI6Yz0tZS5oZWlnaHQvMjticmVhaztjYXNlImJvdHRvbSI6Yz1lLmhlaWdodC8yLXUuaGVpZ2h0O2JyZWFrO2RlZmF1bHQ6Yz0tdS5oZWlnaHQvMn1yZXR1cm4gcy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistdS53aWR0aC8yKyIsIitjKyIpIiksc319LDgyODc6KHQsZSxuKT0+e3ZhciByPW4oODM1NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dDtyZXR1cm4gbi5ub2RlKCkuYXBwZW5kQ2hpbGQoZS5sYWJlbCksci5hcHBseVN0eWxlKG4sZS5sYWJlbFN0eWxlKSxufX0sNzMxODoodCxlLG4pPT57dmFyIHI9big4MzU1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5hcHBlbmQoInRleHQiKSxpPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPSIiLHI9ITEsaT0wO2k8dC5sZW5ndGg7KytpKWU9dFtpXSxyPyhuKz0ibiI9PT1lPyJcbiI6ZSxyPSExKToiXFwiPT09ZT9yPSEwOm4rPWU7cmV0dXJuIG59KGUubGFiZWwpLnNwbGl0KCJcbiIpLGE9MDthPGkubGVuZ3RoO2ErKyluLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpLmF0dHIoImR5IiwiMWVtIikuYXR0cigieCIsIjEiKS50ZXh0KGlbYV0pO3JldHVybiByLmFwcGx5U3R5bGUobixlLmxhYmVsU3R5bGUpLG59fSwxMDM0Oih0LGUsbik9Pnt2YXIgcjt0cnl7cj17ZGVmYXVsdHM6bigxNzQ3KSxlYWNoOm4oNjA3MyksaXNGdW5jdGlvbjpuKDM1NjApLGlzUGxhaW5PYmplY3Q6big4NjMwKSxwaWNrOm4oOTcyMiksaGFzOm4oODcyMSkscmFuZ2U6big2MDI2KSx1bmlxdWVJZDpuKDM5NTUpfX1jYXRjaCh0KXt9cnx8KHI9d2luZG93Ll8pLHQuZXhwb3J0cz1yfSw2MzgxOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4MzU1KSxpPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5maWx0ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIWkuc2VsZWN0KHRoaXMpLmNsYXNzZWQoInVwZGF0ZSIpfSkpO2Z1bmN0aW9uIGEodCl7dmFyIG49ZS5ub2RlKHQpO3JldHVybiJ0cmFuc2xhdGUoIituLngrIiwiK24ueSsiKSJ9bi5hdHRyKCJ0cmFuc2Zvcm0iLGEpLHIuYXBwbHlUcmFuc2l0aW9uKHQsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsYSksci5hcHBseVRyYW5zaXRpb24obi5zZWxlY3RBbGwoInJlY3QiKSxlKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiBlLm5vZGUodCkud2lkdGh9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuIGUubm9kZSh0KS5oZWlnaHR9KSkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybi1lLm5vZGUodCkud2lkdGgvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuLWUubm9kZSh0KS5oZWlnaHQvMn0pKX19LDQ1Nzc6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgzNTUpLGk9big0MzIyKSxhPW4oMTAzNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1lLmVkZ2UodCk7cmV0dXJuIGEuaGFzKG4sIngiKT8idHJhbnNsYXRlKCIrbi54KyIsIituLnkrIikiOiIifXQuZmlsdGVyKChmdW5jdGlvbigpe3JldHVybiFpLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJ1cGRhdGUiKX0pKS5hdHRyKCJ0cmFuc2Zvcm0iLG4pLHIuYXBwbHlUcmFuc2l0aW9uKHQsZSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsbil9fSw0ODQ5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4MzU1KSxpPW4oNDMyMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1lLm5vZGUodCk7cmV0dXJuInRyYW5zbGF0ZSgiK24ueCsiLCIrbi55KyIpIn10LmZpbHRlcigoZnVuY3Rpb24oKXtyZXR1cm4haS5zZWxlY3QodGhpcykuY2xhc3NlZCgidXBkYXRlIil9KSkuYXR0cigidHJhbnNmb3JtIixuKSxyLmFwcGx5VHJhbnNpdGlvbih0LGUpLnN0eWxlKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLG4pfX0sNTc4NzoodCxlLG4pPT57dmFyIHI9bigxMDM0KSxpPW4oNDMyMiksYT1uKDE0NjMpLmxheW91dDt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uKDYwNyksZT1uKDU2MzIpLGk9big2MzE1KSx1PW4oOTQwKSxsPW4oNDg0OSksaD1uKDQ1NzcpLGY9big2MzgxKSxkPW4oNDQxOCkscD1uKDkxNDQpLHk9ZnVuY3Rpb24obix5KXshZnVuY3Rpb24odCl7dC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTtyLmhhcyhuLCJsYWJlbCIpfHx0LmNoaWxkcmVuKGUpLmxlbmd0aHx8KG4ubGFiZWw9ZSksci5oYXMobiwicGFkZGluZ1giKSYmci5kZWZhdWx0cyhuLHtwYWRkaW5nTGVmdDpuLnBhZGRpbmdYLHBhZGRpbmdSaWdodDpuLnBhZGRpbmdYfSksci5oYXMobiwicGFkZGluZ1kiKSYmci5kZWZhdWx0cyhuLHtwYWRkaW5nVG9wOm4ucGFkZGluZ1kscGFkZGluZ0JvdHRvbTpuLnBhZGRpbmdZfSksci5oYXMobiwicGFkZGluZyIpJiZyLmRlZmF1bHRzKG4se3BhZGRpbmdMZWZ0Om4ucGFkZGluZyxwYWRkaW5nUmlnaHQ6bi5wYWRkaW5nLHBhZGRpbmdUb3A6bi5wYWRkaW5nLHBhZGRpbmdCb3R0b206bi5wYWRkaW5nfSksci5kZWZhdWx0cyhuLG8pLHIuZWFjaChbInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSwoZnVuY3Rpb24odCl7blt0XT1OdW1iZXIoblt0XSl9KSksci5oYXMobiwid2lkdGgiKSYmKG4uX3ByZXZXaWR0aD1uLndpZHRoKSxyLmhhcyhuLCJoZWlnaHQiKSYmKG4uX3ByZXZIZWlnaHQ9bi5oZWlnaHQpfSkpLHQuZWRnZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7ci5oYXMobiwibGFiZWwiKXx8KG4ubGFiZWw9IiIpLHIuZGVmYXVsdHMobixzKX0pKX0oeSk7dmFyIGc9YyhuLCJvdXRwdXQiKSxtPWMoZywiY2x1c3RlcnMiKSx2PWMoZywiZWRnZVBhdGhzIiksYj1pKGMoZywiZWRnZUxhYmVscyIpLHkpLF89dChjKGcsIm5vZGVzIikseSxkKTthKHkpLGwoXyx5KSxoKGIseSksdSh2LHkscCk7dmFyIHg9ZShtLHkpO2YoeCx5KSxmdW5jdGlvbih0KXtyLmVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj10Lm5vZGUoZSk7ci5oYXMobiwiX3ByZXZXaWR0aCIpP24ud2lkdGg9bi5fcHJldldpZHRoOmRlbGV0ZSBuLndpZHRoLHIuaGFzKG4sIl9wcmV2SGVpZ2h0Iik/bi5oZWlnaHQ9bi5fcHJldkhlaWdodDpkZWxldGUgbi5oZWlnaHQsZGVsZXRlIG4uX3ByZXZXaWR0aCxkZWxldGUgbi5fcHJldkhlaWdodH0pKX0oeSl9O3JldHVybiB5LmNyZWF0ZU5vZGVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUseSk6dH0seS5jcmVhdGVDbHVzdGVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHkpOmV9LHkuY3JlYXRlRWRnZUxhYmVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHkpOml9LHkuY3JlYXRlRWRnZVBhdGhzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQseSk6dX0seS5zaGFwZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9dCx5KTpkfSx5LmFycm93cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD10LHkpOnB9LHl9O3ZhciBvPXtwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAscGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHJ4OjAscnk6MCxzaGFwZToicmVjdCJ9LHM9e2Fycm93aGVhZDoibm9ybWFsIixjdXJ2ZTppLmN1cnZlTGluZWFyfTtmdW5jdGlvbiBjKHQsZSl7dmFyIG49dC5zZWxlY3QoImcuIitlKTtyZXR1cm4gbi5lbXB0eSgpJiYobj10LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixlKSksbn19LDQ0MTg6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgwNDkpLGk9bigzMjYwKSxhPW4oNjU4Nyksbz1uKDUzMzcpO3QuZXhwb3J0cz17cmVjdDpmdW5jdGlvbih0LGUsbil7dmFyIGk9dC5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJyeCIsbi5yeCkuYXR0cigicnkiLG4ucnkpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCkuYXR0cigiaGVpZ2h0IixlLmhlaWdodCk7cmV0dXJuIG4uaW50ZXJzZWN0PWZ1bmN0aW9uKHQpe3JldHVybiByKG4sdCl9LGl9LGVsbGlwc2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUud2lkdGgvMixhPWUuaGVpZ2h0LzIsbz10Lmluc2VydCgiZWxsaXBzZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJyeCIscikuYXR0cigicnkiLGEpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gaShuLHIsYSx0KX0sb30sY2lyY2xlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1NYXRoLm1heChlLndpZHRoLGUuaGVpZ2h0KS8yLGk9dC5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC1lLndpZHRoLzIpLmF0dHIoInkiLC1lLmhlaWdodC8yKS5hdHRyKCJyIixyKTtyZXR1cm4gbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGEobixyLHQpfSxpfSxkaWFtb25kOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLndpZHRoKk1hdGguU1FSVDIvMixpPWUuaGVpZ2h0Kk1hdGguU1FSVDIvMixhPVt7eDowLHk6LWl9LHt4Oi1yLHk6MH0se3g6MCx5Oml9LHt4OnIseTowfV0scz10Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsYS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LngrIiwiK3QueX0pKS5qb2luKCIgIikpO3JldHVybiBuLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gbyhuLGEsdCl9LHN9fX0sODM1NToodCxlLG4pPT57dmFyIHI9bigxMDM0KTt0LmV4cG9ydHM9e2lzU3ViZ3JhcGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQuY2hpbGRyZW4oZSkubGVuZ3RofSxlZGdlVG9JZDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0LnYpKyI6IithKHQudykrIjoiK2EodC5uYW1lKX0sYXBwbHlTdHlsZTpmdW5jdGlvbih0LGUpe2UmJnQuYXR0cigic3R5bGUiLGUpfSxhcHBseUNsYXNzOmZ1bmN0aW9uKHQsZSxuKXtlJiZ0LmF0dHIoImNsYXNzIixlKS5hdHRyKCJjbGFzcyIsbisiICIrdC5hdHRyKCJjbGFzcyIpKX0sYXBwbHlUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ncmFwaCgpO2lmKHIuaXNQbGFpbk9iamVjdChuKSl7dmFyIGk9bi50cmFuc2l0aW9uO2lmKHIuaXNGdW5jdGlvbihpKSlyZXR1cm4gaSh0KX1yZXR1cm4gdH19O3ZhciBpPS86L2c7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD9TdHJpbmcodCkucmVwbGFjZShpLCJcXDoiKToiIn19LDU2ODk6dD0+e3QuZXhwb3J0cz0iMC42LjQifSw3MTg4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLHtGb3JtYXRTcGVjaWZpZXI6KCk9PnVjLGFjdGl2ZTooKT0+SnIsYXJjOigpPT5meCxhcmVhOigpPT52eCxhcmVhUmFkaWFsOigpPT5TeCxhc2NlbmRpbmc6KCk9PmksYXV0b1R5cGU6KCk9PkZvLGF4aXNCb3R0b206KCk9Pml0LGF4aXNMZWZ0OigpPT5hdCxheGlzUmlnaHQ6KCk9PnJ0LGF4aXNUb3A6KCk9Pm50LGJpc2VjdDooKT0+dSxiaXNlY3RMZWZ0OigpPT5jLGJpc2VjdFJpZ2h0OigpPT5zLGJpc2VjdG9yOigpPT5hLGJsb2I6KCk9Pm1zLGJydXNoOigpPT5BaSxicnVzaFNlbGVjdGlvbjooKT0+RWksYnJ1c2hYOigpPT5DaSxicnVzaFk6KCk9PlNpLGJ1ZmZlcjooKT0+YnMsY2hvcmQ6KCk9PkZpLGNsaWVudFBvaW50OigpPT5EbixjbHVzdGVyOigpPT5TZCxjb2xvcjooKT0+VmUsY29udG91ckRlbnNpdHk6KCk9Pm9vLGNvbnRvdXJzOigpPT50byxjcmVhdGU6KCk9PmpfLGNyZWF0b3I6KCk9PmllLGNyb3NzOigpPT5mLGNzdjooKT0+VHMsY3N2Rm9ybWF0OigpPT5Ubyxjc3ZGb3JtYXRCb2R5OigpPT5Fbyxjc3ZGb3JtYXRSb3c6KCk9PlNvLGNzdkZvcm1hdFJvd3M6KCk9PkNvLGNzdkZvcm1hdFZhbHVlOigpPT5Bbyxjc3ZQYXJzZTooKT0+d28sY3N2UGFyc2VSb3dzOigpPT5rbyxjdWJlaGVsaXg6KCk9PkhhLGN1cnZlQmFzaXM6KCk9PnN3LGN1cnZlQmFzaXNDbG9zZWQ6KCk9PnV3LGN1cnZlQmFzaXNPcGVuOigpPT5odyxjdXJ2ZUJ1bmRsZTooKT0+ZHcsY3VydmVDYXJkaW5hbDooKT0+Z3csY3VydmVDYXJkaW5hbENsb3NlZDooKT0+dncsY3VydmVDYXJkaW5hbE9wZW46KCk9Pl93LGN1cnZlQ2F0bXVsbFJvbTooKT0+a3csY3VydmVDYXRtdWxsUm9tQ2xvc2VkOigpPT5FdyxjdXJ2ZUNhdG11bGxSb21PcGVuOigpPT5TdyxjdXJ2ZUxpbmVhcjooKT0+cHgsY3VydmVMaW5lYXJDbG9zZWQ6KCk9Pk13LGN1cnZlTW9ub3RvbmVYOigpPT5GdyxjdXJ2ZU1vbm90b25lWTooKT0+UHcsY3VydmVOYXR1cmFsOigpPT56dyxjdXJ2ZVN0ZXA6KCk9PnF3LGN1cnZlU3RlcEFmdGVyOigpPT4kdyxjdXJ2ZVN0ZXBCZWZvcmU6KCk9Pkh3LGN1c3RvbUV2ZW50OigpPT5nZSxkZXNjZW5kaW5nOigpPT5kLGRldmlhdGlvbjooKT0+ZyxkaXNwYXRjaDooKT0+ZnQsZHJhZzooKT0+cG8sZHJhZ0Rpc2FibGU6KCk9PlNlLGRyYWdFbmFibGU6KCk9PkFlLGRzdjooKT0+a3MsZHN2Rm9ybWF0OigpPT5fbyxlYXNlQmFjazooKT0+aHMsZWFzZUJhY2tJbjooKT0+dXMsZWFzZUJhY2tJbk91dDooKT0+aHMsZWFzZUJhY2tPdXQ6KCk9PmxzLGVhc2VCb3VuY2U6KCk9Pm9zLGVhc2VCb3VuY2VJbjooKT0+YXMsZWFzZUJvdW5jZUluT3V0OigpPT5zcyxlYXNlQm91bmNlT3V0OigpPT5vcyxlYXNlQ2lyY2xlOigpPT5ycyxlYXNlQ2lyY2xlSW46KCk9PmVzLGVhc2VDaXJjbGVJbk91dDooKT0+cnMsZWFzZUNpcmNsZU91dDooKT0+bnMsZWFzZUN1YmljOigpPT5YcixlYXNlQ3ViaWNJbjooKT0+VnIsZWFzZUN1YmljSW5PdXQ6KCk9PlhyLGVhc2VDdWJpY091dDooKT0+R3IsZWFzZUVsYXN0aWM6KCk9PnBzLGVhc2VFbGFzdGljSW46KCk9PmRzLGVhc2VFbGFzdGljSW5PdXQ6KCk9PnlzLGVhc2VFbGFzdGljT3V0OigpPT5wcyxlYXNlRXhwOigpPT50cyxlYXNlRXhwSW46KCk9PktvLGVhc2VFeHBJbk91dDooKT0+dHMsZWFzZUV4cE91dDooKT0+Sm8sZWFzZUxpbmVhcjooKT0+am8sZWFzZVBvbHk6KCk9PiRvLGVhc2VQb2x5SW46KCk9PnFvLGVhc2VQb2x5SW5PdXQ6KCk9PiRvLGVhc2VQb2x5T3V0OigpPT5IbyxlYXNlUXVhZDooKT0+VW8sZWFzZVF1YWRJbjooKT0+WW8sZWFzZVF1YWRJbk91dDooKT0+VW8sZWFzZVF1YWRPdXQ6KCk9PnpvLGVhc2VTaW46KCk9PlpvLGVhc2VTaW5JbjooKT0+R28sZWFzZVNpbkluT3V0OigpPT5abyxlYXNlU2luT3V0OigpPT5YbyxlbnRyaWVzOigpPT5wYSxldmVudDooKT0+bGUsZXh0ZW50OigpPT5tLGZvcmNlQ2VudGVyOigpPT5Ccyxmb3JjZUNvbGxpZGU6KCk9PldzLGZvcmNlTGluazooKT0+WHMsZm9yY2VNYW55Qm9keTooKT0+dGMsZm9yY2VSYWRpYWw6KCk9PmVjLGZvcmNlU2ltdWxhdGlvbjooKT0+SnMsZm9yY2VYOigpPT5uYyxmb3JjZVk6KCk9PnJjLGZvcm1hdDooKT0+cGMsZm9ybWF0RGVmYXVsdExvY2FsZTooKT0+YmMsZm9ybWF0TG9jYWxlOigpPT52Yyxmb3JtYXRQcmVmaXg6KCk9PnljLGZvcm1hdFNwZWNpZmllcjooKT0+Y2MsZ2VvQWxiZXJzOigpPT5VZixnZW9BbGJlcnNVc2E6KCk9PnFmLGdlb0FyZWE6KCk9Pnl1LGdlb0F6aW11dGhhbEVxdWFsQXJlYTooKT0+VmYsZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3OigpPT5XZixnZW9BemltdXRoYWxFcXVpZGlzdGFudDooKT0+WGYsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6KCk9PkdmLGdlb0JvdW5kczooKT0+c2wsZ2VvQ2VudHJvaWQ6KCk9PmJsLGdlb0NpcmNsZTooKT0+TmwsZ2VvQ2xpcEFudGltZXJpZGlhbjooKT0+VWwsZ2VvQ2xpcENpcmNsZTooKT0+cWwsZ2VvQ2xpcEV4dGVudDooKT0+VmwsZ2VvQ2xpcFJlY3RhbmdsZTooKT0+V2wsZ2VvQ29uaWNDb25mb3JtYWw6KCk9PmVkLGdlb0NvbmljQ29uZm9ybWFsUmF3OigpPT50ZCxnZW9Db25pY0VxdWFsQXJlYTooKT0+emYsZ2VvQ29uaWNFcXVhbEFyZWFSYXc6KCk9PllmLGdlb0NvbmljRXF1aWRpc3RhbnQ6KCk9PmFkLGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6KCk9PmlkLGdlb0NvbnRhaW5zOigpPT5waCxnZW9EaXN0YW5jZTooKT0+YWgsZ2VvRXF1YWxFYXJ0aDooKT0+ZmQsZ2VvRXF1YWxFYXJ0aFJhdzooKT0+aGQsZ2VvRXF1aXJlY3Rhbmd1bGFyOigpPT5yZCxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6KCk9Pm5kLGdlb0dub21vbmljOigpPT5wZCxnZW9Hbm9tb25pY1JhdzooKT0+ZGQsZ2VvR3JhdGljdWxlOigpPT5taCxnZW9HcmF0aWN1bGUxMDooKT0+dmgsZ2VvSWRlbnRpdHk6KCk9PnlkLGdlb0ludGVycG9sYXRlOigpPT5iaCxnZW9MZW5ndGg6KCk9Pm5oLGdlb01lcmNhdG9yOigpPT5RZixnZW9NZXJjYXRvclJhdzooKT0+WmYsZ2VvTmF0dXJhbEVhcnRoMTooKT0+bWQsZ2VvTmF0dXJhbEVhcnRoMVJhdzooKT0+Z2QsZ2VvT3J0aG9ncmFwaGljOigpPT5iZCxnZW9PcnRob2dyYXBoaWNSYXc6KCk9PnZkLGdlb1BhdGg6KCk9PmtmLGdlb1Byb2plY3Rpb246KCk9PkZmLGdlb1Byb2plY3Rpb25NdXRhdG9yOigpPT5QZixnZW9Sb3RhdGlvbjooKT0+U2wsZ2VvU3RlcmVvZ3JhcGhpYzooKT0+eGQsZ2VvU3RlcmVvZ3JhcGhpY1JhdzooKT0+X2QsZ2VvU3RyZWFtOigpPT5udSxnZW9UcmFuc2Zvcm06KCk9PlRmLGdlb1RyYW5zdmVyc2VNZXJjYXRvcjooKT0+a2QsZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3OigpPT53ZCxncmF5OigpPT5rYSxoY2w6KCk9Pk9hLGhpZXJhcmNoeTooKT0+TWQsaGlzdG9ncmFtOigpPT5ELGhzbDooKT0+YW4saHRtbDooKT0+RHMsaW1hZ2U6KCk9PkNzLGludGVycG9sYXRlOigpPT5NbixpbnRlcnBvbGF0ZUFycmF5OigpPT54bixpbnRlcnBvbGF0ZUJhc2lzOigpPT51bixpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOigpPT5sbixpbnRlcnBvbGF0ZUJsdWVzOigpPT5mXyxpbnRlcnBvbGF0ZUJyQkc6KCk9PlRiLGludGVycG9sYXRlQnVHbjooKT0+VWIsaW50ZXJwb2xhdGVCdVB1OigpPT5IYixpbnRlcnBvbGF0ZUNpdmlkaXM6KCk9PmtfLGludGVycG9sYXRlQ29vbDooKT0+Q18saW50ZXJwb2xhdGVDdWJlaGVsaXg6KCk9PnpwLGludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdDooKT0+VF8saW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nOigpPT5VcCxpbnRlcnBvbGF0ZURhdGU6KCk9PmtuLGludGVycG9sYXRlRGlzY3JldGU6KCk9PlNwLGludGVycG9sYXRlR25CdTooKT0+V2IsaW50ZXJwb2xhdGVHcmVlbnM6KCk9PnBfLGludGVycG9sYXRlR3JleXM6KCk9PmdfLGludGVycG9sYXRlSGNsOigpPT5QcCxpbnRlcnBvbGF0ZUhjbExvbmc6KCk9PmpwLGludGVycG9sYXRlSHNsOigpPT5McCxpbnRlcnBvbGF0ZUhzbExvbmc6KCk9PklwLGludGVycG9sYXRlSHVlOigpPT5BcCxpbnRlcnBvbGF0ZUluZmVybm86KCk9PkZfLGludGVycG9sYXRlTGFiOigpPT5ScCxpbnRlcnBvbGF0ZU1hZ21hOigpPT5SXyxpbnRlcnBvbGF0ZU51bWJlcjooKT0+VG4saW50ZXJwb2xhdGVOdW1iZXJBcnJheTooKT0+Ym4saW50ZXJwb2xhdGVPYmplY3Q6KCk9PkVuLGludGVycG9sYXRlT3JSZDooKT0+R2IsaW50ZXJwb2xhdGVPcmFuZ2VzOigpPT53XyxpbnRlcnBvbGF0ZVBSR246KCk9PkNiLGludGVycG9sYXRlUGlZRzooKT0+QWIsaW50ZXJwb2xhdGVQbGFzbWE6KCk9PlBfLGludGVycG9sYXRlUHVCdTooKT0+S2IsaW50ZXJwb2xhdGVQdUJ1R246KCk9PlpiLGludGVycG9sYXRlUHVPcjooKT0+TmIsaW50ZXJwb2xhdGVQdVJkOigpPT50XyxpbnRlcnBvbGF0ZVB1cnBsZXM6KCk9PnZfLGludGVycG9sYXRlUmFpbmJvdzooKT0+QV8saW50ZXJwb2xhdGVSZEJ1OigpPT5PYixpbnRlcnBvbGF0ZVJkR3k6KCk9PkxiLGludGVycG9sYXRlUmRQdTooKT0+bl8saW50ZXJwb2xhdGVSZFlsQnU6KCk9PlJiLGludGVycG9sYXRlUmRZbEduOigpPT5QYixpbnRlcnBvbGF0ZVJlZHM6KCk9Pl9fLGludGVycG9sYXRlUmdiOigpPT55bixpbnRlcnBvbGF0ZVJnYkJhc2lzOigpPT5tbixpbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkOigpPT52bixpbnRlcnBvbGF0ZVJvdW5kOigpPT5NcCxpbnRlcnBvbGF0ZVNpbmVib3c6KCk9Pk9fLGludGVycG9sYXRlU3BlY3RyYWw6KCk9PlliLGludGVycG9sYXRlU3RyaW5nOigpPT5BbixpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzczooKT0+cHIsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6KCk9PnlyLGludGVycG9sYXRlVHVyYm86KCk9PkJfLGludGVycG9sYXRlVmlyaWRpczooKT0+SV8saW50ZXJwb2xhdGVXYXJtOigpPT5FXyxpbnRlcnBvbGF0ZVlsR246KCk9Pm9fLGludGVycG9sYXRlWWxHbkJ1OigpPT5pXyxpbnRlcnBvbGF0ZVlsT3JCcjooKT0+Y18saW50ZXJwb2xhdGVZbE9yUmQ6KCk9PmxfLGludGVycG9sYXRlWm9vbTooKT0+T3AsaW50ZXJydXB0OigpPT5hcixpbnRlcnZhbDooKT0+ZmssaXNvRm9ybWF0OigpPT51ayxpc29QYXJzZTooKT0+aGssanNvbjooKT0+QXMsa2V5czooKT0+ZmEsbGFiOigpPT5UYSxsY2g6KCk9PkRhLGxpbmU6KCk9Pm14LGxpbmVSYWRpYWw6KCk9PkN4LGxpbmtIb3Jpem9udGFsOigpPT5SeCxsaW5rUmFkaWFsOigpPT5QeCxsaW5rVmVydGljYWw6KCk9PkZ4LGxvY2FsOigpPT56XyxtYXA6KCk9Pm5hLG1hdGNoZXI6KCk9Pm10LG1heDooKT0+SSxtZWFuOigpPT5SLG1lZGlhbjooKT0+RixtZXJnZTooKT0+UCxtaW46KCk9PmosbW91c2U6KCk9PkJuLG5hbWVzcGFjZTooKT0+RXQsbmFtZXNwYWNlczooKT0+VHQsbmVzdDooKT0+cmEsbm93OigpPT5IbixwYWNrOigpPT50cCxwYWNrRW5jbG9zZTooKT0+SWQscGFja1NpYmxpbmdzOigpPT5HZCxwYWlyczooKT0+bCxwYXJ0aXRpb246KCk9Pm9wLHBhdGg6KCk9PldpLHBlcm11dGU6KCk9PlkscGllOigpPT54eCxwaWVjZXdpc2U6KCk9PnFwLHBvaW50UmFkaWFsOigpPT5BeCxwb2x5Z29uQXJlYTooKT0+JHAscG9seWdvbkNlbnRyb2lkOigpPT5XcCxwb2x5Z29uQ29udGFpbnM6KCk9PlFwLHBvbHlnb25IdWxsOigpPT5acCxwb2x5Z29uTGVuZ3RoOigpPT5LcCxwcmVjaXNpb25GaXhlZDooKT0+X2MscHJlY2lzaW9uUHJlZml4OigpPT54YyxwcmVjaXNpb25Sb3VuZDooKT0+d2MscXVhZHRyZWU6KCk9PllzLHF1YW50aWxlOigpPT5PLHF1YW50aXplOigpPT5IcCxyYWRpYWxBcmVhOigpPT5TeCxyYWRpYWxMaW5lOigpPT5DeCxyYW5kb21CYXRlczooKT0+aXkscmFuZG9tRXhwb25lbnRpYWw6KCk9PmF5LHJhbmRvbUlyd2luSGFsbDooKT0+cnkscmFuZG9tTG9nTm9ybWFsOigpPT5ueSxyYW5kb21Ob3JtYWw6KCk9PmV5LHJhbmRvbVVuaWZvcm06KCk9PnR5LHJhbmdlOigpPT5rLHJnYjooKT0+UWUscmliYm9uOigpPT5LaSxzY2FsZUJhbmQ6KCk9PmR5LHNjYWxlRGl2ZXJnaW5nOigpPT5vYixzY2FsZURpdmVyZ2luZ0xvZzooKT0+c2Isc2NhbGVEaXZlcmdpbmdQb3c6KCk9PnViLHNjYWxlRGl2ZXJnaW5nU3FydDooKT0+bGIsc2NhbGVEaXZlcmdpbmdTeW1sb2c6KCk9PmNiLHNjYWxlSWRlbnRpdHk6KCk9Pk15LHNjYWxlSW1wbGljaXQ6KCk9Pmh5LHNjYWxlTGluZWFyOigpPT5BeSxzY2FsZUxvZzooKT0+UHksc2NhbGVPcmRpbmFsOigpPT5meSxzY2FsZVBvaW50OigpPT55eSxzY2FsZVBvdzooKT0+Vnksc2NhbGVRdWFudGlsZTooKT0+WHksc2NhbGVRdWFudGl6ZTooKT0+Wnksc2NhbGVTZXF1ZW50aWFsOigpPT5KdixzY2FsZVNlcXVlbnRpYWxMb2c6KCk9PnRiLHNjYWxlU2VxdWVudGlhbFBvdzooKT0+bmIsc2NhbGVTZXF1ZW50aWFsUXVhbnRpbGU6KCk9PmliLHNjYWxlU2VxdWVudGlhbFNxcnQ6KCk9PnJiLHNjYWxlU2VxdWVudGlhbFN5bWxvZzooKT0+ZWIsc2NhbGVTcXJ0OigpPT5HeSxzY2FsZVN5bWxvZzooKT0+VXksc2NhbGVUaHJlc2hvbGQ6KCk9PlF5LHNjYWxlVGltZTooKT0+WXYsc2NhbGVVdGM6KCk9Plp2LHNjYW46KCk9Pnosc2NoZW1lQWNjZW50OigpPT5kYixzY2hlbWVCbHVlczooKT0+aF8sc2NoZW1lQnJCRzooKT0+a2Isc2NoZW1lQnVHbjooKT0+emIsc2NoZW1lQnVQdTooKT0+cWIsc2NoZW1lQ2F0ZWdvcnkxMDooKT0+ZmIsc2NoZW1lRGFyazI6KCk9PnBiLHNjaGVtZUduQnU6KCk9PiRiLHNjaGVtZUdyZWVuczooKT0+ZF8sc2NoZW1lR3JleXM6KCk9PnlfLHNjaGVtZU9yUmQ6KCk9PlZiLHNjaGVtZU9yYW5nZXM6KCk9PnhfLHNjaGVtZVBSR246KCk9PkViLHNjaGVtZVBhaXJlZDooKT0+eWIsc2NoZW1lUGFzdGVsMTooKT0+Z2Isc2NoZW1lUGFzdGVsMjooKT0+bWIsc2NoZW1lUGlZRzooKT0+U2Isc2NoZW1lUHVCdTooKT0+UWIsc2NoZW1lUHVCdUduOigpPT5YYixzY2hlbWVQdU9yOigpPT5NYixzY2hlbWVQdVJkOigpPT5KYixzY2hlbWVQdXJwbGVzOigpPT5tXyxzY2hlbWVSZEJ1OigpPT5EYixzY2hlbWVSZEd5OigpPT5CYixzY2hlbWVSZFB1OigpPT5lXyxzY2hlbWVSZFlsQnU6KCk9PkliLHNjaGVtZVJkWWxHbjooKT0+RmIsc2NoZW1lUmVkczooKT0+Yl8sc2NoZW1lU2V0MTooKT0+dmIsc2NoZW1lU2V0MjooKT0+YmIsc2NoZW1lU2V0MzooKT0+X2Isc2NoZW1lU3BlY3RyYWw6KCk9PmpiLHNjaGVtZVRhYmxlYXUxMDooKT0+eGIsc2NoZW1lWWxHbjooKT0+YV8sc2NoZW1lWWxHbkJ1OigpPT5yXyxzY2hlbWVZbE9yQnI6KCk9PnNfLHNjaGVtZVlsT3JSZDooKT0+dV8sc2VsZWN0OigpPT5UZSxzZWxlY3RBbGw6KCk9PnFfLHNlbGVjdGlvbjooKT0+a2Usc2VsZWN0b3I6KCk9PnB0LHNlbGVjdG9yQWxsOigpPT5ndCxzZXQ6KCk9PmhhLHNodWZmbGU6KCk9PlUsc3RhY2s6KCk9Plh3LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOigpPT5RdyxzdGFja09mZnNldEV4cGFuZDooKT0+Wncsc3RhY2tPZmZzZXROb25lOigpPT5XdyxzdGFja09mZnNldFNpbGhvdWV0dGU6KCk9Pkt3LHN0YWNrT2Zmc2V0V2lnZ2xlOigpPT5KdyxzdGFja09yZGVyQXBwZWFyYW5jZTooKT0+dGssc3RhY2tPcmRlckFzY2VuZGluZzooKT0+bmssc3RhY2tPcmRlckRlc2NlbmRpbmc6KCk9PmlrLHN0YWNrT3JkZXJJbnNpZGVPdXQ6KCk9PmFrLHN0YWNrT3JkZXJOb25lOigpPT5WdyxzdGFja09yZGVyUmV2ZXJzZTooKT0+b2ssc3RyYXRpZnk6KCk9PmhwLHN0eWxlOigpPT5SdCxzdW06KCk9PnEsc3ZnOigpPT5PcyxzeW1ib2w6KCk9PnJ3LHN5bWJvbENpcmNsZTooKT0+angsc3ltYm9sQ3Jvc3M6KCk9Pll4LHN5bWJvbERpYW1vbmQ6KCk9PnF4LHN5bWJvbFNxdWFyZTooKT0+R3gsc3ltYm9sU3RhcjooKT0+Vngsc3ltYm9sVHJpYW5nbGU6KCk9Plp4LHN5bWJvbFd5ZTooKT0+ZXcsc3ltYm9sczooKT0+bncsdGV4dDooKT0+eHMsdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczooKT0+Qix0aHJlc2hvbGRTY290dDooKT0+TCx0aHJlc2hvbGRTdHVyZ2VzOigpPT5OLHRpY2tGb3JtYXQ6KCk9PkN5LHRpY2tJbmNyZW1lbnQ6KCk9PkEsdGlja1N0ZXA6KCk9Pk0sdGlja3M6KCk9PlMsdGltZURheTooKT0+QWcsdGltZURheXM6KCk9Pk1nLHRpbWVGb3JtYXQ6KCk9PnBtLHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOigpPT5Jdix0aW1lRm9ybWF0TG9jYWxlOigpPT5mbSx0aW1lRnJpZGF5OigpPT52Zyx0aW1lRnJpZGF5czooKT0+RWcsdGltZUhvdXI6KCk9PkRnLHRpbWVIb3VyczooKT0+T2csdGltZUludGVydmFsOigpPT50Zyx0aW1lTWlsbGlzZWNvbmQ6KCk9PllnLHRpbWVNaWxsaXNlY29uZHM6KCk9PnpnLHRpbWVNaW51dGU6KCk9PkxnLHRpbWVNaW51dGVzOigpPT5JZyx0aW1lTW9uZGF5OigpPT5wZyx0aW1lTW9uZGF5czooKT0+eGcsdGltZU1vbnRoOigpPT5hZyx0aW1lTW9udGhzOigpPT5vZyx0aW1lUGFyc2U6KCk9PnltLHRpbWVTYXR1cmRheTooKT0+YmcsdGltZVNhdHVyZGF5czooKT0+Q2csdGltZVNlY29uZDooKT0+RmcsdGltZVNlY29uZHM6KCk9PlBnLHRpbWVTdW5kYXk6KCk9PmRnLHRpbWVTdW5kYXlzOigpPT5fZyx0aW1lVGh1cnNkYXk6KCk9Pm1nLHRpbWVUaHVyc2RheXM6KCk9PlRnLHRpbWVUdWVzZGF5OigpPT55Zyx0aW1lVHVlc2RheXM6KCk9PndnLHRpbWVXZWRuZXNkYXk6KCk9PmdnLHRpbWVXZWRuZXNkYXlzOigpPT5rZyx0aW1lV2VlazooKT0+ZGcsdGltZVdlZWtzOigpPT5fZyx0aW1lWWVhcjooKT0+bmcsdGltZVllYXJzOigpPT5yZyx0aW1lb3V0OigpPT5Lbix0aW1lcjooKT0+Vm4sdGltZXJGbHVzaDooKT0+R24sdG91Y2g6KCk9Pk9uLHRvdWNoZXM6KCk9PkhfLHRyYW5zaXRpb246KCk9PkhyLHRyYW5zcG9zZTooKT0+SCx0cmVlOigpPT52cCx0cmVlbWFwOigpPT5rcCx0cmVlbWFwQmluYXJ5OigpPT5UcCx0cmVlbWFwRGljZTooKT0+YXAsdHJlZW1hcFJlc3F1YXJpZnk6KCk9PkNwLHRyZWVtYXBTbGljZTooKT0+YnAsdHJlZW1hcFNsaWNlRGljZTooKT0+RXAsdHJlZW1hcFNxdWFyaWZ5OigpPT53cCx0c3Y6KCk9PkVzLHRzdkZvcm1hdDooKT0+T28sdHN2Rm9ybWF0Qm9keTooKT0+Qm8sdHN2Rm9ybWF0Um93OigpPT5Jbyx0c3ZGb3JtYXRSb3dzOigpPT5Mbyx0c3ZGb3JtYXRWYWx1ZTooKT0+Um8sdHN2UGFyc2U6KCk9Pk5vLHRzdlBhcnNlUm93czooKT0+RG8sdXRjRGF5OigpPT5pbSx1dGNEYXlzOigpPT5hbSx1dGNGb3JtYXQ6KCk9PmdtLHV0Y0ZyaWRheTooKT0+R2csdXRjRnJpZGF5czooKT0+ZW0sdXRjSG91cjooKT0+JHYsdXRjSG91cnM6KCk9Pld2LHV0Y01pbGxpc2Vjb25kOigpPT5ZZyx1dGNNaWxsaXNlY29uZHM6KCk9PnpnLHV0Y01pbnV0ZTooKT0+R3YsdXRjTWludXRlczooKT0+WHYsdXRjTW9uZGF5OigpPT5IZyx1dGNNb25kYXlzOigpPT5RZyx1dGNNb250aDooKT0+VXYsdXRjTW9udGhzOigpPT5xdix1dGNQYXJzZTooKT0+bW0sdXRjU2F0dXJkYXk6KCk9PlhnLHV0Y1NhdHVyZGF5czooKT0+bm0sdXRjU2Vjb25kOigpPT5GZyx1dGNTZWNvbmRzOigpPT5QZyx1dGNTdW5kYXk6KCk9PnFnLHV0Y1N1bmRheXM6KCk9PlpnLHV0Y1RodXJzZGF5OigpPT5WZyx1dGNUaHVyc2RheXM6KCk9PnRtLHV0Y1R1ZXNkYXk6KCk9PiRnLHV0Y1R1ZXNkYXlzOigpPT5LZyx1dGNXZWRuZXNkYXk6KCk9PldnLHV0Y1dlZG5lc2RheXM6KCk9PkpnLHV0Y1dlZWs6KCk9PnFnLHV0Y1dlZWtzOigpPT5aZyx1dGNZZWFyOigpPT5zbSx1dGNZZWFyczooKT0+Y20sdmFsdWVzOigpPT5kYSx2YXJpYW5jZTooKT0+eSx2ZXJzaW9uOigpPT5yLHZvcm9ub2k6KCk9PktrLHdpbmRvdzooKT0+T3QseG1sOigpPT5Ocyx6aXA6KCk9Plcsem9vbTooKT0+ZlQsem9vbUlkZW50aXR5OigpPT5uVCx6b29tVHJhbnNmb3JtOigpPT5yVH0pO3ZhciByPSI1LjE2LjAiO2Z1bmN0aW9uIGkodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gYSh0KXt2YXIgZTtyZXR1cm4gMT09PXQubGVuZ3RoJiYoZT10LHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gaShlKHQpLG4pfSkse2xlZnQ6ZnVuY3Rpb24oZSxuLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtyPGk7KXt2YXIgYT1yK2k+Pj4xO3QoZVthXSxuKTwwP3I9YSsxOmk9YX1yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24oZSxuLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtyPGk7KXt2YXIgYT1yK2k+Pj4xO3QoZVthXSxuKT4wP2k9YTpyPWErMX1yZXR1cm4gcn19fXZhciBvPWEoaSkscz1vLnJpZ2h0LGM9by5sZWZ0O2NvbnN0IHU9cztmdW5jdGlvbiBsKHQsZSl7bnVsbD09ZSYmKGU9aCk7Zm9yKHZhciBuPTAscj10Lmxlbmd0aC0xLGk9dFswXSxhPW5ldyBBcnJheShyPDA/MDpyKTtuPHI7KWFbbl09ZShpLGk9dFsrK25dKTtyZXR1cm4gYX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gZih0LGUsbil7dmFyIHIsaSxhLG8scz10Lmxlbmd0aCxjPWUubGVuZ3RoLHU9bmV3IEFycmF5KHMqYyk7Zm9yKG51bGw9PW4mJihuPWgpLHI9YT0wO3I8czsrK3IpZm9yKG89dFtyXSxpPTA7aTxjOysraSwrK2EpdVthXT1uKG8sZVtpXSk7cmV0dXJuIHV9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24geSh0LGUpe3ZhciBuLHIsaT10Lmxlbmd0aCxhPTAsbz0tMSxzPTAsYz0wO2lmKG51bGw9PWUpZm9yKDsrK288aTspaXNOYU4obj1wKHRbb10pKXx8KGMrPShyPW4tcykqKG4tKHMrPXIvKythKSkpO2Vsc2UgZm9yKDsrK288aTspaXNOYU4obj1wKGUodFtvXSxvLHQpKSl8fChjKz0ocj1uLXMpKihuLShzKz1yLysrYSkpKTtpZihhPjEpcmV0dXJuIGMvKGEtMSl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPXkodCxlKTtyZXR1cm4gbj9NYXRoLnNxcnQobik6bn1mdW5jdGlvbiBtKHQsZSl7dmFyIG4scixpLGE9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxhOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3Iocj1pPW47KytvPGE7KW51bGwhPShuPXRbb10pJiYocj5uJiYocj1uKSxpPG4mJihpPW4pKX1lbHNlIGZvcig7KytvPGE7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3Iocj1pPW47KytvPGE7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmKHI+biYmKHI9biksaTxuJiYoaT1uKSk7cmV0dXJuW3IsaV19dmFyIHY9QXJyYXkucHJvdG90eXBlLGI9di5zbGljZSxfPXYubWFwO2Z1bmN0aW9uIHgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHcodCl7cmV0dXJuIHR9ZnVuY3Rpb24gayh0LGUsbil7dD0rdCxlPStlLG49KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTppPDM/MTorbjtmb3IodmFyIHI9LTEsaT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxhPW5ldyBBcnJheShpKTsrK3I8aTspYVtyXT10K3IqbjtyZXR1cm4gYX12YXIgVD1NYXRoLnNxcnQoNTApLEU9TWF0aC5zcXJ0KDEwKSxDPU1hdGguc3FydCgyKTtmdW5jdGlvbiBTKHQsZSxuKXt2YXIgcixpLGEsbyxzPS0xO2lmKG49K24sKHQ9K3QpPT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKHI9ZTx0KSYmKGk9dCx0PWUsZT1pKSwwPT09KG89QSh0LGUsbikpfHwhaXNGaW5pdGUobykpcmV0dXJuW107aWYobz4wKWZvcih0PU1hdGguY2VpbCh0L28pLGU9TWF0aC5mbG9vcihlL28pLGE9bmV3IEFycmF5KGk9TWF0aC5jZWlsKGUtdCsxKSk7KytzPGk7KWFbc109KHQrcykqbztlbHNlIGZvcih0PU1hdGguZmxvb3IodCpvKSxlPU1hdGguY2VpbChlKm8pLGE9bmV3IEFycmF5KGk9TWF0aC5jZWlsKHQtZSsxKSk7KytzPGk7KWFbc109KHQtcykvbztyZXR1cm4gciYmYS5yZXZlcnNlKCksYX1mdW5jdGlvbiBBKHQsZSxuKXt2YXIgcj0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhyKS9NYXRoLkxOMTApLGE9ci9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49VD8xMDphPj1FPzU6YT49Qz8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PVQ/MTA6YT49RT81OmE+PUM/MjoxKX1mdW5jdGlvbiBNKHQsZSxuKXt2YXIgcj1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbiksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCkpLGE9ci9pO3JldHVybiBhPj1UP2kqPTEwOmE+PUU/aSo9NTphPj1DJiYoaSo9MiksZTx0Py1pOml9ZnVuY3Rpb24gTih0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiBEKCl7dmFyIHQ9dyxlPW0sbj1OO2Z1bmN0aW9uIHIocil7dmFyIGksYSxvPXIubGVuZ3RoLHM9bmV3IEFycmF5KG8pO2ZvcihpPTA7aTxvOysraSlzW2ldPXQocltpXSxpLHIpO3ZhciBjPWUocyksbD1jWzBdLGg9Y1sxXSxmPW4ocyxsLGgpO0FycmF5LmlzQXJyYXkoZil8fChmPU0obCxoLGYpLGY9ayhNYXRoLmNlaWwobC9mKSpmLGgsZikpO2Zvcih2YXIgZD1mLmxlbmd0aDtmWzBdPD1sOylmLnNoaWZ0KCksLS1kO2Zvcig7ZltkLTFdPmg7KWYucG9wKCksLS1kO3ZhciBwLHk9bmV3IEFycmF5KGQrMSk7Zm9yKGk9MDtpPD1kOysraSkocD15W2ldPVtdKS54MD1pPjA/ZltpLTFdOmwscC54MT1pPGQ/ZltpXTpoO2ZvcihpPTA7aTxvOysraSlsPD0oYT1zW2ldKSYmYTw9aCYmeVt1KGYsYSwwLGQpXS5wdXNoKHJbaV0pO3JldHVybiB5fXJldHVybiByLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6eChlKSxyKTp0fSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OngoW3RbMF0sdFsxXV0pLHIpOmV9LHIudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/eChiLmNhbGwodCkpOngodCkscik6bn0scn1mdW5jdGlvbiBPKHQsZSxuKXtpZihudWxsPT1uJiYobj1wKSxyPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fHI8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W3ItMV0sci0xLHQpO3ZhciByLGk9KHItMSkqZSxhPU1hdGguZmxvb3IoaSksbz0rbih0W2FdLGEsdCk7cmV0dXJuIG8rKCtuKHRbYSsxXSxhKzEsdCktbykqKGktYSl9fWZ1bmN0aW9uIEIodCxlLG4pe3JldHVybiB0PV8uY2FsbCh0LHApLnNvcnQoaSksTWF0aC5jZWlsKChuLWUpLygyKihPKHQsLjc1KS1PKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX1mdW5jdGlvbiBMKHQsZSxuKXtyZXR1cm4gTWF0aC5jZWlsKChuLWUpLygzLjUqZyh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfWZ1bmN0aW9uIEkodCxlKXt2YXIgbixyLGk9dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxpOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj10W2FdKSYmbj5yJiYocj1uKX1lbHNlIGZvcig7KythPGk7KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJm4+ciYmKHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gUih0LGUpe3ZhciBuLHI9dC5sZW5ndGgsaT1yLGE9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1wKHRbYV0pKT8tLWk6bys9bjtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49cChlKHRbYV0sYSx0KSkpPy0taTpvKz1uO2lmKGkpcmV0dXJuIG8vaX1mdW5jdGlvbiBGKHQsZSl7dmFyIG4scj10Lmxlbmd0aCxhPS0xLG89W107aWYobnVsbD09ZSlmb3IoOysrYTxyOylpc05hTihuPXAodFthXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPXAoZSh0W2FdLGEsdCkpKXx8by5wdXNoKG4pO3JldHVybiBPKG8uc29ydChpKSwuNSl9ZnVuY3Rpb24gUCh0KXtmb3IodmFyIGUsbixyLGk9dC5sZW5ndGgsYT0tMSxvPTA7KythPGk7KW8rPXRbYV0ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShvKTstLWk+PTA7KWZvcihlPShyPXRbaV0pLmxlbmd0aDstLWU+PTA7KW5bLS1vXT1yW2VdO3JldHVybiBufWZ1bmN0aW9uIGoodCxlKXt2YXIgbixyLGk9dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxpOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj10W2FdKSYmcj5uJiYocj1uKX1lbHNlIGZvcig7KythPGk7KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3Iocj1uOysrYTxpOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJnI+biYmKHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gWSh0LGUpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09dFtlW25dXTtyZXR1cm4gcn1mdW5jdGlvbiB6KHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4scixhPTAsbz0wLHM9dFtvXTtmb3IobnVsbD09ZSYmKGU9aSk7KythPG47KShlKHI9dFthXSxzKTwwfHwwIT09ZShzLHMpKSYmKHM9cixvPWEpO3JldHVybiAwPT09ZShzLHMpP286dm9pZCAwfX1mdW5jdGlvbiBVKHQsZSxuKXtmb3IodmFyIHIsaSxhPShudWxsPT1uP3QubGVuZ3RoOm4pLShlPW51bGw9PWU/MDorZSk7YTspaT1NYXRoLnJhbmRvbSgpKmEtLXwwLHI9dFthK2VdLHRbYStlXT10W2krZV0sdFtpK2VdPXI7cmV0dXJuIHR9ZnVuY3Rpb24gcSh0LGUpe3ZhciBuLHI9dC5sZW5ndGgsaT0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysraTxyOykobj0rdFtpXSkmJihhKz1uKTtlbHNlIGZvcig7KytpPHI7KShuPStlKHRbaV0saSx0KSkmJihhKz1uKTtyZXR1cm4gYX1mdW5jdGlvbiBIKHQpe2lmKCEoaT10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLG49aih0LCQpLHI9bmV3IEFycmF5KG4pOysrZTxuOylmb3IodmFyIGksYT0tMSxvPXJbZV09bmV3IEFycmF5KGkpOysrYTxpOylvW2FdPXRbYV1bZV07cmV0dXJuIHJ9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gVygpe3JldHVybiBIKGFyZ3VtZW50cyl9dmFyIFY9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEcodCl7cmV0dXJuIHR9dmFyIFg9MWUtNjtmdW5jdGlvbiBaKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gUSh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIEsodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybit0KGUpfX1mdW5jdGlvbiBKKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIHR0KCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIGV0KHQsZSl7dmFyIG49W10scj1udWxsLGk9bnVsbCxhPTYsbz02LHM9MyxjPTE9PT10fHw0PT09dD8tMToxLHU9ND09PXR8fDI9PT10PyJ4IjoieSIsbD0xPT09dHx8Mz09PXQ/WjpRO2Z1bmN0aW9uIGgoaCl7dmFyIGY9bnVsbD09cj9lLnRpY2tzP2UudGlja3MuYXBwbHkoZSxuKTplLmRvbWFpbigpOnIsZD1udWxsPT1pP2UudGlja0Zvcm1hdD9lLnRpY2tGb3JtYXQuYXBwbHkoZSxuKTpHOmkscD1NYXRoLm1heChhLDApK3MseT1lLnJhbmdlKCksZz0reVswXSsuNSxtPSt5W3kubGVuZ3RoLTFdKy41LHY9KGUuYmFuZHdpZHRoP0o6SykoZS5jb3B5KCkpLGI9aC5zZWxlY3Rpb24/aC5zZWxlY3Rpb24oKTpoLF89Yi5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSkseD1iLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGYsZSkub3JkZXIoKSx3PXguZXhpdCgpLGs9eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLFQ9eC5zZWxlY3QoImxpbmUiKSxFPXguc2VsZWN0KCJ0ZXh0Iik7Xz1fLm1lcmdlKF8uZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikpLHg9eC5tZXJnZShrKSxUPVQubWVyZ2Uoay5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHUrIjIiLGMqYSkpLEU9RS5tZXJnZShrLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHUsYypwKS5hdHRyKCJkeSIsMT09PXQ/IjBlbSI6Mz09PXQ/IjAuNzFlbSI6IjAuMzJlbSIpKSxoIT09YiYmKF89Xy50cmFuc2l0aW9uKGgpLHg9eC50cmFuc2l0aW9uKGgpLFQ9VC50cmFuc2l0aW9uKGgpLEU9RS50cmFuc2l0aW9uKGgpLHc9dy50cmFuc2l0aW9uKGgpLmF0dHIoIm9wYWNpdHkiLFgpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXYodCkpP2wodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLGsuYXR0cigib3BhY2l0eSIsWCkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gbChlJiZpc0Zpbml0ZShlPWUodCkpP2U6dih0KSl9KSkpLHcucmVtb3ZlKCksXy5hdHRyKCJkIiw0PT09dHx8Mj09dD9vPyJNIitjKm8rIiwiK2crIkgwLjVWIittKyJIIitjKm86Ik0wLjUsIitnKyJWIittOm8/Ik0iK2crIiwiK2MqbysiVjAuNUgiK20rIlYiK2MqbzoiTSIrZysiLDAuNUgiK20pLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGwodih0KSl9KSksVC5hdHRyKHUrIjIiLGMqYSksRS5hdHRyKHUsYypwKS50ZXh0KGQpLGIuZmlsdGVyKHR0KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxiLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9dn0pKX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1WLmNhbGwoYXJndW1lbnRzKSxofSxoLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9bXTpWLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOlYuY2FsbCh0KSxoKTpyJiZyLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGgpOml9LGgudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bz0rdCxoKTphfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsaCk6YX0saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsaCk6c30saH1mdW5jdGlvbiBudCh0KXtyZXR1cm4gZXQoMSx0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQoMix0KX1mdW5jdGlvbiBpdCh0KXtyZXR1cm4gZXQoMyx0KX1mdW5jdGlvbiBhdCh0KXtyZXR1cm4gZXQoNCx0KX12YXIgb3Q9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gc3QoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxyPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIHJ8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtyW3RdPVtdfXJldHVybiBuZXcgY3Qocil9ZnVuY3Rpb24gY3QodCl7dGhpcy5fPXR9ZnVuY3Rpb24gdXQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixyPXQuaW5kZXhPZigiLiIpO2lmKHI+PTAmJihuPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIGx0KHQsZSl7Zm9yKHZhciBuLHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYoKG49dFtyXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gaHQodCxlLG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZih0W3JdLm5hbWU9PT1lKXt0W3JdPW90LHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1jdC5wcm90b3R5cGU9c3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcy5fLGk9dXQodCsiIixyKSxhPS0xLG89aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8bzspaWYobj0odD1pW2FdKS50eXBlKXJbbl09aHQocltuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIHIpcltuXT1odChyW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxvOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49bHQocltuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgY3QodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLHIsaT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0ocj10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKXJbYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXJbaV0udmFsdWUuYXBwbHkoZSxuKX19O2NvbnN0IGZ0PXN0O2Z1bmN0aW9uIGR0KCl7fWZ1bmN0aW9uIHB0KHQpe3JldHVybiBudWxsPT10P2R0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24geXQoKXtyZXR1cm5bXX1mdW5jdGlvbiBndCh0KXtyZXR1cm4gbnVsbD09dD95dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIG10KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIGJ0KHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIF90KHQsZSxuLHIsaSxhKXtmb3IodmFyIG8scz0wLGM9ZS5sZW5ndGgsdT1hLmxlbmd0aDtzPHU7KytzKShvPWVbc10pPyhvLl9fZGF0YV9fPWFbc10scltzXT1vKTpuW3NdPW5ldyBidCh0LGFbc10pO2Zvcig7czxjOysrcykobz1lW3NdKSYmKGlbc109byl9ZnVuY3Rpb24geHQodCxlLG4scixpLGEsbyl7dmFyIHMsYyx1LGw9e30saD1lLmxlbmd0aCxmPWEubGVuZ3RoLGQ9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykoYz1lW3NdKSYmKGRbc109dT0iJCIrby5jYWxsKGMsYy5fX2RhdGFfXyxzLGUpLHUgaW4gbD9pW3NdPWM6bFt1XT1jKTtmb3Iocz0wO3M8ZjsrK3MpKGM9bFt1PSIkIitvLmNhbGwodCxhW3NdLHMsYSldKT8ocltzXT1jLGMuX19kYXRhX189YVtzXSxsW3VdPW51bGwpOm5bc109bmV3IGJ0KHQsYVtzXSk7Zm9yKHM9MDtzPGg7KytzKShjPWVbc10pJiZsW2Rbc11dPT09YyYmKGlbc109Yyl9ZnVuY3Rpb24gd3QodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59YnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpidCxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTt2YXIga3Q9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IFR0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDprdCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIEV0KHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLFR0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpUdFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIEN0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBTdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEF0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gTXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gTnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIER0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIE90KHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBCdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBMdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIEl0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsbil9fWZ1bmN0aW9uIFJ0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8T3QodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gRnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFB0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBqdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24genQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgVXQodCl9ZnVuY3Rpb24gVXQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVl0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gcXQodCxlKXtmb3IodmFyIG49enQodCkscj0tMSxpPWUubGVuZ3RoOysrcjxpOyluLmFkZChlW3JdKX1mdW5jdGlvbiBIdCh0LGUpe2Zvcih2YXIgbj16dCh0KSxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW4ucmVtb3ZlKGVbcl0pfWZ1bmN0aW9uICR0KHQpe3JldHVybiBmdW5jdGlvbigpe3F0KHRoaXMsdCl9fWZ1bmN0aW9uIFd0KHQpe3JldHVybiBmdW5jdGlvbigpe0h0KHRoaXMsdCl9fWZ1bmN0aW9uIFZ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP3F0Okh0KSh0aGlzLHQpfX1mdW5jdGlvbiBHdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gWHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBadCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gUXQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBLdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBKdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHRlKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGVlKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gbmUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1rdCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09a3Q/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIHJlKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGllKHQpe3ZhciBlPUV0KHQpO3JldHVybihlLmxvY2FsP3JlOm5lKShlKX1mdW5jdGlvbiBhZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIG9lKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gc2UoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGNlKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1VdC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciB1ZT17fSxsZT1udWxsO2Z1bmN0aW9uIGhlKHQsZSxuKXtyZXR1cm4gdD1mZSh0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIGZlKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9bGU7bGU9cjt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7bGU9aX19fWZ1bmN0aW9uIGRlKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4scj0wLGk9LTEsYT1lLmxlbmd0aDtyPGE7KytyKW49ZVtyXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytpXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysraT9lLmxlbmd0aD1pOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiB5ZSh0LGUsbil7dmFyIHI9dWUuaGFzT3duUHJvcGVydHkodC50eXBlKT9oZTpmZTtyZXR1cm4gZnVuY3Rpb24oaSxhLG8pe3ZhciBzLGM9dGhpcy5fX29uLHU9cihlLGEsbyk7aWYoYylmb3IodmFyIGw9MCxoPWMubGVuZ3RoO2w8aDsrK2wpaWYoKHM9Y1tsXSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9dSxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsdSxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOnUsY2FwdHVyZTpufSxjP2MucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBnZSh0LGUsbixyKXt2YXIgaT1sZTt0LnNvdXJjZUV2ZW50PWxlLGxlPXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4scil9ZmluYWxseXtsZT1pfX1mdW5jdGlvbiBtZSh0LGUsbil7dmFyIHI9T3QodCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkoZSxuKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KGkuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksaS5kZXRhaWw9bi5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gdmUodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbWUodGhpcyx0LGUpfX1mdW5jdGlvbiBiZSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fCh1ZT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIF9lPVtudWxsXTtmdW5jdGlvbiB4ZSh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiB3ZSgpe3JldHVybiBuZXcgeGUoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxfZSl9eGUucHJvdG90eXBlPXdlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6eGUsc2VsZWN0OmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1wdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxvLHM9ZVtpXSxjPXMubGVuZ3RoLHU9cltpXT1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpKGE9c1tsXSkmJihvPXQuY2FsbChhLGEuX19kYXRhX18sbCxzKSkmJigiX19kYXRhX18iaW4gYSYmKG8uX19kYXRhX189YS5fX2RhdGFfXyksdVtsXT1vKTtyZXR1cm4gbmV3IHhlKHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Z3QodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciBvLHM9ZVthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiYoci5wdXNoKHQuY2FsbChvLG8uX19kYXRhX18sdSxzKSksaS5wdXNoKG8pKTtyZXR1cm4gbmV3IHhlKHIsaSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bXQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEsbz1lW2ldLHM9by5sZW5ndGgsYz1yW2ldPVtdLHU9MDt1PHM7Kyt1KShhPW9bdV0pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLHUsbykmJmMucHVzaChhKTtyZXR1cm4gbmV3IHhlKHIsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGw9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtwWysrbF09dH0pKSxwO3ZhciBuLHI9ZT94dDpfdCxpPXRoaXMuX3BhcmVudHMsYT10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJihuPXQsdD1mdW5jdGlvbigpe3JldHVybiBufSk7Zm9yKHZhciBvPWEubGVuZ3RoLHM9bmV3IEFycmF5KG8pLGM9bmV3IEFycmF5KG8pLHU9bmV3IEFycmF5KG8pLGw9MDtsPG87KytsKXt2YXIgaD1pW2xdLGY9YVtsXSxkPWYubGVuZ3RoLHA9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyxsLGkpLHk9cC5sZW5ndGgsZz1jW2xdPW5ldyBBcnJheSh5KSxtPXNbbF09bmV3IEFycmF5KHkpO3IoaCxmLGcsbSx1W2xdPW5ldyBBcnJheShkKSxwLGUpO2Zvcih2YXIgdixiLF89MCx4PTA7Xzx5OysrXylpZih2PWdbX10pe2ZvcihfPj14JiYoeD1fKzEpOyEoYj1tW3hdKSYmKyt4PHk7KTt2Ll9uZXh0PWJ8fG51bGx9fXJldHVybihzPW5ldyB4ZShzLGkpKS5fZW50ZXI9YyxzLl9leGl0PXUsc30sZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHhlKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKHZ0KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbigpe3JldHVybiBuZXcgeGUodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcCh2dCksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgdD90KHIpOnIuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLHImJmk/ci5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyB4ZShvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIHIsaT10W2VdLGE9aS5sZW5ndGgtMSxvPWlbYV07LS1hPj0wOykocj1pW2FdKSYmKG8mJjReci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKSYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLG8pLG89cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD13dCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxyPW4ubGVuZ3RoLGk9bmV3IEFycmF5KHIpLGE9MDthPHI7KythKXtmb3IodmFyIG8scz1uW2FdLGM9cy5sZW5ndGgsdT1pW2FdPW5ldyBBcnJheShjKSxsPTA7bDxjOysrbCkobz1zW2xdKSYmKHVbbF09byk7dS5zb3J0KGUpfXJldHVybiBuZXcgeGUoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciByPXRbZV0saT0wLGE9ci5sZW5ndGg7aTxhOysraSl7dmFyIG89cltpXTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxyPWUubGVuZ3RoO248cjsrK24pZm9yKHZhciBpLGE9ZVtuXSxvPTAscz1hLmxlbmd0aDtvPHM7KytvKShpPWFbb10pJiZ0LmNhbGwoaSxpLl9fZGF0YV9fLG8sYSk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1FdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/U3Q6Q3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9EdDpOdDpuLmxvY2FsP010OkF0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0J0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP0l0Okx0KSh0LGUsbnVsbD09bj8iIjpuKSk6UnQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/RnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/anQ6UHQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49WXQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9enQodGhpcy5ub2RlKCkpLGk9LTEsYT1uLmxlbmd0aDsrK2k8YTspaWYoIXIuY29udGFpbnMobltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/VnQ6ZT8kdDpXdCkobixlKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/R3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1p0Olh0KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/UXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0p0Okt0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2godGUpfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZWUpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppZSh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmllKHQpLHI9bnVsbD09ZT9hZToiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnB0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKG9lKX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/Y2U6c2UpfSxkYXR1bTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9ZGUodCsiIiksbz1hLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/eWU6cGUsbnVsbD09biYmKG49ITEpLHI9MDtyPG87KytyKXRoaXMuZWFjaChzKGFbcl0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgYyx1PTAsbD1zLmxlbmd0aDt1PGw7Kyt1KWZvcihyPTAsYz1zW3VdO3I8bzsrK3IpaWYoKGk9YVtyXSkudHlwZT09PWMudHlwZSYmaS5uYW1lPT09Yy5uYW1lKXJldHVybiBjLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2JlOnZlKSh0LGUpKX19O2NvbnN0IGtlPXdlO2Z1bmN0aW9uIFRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeGUoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB4ZShbW3RdXSxfZSl9ZnVuY3Rpb24gRWUoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBDZSgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gU2UodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1UZSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLENlLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLENlLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBBZSh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9VGUodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoci5vbigiY2xpY2suZHJhZyIsQ2UsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBNZSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gTmUodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gZSluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gRGUoKXt9dmFyIE9lPS43LEJlPTEvT2UsTGU9IlxccyooWystXT9cXGQrKVxccyoiLEllPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFJlPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixGZT0vXiMoWzAtOWEtZl17Myw4fSkkLyxQZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbTGUsTGUsTGVdKyJcXCkkIiksamU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1JlLFJlLFJlXSsiXFwpJCIpLFllPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbTGUsTGUsTGUsSWVdKyJcXCkkIiksemU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tSZSxSZSxSZSxJZV0rIlxcKSQiKSxVZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbSWUsUmUsUmVdKyJcXCkkIikscWU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tJZSxSZSxSZSxJZV0rIlxcKSQiKSxIZT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiAkZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFdlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gVmUodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9RmUuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9HZShlKTozPT09bj9uZXcgS2UoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP1hlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP1hlKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9UGUuZXhlYyh0KSk/bmV3IEtlKGVbMV0sZVsyXSxlWzNdLDEpOihlPWplLmV4ZWModCkpP25ldyBLZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1ZZS5leGVjKHQpKT9YZShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT16ZS5leGVjKHQpKT9YZSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1VZS5leGVjKHQpKT9ubihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXFlLmV4ZWModCkpP25uKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6SGUuaGFzT3duUHJvcGVydHkodCk/R2UoSGVbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBLZShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEdlKHQpe3JldHVybiBuZXcgS2UodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFhlKHQsZSxuLHIpe3JldHVybiByPD0wJiYodD1lPW49TmFOKSxuZXcgS2UodCxlLG4scil9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEZXx8KHQ9VmUodCkpLHQ/bmV3IEtlKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBLZX1mdW5jdGlvbiBRZSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WmUodCk6bmV3IEtlKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBLZSh0LGUsbixyKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gSmUoKXtyZXR1cm4iIyIrZW4odGhpcy5yKStlbih0aGlzLmcpK2VuKHRoaXMuYil9ZnVuY3Rpb24gdG4oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBlbih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIG5uKHQsZSxuLHIpe3JldHVybiByPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgb24odCxlLG4scil9ZnVuY3Rpb24gcm4odCl7aWYodCBpbnN0YW5jZW9mIG9uKXJldHVybiBuZXcgb24odC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRGV8fCh0PVZlKHQpKSwhdClyZXR1cm4gbmV3IG9uO2lmKHQgaW5zdGFuY2VvZiBvbilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4oZSxuLHIpLGE9TWF0aC5tYXgoZSxuLHIpLG89TmFOLHM9YS1pLGM9KGEraSkvMjtyZXR1cm4gcz8obz1lPT09YT8obi1yKS9zKzYqKG48cik6bj09PWE/KHItZSkvcysyOihlLW4pL3MrNCxzLz1jPC41P2EraToyLWEtaSxvKj02MCk6cz1jPjAmJmM8MT8wOm8sbmV3IG9uKG8scyxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gYW4odCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JuKHQpOm5ldyBvbih0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gb24odCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIHNuKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBjbih0LGUsbixyLGkpe3ZhciBhPXQqdCxvPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1vKSplKyg0LTYqYSszKm8pKm4rKDErMyp0KzMqYS0zKm8pKnIrbyppKS82fWZ1bmN0aW9uIHVuKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbcl0sYT10W3IrMV0sbz1yPjA/dFtyLTFdOjIqaS1hLHM9cjxlLTE/dFtyKzJdOjIqYS1pO3JldHVybiBjbigobi1yL2UpKmUsbyxpLGEscyl9fWZ1bmN0aW9uIGxuKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSksaT10WyhyK2UtMSklZV0sYT10W3IlZV0sbz10WyhyKzEpJWVdLHM9dFsocisyKSVlXTtyZXR1cm4gY24oKG4tci9lKSplLGksYSxvLHMpfX1mdW5jdGlvbiBobih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gZm4odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBkbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mbih0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6aG4oaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBwbih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9mbih0LG4pOmhuKGlzTmFOKHQpP2U6dCl9TWUoRGUsVmUse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6JGUsZm9ybWF0SGV4OiRlLGZvcm1hdEhzbDpmdW5jdGlvbigpe3JldHVybiBybih0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOldlLHRvU3RyaW5nOldlfSksTWUoS2UsUWUsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/QmU6TWF0aC5wb3coQmUsdCksbmV3IEtlKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P09lOk1hdGgucG93KE9lLHQpLG5ldyBLZSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OkplLGZvcm1hdEhleDpKZSxmb3JtYXRSZ2I6dG4sdG9TdHJpbmc6dG59KSksTWUob24sYW4sTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/QmU6TWF0aC5wb3coQmUsdCksbmV3IG9uKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/T2U6TWF0aC5wb3coT2UsdCksbmV3IG9uKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLHI9bisobjwuNT9uOjEtbikqZSxpPTIqbi1yO3JldHVybiBuZXcgS2Uoc24odD49MjQwP3QtMjQwOnQrMTIwLGksciksc24odCxpLHIpLHNuKHQ8MTIwP3QrMjQwOnQtMTIwLGksciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7Y29uc3QgeW49ZnVuY3Rpb24gdChlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gMT09KHQ9K3QpP3BuOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKmUsbil9fShlLG4sdCk6aG4oaXNOYU4oZSk/bjplKX19KGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgcj1uKCh0PVFlKHQpKS5yLChlPVFlKGUpKS5yKSxpPW4odC5nLGUuZyksYT1uKHQuYixlLmIpLG89cG4odC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9cihlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIGduKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixyLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKXI9UWUoZVtuXSksYVtuXT1yLnJ8fDAsb1tuXT1yLmd8fDAsc1tuXT1yLmJ8fDA7cmV0dXJuIGE9dChhKSxvPXQobykscz10KHMpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9YSh0KSxyLmc9byh0KSxyLmI9cyh0KSxyKyIifX19dmFyIG1uPWduKHVuKSx2bj1nbihsbik7ZnVuY3Rpb24gYm4odCxlKXtlfHwoZT1bXSk7dmFyIG4scj10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLGk9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihhKXtmb3Iobj0wO248cjsrK24paVtuXT10W25dKigxLWEpK2Vbbl0qYTtyZXR1cm4gaX19ZnVuY3Rpb24gX24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIHhuKHQsZSl7cmV0dXJuKF9uKGUpP2JuOnduKSh0LGUpfWZ1bmN0aW9uIHduKHQsZSl7dmFyIG4scj1lP2UubGVuZ3RoOjAsaT10P01hdGgubWluKHIsdC5sZW5ndGgpOjAsYT1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPGk7KytuKWFbbl09TW4odFtuXSxlW25dKTtmb3IoO248cjsrK24pb1tuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pb1tuXT1hW25dKHQpO3JldHVybiBvfX1mdW5jdGlvbiBrbih0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIG4uc2V0VGltZSh0KigxLXIpK2Uqciksbn19ZnVuY3Rpb24gVG4odCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gRW4odCxlKXt2YXIgbixyPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9yW25dPU1uKHRbbl0sZVtuXSk6aVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiByKWlbbl09cltuXSh0KTtyZXR1cm4gaX19dmFyIENuPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTbj1uZXcgUmVnRXhwKENuLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEFuKHQsZSl7dmFyIG4scixpLGE9Q24ubGFzdEluZGV4PVNuLmxhc3RJbmRleD0wLG89LTEscz1bXSxjPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1Dbi5leGVjKHQpKSYmKHI9U24uZXhlYyhlKSk7KShpPXIuaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChuPW5bMF0pPT09KHI9clswXSk/c1tvXT9zW29dKz1yOnNbKytvXT1yOihzWysrb109bnVsbCxjLnB1c2goe2k6byx4OlRuKG4scil9KSksYT1Tbi5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2NbMF0/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0oY1swXS54KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPTA7cjxlOysrcilzWyhuPWNbcl0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIE1uKHQsZSl7dmFyIG4scj10eXBlb2YgZTtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT09cj9obihlKTooIm51bWJlciI9PT1yP1RuOiJzdHJpbmciPT09cj8obj1WZShlKSk/KGU9bix5bik6QW46ZSBpbnN0YW5jZW9mIFZlP3luOmUgaW5zdGFuY2VvZiBEYXRlP2tuOl9uKGUpP2JuOkFycmF5LmlzQXJyYXkoZSk/d246ImZ1bmN0aW9uIiE9dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmd8fGlzTmFOKGUpP0VuOlRuKSh0LGUpfWZ1bmN0aW9uIE5uKCl7Zm9yKHZhciB0LGU9bGU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gRG4odCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgcj1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIHIueD1lLmNsaWVudFgsci55PWUuY2xpZW50WSxbKHI9ci5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LHIueV19dmFyIGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLWkubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLWkudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBPbih0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9Tm4oKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciByLGk9MCxhPWU/ZS5sZW5ndGg6MDtpPGE7KytpKWlmKChyPWVbaV0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBEbih0LHIpO3JldHVybiBudWxsfWZ1bmN0aW9uIEJuKHQpe3ZhciBlPU5uKCk7cmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMmJihlPWUuY2hhbmdlZFRvdWNoZXNbMF0pLERuKHQsZSl9dmFyIExuLEluLFJuPTAsRm49MCxQbj0wLGpuPTAsWW49MCx6bj0wLFVuPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHFuPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIEhuKCl7cmV0dXJuIFlufHwocW4oJG4pLFluPVVuLm5vdygpK3puKX1mdW5jdGlvbiAkbigpe1luPTB9ZnVuY3Rpb24gV24oKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIFZuKHQsZSxuKXt2YXIgcj1uZXcgV247cmV0dXJuIHIucmVzdGFydCh0LGUsbikscn1mdW5jdGlvbiBHbigpe0huKCksKytSbjtmb3IodmFyIHQsZT1MbjtlOykodD1Zbi1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tUm59ZnVuY3Rpb24gWG4oKXtZbj0oam49VW4ubm93KCkpK3puLFJuPUZuPTA7dHJ5e0duKCl9ZmluYWxseXtSbj0wLGZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbj1MbixyPTEvMDtuOyluLl9jYWxsPyhyPm4uX3RpbWUmJihyPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6TG49ZSk7SW49dCxRbihyKX0oKSxZbj0wfX1mdW5jdGlvbiBabigpe3ZhciB0PVVuLm5vdygpLGU9dC1qbjtlPjFlMyYmKHpuLT1lLGpuPXQpfWZ1bmN0aW9uIFFuKHQpe1JufHwoRm4mJihGbj1jbGVhclRpbWVvdXQoRm4pKSx0LVluPjI0Pyh0PDEvMCYmKEZuPXNldFRpbWVvdXQoWG4sdC1Vbi5ub3coKS16bikpLFBuJiYoUG49Y2xlYXJJbnRlcnZhbChQbikpKTooUG58fChqbj1Vbi5ub3coKSxQbj1zZXRJbnRlcnZhbChabiwxZTMpKSxSbj0xLHFuKFhuKSkpfWZ1bmN0aW9uIEtuKHQsZSxuKXt2YXIgcj1uZXcgV247cmV0dXJuIGU9bnVsbD09ZT8wOitlLHIucmVzdGFydCgoZnVuY3Rpb24obil7ci5zdG9wKCksdChuK2UpfSksZSxuKSxyfVduLnByb3RvdHlwZT1Wbi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlduLHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9IbigpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxJbj09PXRoaXN8fChJbj9Jbi5fbmV4dD10aGlzOkxuPXRoaXMsSW49dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixRbigpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxRbigpKX19O3ZhciBKbj1mdCgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSx0cj1bXTtmdW5jdGlvbiBlcih0LGUsbixyLGksYSl7dmFyIG89dC5fX3RyYW5zaXRpb247aWYobyl7aWYobiBpbiBvKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbih0LGUsbil7dmFyIHIsaT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKGMpe3ZhciB1LGwsaCxmO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKHUgaW4gaSlpZigoZj1pW3VdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09Zi5zdGF0ZSlyZXR1cm4gS24oYSk7ND09PWYuc3RhdGU/KGYuc3RhdGU9NixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGYuaW5kZXgsZi5ncm91cCksZGVsZXRlIGlbdV0pOit1PGUmJihmLnN0YXRlPTYsZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBpW3VdKX1pZihLbigoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbyhjKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLHI9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLHU9MCxsPS0xO3U8aDsrK3UpKGY9bi50d2Vlblt1XS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKHJbKytsXT1mKTtyLmxlbmd0aD1sKzF9fWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciBpPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksYT0tMSxvPXIubGVuZ3RoOysrYTxvOylyW2FdLmNhbGwodCxpKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIHIgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSBpW2VdLGkpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1pW2VdPW4sbi50aW1lcj1WbigoZnVuY3Rpb24odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KHQsbix7bmFtZTplLGluZGV4OnIsZ3JvdXA6aSxvbjpKbix0d2Vlbjp0cix0aW1lOmEudGltZSxkZWxheTphLmRlbGF5LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzZTphLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gbnIodCxlKXt2YXIgbj1pcih0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHJyKHQsZSl7dmFyIG49aXIodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gaXIodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhcih0LGUpe3ZhciBuLHIsaSxhPXQuX190cmFuc2l0aW9uLG89ITA7aWYoYSl7Zm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixhKShuPWFbaV0pLm5hbWU9PT1lPyhyPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgYVtpXSk6bz0hMTtvJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fXZhciBvcixzcixjcix1cixscj0xODAvTWF0aC5QSSxocj17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBmcih0LGUsbixyLGksYSl7dmFyIG8scyxjO3JldHVybihvPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1vLGUvPW8pLChjPXQqbitlKnIpJiYobi09dCpjLHItPWUqYyksKHM9TWF0aC5zcXJ0KG4qbityKnIpKSYmKG4vPXMsci89cyxjLz1zKSx0KnI8ZSpuJiYodD0tdCxlPS1lLGM9LWMsbz0tbykse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpscixza2V3WDpNYXRoLmF0YW4oYykqbHIsc2NhbGVYOm8sc2NhbGVZOnN9fWZ1bmN0aW9uIGRyKHQsZSxuLHIpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLG8pe3ZhciBzPVtdLGM9W107cmV0dXJuIGE9dChhKSxvPXQobyksZnVuY3Rpb24odCxyLGksYSxvLHMpe2lmKHQhPT1pfHxyIT09YSl7dmFyIGM9by5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6Yy00LHg6VG4odCxpKX0se2k6Yy0yLHg6VG4ocixhKX0pfWVsc2UoaXx8YSkmJm8ucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxzLGMpLGZ1bmN0aW9uKHQsZSxuLGEpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxhLnB1c2goe2k6bi5wdXNoKGkobikrInJvdGF0ZSgiLG51bGwsciktMix4OlRuKHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urcil9KGEucm90YXRlLG8ucm90YXRlLHMsYyksZnVuY3Rpb24odCxlLG4sYSl7dCE9PWU/YS5wdXNoKHtpOm4ucHVzaChpKG4pKyJza2V3WCgiLG51bGwsciktMix4OlRuKHQsZSl9KTplJiZuLnB1c2goaShuKSsic2tld1goIitlK3IpfShhLnNrZXdYLG8uc2tld1gscyxjKSxmdW5jdGlvbih0LGUsbixyLGEsbyl7aWYodCE9PW58fGUhPT1yKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7by5wdXNoKHtpOnMtNCx4OlRuKHQsbil9LHtpOnMtMix4OlRuKGUscil9KX1lbHNlIDE9PT1uJiYxPT09cnx8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrcisiKSIpfShhLnNjYWxlWCxhLnNjYWxlWSxvLnNjYWxlWCxvLnNjYWxlWSxzLGMpLGE9bz1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLHI9Yy5sZW5ndGg7KytuPHI7KXNbKGU9Y1tuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIHByPWRyKChmdW5jdGlvbih0KXtyZXR1cm4ibm9uZSI9PT10P2hyOihvcnx8KG9yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHNyPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjcj1kb2N1bWVudC5kZWZhdWx0Vmlldyksb3Iuc3R5bGUudHJhbnNmb3JtPXQsdD1jci5nZXRDb21wdXRlZFN0eWxlKHNyLmFwcGVuZENoaWxkKG9yKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxzci5yZW1vdmVDaGlsZChvciksZnIoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHlyPWRyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9ocjoodXJ8fCh1cj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx1ci5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9dXIudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/ZnIoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6aHIpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBncih0LGUpe3ZhciBuLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9cnIodGhpcyx0KSxhPWkudHdlZW47aWYoYSE9PW4pZm9yKHZhciBvPTAscz0ocj1uPWEpLmxlbmd0aDtvPHM7KytvKWlmKHJbb10ubmFtZT09PWUpeyhyPXIuc2xpY2UoKSkuc3BsaWNlKG8sMSk7YnJlYWt9aS50d2Vlbj1yfX1mdW5jdGlvbiBtcih0LGUsbil7dmFyIHIsaTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9cnIodGhpcyx0KSxvPWEudHdlZW47aWYobyE9PXIpe2k9KHI9bykuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxjPTAsdT1pLmxlbmd0aDtjPHU7KytjKWlmKGlbY10ubmFtZT09PWUpe2lbY109czticmVha31jPT09dSYmaS5wdXNoKHMpfWEudHdlZW49aX19ZnVuY3Rpb24gdnIodCxlLG4pe3ZhciByPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9cnIodGhpcyxyKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gaXIodCxyKS52YWx1ZVtlXX19ZnVuY3Rpb24gYnIodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP1RuOmUgaW5zdGFuY2VvZiBWZT95bjoobj1WZShlKSk/KGU9bix5bik6QW4pKHQsZSl9ZnVuY3Rpb24gX3IodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHhyKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gd3IodCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19ZnVuY3Rpb24ga3IodCxlLG4pe3ZhciByLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09cj9pOmk9ZShyPW8sbil9fWZ1bmN0aW9uIFRyKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1jKyIiKT9udWxsOm89PT1yJiZzPT09aT9hOihpPXMsYT1lKHI9byxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIEVyKHQsZSxuKXt2YXIgcixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8scyxjPW4odGhpcyk7aWYobnVsbCE9YylyZXR1cm4obz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9YysiIik/bnVsbDpvPT09ciYmcz09PWk/YTooaT1zLGE9ZShyPW8sYykpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gQ3IodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIFNyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gQXIodCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZTcih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gTXIodCxlKXt2YXIgbixyO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJihuPShyPWkpJiZDcih0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gTnIodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtucih0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gRHIodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe25yKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtycih0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gQnIodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3JyKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gTHIodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7cnIodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIElyKHQsZSxuKXt2YXIgcixpLGE9ZnVuY3Rpb24odCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfShlKT9ucjpycjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1hKHRoaXMsdCkscz1vLm9uO3MhPT1yJiYoaT0ocj1zKS5jb3B5KCkpLm9uKGUsbiksby5vbj1pfX12YXIgUnI9a2UucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIEZyKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIFByKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLHIpLG4pfX1mdW5jdGlvbiBqcih0LGUsbil7dmFyIHIsaTtmdW5jdGlvbiBhKCl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYocj0oaT1hKSYmUHIodCxhLG4pKSxyfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gWXIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIHpyKHQpe3ZhciBlLG47ZnVuY3Rpb24gcigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09biYmKGU9KG49cikmJllyKHIpKSxlfXJldHVybiByLl92YWx1ZT10LHJ9dmFyIFVyPTA7ZnVuY3Rpb24gcXIodCxlLG4scil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1yfWZ1bmN0aW9uIEhyKHQpe3JldHVybiBrZSgpLnRyYW5zaXRpb24odCl9ZnVuY3Rpb24gJHIoKXtyZXR1cm4rK1VyfXZhciBXcj1rZS5wcm90b3R5cGU7ZnVuY3Rpb24gVnIodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIEdyKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBYcih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn1xci5wcm90b3R5cGU9SHIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxcixzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1wdCh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLGE9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgcyxjLHU9cltvXSxsPXUubGVuZ3RoLGg9YVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpKHM9dVtmXSkmJihjPXQuY2FsbChzLHMuX19kYXRhX18sZix1KSkmJigiX19kYXRhX18iaW4gcyYmKGMuX19kYXRhX189cy5fX2RhdGFfXyksaFtmXT1jLGVyKGhbZl0sZSxuLGYsaCxpcihzLG4pKSk7cmV0dXJuIG5ldyBxcihhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Z3QodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPVtdLG89W10scz0wO3M8aTsrK3MpZm9yKHZhciBjLHU9cltzXSxsPXUubGVuZ3RoLGg9MDtoPGw7KytoKWlmKGM9dVtoXSl7Zm9yKHZhciBmLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxoLHUpLHA9aXIoYyxuKSx5PTAsZz1kLmxlbmd0aDt5PGc7Kyt5KShmPWRbeV0pJiZlcihmLGUsbix5LGQscCk7YS5wdXNoKGQpLG8ucHVzaChjKX1yZXR1cm4gbmV3IHFyKGEsbyxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW10KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLG89ZVtpXSxzPW8ubGVuZ3RoLGM9cltpXT1bXSx1PTA7dTxzOysrdSkoYT1vW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LG8pJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBxcihyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMscj1lLmxlbmd0aCxpPW4ubGVuZ3RoLGE9TWF0aC5taW4ocixpKSxvPW5ldyBBcnJheShyKSxzPTA7czxhOysrcylmb3IodmFyIGMsdT1lW3NdLGw9bltzXSxoPXUubGVuZ3RoLGY9b1tzXT1uZXcgQXJyYXkoaCksZD0wO2Q8aDsrK2QpKGM9dVtkXXx8bFtkXSkmJihmW2RdPWMpO2Zvcig7czxyOysrcylvW3NdPWVbc107cmV0dXJuIG5ldyBxcihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgUnIodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPSRyKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIG8scz1yW2FdLGM9cy5sZW5ndGgsdT0wO3U8YzsrK3UpaWYobz1zW3VdKXt2YXIgbD1pcihvLGUpO2VyKG8sdCxuLHUscyx7dGltZTpsLnRpbWUrbC5kZWxheStsLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246bC5kdXJhdGlvbixlYXNlOmwuZWFzZX0pfXJldHVybiBuZXcgcXIocix0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6V3IuY2FsbCxub2RlczpXci5ub2Rlcyxub2RlOldyLm5vZGUsc2l6ZTpXci5zaXplLGVtcHR5OldyLmVtcHR5LGVhY2g6V3IuZWFjaCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aXIodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKElyKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24odCxlKXt2YXIgbj1FdCh0KSxyPSJ0cmFuc2Zvcm0iPT09bj95cjpicjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9FcjpUcikobixyLHZyKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3hyOl9yKShuKToobi5sb2NhbD9rcjp3cikobixyLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgcj1FdCh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChyLmxvY2FsP0FyOk1yKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP3ByOmJyO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSl7dmFyIG4scixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVJ0KHRoaXMsdCksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxSdCh0aGlzLHQpKTtyZXR1cm4gYT09PW8/bnVsbDphPT09biYmbz09PXI/aTppPWUobj1hLHI9byl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxGcih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1SdCh0aGlzLHQpLHM9bih0aGlzKSxjPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9cz1SdCh0aGlzLHQpKSxvPT09Yz9udWxsOm89PT1yJiZjPT09aT9hOihpPWMsYT1lKHI9byxzKSl9fSh0LHIsdnIodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChmdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxhLG89InN0eWxlLiIrZSxzPSJlbmQuIitvO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXJyKHRoaXMsdCksdT1jLm9uLGw9bnVsbD09Yy52YWx1ZVtvXT9hfHwoYT1GcihlKSk6dm9pZCAwO3U9PT1uJiZpPT09bHx8KHI9KG49dSkuY29weSgpKS5vbihzLGk9bCksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1SdCh0aGlzLHQpO3JldHVybiBvPT09YT9udWxsOm89PT1yP2k6aT1lKHI9byxuKX19KHQscixlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LGUsbil7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixqcih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSh2cih0aGlzLCJ0ZXh0Iix0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0obnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsenIodCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PXQpcmV0dXJuO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByLGk9aXIodGhpcy5ub2RlKCksbikudHdlZW4sYT0wLG89aS5sZW5ndGg7YTxvOysrYSlpZigocj1pW2FdKS5uYW1lPT09dClyZXR1cm4gci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP2dyOm1yKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P05yOkRyKShlLHQpKTppcih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9PcjpCcikoZSx0KSk6aXIodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKExyKGUsdCkpOmlyKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLHI9bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbyl7dmFyIHM9e3ZhbHVlOm99LGM9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49cnIodGhpcyxyKSxpPW4ub247aSE9PXQmJigoZT0odD1pKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChjKSksbi5vbj1lfSkpfSkpfX07dmFyIFpyPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpYcn07ZnVuY3Rpb24gUXIodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gWnIudGltZT1IbigpLFpyO3JldHVybiBufWtlLnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXthcih0aGlzLHQpfSkpfSxrZS5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBxcj8oZT10Ll9pZCx0PXQuX25hbWUpOihlPSRyKCksKG49WnIpLnRpbWU9SG4oKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciBvLHM9clthXSxjPXMubGVuZ3RoLHU9MDt1PGM7Kyt1KShvPXNbdV0pJiZlcihvLHQsZSx1LHMsbnx8UXIobyxlKSk7cmV0dXJuIG5ldyBxcihyLHRoaXMuX3BhcmVudHMsdCxlKX07dmFyIEtyPVtudWxsXTtmdW5jdGlvbiBKcih0LGUpe3ZhciBuLHIsaT10Ll9fdHJhbnNpdGlvbjtpZihpKWZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsaSlpZigobj1pW3JdKS5zdGF0ZT4xJiZuLm5hbWU9PT1lKXJldHVybiBuZXcgcXIoW1t0XV0sS3IsZSwrcik7cmV0dXJuIG51bGx9ZnVuY3Rpb24gdGkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGVpKHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gbmkoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiByaSgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIGlpPXtuYW1lOiJkcmFnIn0sYWk9e25hbWU6InNwYWNlIn0sb2k9e25hbWU6ImhhbmRsZSJ9LHNpPXtuYW1lOiJjZW50ZXIifTtmdW5jdGlvbiBjaSh0KXtyZXR1cm5bK3RbMF0sK3RbMV1dfWZ1bmN0aW9uIHVpKHQpe3JldHVybltjaSh0WzBdKSxjaSh0WzFdKV19ZnVuY3Rpb24gbGkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBPbihlLGxlLnRvdWNoZXMsdCl9fXZhciBoaT17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKGJpKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1srdFswXSxlWzBdWzFdXSxbK3RbMV0sZVsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzBdLHRbMV1bMF1dfX0sZmk9e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcChiaSksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LGRpPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChiaSksaW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/bnVsbDp1aSh0KX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0scGk9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHlpPXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxnaT17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sbWk9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sdmk9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24gYmkodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gX2koKXtyZXR1cm4hbGUuY3RybEtleSYmIWxlLmJ1dHRvbn1mdW5jdGlvbiB4aSgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIHdpKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGtpKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gVGkodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBFaSh0KXt2YXIgZT10Ll9fYnJ1c2g7cmV0dXJuIGU/ZS5kaW0ub3V0cHV0KGUuc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uIENpKCl7cmV0dXJuIE1pKGhpKX1mdW5jdGlvbiBTaSgpe3JldHVybiBNaShmaSl9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gTWkoZGkpfWZ1bmN0aW9uIE1pKHQpe3ZhciBlLG49eGkscj1faSxpPXdpLGE9ITAsbz1mdCgic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBjKGUpe3ZhciBuPWUucHJvcGVydHkoIl9fYnJ1c2giLHkpLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtiaSgib3ZlcmxheSIpXSk7bi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixwaS5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWtpKHRoaXMpLmV4dGVudDtUZSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksZS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtiaSgic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixwaS5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgcj1lLnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEodC5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO3IuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gcGlbdC50eXBlXX0pKSxlLmVhY2godSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLGYpLmZpbHRlcihpKS5vbigidG91Y2hzdGFydC5icnVzaCIsZikub24oInRvdWNobW92ZS5icnVzaCIsZCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixwKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gdSgpe3ZhciB0PVRlKHRoaXMpLGU9a2kodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1zLzI6ZVswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLXMvMjplWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlLG4pe3ZhciByPXQuX19icnVzaC5lbWl0dGVyO3JldHVybiFyfHxuJiZyLmNsZWFuP25ldyBoKHQsZSxuKTpyfWZ1bmN0aW9uIGgodCxlLG4pe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ufWZ1bmN0aW9uIGYoKXtpZigoIWV8fGxlLnRvdWNoZXMpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4saSxvLHMsYyxoLGYsZCxwLHksZyxtPXRoaXMsdj1sZS50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KGEmJmxlLm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/aWk6YSYmbGUuYWx0S2V5P3NpOm9pLF89dD09PWZpP251bGw6bWlbdl0seD10PT09aGk/bnVsbDp2aVt2XSx3PWtpKG0pLGs9dy5leHRlbnQsVD13LnNlbGVjdGlvbixFPWtbMF1bMF0sQz1rWzBdWzFdLFM9a1sxXVswXSxBPWtbMV1bMV0sTT0wLE49MCxEPV8mJngmJmEmJmxlLnNoaWZ0S2V5LE89bGUudG91Y2hlcz9saShsZS5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpCbixCPU8obSksTD1CLEk9bChtLGFyZ3VtZW50cywhMCkuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT12PyhUJiYocD0hMCksdy5zZWxlY3Rpb249VD1bW249dD09PWZpP0U6QlswXSxvPXQ9PT1oaT9DOkJbMV1dLFtjPXQ9PT1maT9TOm4sZj10PT09aGk/QTpvXV0pOihuPVRbMF1bMF0sbz1UWzBdWzFdLGM9VFsxXVswXSxmPVRbMV1bMV0pLGk9bixzPW8saD1jLGQ9Zjt2YXIgUj1UZShtKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxGPVIuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIscGlbdl0pO2lmKGxlLnRvdWNoZXMpSS5tb3ZlZD1qLEkuZW5kZWQ9ejtlbHNle3ZhciBQPVRlKGxlLnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLGosITApLm9uKCJtb3VzZXVwLmJydXNoIix6LCEwKTthJiZQLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLHEsITApLFNlKGxlLnZpZXcpfW5pKCksYXIobSksdS5jYWxsKG0pLEkuc3RhcnQoKX1mdW5jdGlvbiBqKCl7dmFyIHQ9TyhtKTshRHx8eXx8Z3x8KE1hdGguYWJzKHRbMF0tTFswXSk+TWF0aC5hYnModFsxXS1MWzFdKT9nPSEwOnk9ITApLEw9dCxwPSEwLHJpKCksWSgpfWZ1bmN0aW9uIFkoKXt2YXIgdDtzd2l0Y2goTT1MWzBdLUJbMF0sTj1MWzFdLUJbMV0sYil7Y2FzZSBhaTpjYXNlIGlpOl8mJihNPU1hdGgubWF4KEUtbixNYXRoLm1pbihTLWMsTSkpLGk9bitNLGg9YytNKSx4JiYoTj1NYXRoLm1heChDLW8sTWF0aC5taW4oQS1mLE4pKSxzPW8rTixkPWYrTik7YnJlYWs7Y2FzZSBvaTpfPDA/KE09TWF0aC5tYXgoRS1uLE1hdGgubWluKFMtbixNKSksaT1uK00saD1jKTpfPjAmJihNPU1hdGgubWF4KEUtYyxNYXRoLm1pbihTLWMsTSkpLGk9bixoPWMrTSkseDwwPyhOPU1hdGgubWF4KEMtbyxNYXRoLm1pbihBLW8sTikpLHM9bytOLGQ9Zik6eD4wJiYoTj1NYXRoLm1heChDLWYsTWF0aC5taW4oQS1mLE4pKSxzPW8sZD1mK04pO2JyZWFrO2Nhc2Ugc2k6XyYmKGk9TWF0aC5tYXgoRSxNYXRoLm1pbihTLG4tTSpfKSksaD1NYXRoLm1heChFLE1hdGgubWluKFMsYytNKl8pKSkseCYmKHM9TWF0aC5tYXgoQyxNYXRoLm1pbihBLG8tTip4KSksZD1NYXRoLm1heChDLE1hdGgubWluKEEsZitOKngpKSl9aDxpJiYoXyo9LTEsdD1uLG49YyxjPXQsdD1pLGk9aCxoPXQsdiBpbiB5aSYmRi5hdHRyKCJjdXJzb3IiLHBpW3Y9eWlbdl1dKSksZDxzJiYoeCo9LTEsdD1vLG89ZixmPXQsdD1zLHM9ZCxkPXQsdiBpbiBnaSYmRi5hdHRyKCJjdXJzb3IiLHBpW3Y9Z2lbdl1dKSksdy5zZWxlY3Rpb24mJihUPXcuc2VsZWN0aW9uKSx5JiYoaT1UWzBdWzBdLGg9VFsxXVswXSksZyYmKHM9VFswXVsxXSxkPVRbMV1bMV0pLFRbMF1bMF09PT1pJiZUWzBdWzFdPT09cyYmVFsxXVswXT09PWgmJlRbMV1bMV09PT1kfHwody5zZWxlY3Rpb249W1tpLHNdLFtoLGRdXSx1LmNhbGwobSksSS5icnVzaCgpKX1mdW5jdGlvbiB6KCl7aWYobmkoKSxsZS50b3VjaGVzKXtpZihsZS50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApfWVsc2UgQWUobGUudmlldyxwKSxQLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtSLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksRi5hdHRyKCJjdXJzb3IiLHBpLm92ZXJsYXkpLHcuc2VsZWN0aW9uJiYoVD13LnNlbGVjdGlvbiksVGkoVCkmJih3LnNlbGVjdGlvbj1udWxsLHUuY2FsbChtKSksSS5lbmQoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKGxlLmtleUNvZGUpe2Nhc2UgMTY6RD1fJiZ4O2JyZWFrO2Nhc2UgMTg6Yj09PW9pJiYoXyYmKGM9aC1NKl8sbj1pK00qXykseCYmKGY9ZC1OKngsbz1zK04qeCksYj1zaSxZKCkpO2JyZWFrO2Nhc2UgMzI6YiE9PW9pJiZiIT09c2l8fChfPDA/Yz1oLU06Xz4wJiYobj1pLU0pLHg8MD9mPWQtTjp4PjAmJihvPXMtTiksYj1haSxGLmF0dHIoImN1cnNvciIscGkuc2VsZWN0aW9uKSxZKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXJpKCl9ZnVuY3Rpb24gcSgpe3N3aXRjaChsZS5rZXlDb2RlKXtjYXNlIDE2OkQmJih5PWc9RD0hMSxZKCkpO2JyZWFrO2Nhc2UgMTg6Yj09PXNpJiYoXzwwP2M9aDpfPjAmJihuPWkpLHg8MD9mPWQ6eD4wJiYobz1zKSxiPW9pLFkoKSk7YnJlYWs7Y2FzZSAzMjpiPT09YWkmJihsZS5hbHRLZXk/KF8mJihjPWgtTSpfLG49aStNKl8pLHgmJihmPWQtTip4LG89cytOKngpLGI9c2kpOihfPDA/Yz1oOl8+MCYmKG49aSkseDwwP2Y9ZDp4PjAmJihvPXMpLGI9b2kpLEYuYXR0cigiY3Vyc29yIixwaVt2XSksWSgpKTticmVhaztkZWZhdWx0OnJldHVybn1yaSgpfX1mdW5jdGlvbiBkKCl7bCh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBwKCl7bCh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiB5KCl7dmFyIGU9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBlLmV4dGVudD11aShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZS5kaW09dCxlfXJldHVybiBjLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1lLl9fYnJ1c2gsaT1sKGUsYXJndW1lbnRzKSxhPXIuc2VsZWN0aW9uLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLHIuZXh0ZW50KSxzPU1uKGEsbyk7ZnVuY3Rpb24gYyh0KXtyLnNlbGVjdGlvbj0xPT09dCYmbnVsbD09PW8/bnVsbDpzKHQpLHUuY2FsbChlKSxpLmJydXNoKCl9cmV0dXJuIG51bGwhPT1hJiZudWxsIT09bz9jOmMoMSl9KSk6ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHMsaT1lLl9fYnJ1c2gsYT10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxyKTpuLGkuZXh0ZW50KSxvPWwoZSxyKS5iZWZvcmVzdGFydCgpO2FyKGUpLGkuc2VsZWN0aW9uPW51bGw9PT1hP251bGw6YSx1LmNhbGwoZSksby5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGMuY2xlYXI9ZnVuY3Rpb24odCl7Yy5tb3ZlKHQsbnVsbCl9LGgucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZSl7Z2UobmV3IGVpKGMsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLG8uYXBwbHksbyxbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxjLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRpKHVpKHQpKSxjKTpufSxjLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRpKCEhdCksYyk6cn0sYy50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0aSghIXQpLGMpOml9LGMuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxjKTpzfSxjLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsYyk6YX0sYy5vbj1mdW5jdGlvbigpe3ZhciB0PW8ub24uYXBwbHkobyxhcmd1bWVudHMpO3JldHVybiB0PT09bz9jOnR9LGN9dmFyIE5pPU1hdGguY29zLERpPU1hdGguc2luLE9pPU1hdGguUEksQmk9T2kvMixMaT0yKk9pLElpPU1hdGgubWF4O2Z1bmN0aW9uIFJpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19ZnVuY3Rpb24gRmkoKXt2YXIgdD0wLGU9bnVsbCxuPW51bGwscj1udWxsO2Z1bmN0aW9uIGkoaSl7dmFyIGEsbyxzLGMsdSxsLGg9aS5sZW5ndGgsZj1bXSxkPWsoaCkscD1bXSx5PVtdLGc9eS5ncm91cHM9bmV3IEFycmF5KGgpLG09bmV3IEFycmF5KGgqaCk7Zm9yKGE9MCx1PS0xOysrdTxoOyl7Zm9yKG89MCxsPS0xOysrbDxoOylvKz1pW3VdW2xdO2YucHVzaChvKSxwLnB1c2goayhoKSksYSs9b31mb3IoZSYmZC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGZbdF0sZltuXSl9KSksbiYmcC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gbihpW2VdW3RdLGlbZV1bcl0pfSkpfSkpLGM9KGE9SWkoMCxMaS10KmgpL2EpP3Q6TGkvaCxvPTAsdT0tMTsrK3U8aDspe2ZvcihzPW8sbD0tMTsrK2w8aDspe3ZhciB2PWRbdV0sYj1wW3ZdW2xdLF89aVt2XVtiXSx4PW8sdz1vKz1fKmE7bVtiKmgrdl09e2luZGV4OnYsc3ViaW5kZXg6YixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpffX1nW3ZdPXtpbmRleDp2LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTpvLHZhbHVlOmZbdl19LG8rPWN9Zm9yKHU9LTE7Kyt1PGg7KWZvcihsPXUtMTsrK2w8aDspe3ZhciBUPW1bbCpoK3VdLEU9bVt1KmgrbF07KFQudmFsdWV8fEUudmFsdWUpJiZ5LnB1c2goVC52YWx1ZTxFLnZhbHVlP3tzb3VyY2U6RSx0YXJnZXQ6VH06e3NvdXJjZTpULHRhcmdldDpFfSl9cmV0dXJuIHI/eS5zb3J0KHIpOnl9cmV0dXJuIGkucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9SWkoMCxlKSxpKTp0fSxpLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxpKTplfSxpLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxpKTpufSxpLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cj1udWxsOihyPVJpKHQpKS5fPXQsaSk6ciYmci5ffSxpfXZhciBQaT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gamkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBZaT1NYXRoLlBJLHppPTIqWWksVWk9MWUtNixxaT16aS1VaTtmdW5jdGlvbiBIaSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uICRpKCl7cmV0dXJuIG5ldyBIaX1IaS5wcm90b3R5cGU9JGkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIaSxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4scil7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0rcil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyArcisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4scixpKXt0PSt0LGU9K2Usbj0rbixyPStyLGk9K2k7dmFyIGE9dGhpcy5feDEsbz10aGlzLl95MSxzPW4tdCxjPXItZSx1PWEtdCxsPW8tZSxoPXUqdStsKmw7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+VWkpaWYoTWF0aC5hYnMobCpzLWMqdSk+VWkmJmkpe3ZhciBmPW4tYSxkPXItbyxwPXMqcytjKmMseT1mKmYrZCpkLGc9TWF0aC5zcXJ0KHApLG09TWF0aC5zcXJ0KGgpLHY9aSpNYXRoLnRhbigoWWktTWF0aC5hY29zKChwK2gteSkvKDIqZyptKSkpLzIpLGI9di9tLF89di9nO01hdGguYWJzKGItMSk+VWkmJih0aGlzLl8rPSJMIisodCtiKnUpKyIsIisoZStiKmwpKSx0aGlzLl8rPSJBIitpKyIsIitpKyIsMCwwLCIrICsobCpmPnUqZCkrIiwiKyh0aGlzLl94MT10K18qcykrIiwiKyh0aGlzLl95MT1lK18qYyl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt0PSt0LGU9K2UsYT0hIWE7dmFyIG89KG49K24pKk1hdGguY29zKHIpLHM9bipNYXRoLnNpbihyKSxjPXQrbyx1PWUrcyxsPTFeYSxoPWE/ci1pOmktcjtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2MrIiwiK3U6KE1hdGguYWJzKHRoaXMuX3gxLWMpPlVpfHxNYXRoLmFicyh0aGlzLl95MS11KT5VaSkmJih0aGlzLl8rPSJMIitjKyIsIit1KSxuJiYoaDwwJiYoaD1oJXppK3ppKSxoPnFpP3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodC1vKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIitsKyIsIisodGhpcy5feDE9YykrIiwiKyh0aGlzLl95MT11KTpoPlVpJiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1ZaSkrIiwiK2wrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLHIpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtyKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2NvbnN0IFdpPSRpO2Z1bmN0aW9uIFZpKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBHaSh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gWGkodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFppKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gUWkodCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gS2koKXt2YXIgdD1WaSxlPUdpLG49WGkscj1aaSxpPVFpLGE9bnVsbDtmdW5jdGlvbiBvKCl7dmFyIG8scz1QaS5jYWxsKGFyZ3VtZW50cyksYz10LmFwcGx5KHRoaXMscyksdT1lLmFwcGx5KHRoaXMscyksbD0rbi5hcHBseSh0aGlzLChzWzBdPWMscykpLGg9ci5hcHBseSh0aGlzLHMpLUJpLGY9aS5hcHBseSh0aGlzLHMpLUJpLGQ9bCpOaShoKSxwPWwqRGkoaCkseT0rbi5hcHBseSh0aGlzLChzWzBdPXUscykpLGc9ci5hcHBseSh0aGlzLHMpLUJpLG09aS5hcHBseSh0aGlzLHMpLUJpO2lmKGF8fChhPW89V2koKSksYS5tb3ZlVG8oZCxwKSxhLmFyYygwLDAsbCxoLGYpLGg9PT1nJiZmPT09bXx8KGEucXVhZHJhdGljQ3VydmVUbygwLDAseSpOaShnKSx5KkRpKGcpKSxhLmFyYygwLDAseSxnLG0pKSxhLnF1YWRyYXRpY0N1cnZlVG8oMCwwLGQscCksYS5jbG9zZVBhdGgoKSxvKXJldHVybiBhPW51bGwsbysiInx8bnVsbH1yZXR1cm4gby5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqaSgrdCksbyk6bn0sby5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6amkoK3QpLG8pOnJ9LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqaSgrdCksbyk6aX0sby5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxvKTp0fSxvLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG8pOmV9LG8uY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT10P251bGw6dCxvKTphfSxvfXZhciBKaT0iJCI7ZnVuY3Rpb24gdGEoKXt9ZnVuY3Rpb24gZWEodCxlKXt2YXIgbj1uZXcgdGE7aWYodCBpbnN0YW5jZW9mIHRhKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIHIsaT0tMSxhPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK2k8YTspbi5zZXQoaSx0W2ldKTtlbHNlIGZvcig7KytpPGE7KW4uc2V0KGUocj10W2ldLGksdCkscil9ZWxzZSBpZih0KWZvcih2YXIgbyBpbiB0KW4uc2V0KG8sdFtvXSk7cmV0dXJuIG59dGEucHJvdG90eXBlPWVhLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dGEsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBKaSt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tKaSt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbSmkrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9SmkrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09SmkmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1KaSYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUppJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PUppKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1KaSYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTtjb25zdCBuYT1lYTtmdW5jdGlvbiByYSgpe3ZhciB0LGUsbixyPVtdLGk9W107ZnVuY3Rpb24gYShuLGksbyxzKXtpZihpPj1yLmxlbmd0aClyZXR1cm4gbnVsbCE9dCYmbi5zb3J0KHQpLG51bGwhPWU/ZShuKTpuO2Zvcih2YXIgYyx1LGwsaD0tMSxmPW4ubGVuZ3RoLGQ9cltpKytdLHA9bmEoKSx5PW8oKTsrK2g8ZjspKGw9cC5nZXQoYz1kKHU9bltoXSkrIiIpKT9sLnB1c2godSk6cC5zZXQoYyxbdV0pO3JldHVybiBwLmVhY2goKGZ1bmN0aW9uKHQsZSl7cyh5LGUsYSh0LGksbyxzKSl9KSkseX1mdW5jdGlvbiBvKHQsbil7aWYoKytuPnIubGVuZ3RoKXJldHVybiB0O3ZhciBhLHM9aVtuLTFdO3JldHVybiBudWxsIT1lJiZuPj1yLmxlbmd0aD9hPXQuZW50cmllcygpOihhPVtdLHQuZWFjaCgoZnVuY3Rpb24odCxlKXthLnB1c2goe2tleTplLHZhbHVlczpvKHQsbil9KX0pKSksbnVsbCE9cz9hLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHModC5rZXksZS5rZXkpfSkpOmF9cmV0dXJuIG49e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0LDAsaWEsYWEpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIGEodCwwLG9hLHNhKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gbyhhKHQsMCxvYSxzYSksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gci5wdXNoKHQpLG59LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBpW3IubGVuZ3RoLTFdPXQsbn0sc29ydFZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gdD1lLG59LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gZT10LG59fX1mdW5jdGlvbiBpYSgpe3JldHVybnt9fWZ1bmN0aW9uIGFhKHQsZSxuKXt0W2VdPW59ZnVuY3Rpb24gb2EoKXtyZXR1cm4gbmEoKX1mdW5jdGlvbiBzYSh0LGUsbil7dC5zZXQoZSxuKX1mdW5jdGlvbiBjYSgpe312YXIgdWE9bmEucHJvdG90eXBlO2Z1bmN0aW9uIGxhKHQsZSl7dmFyIG49bmV3IGNhO2lmKHQgaW5zdGFuY2VvZiBjYSl0LmVhY2goKGZ1bmN0aW9uKHQpe24uYWRkKHQpfSkpO2Vsc2UgaWYodCl7dmFyIHI9LTEsaT10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPGk7KW4uYWRkKHRbcl0pO2Vsc2UgZm9yKDsrK3I8aTspbi5hZGQoZSh0W3JdLHIsdCkpfXJldHVybiBufWNhLnByb3RvdHlwZT1sYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmNhLGhhczp1YS5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0ppKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOnVhLnJlbW92ZSxjbGVhcjp1YS5jbGVhcix2YWx1ZXM6dWEua2V5cyxzaXplOnVhLnNpemUsZW1wdHk6dWEuZW1wdHksZWFjaDp1YS5lYWNofTtjb25zdCBoYT1sYTtmdW5jdGlvbiBmYSh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gZGEodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHBhKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh7a2V5Om4sdmFsdWU6dFtuXX0pO3JldHVybiBlfXZhciB5YT1NYXRoLlBJLzE4MCxnYT0xODAvTWF0aC5QSSxtYT0uOTY0MjIsdmE9LjgyNTIxLGJhPTQvMjksX2E9Ni8yOSx4YT0zKl9hKl9hO2Z1bmN0aW9uIHdhKHQpe2lmKHQgaW5zdGFuY2VvZiBFYSlyZXR1cm4gbmV3IEVhKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIEJhKXJldHVybiBMYSh0KTt0IGluc3RhbmNlb2YgS2V8fCh0PVplKHQpKTt2YXIgZSxuLHI9TWEodC5yKSxpPU1hKHQuZyksYT1NYSh0LmIpLG89Q2EoKC4yMjI1MDQ1KnIrLjcxNjg3ODYqaSsuMDYwNjE2OSphKS8xKTtyZXR1cm4gcj09PWkmJmk9PT1hP2U9bj1vOihlPUNhKCguNDM2MDc0NypyKy4zODUwNjQ5KmkrLjE0MzA4MDQqYSkvbWEpLG49Q2EoKC4wMTM5MzIyKnIrLjA5NzEwNDUqaSsuNzE0MTczMyphKS92YSkpLG5ldyBFYSgxMTYqby0xNiw1MDAqKGUtbyksMjAwKihvLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24ga2EodCxlKXtyZXR1cm4gbmV3IEVhKHQsMCwwLG51bGw9PWU/MTplKX1mdW5jdGlvbiBUYSh0LGUsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/d2EodCk6bmV3IEVhKHQsZSxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBFYSh0LGUsbixyKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gQ2EodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC94YStiYX1mdW5jdGlvbiBTYSh0KXtyZXR1cm4gdD5fYT90KnQqdDp4YSoodC1iYSl9ZnVuY3Rpb24gQWEodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBNYSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBOYSh0KXtpZih0IGluc3RhbmNlb2YgQmEpcmV0dXJuIG5ldyBCYSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBFYXx8KHQ9d2EodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyBCYShOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSpnYTtyZXR1cm4gbmV3IEJhKGU8MD9lKzM2MDplLE1hdGguc3FydCh0LmEqdC5hK3QuYip0LmIpLHQubCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIERhKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OYSh0KTpuZXcgQmEobixlLHQsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIE9hKHQsZSxuLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OYSh0KTpuZXcgQmEodCxlLG4sbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEJhKHQsZSxuLHIpe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBMYSh0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgRWEodC5sLDAsMCx0Lm9wYWNpdHkpO3ZhciBlPXQuaCp5YTtyZXR1cm4gbmV3IEVhKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9TWUoRWEsVGEsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRWEodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBFYSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgS2UoQWEoMy4xMzM4NTYxKihlPW1hKlNhKGUpKS0xLjYxNjg2NjcqKHQ9MSpTYSh0KSktLjQ5MDYxNDYqKG49dmEqU2EobikpKSxBYSgtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLEFhKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksTWUoQmEsT2EsTmUoRGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQmEodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCYSh0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBMYSh0aGlzKS5yZ2IoKX19KSk7dmFyIElhPS0uMTQ4NjEsUmE9MS43ODI3NyxGYT0tLjI5MjI3LFBhPS0uOTA2NDksamE9MS45NzI5NCxZYT1qYSpQYSx6YT1qYSpSYSxVYT1SYSpGYS1QYSpJYTtmdW5jdGlvbiBxYSh0KXtpZih0IGluc3RhbmNlb2YgJGEpcmV0dXJuIG5ldyAkYSh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBLZXx8KHQ9WmUodCkpO3ZhciBlPXQuci8yNTUsbj10LmcvMjU1LHI9dC5iLzI1NSxpPShVYSpyK1lhKmUtemEqbikvKFVhK1lhLXphKSxhPXItaSxvPShqYSoobi1pKS1GYSphKS9QYSxzPU1hdGguc3FydChvKm8rYSphKS8oamEqaSooMS1pKSksYz1zP01hdGguYXRhbjIobyxhKSpnYS0xMjA6TmFOO3JldHVybiBuZXcgJGEoYzwwP2MrMzYwOmMscyxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gSGEodCxlLG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3FhKHQpOm5ldyAkYSh0LGUsbixudWxsPT1yPzE6cil9ZnVuY3Rpb24gJGEodCxlLG4scil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfU1lKCRhLEhhLE5lKERlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0JlOk1hdGgucG93KEJlLHQpLG5ldyAkYSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P09lOk1hdGgucG93KE9lLHQpLG5ldyAkYSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqeWEsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLHI9TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IEtlKDI1NSooZStuKihJYSpyK1JhKmkpKSwyNTUqKGUrbiooRmEqcitQYSppKSksMjU1KihlK24qKGphKnIpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgV2E9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFZhKHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiBHYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gWGEodCxlKXtmb3IodmFyIG4scj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihuPVphKHQsZVtyXSkpcmV0dXJuIG47cmV0dXJuIDB9ZnVuY3Rpb24gWmEodCxlKXtmb3IodmFyIG49ZVswXSxyPWVbMV0saT0tMSxhPTAsbz10Lmxlbmd0aCxzPW8tMTthPG87cz1hKyspe3ZhciBjPXRbYV0sdT1jWzBdLGw9Y1sxXSxoPXRbc10sZj1oWzBdLGQ9aFsxXTtpZihRYShjLGgsZSkpcmV0dXJuIDA7bD5yIT1kPnImJm48KGYtdSkqKHItbCkvKGQtbCkrdSYmKGk9LWkpfXJldHVybiBpfWZ1bmN0aW9uIFFhKHQsZSxuKXt2YXIgcixpLGEsbztyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPT0oblswXS10WzBdKSooZVsxXS10WzFdKX0odCxlLG4pJiYoaT10W3I9Kyh0WzBdPT09ZVswXSldLGE9bltyXSxvPWVbcl0saTw9YSYmYTw9b3x8bzw9YSYmYTw9aSl9ZnVuY3Rpb24gS2EoKXt9dmFyIEphPVtbXSxbW1sxLDEuNV0sWy41LDFdXV0sW1tbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWy41LDFdXV0sW1tbMSwuNV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbLjUsMV1dLFtbMSwuNV0sWzEuNSwxXV1dLFtbWzEsLjVdLFsxLDEuNV1dXSxbW1sxLC41XSxbLjUsMV1dXSxbW1suNSwxXSxbMSwuNV1dXSxbW1sxLDEuNV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEsLjVdXSxbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsxLC41XV1dLFtbWy41LDFdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWzEuNSwxXV1dLFtbWy41LDFdLFsxLDEuNV1dXSxbXV07ZnVuY3Rpb24gdG8oKXt2YXIgdD0xLGU9MSxuPU4scj1zO2Z1bmN0aW9uIGkodCl7dmFyIGU9bih0KTtpZihBcnJheS5pc0FycmF5KGUpKWU9ZS5zbGljZSgpLnNvcnQoVmEpO2Vsc2V7dmFyIHI9bSh0KSxpPXJbMF0sbz1yWzFdO2U9TShpLG8sZSksZT1rKE1hdGguZmxvb3IoaS9lKSplLE1hdGguZmxvb3Ioby9lKSplLGUpfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlKX0pKX1mdW5jdGlvbiBhKG4saSl7dmFyIGE9W10scz1bXTtyZXR1cm4gZnVuY3Rpb24obixyLGkpe3ZhciBhLHMsYyx1LGwsaCxmPW5ldyBBcnJheSxkPW5ldyBBcnJheTtmb3IoYT1zPS0xLHU9blswXT49cixKYVt1PDwxXS5mb3JFYWNoKHApOysrYTx0LTE7KWM9dSx1PW5bYSsxXT49cixKYVtjfHU8PDFdLmZvckVhY2gocCk7Zm9yKEphW3U8PDBdLmZvckVhY2gocCk7KytzPGUtMTspe2ZvcihhPS0xLHU9bltzKnQrdF0+PXIsbD1uW3MqdF0+PXIsSmFbdTw8MXxsPDwyXS5mb3JFYWNoKHApOysrYTx0LTE7KWM9dSx1PW5bcyp0K3QrYSsxXT49cixoPWwsbD1uW3MqdCthKzFdPj1yLEphW2N8dTw8MXxsPDwyfGg8PDNdLmZvckVhY2gocCk7SmFbdXxsPDwzXS5mb3JFYWNoKHApfWZvcihhPS0xLGw9bltzKnRdPj1yLEphW2w8PDJdLmZvckVhY2gocCk7KythPHQtMTspaD1sLGw9bltzKnQrYSsxXT49cixKYVtsPDwyfGg8PDNdLmZvckVhY2gocCk7ZnVuY3Rpb24gcCh0KXt2YXIgZSxuLHI9W3RbMF1bMF0rYSx0WzBdWzFdK3NdLGM9W3RbMV1bMF0rYSx0WzFdWzFdK3NdLHU9byhyKSxsPW8oYyk7KGU9ZFt1XSk/KG49ZltsXSk/KGRlbGV0ZSBkW2UuZW5kXSxkZWxldGUgZltuLnN0YXJ0XSxlPT09bj8oZS5yaW5nLnB1c2goYyksaShlLnJpbmcpKTpmW2Uuc3RhcnRdPWRbbi5lbmRdPXtzdGFydDplLnN0YXJ0LGVuZDpuLmVuZCxyaW5nOmUucmluZy5jb25jYXQobi5yaW5nKX0pOihkZWxldGUgZFtlLmVuZF0sZS5yaW5nLnB1c2goYyksZFtlLmVuZD1sXT1lKTooZT1mW2xdKT8obj1kW3VdKT8oZGVsZXRlIGZbZS5zdGFydF0sZGVsZXRlIGRbbi5lbmRdLGU9PT1uPyhlLnJpbmcucHVzaChjKSxpKGUucmluZykpOmZbbi5zdGFydF09ZFtlLmVuZF09e3N0YXJ0Om4uc3RhcnQsZW5kOmUuZW5kLHJpbmc6bi5yaW5nLmNvbmNhdChlLnJpbmcpfSk6KGRlbGV0ZSBmW2Uuc3RhcnRdLGUucmluZy51bnNoaWZ0KHIpLGZbZS5zdGFydD11XT1lKTpmW3VdPWRbbF09e3N0YXJ0OnUsZW5kOmwscmluZzpbcixjXX19SmFbbDw8M10uZm9yRWFjaChwKX0obixpLChmdW5jdGlvbih0KXtyKHQsbixpKSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoLHI9dFtuLTFdWzFdKnRbMF1bMF0tdFtuLTFdWzBdKnRbMF1bMV07KytlPG47KXIrPXRbZS0xXVsxXSp0W2VdWzBdLXRbZS0xXVswXSp0W2VdWzFdO3JldHVybiByfSh0KT4wP2EucHVzaChbdF0pOnMucHVzaCh0KX0pKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAscj1hLmxlbmd0aDtuPHI7KytuKWlmKC0xIT09WGEoKGU9YVtuXSlbMF0sdCkpcmV0dXJuIHZvaWQgZS5wdXNoKHQpfSkpLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOmksY29vcmRpbmF0ZXM6YX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gMiplWzBdK2VbMV0qKHQrMSkqNH1mdW5jdGlvbiBzKG4scixpKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBhLG89blswXSxzPW5bMV0sYz0wfG8sdT0wfHMsbD1yW3UqdCtjXTtvPjAmJm88dCYmYz09PW8mJihhPXJbdSp0K2MtMV0sblswXT1vKyhpLWEpLyhsLWEpLS41KSxzPjAmJnM8ZSYmdT09PXMmJihhPXJbKHUtMSkqdCtjXSxuWzFdPXMrKGktYSkvKGwtYSktLjUpfSkpfXJldHVybiBpLmNvbnRvdXI9YSxpLnNpemU9ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3QsZV07dmFyIHI9TWF0aC5jZWlsKG5bMF0pLGE9TWF0aC5jZWlsKG5bMV0pO2lmKCEocj4wJiZhPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9cixlPWEsaX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9HYShXYS5jYWxsKHQpKTpHYSh0KSxpKTpufSxpLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10P3M6S2EsaSk6cj09PXN9LGl9ZnVuY3Rpb24gZW8odCxlLG4pe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsYT0xKyhuPDwxKSxvPTA7bzxpOysrbylmb3IodmFyIHM9MCxjPTA7czxyK247KytzKXM8ciYmKGMrPXQuZGF0YVtzK28qcl0pLHM+PW4mJihzPj1hJiYoYy09dC5kYXRhW3MtYStvKnJdKSxlLmRhdGFbcy1uK28qcl09Yy9NYXRoLm1pbihzKzEsci0xK2EtcyxhKSl9ZnVuY3Rpb24gbm8odCxlLG4pe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsYT0xKyhuPDwxKSxvPTA7bzxyOysrbylmb3IodmFyIHM9MCxjPTA7czxpK247KytzKXM8aSYmKGMrPXQuZGF0YVtvK3Mqcl0pLHM+PW4mJihzPj1hJiYoYy09dC5kYXRhW28rKHMtYSkqcl0pLGUuZGF0YVtvKyhzLW4pKnJdPWMvTWF0aC5taW4ocysxLGktMSthLXMsYSkpfWZ1bmN0aW9uIHJvKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGlvKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGFvKCl7cmV0dXJuIDF9ZnVuY3Rpb24gb28oKXt2YXIgdD1ybyxlPWlvLG49YW8scj05NjAsaT01MDAsYT0yMCxvPTIscz0zKmEsYz1yKzIqcz4+byx1PWkrMipzPj5vLGw9R2EoMjApO2Z1bmN0aW9uIGgocil7dmFyIGk9bmV3IEZsb2F0MzJBcnJheShjKnUpLGg9bmV3IEZsb2F0MzJBcnJheShjKnUpO3IuZm9yRWFjaCgoZnVuY3Rpb24ocixhLGwpe3ZhciBoPSt0KHIsYSxsKStzPj5vLGY9K2UocixhLGwpK3M+Pm8sZD0rbihyLGEsbCk7aD49MCYmaDxjJiZmPj0wJiZmPHUmJihpW2grZipjXSs9ZCl9KSksZW8oe3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTppfSx7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOmh9LGE+Pm8pLG5vKHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aH0se3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTppfSxhPj5vKSxlbyh7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOml9LHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aH0sYT4+byksbm8oe3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTpofSx7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOml9LGE+Pm8pLGVvKHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aX0se3dpZHRoOmMsaGVpZ2h0OnUsZGF0YTpofSxhPj5vKSxubyh7d2lkdGg6YyxoZWlnaHQ6dSxkYXRhOmh9LHt3aWR0aDpjLGhlaWdodDp1LGRhdGE6aX0sYT4+byk7dmFyIGQ9bChpKTtpZighQXJyYXkuaXNBcnJheShkKSl7dmFyIHA9SShpKTtkPU0oMCxwLGQpLChkPWsoMCxNYXRoLmZsb29yKHAvZCkqZCxkKSkuc2hpZnQoKX1yZXR1cm4gdG8oKS50aHJlc2hvbGRzKGQpLnNpemUoW2MsdV0pKGkpLm1hcChmKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKm8pLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChkKSx0fWZ1bmN0aW9uIGQodCl7dC5mb3JFYWNoKHApfWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKHkpfWZ1bmN0aW9uIHkodCl7dFswXT10WzBdKk1hdGgucG93KDIsbyktcyx0WzFdPXRbMV0qTWF0aC5wb3coMixvKS1zfWZ1bmN0aW9uIGcoKXtyZXR1cm4gYz1yKzIqKHM9MyphKT4+byx1PWkrMipzPj5vLGh9cmV0dXJuIGgueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkdhKCtlKSxoKTp0fSxoLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHYSgrdCksaCk6ZX0saC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHYSgrdCksaCk6bn0saC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltyLGldO3ZhciBlPU1hdGguY2VpbCh0WzBdKSxuPU1hdGguY2VpbCh0WzFdKTtpZighKGU+PTB8fGU+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHI9ZSxpPW4sZygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxvO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksZygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP0dhKFdhLmNhbGwodCkpOkdhKHQpLGgpOmx9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQoYSooYSsxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gYT1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMiksZygpfSxofWZ1bmN0aW9uIHNvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBjbyh0LGUsbixyLGksYSxvLHMsYyx1KXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc3ViamVjdD1uLHRoaXMuaWRlbnRpZmllcj1yLHRoaXMuYWN0aXZlPWksdGhpcy54PWEsdGhpcy55PW8sdGhpcy5keD1zLHRoaXMuZHk9Yyx0aGlzLl89dX1mdW5jdGlvbiB1bygpe3JldHVybiFsZS5jdHJsS2V5JiYhbGUuYnV0dG9ufWZ1bmN0aW9uIGxvKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX1mdW5jdGlvbiBobyh0KXtyZXR1cm4gbnVsbD09dD97eDpsZS54LHk6bGUueX06dH1mdW5jdGlvbiBmbygpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBwbygpe3ZhciB0LGUsbixyLGk9dW8sYT1sbyxvPWhvLHM9Zm8sYz17fSx1PWZ0KCJzdGFydCIsImRyYWciLCJlbmQiKSxsPTAsaD0wO2Z1bmN0aW9uIGYodCl7dC5vbigibW91c2Vkb3duLmRyYWciLGQpLmZpbHRlcihzKS5vbigidG91Y2hzdGFydC5kcmFnIixnKS5vbigidG91Y2htb3ZlLmRyYWciLG0pLm9uKCJ0b3VjaGVuZC5kcmFnIHRvdWNoY2FuY2VsLmRyYWciLHYpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBkKCl7aWYoIXImJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbz1iKCJtb3VzZSIsYS5hcHBseSh0aGlzLGFyZ3VtZW50cyksQm4sdGhpcyxhcmd1bWVudHMpO28mJihUZShsZS52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLHAsITApLm9uKCJtb3VzZXVwLmRyYWciLHksITApLFNlKGxlLnZpZXcpLEVlKCksbj0hMSx0PWxlLmNsaWVudFgsZT1sZS5jbGllbnRZLG8oInN0YXJ0IikpfX1mdW5jdGlvbiBwKCl7aWYoQ2UoKSwhbil7dmFyIHI9bGUuY2xpZW50WC10LGk9bGUuY2xpZW50WS1lO249cipyK2kqaT5ofWMubW91c2UoImRyYWciKX1mdW5jdGlvbiB5KCl7VGUobGUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIG1vdXNldXAuZHJhZyIsbnVsbCksQWUobGUudmlldyxuKSxDZSgpLGMubW91c2UoImVuZCIpfWZ1bmN0aW9uIGcoKXtpZihpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQsZSxuPWxlLmNoYW5nZWRUb3VjaGVzLHI9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz1uLmxlbmd0aDtmb3IodD0wO3Q8bzsrK3QpKGU9YihuW3RdLmlkZW50aWZpZXIscixPbix0aGlzLGFyZ3VtZW50cykpJiYoRWUoKSxlKCJzdGFydCIpKX19ZnVuY3Rpb24gbSgpe3ZhciB0LGUsbj1sZS5jaGFuZ2VkVG91Y2hlcyxyPW4ubGVuZ3RoO2Zvcih0PTA7dDxyOysrdCkoZT1jW25bdF0uaWRlbnRpZmllcl0pJiYoQ2UoKSxlKCJkcmFnIikpfWZ1bmN0aW9uIHYoKXt2YXIgdCxlLG49bGUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IociYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyPW51bGx9KSw1MDApLHQ9MDt0PGk7Kyt0KShlPWNbblt0XS5pZGVudGlmaWVyXSkmJihFZSgpLGUoImVuZCIpKX1mdW5jdGlvbiBiKHQsZSxuLHIsaSl7dmFyIGEscyxoLGQ9bihlLHQpLHA9dS5jb3B5KCk7aWYoZ2UobmV3IGNvKGYsImJlZm9yZXN0YXJ0IixhLHQsbCxkWzBdLGRbMV0sMCwwLHApLChmdW5jdGlvbigpe3JldHVybiBudWxsIT0obGUuc3ViamVjdD1hPW8uYXBwbHkocixpKSkmJihzPWEueC1kWzBdfHwwLGg9YS55LWRbMV18fDAsITApfSkpKXJldHVybiBmdW5jdGlvbiBvKHUpe3ZhciB5LGc9ZDtzd2l0Y2godSl7Y2FzZSJzdGFydCI6Y1t0XT1vLHk9bCsrO2JyZWFrO2Nhc2UiZW5kIjpkZWxldGUgY1t0XSwtLWw7Y2FzZSJkcmFnIjpkPW4oZSx0KSx5PWx9Z2UobmV3IGNvKGYsdSxhLHQseSxkWzBdK3MsZFsxXStoLGRbMF0tZ1swXSxkWzFdLWdbMV0scCkscC5hcHBseSxwLFt1LHIsaV0pfX1yZXR1cm4gZi5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzbyghIXQpLGYpOml9LGYuY29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c28odCksZik6YX0sZi5zdWJqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c28odCksZik6b30sZi50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzbyghIXQpLGYpOnN9LGYub249ZnVuY3Rpb24oKXt2YXIgdD11Lm9uLmFwcGx5KHUsYXJndW1lbnRzKTtyZXR1cm4gdD09PXU/Zjp0fSxmLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9KHQ9K3QpKnQsZik6TWF0aC5zcXJ0KGgpfSxmfWNvLnByb3RvdHlwZS5vbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuXy5vbi5hcHBseSh0aGlzLl8sYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXMuXz90aGlzOnR9O3ZhciB5bz17fSxnbz17fTtmdW5jdGlvbiBtbyh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KSsiOiBkWyIrZSsnXSB8fCAiIid9KSkuam9pbigiLCIpKyJ9Iil9ZnVuY3Rpb24gdm8odCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKSxuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgciBpbiB0KXIgaW4gZXx8bi5wdXNoKGVbcl09cil9KSksbn1mdW5jdGlvbiBibyh0LGUpe3ZhciBuPXQrIiIscj1uLmxlbmd0aDtyZXR1cm4gcjxlP25ldyBBcnJheShlLXIrMSkuam9pbigwKStuOm59ZnVuY3Rpb24gX28odCl7dmFyIGU9bmV3IFJlZ0V4cCgnWyInK3QrIlxuXHJdIiksbj10LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gcih0LGUpe3ZhciByLGk9W10sYT10Lmxlbmd0aCxvPTAscz0wLGM9YTw9MCx1PSExO2Z1bmN0aW9uIGwoKXtpZihjKXJldHVybiBnbztpZih1KXJldHVybiB1PSExLHlvO3ZhciBlLHIsaT1vO2lmKDM0PT09dC5jaGFyQ29kZUF0KGkpKXtmb3IoO28rKzxhJiYzNCE9PXQuY2hhckNvZGVBdChvKXx8MzQ9PT10LmNoYXJDb2RlQXQoKytvKTspO3JldHVybihlPW8pPj1hP2M9ITA6MTA9PT0ocj10LmNoYXJDb2RlQXQobysrKSk/dT0hMDoxMz09PXImJih1PSEwLDEwPT09dC5jaGFyQ29kZUF0KG8pJiYrK28pLHQuc2xpY2UoaSsxLGUtMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7bzxhOyl7aWYoMTA9PT0ocj10LmNoYXJDb2RlQXQoZT1vKyspKSl1PSEwO2Vsc2UgaWYoMTM9PT1yKXU9ITAsMTA9PT10LmNoYXJDb2RlQXQobykmJisrbztlbHNlIGlmKHIhPT1uKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGksZSl9cmV0dXJuIGM9ITAsdC5zbGljZShpLGEpfWZvcigxMD09PXQuY2hhckNvZGVBdChhLTEpJiYtLWEsMTM9PT10LmNoYXJDb2RlQXQoYS0xKSYmLS1hOyhyPWwoKSkhPT1nbzspe2Zvcih2YXIgaD1bXTtyIT09eW8mJnIhPT1nbzspaC5wdXNoKHIpLHI9bCgpO2UmJm51bGw9PShoPWUoaCxzKyspKXx8aS5wdXNoKGgpfXJldHVybiBpfWZ1bmN0aW9uIGkoZSxuKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8oZVt0XSl9KSkuam9pbih0KX0pKX1mdW5jdGlvbiBhKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6dCBpbnN0YW5jZW9mIERhdGU/ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRVVENIb3VycygpLG49dC5nZXRVVENNaW51dGVzKCkscj10LmdldFVUQ1NlY29uZHMoKSxpPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7cmV0dXJuIGlzTmFOKHQpPyJJbnZhbGlkIERhdGUiOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/Ii0iK2JvKC10LDYpOnQ+OTk5OT8iKyIrYm8odCw2KTpibyh0LDQpfSh0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitibyh0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrYm8odC5nZXRVVENEYXRlKCksMikrKGk/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIjoiK2JvKHIsMikrIi4iK2JvKGksMykrIloiOnI/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIjoiK2JvKHIsMikrIloiOm58fGU/IlQiK2JvKGUsMikrIjoiK2JvKG4sMikrIloiOiIiKX0odCk6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxhPXIodCwoZnVuY3Rpb24odCxyKXtpZihuKXJldHVybiBuKHQsci0xKTtpPXQsbj1lP2Z1bmN0aW9uKHQsZSl7dmFyIG49bW8odCk7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIGUobihyKSxpLHQpfX0odCxlKTptbyh0KX0pKTtyZXR1cm4gYS5jb2x1bW5zPWl8fFtdLGF9LHBhcnNlUm93czpyLGZvcm1hdDpmdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1uJiYobj12byhlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChpKGUsbikpLmpvaW4oIlxuIil9LGZvcm1hdEJvZHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZSYmKGU9dm8odCkpLGkodCxlKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChhKS5qb2luKCJcbiIpfSxmb3JtYXRSb3c6YSxmb3JtYXRWYWx1ZTpvfX12YXIgeG89X28oIiwiKSx3bz14by5wYXJzZSxrbz14by5wYXJzZVJvd3MsVG89eG8uZm9ybWF0LEVvPXhvLmZvcm1hdEJvZHksQ289eG8uZm9ybWF0Um93cyxTbz14by5mb3JtYXRSb3csQW89eG8uZm9ybWF0VmFsdWUsTW89X28oIlx0IiksTm89TW8ucGFyc2UsRG89TW8ucGFyc2VSb3dzLE9vPU1vLmZvcm1hdCxCbz1Nby5mb3JtYXRCb2R5LExvPU1vLmZvcm1hdFJvd3MsSW89TW8uZm9ybWF0Um93LFJvPU1vLmZvcm1hdFZhbHVlO2Z1bmN0aW9uIEZvKHQpe2Zvcih2YXIgZSBpbiB0KXt2YXIgbixyLGk9dFtlXS50cmltKCk7aWYoaSlpZigidHJ1ZSI9PT1pKWk9ITA7ZWxzZSBpZigiZmFsc2UiPT09aSlpPSExO2Vsc2UgaWYoIk5hTiI9PT1pKWk9TmFOO2Vsc2UgaWYoaXNOYU4obj0raSkpe2lmKCEocj1pLm1hdGNoKC9eKFstK11cZHsyfSk/XGR7NH0oLVxkezJ9KC1cZHsyfSk/KT8oVFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkezN9KT8pPyhafFstK11cZHsyfTpcZHsyfSk/KT8kLykpKWNvbnRpbnVlO1BvJiZyWzRdJiYhcls3XSYmKGk9aS5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9ULywiICIpKSxpPW5ldyBEYXRlKGkpfWVsc2UgaT1uO2Vsc2UgaT1udWxsO3RbZV09aX1yZXR1cm4gdH12YXIgUG89bmV3IERhdGUoIjIwMTktMDEtMDFUMDA6MDAiKS5nZXRIb3VycygpfHxuZXcgRGF0ZSgiMjAxOS0wNy0wMVQwMDowMCIpLmdldEhvdXJzKCk7ZnVuY3Rpb24gam8odCl7cmV0dXJuK3R9ZnVuY3Rpb24gWW8odCl7cmV0dXJuIHQqdH1mdW5jdGlvbiB6byh0KXtyZXR1cm4gdCooMi10KX1mdW5jdGlvbiBVbyh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdDotLXQqKDItdCkrMSkvMn12YXIgcW89ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSxIbz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIDEtTWF0aC5wb3coMS10LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSwkbz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSgzKSxXbz1NYXRoLlBJLFZvPVdvLzI7ZnVuY3Rpb24gR28odCl7cmV0dXJuIDE9PSt0PzE6MS1NYXRoLmNvcyh0KlZvKX1mdW5jdGlvbiBYbyh0KXtyZXR1cm4gTWF0aC5zaW4odCpWbyl9ZnVuY3Rpb24gWm8odCl7cmV0dXJuKDEtTWF0aC5jb3MoV28qdCkpLzJ9ZnVuY3Rpb24gUW8odCl7cmV0dXJuIDEuMDAwOTc3NTE3MTA2NTQ5NCooTWF0aC5wb3coMiwtMTAqdCktLjAwMDk3NjU2MjUpfWZ1bmN0aW9uIEtvKHQpe3JldHVybiBRbygxLSt0KX1mdW5jdGlvbiBKbyh0KXtyZXR1cm4gMS1Rbyh0KX1mdW5jdGlvbiB0cyh0KXtyZXR1cm4oKHQqPTIpPD0xP1FvKDEtdCk6Mi1Rbyh0LTEpKS8yfWZ1bmN0aW9uIGVzKHQpe3JldHVybiAxLU1hdGguc3FydCgxLXQqdCl9ZnVuY3Rpb24gbnModCl7cmV0dXJuIE1hdGguc3FydCgxLSAtLXQqdCl9ZnVuY3Rpb24gcnModCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU1hdGguc3FydCgxLXQqdCk6TWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpLzJ9dmFyIGlzPTcuNTYyNTtmdW5jdGlvbiBhcyh0KXtyZXR1cm4gMS1vcygxLXQpfWZ1bmN0aW9uIG9zKHQpe3JldHVybih0PSt0KTwuMzYzNjM2MzYzNjM2MzYzNjU/aXMqdCp0OnQ8LjcyNzI3MjcyNzI3MjcyNzM/aXMqKHQtPS41NDU0NTQ1NDU0NTQ1NDU0KSp0Ky43NTp0PC45MDkwOTA5MDkwOTA5MDkxP2lzKih0LT0uODE4MTgxODE4MTgxODE4MikqdCsuOTM3NTppcyoodC09Ljk1NDU0NTQ1NDU0NTQ1NDYpKnQrLjk4NDM3NX1mdW5jdGlvbiBzcyh0KXtyZXR1cm4oKHQqPTIpPD0xPzEtb3MoMS10KTpvcyh0LTEpKzEpLzJ9dmFyIGNzPTEuNzAxNTgsdXM9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybih0PSt0KSp0KihlKih0LTEpK3QpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0oY3MpLGxzPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4tLXQqdCooKHQrMSkqZSt0KSsxfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0oY3MpLGhzPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufShjcyksZnM9MipNYXRoLlBJLGRzPWZ1bmN0aW9uIHQoZSxuKXt2YXIgcj1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPWZzKTtmdW5jdGlvbiBpKHQpe3JldHVybiBlKlFvKC0gLS10KSpNYXRoLnNpbigoci10KS9uKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMykscHM9ZnVuY3Rpb24gdChlLG4pe3ZhciByPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89ZnMpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIDEtZSpRbyh0PSt0KSpNYXRoLnNpbigodCtyKS9uKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMykseXM9ZnVuY3Rpb24gdChlLG4pe3ZhciByPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89ZnMpO2Z1bmN0aW9uIGkodCl7cmV0dXJuKCh0PTIqdC0xKTwwP2UqUW8oLXQpKk1hdGguc2luKChyLXQpL24pOjItZSpRbyh0KSpNYXRoLnNpbigocit0KS9uKSkvMn1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZzKX0saS5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0saX0oMSwuMyk7ZnVuY3Rpb24gZ3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmJsb2IoKX1mdW5jdGlvbiBtcyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oZ3MpfWZ1bmN0aW9uIHZzKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5hcnJheUJ1ZmZlcigpfWZ1bmN0aW9uIGJzKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbih2cyl9ZnVuY3Rpb24gX3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiB4cyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oX3MpfWZ1bmN0aW9uIHdzKHQpe3JldHVybiBmdW5jdGlvbihlLG4scil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKHI9bixuPXZvaWQgMCkseHMoZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHIpfSkpfX1mdW5jdGlvbiBrcyh0LGUsbixyKXszPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihyPW4sbj12b2lkIDApO3ZhciBpPV9vKHQpO3JldHVybiB4cyhlLG4pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBpLnBhcnNlKHQscil9KSl9dmFyIFRzPXdzKHdvKSxFcz13cyhObyk7ZnVuY3Rpb24gQ3ModCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7dmFyIGk9bmV3IEltYWdlO2Zvcih2YXIgYSBpbiBlKWlbYV09ZVthXTtpLm9uZXJyb3I9cixpLm9ubG9hZD1mdW5jdGlvbigpe24oaSl9LGkuc3JjPXR9KSl9ZnVuY3Rpb24gU3ModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO2lmKDIwNCE9PXQuc3RhdHVzJiYyMDUhPT10LnN0YXR1cylyZXR1cm4gdC5qc29uKCl9ZnVuY3Rpb24gQXModCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKFNzKX1mdW5jdGlvbiBNcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4geHMoZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fWNvbnN0IE5zPU1zKCJhcHBsaWNhdGlvbi94bWwiKTt2YXIgRHM9TXMoInRleHQvaHRtbCIpLE9zPU1zKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gQnModCxlKXt2YXIgbjtmdW5jdGlvbiByKCl7dmFyIHIsaSxhPW4ubGVuZ3RoLG89MCxzPTA7Zm9yKHI9MDtyPGE7KytyKW8rPShpPW5bcl0pLngscys9aS55O2ZvcihvPW8vYS10LHM9cy9hLWUscj0wO3I8YTsrK3IpKGk9bltyXSkueC09byxpLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLHIuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qscik6ZX0scn1mdW5jdGlvbiBMcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSXMoKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9ZnVuY3Rpb24gUnModCxlLG4scil7aWYoaXNOYU4oZSl8fGlzTmFOKG4pKXJldHVybiB0O3ZhciBpLGEsbyxzLGMsdSxsLGgsZixkPXQuX3Jvb3QscD17ZGF0YTpyfSx5PXQuX3gwLGc9dC5feTAsbT10Ll94MSx2PXQuX3kxO2lmKCFkKXJldHVybiB0Ll9yb290PXAsdDtmb3IoO2QubGVuZ3RoOylpZigodT1lPj0oYT0oeSttKS8yKSk/eT1hOm09YSwobD1uPj0obz0oZyt2KS8yKSk/Zz1vOnY9byxpPWQsIShkPWRbaD1sPDwxfHVdKSlyZXR1cm4gaVtoXT1wLHQ7aWYocz0rdC5feC5jYWxsKG51bGwsZC5kYXRhKSxjPSt0Ll95LmNhbGwobnVsbCxkLmRhdGEpLGU9PT1zJiZuPT09YylyZXR1cm4gcC5uZXh0PWQsaT9pW2hdPXA6dC5fcm9vdD1wLHQ7ZG97aT1pP2lbaF09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLCh1PWU+PShhPSh5K20pLzIpKT95PWE6bT1hLChsPW4+PShvPShnK3YpLzIpKT9nPW86dj1vfXdoaWxlKChoPWw8PDF8dSk9PShmPShjPj1vKTw8MXxzPj1hKSk7cmV0dXJuIGlbZl09ZCxpW2hdPXAsdH1mdW5jdGlvbiBGcyh0LGUsbixyLGkpe3RoaXMubm9kZT10LHRoaXMueDA9ZSx0aGlzLnkwPW4sdGhpcy54MT1yLHRoaXMueTE9aX1mdW5jdGlvbiBQcyh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBqcyh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBZcyh0LGUsbil7dmFyIHI9bmV3IHpzKG51bGw9PWU/UHM6ZSxudWxsPT1uP2pzOm4sTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9yOnIuYWRkQWxsKHQpfWZ1bmN0aW9uIHpzKHQsZSxuLHIsaSxhKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3gwPW4sdGhpcy5feTA9cix0aGlzLl94MT1pLHRoaXMuX3kxPWEsdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24gVXModCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0sbj1lO3Q9dC5uZXh0OyluPW4ubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfXZhciBxcz1Zcy5wcm90b3R5cGU9enMucHJvdG90eXBlO2Z1bmN0aW9uIEhzKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiAkcyh0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rpb24gV3ModCl7dmFyIGUsbixyPTEsaT0xO2Z1bmN0aW9uIGEoKXtmb3IodmFyIHQsYSxzLGMsdSxsLGgsZj1lLmxlbmd0aCxkPTA7ZDxpOysrZClmb3IoYT1ZcyhlLEhzLCRzKS52aXNpdEFmdGVyKG8pLHQ9MDt0PGY7Kyt0KXM9ZVt0XSxsPW5bcy5pbmRleF0saD1sKmwsYz1zLngrcy52eCx1PXMueStzLnZ5LGEudmlzaXQocCk7ZnVuY3Rpb24gcCh0LGUsbixpLGEpe3ZhciBvPXQuZGF0YSxmPXQucixkPWwrZjtpZighbylyZXR1cm4gZT5jK2R8fGk8Yy1kfHxuPnUrZHx8YTx1LWQ7aWYoby5pbmRleD5zLmluZGV4KXt2YXIgcD1jLW8ueC1vLnZ4LHk9dS1vLnktby52eSxnPXAqcCt5Knk7ZzxkKmQmJigwPT09cCYmKGcrPShwPUlzKCkpKnApLDA9PT15JiYoZys9KHk9SXMoKSkqeSksZz0oZC0oZz1NYXRoLnNxcnQoZykpKS9nKnIscy52eCs9KHAqPWcpKihkPShmKj1mKS8oaCtmKSkscy52eSs9KHkqPWcpKmQsby52eC09cCooZD0xLWQpLG8udnktPXkqZCl9fX1mdW5jdGlvbiBvKHQpe2lmKHQuZGF0YSlyZXR1cm4gdC5yPW5bdC5kYXRhLmluZGV4XTtmb3IodmFyIGU9dC5yPTA7ZTw0OysrZSl0W2VdJiZ0W2VdLnI+dC5yJiYodC5yPXRbZV0ucil9ZnVuY3Rpb24gcygpe2lmKGUpe3ZhciByLGksYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSkscj0wO3I8YTsrK3IpaT1lW3JdLG5baS5pbmRleF09K3QoaSxyLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9THMobnVsbD09dD8xOit0KSksYS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxzKCl9LGEuaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxhKTppfSxhLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGEpOnJ9LGEucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLHMoKSxhKTp0fSxhfWZ1bmN0aW9uIFZzKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIEdzKHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIFhzKHQpe3ZhciBlLG4scixpLGEsbz1WcyxzPWZ1bmN0aW9uKHQpe3JldHVybiAxL01hdGgubWluKGlbdC5zb3VyY2UuaW5kZXhdLGlbdC50YXJnZXQuaW5kZXhdKX0sYz1McygzMCksdT0xO2Z1bmN0aW9uIGwocil7Zm9yKHZhciBpPTAsbz10Lmxlbmd0aDtpPHU7KytpKWZvcih2YXIgcyxjLGwsaCxmLGQscCx5PTA7eTxvOysreSljPShzPXRbeV0pLnNvdXJjZSxoPShsPXMudGFyZ2V0KS54K2wudngtYy54LWMudnh8fElzKCksZj1sLnkrbC52eS1jLnktYy52eXx8SXMoKSxoKj1kPSgoZD1NYXRoLnNxcnQoaCpoK2YqZikpLW5beV0pL2QqciplW3ldLGYqPWQsbC52eC09aCoocD1hW3ldKSxsLnZ5LT1mKnAsYy52eCs9aCoocD0xLXApLGMudnkrPWYqcH1mdW5jdGlvbiBoKCl7aWYocil7dmFyIHMsYyx1PXIubGVuZ3RoLGw9dC5sZW5ndGgsaD1uYShyLG8pO2ZvcihzPTAsaT1uZXcgQXJyYXkodSk7czxsOysrcykoYz10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgYy5zb3VyY2UmJihjLnNvdXJjZT1HcyhoLGMuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBjLnRhcmdldCYmKGMudGFyZ2V0PUdzKGgsYy50YXJnZXQpKSxpW2Muc291cmNlLmluZGV4XT0oaVtjLnNvdXJjZS5pbmRleF18fDApKzEsaVtjLnRhcmdldC5pbmRleF09KGlbYy50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsYT1uZXcgQXJyYXkobCk7czxsOysrcyljPXRbc10sYVtzXT1pW2Muc291cmNlLmluZGV4XS8oaVtjLnNvdXJjZS5pbmRleF0raVtjLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KGwpLGYoKSxuPW5ldyBBcnJheShsKSxkKCl9fWZ1bmN0aW9uIGYoKXtpZihyKWZvcih2YXIgbj0wLGk9dC5sZW5ndGg7bjxpOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBkKCl7aWYocilmb3IodmFyIGU9MCxpPXQubGVuZ3RoO2U8aTsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxsLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10LGgoKX0sbC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGgoKSxsKTp0fSxsLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbCk6b30sbC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGwpOnV9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMcygrdCksZigpLGwpOnN9LGwuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMcygrdCksZCgpLGwpOmN9LGx9ZnVuY3Rpb24gWnModCl7cmV0dXJuIHQueH1mdW5jdGlvbiBRcyh0KXtyZXR1cm4gdC55fXFzLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxlLG49bmV3IHpzKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkscj10aGlzLl9yb290O2lmKCFyKXJldHVybiBuO2lmKCFyLmxlbmd0aClyZXR1cm4gbi5fcm9vdD1VcyhyKSxuO2Zvcih0PVt7c291cmNlOnIsdGFyZ2V0Om4uX3Jvb3Q9bmV3IEFycmF5KDQpfV07cj10LnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShlPXIuc291cmNlW2ldKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0OnIudGFyZ2V0W2ldPW5ldyBBcnJheSg0KX0pOnIudGFyZ2V0W2ldPVVzKGUpKTtyZXR1cm4gbn0scXMuYWRkPWZ1bmN0aW9uKHQpe3ZhciBlPSt0aGlzLl94LmNhbGwobnVsbCx0KSxuPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gUnModGhpcy5jb3ZlcihlLG4pLGUsbix0KX0scXMuYWRkQWxsPWZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLGE9dC5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSksYz0xLzAsdT0xLzAsbD0tMS8wLGg9LTEvMDtmb3Iobj0wO248YTsrK24paXNOYU4ocj0rdGhpcy5feC5jYWxsKG51bGwsZT10W25dKSl8fGlzTmFOKGk9K3RoaXMuX3kuY2FsbChudWxsLGUpKXx8KG9bbl09cixzW25dPWkscjxjJiYoYz1yKSxyPmwmJihsPXIpLGk8dSYmKHU9aSksaT5oJiYoaD1pKSk7aWYoYz5sfHx1PmgpcmV0dXJuIHRoaXM7Zm9yKHRoaXMuY292ZXIoYyx1KS5jb3ZlcihsLGgpLG49MDtuPGE7KytuKVJzKHRoaXMsb1tuXSxzW25dLHRbbl0pO3JldHVybiB0aGlzfSxxcy5jb3Zlcj1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQ9K3QpfHxpc05hTihlPStlKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl94MCxyPXRoaXMuX3kwLGk9dGhpcy5feDEsYT10aGlzLl95MTtpZihpc05hTihuKSlpPShuPU1hdGguZmxvb3IodCkpKzEsYT0ocj1NYXRoLmZsb29yKGUpKSsxO2Vsc2V7Zm9yKHZhciBvLHMsYz1pLW4sdT10aGlzLl9yb290O24+dHx8dD49aXx8cj5lfHxlPj1hOylzd2l0Y2gocz0oZTxyKTw8MXx0PG4sKG89bmV3IEFycmF5KDQpKVtzXT11LHU9byxjKj0yLHMpe2Nhc2UgMDppPW4rYyxhPXIrYzticmVhaztjYXNlIDE6bj1pLWMsYT1yK2M7YnJlYWs7Y2FzZSAyOmk9bitjLHI9YS1jO2JyZWFrO2Nhc2UgMzpuPWktYyxyPWEtY310aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9dSl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9cix0aGlzLl94MT1pLHRoaXMuX3kxPWEsdGhpc30scXMuZGF0YT1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LHFzLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0scXMuZmluZD1mdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhLG8scyxjLHUsbD10aGlzLl94MCxoPXRoaXMuX3kwLGY9dGhpcy5feDEsZD10aGlzLl95MSxwPVtdLHk9dGhpcy5fcm9vdDtmb3IoeSYmcC5wdXNoKG5ldyBGcyh5LGwsaCxmLGQpKSxudWxsPT1uP249MS8wOihsPXQtbixoPWUtbixmPXQrbixkPWUrbixuKj1uKTtjPXAucG9wKCk7KWlmKCEoISh5PWMubm9kZSl8fChpPWMueDApPmZ8fChhPWMueTApPmR8fChvPWMueDEpPGx8fChzPWMueTEpPGgpKWlmKHkubGVuZ3RoKXt2YXIgZz0oaStvKS8yLG09KGErcykvMjtwLnB1c2gobmV3IEZzKHlbM10sZyxtLG8scyksbmV3IEZzKHlbMl0saSxtLGcscyksbmV3IEZzKHlbMV0sZyxhLG8sbSksbmV3IEZzKHlbMF0saSxhLGcsbSkpLCh1PShlPj1tKTw8MXx0Pj1nKSYmKGM9cFtwLmxlbmd0aC0xXSxwW3AubGVuZ3RoLTFdPXBbcC5sZW5ndGgtMS11XSxwW3AubGVuZ3RoLTEtdV09Yyl9ZWxzZXt2YXIgdj10LSt0aGlzLl94LmNhbGwobnVsbCx5LmRhdGEpLGI9ZS0rdGhpcy5feS5jYWxsKG51bGwseS5kYXRhKSxfPXYqditiKmI7aWYoXzxuKXt2YXIgeD1NYXRoLnNxcnQobj1fKTtsPXQteCxoPWUteCxmPXQreCxkPWUreCxyPXkuZGF0YX19cmV0dXJuIHJ9LHFzLnJlbW92ZT1mdW5jdGlvbih0KXtpZihpc05hTihhPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKG89K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLHIsaSxhLG8scyxjLHUsbCxoLGYsZD10aGlzLl9yb290LHA9dGhpcy5feDAseT10aGlzLl95MCxnPXRoaXMuX3gxLG09dGhpcy5feTE7aWYoIWQpcmV0dXJuIHRoaXM7aWYoZC5sZW5ndGgpZm9yKDs7KXtpZigodT1hPj0ocz0ocCtnKS8yKSk/cD1zOmc9cywobD1vPj0oYz0oeSttKS8yKSk/eT1jOm09YyxlPWQsIShkPWRbaD1sPDwxfHVdKSlyZXR1cm4gdGhpcztpZighZC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGY9aCl9Zm9yKDtkLmRhdGEhPT10OylpZihyPWQsIShkPWQubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKGk9ZC5uZXh0KSYmZGVsZXRlIGQubmV4dCxyPyhpP3IubmV4dD1pOmRlbGV0ZSByLm5leHQsdGhpcyk6ZT8oaT9lW2hdPWk6ZGVsZXRlIGVbaF0sKGQ9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJmQ9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFkLmxlbmd0aCYmKG4/bltmXT1kOnRoaXMuX3Jvb3Q9ZCksdGhpcyk6KHRoaXMuX3Jvb3Q9aSx0aGlzKX0scXMucmVtb3ZlQWxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30scXMucm9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSxxcy5zaXplPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0scXMudmlzaXQ9ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksYSxvLHM9W10sYz10aGlzLl9yb290O2ZvcihjJiZzLnB1c2gobmV3IEZzKGMsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGM9ZS5ub2RlLHI9ZS54MCxpPWUueTAsYT1lLngxLG89ZS55MSkmJmMubGVuZ3RoKXt2YXIgdT0ocithKS8yLGw9KGkrbykvMjsobj1jWzNdKSYmcy5wdXNoKG5ldyBGcyhuLHUsbCxhLG8pKSwobj1jWzJdKSYmcy5wdXNoKG5ldyBGcyhuLHIsbCx1LG8pKSwobj1jWzFdKSYmcy5wdXNoKG5ldyBGcyhuLHUsaSxhLGwpKSwobj1jWzBdKSYmcy5wdXNoKG5ldyBGcyhuLHIsaSx1LGwpKX1yZXR1cm4gdGhpc30scXMudmlzaXRBZnRlcj1mdW5jdGlvbih0KXt2YXIgZSxuPVtdLHI9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgRnModGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciBpPWUubm9kZTtpZihpLmxlbmd0aCl7dmFyIGEsbz1lLngwLHM9ZS55MCxjPWUueDEsdT1lLnkxLGw9KG8rYykvMixoPShzK3UpLzI7KGE9aVswXSkmJm4ucHVzaChuZXcgRnMoYSxvLHMsbCxoKSksKGE9aVsxXSkmJm4ucHVzaChuZXcgRnMoYSxsLHMsYyxoKSksKGE9aVsyXSkmJm4ucHVzaChuZXcgRnMoYSxvLGgsbCx1KSksKGE9aVszXSkmJm4ucHVzaChuZXcgRnMoYSxsLGgsYyx1KSl9ci5wdXNoKGUpfWZvcig7ZT1yLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30scXMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LHFzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgS3M9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO2Z1bmN0aW9uIEpzKHQpe3ZhciBlLG49MSxyPS4wMDEsaT0xLU1hdGgucG93KHIsMS8zMDApLGE9MCxvPS42LHM9bmEoKSxjPVZuKGwpLHU9ZnQoInRpY2siLCJlbmQiKTtmdW5jdGlvbiBsKCl7aCgpLHUuY2FsbCgidGljayIsZSksbjxyJiYoYy5zdG9wKCksdS5jYWxsKCJlbmQiLGUpKX1mdW5jdGlvbiBoKHIpe3ZhciBjLHUsbD10Lmxlbmd0aDt2b2lkIDA9PT1yJiYocj0xKTtmb3IodmFyIGg9MDtoPHI7KytoKWZvcihuKz0oYS1uKSppLHMuZWFjaCgoZnVuY3Rpb24odCl7dChuKX0pKSxjPTA7YzxsOysrYyludWxsPT0odT10W2NdKS5meD91LngrPXUudngqPW86KHUueD11LmZ4LHUudng9MCksbnVsbD09dS5meT91LnkrPXUudnkqPW86KHUueT11LmZ5LHUudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gZigpe2Zvcih2YXIgZSxuPTAscj10Lmxlbmd0aDtuPHI7KytuKXtpZigoZT10W25dKS5pbmRleD1uLG51bGwhPWUuZngmJihlLng9ZS5meCksbnVsbCE9ZS5meSYmKGUueT1lLmZ5KSxpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgaT0xMCpNYXRoLnNxcnQobiksYT1uKktzO2UueD1pKk1hdGguY29zKGEpLGUueT1pKk1hdGguc2luKGEpfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZigpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVzdGFydChsKSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGMuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZigpLHMuZWFjaChkKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxlKTpyfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGUpOitpfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxlKTphfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTEtdCxlKToxLW99LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LGQobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxhLG8scyxjLHU9MCxsPXQubGVuZ3RoO2ZvcihudWxsPT1yP3I9MS8wOnIqPXIsdT0wO3U8bDsrK3UpKG89KGk9ZS0ocz10W3VdKS54KSppKyhhPW4tcy55KSphKTxyJiYoYz1zLHI9byk7cmV0dXJuIGN9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8odS5vbih0LG4pLGUpOnUub24odCl9fX1mdW5jdGlvbiB0Yygpe3ZhciB0LGUsbixyLGk9THMoLTMwKSxhPTEsbz0xLzAscz0uODE7ZnVuY3Rpb24gYyhyKXt2YXIgaSxhPXQubGVuZ3RoLG89WXModCxacyxRcykudmlzaXRBZnRlcihsKTtmb3Iobj1yLGk9MDtpPGE7KytpKWU9dFtpXSxvLnZpc2l0KGgpfWZ1bmN0aW9uIHUoKXtpZih0KXt2YXIgZSxuLGE9dC5sZW5ndGg7Zm9yKHI9bmV3IEFycmF5KGEpLGU9MDtlPGE7KytlKW49dFtlXSxyW24uaW5kZXhdPStpKG4sZSx0KX19ZnVuY3Rpb24gbCh0KXt2YXIgZSxuLGksYSxvLHM9MCxjPTA7aWYodC5sZW5ndGgpe2ZvcihpPWE9bz0wO288NDsrK28pKGU9dFtvXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsYys9bixpKz1uKmUueCxhKz1uKmUueSk7dC54PWkvYyx0Lnk9YS9jfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9cltlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LGksYyx1KXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgbD10LngtZS54LGg9dC55LWUueSxmPXUtaSxkPWwqbCtoKmg7aWYoZipmL3M8ZClyZXR1cm4gZDxvJiYoMD09PWwmJihkKz0obD1JcygpKSpsKSwwPT09aCYmKGQrPShoPUlzKCkpKmgpLGQ8YSYmKGQ9TWF0aC5zcXJ0KGEqZCkpLGUudngrPWwqdC52YWx1ZSpuL2QsZS52eSs9aCp0LnZhbHVlKm4vZCksITA7aWYoISh0Lmxlbmd0aHx8ZD49bykpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PWwmJihkKz0obD1JcygpKSpsKSwwPT09aCYmKGQrPShoPUlzKCkpKmgpLGQ8YSYmKGQ9TWF0aC5zcXJ0KGEqZCkpKTtkb3t0LmRhdGEhPT1lJiYoZj1yW3QuZGF0YS5pbmRleF0qbi9kLGUudngrPWwqZixlLnZ5Kz1oKmYpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGMuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsdSgpfSxjLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6THMoK3QpLHUoKSxjKTppfSxjLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxjKTpNYXRoLnNxcnQoYSl9LGMuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGMpOk1hdGguc3FydChvKX0sYy50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsYyk6TWF0aC5zcXJ0KHMpfSxjfWZ1bmN0aW9uIGVjKHQsZSxuKXt2YXIgcixpLGEsbz1McyguMSk7ZnVuY3Rpb24gcyh0KXtmb3IodmFyIG89MCxzPXIubGVuZ3RoO288czsrK28pe3ZhciBjPXJbb10sdT1jLngtZXx8MWUtNixsPWMueS1ufHwxZS02LGg9TWF0aC5zcXJ0KHUqdStsKmwpLGY9KGFbb10taCkqaVtvXSp0L2g7Yy52eCs9dSpmLGMudnkrPWwqZn19ZnVuY3Rpb24gYygpe2lmKHIpe3ZhciBlLG49ci5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG4pLGE9bmV3IEFycmF5KG4pLGU9MDtlPG47KytlKWFbZV09K3QocltlXSxlLHIpLGlbZV09aXNOYU4oYVtlXSk/MDorbyhyW2VdLGUscil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McygrdCkpLG51bGw9PWUmJihlPTApLG51bGw9PW4mJihuPTApLHMuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXQsYygpfSxzLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6THMoK3QpLGMoKSxzKTpvfSxzLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkxzKCtlKSxjKCkscyk6dH0scy54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LHMpOmV9LHMueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxzKTpufSxzfWZ1bmN0aW9uIG5jKHQpe3ZhciBlLG4scixpPUxzKC4xKTtmdW5jdGlvbiBhKHQpe2Zvcih2YXIgaSxhPTAsbz1lLmxlbmd0aDthPG87KythKShpPWVbYV0pLnZ4Kz0oclthXS1pLngpKm5bYV0qdH1mdW5jdGlvbiBvKCl7aWYoZSl7dmFyIGEsbz1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobykscj1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2EpblthXT1pc05hTihyW2FdPSt0KGVbYV0sYSxlKSk/MDoraShlW2FdLGEsZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McyhudWxsPT10PzA6K3QpKSxhLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LG8oKX0sYS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxzKCt0KSxvKCksYSk6aX0sYS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLG8oKSxhKTp0fSxhfWZ1bmN0aW9uIHJjKHQpe3ZhciBlLG4scixpPUxzKC4xKTtmdW5jdGlvbiBhKHQpe2Zvcih2YXIgaSxhPTAsbz1lLmxlbmd0aDthPG87KythKShpPWVbYV0pLnZ5Kz0oclthXS1pLnkpKm5bYV0qdH1mdW5jdGlvbiBvKCl7aWYoZSl7dmFyIGEsbz1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobykscj1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2EpblthXT1pc05hTihyW2FdPSt0KGVbYV0sYSxlKSk/MDoraShlW2FdLGEsZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1McyhudWxsPT10PzA6K3QpKSxhLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LG8oKX0sYS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxzKCt0KSxvKCksYSk6aX0sYS55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6THMoK2UpLG8oKSxhKTp0fSxhfWZ1bmN0aW9uIGljKHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLHI9dC5zbGljZSgwLG4pO3JldHVybltyLmxlbmd0aD4xP3JbMF0rci5zbGljZSgyKTpyLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIGFjKHQpe3JldHVybih0PWljKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIG9jLHNjPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIGNjKHQpe2lmKCEoZT1zYy5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgdWMoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gdWModCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gbGModCxlKXt2YXIgbj1pYyh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciByPW5bMF0saT1uWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStyOnIubGVuZ3RoPmkrMT9yLnNsaWNlKDAsaSsxKSsiLiIrci5zbGljZShpKzEpOnIrbmV3IEFycmF5KGktci5sZW5ndGgrMikuam9pbigiMCIpfWNjLnByb3RvdHlwZT11Yy5wcm90b3R5cGUsdWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07Y29uc3QgaGM9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModD1NYXRoLnJvdW5kKHQpKT49MWUyMT90LnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6dC50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGxjKDEwMCp0LGUpfSxyOmxjLHM6ZnVuY3Rpb24odCxlKXt2YXIgbj1pYyh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciByPW5bMF0saT1uWzFdLGE9aS0ob2M9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLG89ci5sZW5ndGg7cmV0dXJuIGE9PT1vP3I6YT5vP3IrbmV3IEFycmF5KGEtbysxKS5qb2luKCIwIik6YT4wP3Iuc2xpY2UoMCxhKSsiLiIrci5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStpYyh0LE1hdGgubWF4KDAsZSthLTEpKVswXX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9fTtmdW5jdGlvbiBmYyh0KXtyZXR1cm4gdH12YXIgZGMscGMseWMsZ2M9QXJyYXkucHJvdG90eXBlLm1hcCxtYz1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gdmModCl7dmFyIGUsbixyPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP2ZjOihlPWdjLmNhbGwodC5ncm91cGluZyxOdW1iZXIpLG49dC50aG91c2FuZHMrIiIsZnVuY3Rpb24odCxyKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxvPTAscz1lWzBdLGM9MDtpPjAmJnM+MCYmKGMrcysxPnImJihzPU1hdGgubWF4KDEsci1jKSksYS5wdXNoKHQuc3Vic3RyaW5nKGktPXMsaStzKSksISgoYys9cysxKT5yKSk7KXM9ZVtvPShvKzEpJWUubGVuZ3RoXTtyZXR1cm4gYS5yZXZlcnNlKCkuam9pbihuKX0pLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLGE9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLG89dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIscz12b2lkIDA9PT10Lm51bWVyYWxzP2ZjOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fShnYy5jYWxsKHQubnVtZXJhbHMsU3RyaW5nKSksYz12b2lkIDA9PT10LnBlcmNlbnQ/IiUiOnQucGVyY2VudCsiIix1PXZvaWQgMD09PXQubWludXM/Ii0iOnQubWludXMrIiIsbD12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBoKHQpe3ZhciBlPSh0PWNjKHQpKS5maWxsLG49dC5hbGlnbixoPXQuc2lnbixmPXQuc3ltYm9sLGQ9dC56ZXJvLHA9dC53aWR0aCx5PXQuY29tbWEsZz10LnByZWNpc2lvbixtPXQudHJpbSx2PXQudHlwZTsibiI9PT12Pyh5PSEwLHY9ImciKTpoY1t2XXx8KHZvaWQgMD09PWcmJihnPTEyKSxtPSEwLHY9ImciKSwoZHx8IjAiPT09ZSYmIj0iPT09bikmJihkPSEwLGU9IjAiLG49Ij0iKTt2YXIgYj0iJCI9PT1mP2k6IiMiPT09ZiYmL1tib3hYXS8udGVzdCh2KT8iMCIrdi50b0xvd2VyQ2FzZSgpOiIiLF89IiQiPT09Zj9hOi9bJXBdLy50ZXN0KHYpP2M6IiIseD1oY1t2XSx3PS9bZGVmZ3BycyVdLy50ZXN0KHYpO2Z1bmN0aW9uIGsodCl7dmFyIGksYSxjLGY9YixrPV87aWYoImMiPT09dilrPXgodCkrayx0PSIiO2Vsc2V7dmFyIFQ9KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/bDp4KE1hdGguYWJzKHQpLGcpLG0mJih0PWZ1bmN0aW9uKHQpe3Q6Zm9yKHZhciBlLG49dC5sZW5ndGgscj0xLGk9LTE7cjxuOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjppPWU9cjticmVhaztjYXNlIjAiOjA9PT1pJiYoaT1yKSxlPXI7YnJlYWs7ZGVmYXVsdDppZighK3Rbcl0pYnJlYWsgdDtpPjAmJihpPTApfXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UoZSsxKTp0fSh0KSksVCYmMD09K3QmJiIrIiE9PWgmJihUPSExKSxmPShUPyIoIj09PWg/aDp1OiItIj09PWh8fCIoIj09PWg/IiI6aCkrZixrPSgicyI9PT12P21jWzgrb2MvM106IiIpK2srKFQmJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLGE9dC5sZW5ndGg7KytpPGE7KWlmKDQ4PihjPXQuY2hhckNvZGVBdChpKSl8fGM+NTcpe2s9KDQ2PT09Yz9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStrLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX15JiYhZCYmKHQ9cih0LDEvMCkpO3ZhciBFPWYubGVuZ3RoK3QubGVuZ3RoK2subGVuZ3RoLEM9RTxwP25ldyBBcnJheShwLUUrMSkuam9pbihlKToiIjtzd2l0Y2goeSYmZCYmKHQ9cihDK3QsQy5sZW5ndGg/cC1rLmxlbmd0aDoxLzApLEM9IiIpLG4pe2Nhc2UiPCI6dD1mK3QraytDO2JyZWFrO2Nhc2UiPSI6dD1mK0MrdCtrO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsRT1DLmxlbmd0aD4+MSkrZit0K2srQy5zbGljZShFKTticmVhaztkZWZhdWx0OnQ9QytmK3Qra31yZXR1cm4gcyh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh2KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxrLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LGt9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbih0LGUpe3ZhciBuPWgoKCh0PWNjKHQpKS50eXBlPSJmIix0KSkscj0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhYyhlKS8zKSkpLGk9TWF0aC5wb3coMTAsLXIpLGE9bWNbOCtyLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihpKnQpK2F9fX19ZnVuY3Rpb24gYmModCl7cmV0dXJuIGRjPXZjKHQpLHBjPWRjLmZvcm1hdCx5Yz1kYy5mb3JtYXRQcmVmaXgsZGN9ZnVuY3Rpb24gX2ModCl7cmV0dXJuIE1hdGgubWF4KDAsLWFjKE1hdGguYWJzKHQpKSl9ZnVuY3Rpb24geGModCxlKXtyZXR1cm4gTWF0aC5tYXgoMCwzKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhYyhlKS8zKSkpLWFjKE1hdGguYWJzKHQpKSl9ZnVuY3Rpb24gd2ModCxlKXtyZXR1cm4gdD1NYXRoLmFicyh0KSxlPU1hdGguYWJzKGUpLXQsTWF0aC5tYXgoMCxhYyhlKS1hYyh0KSkrMX1mdW5jdGlvbiBrYygpe3JldHVybiBuZXcgVGN9ZnVuY3Rpb24gVGMoKXt0aGlzLnJlc2V0KCl9YmMoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pLFRjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VGMscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtDYyhFYyx0LHRoaXMudCksQ2ModGhpcyxFYy5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9RWMudDp0aGlzLnM9RWMudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgRWM9bmV3IFRjO2Z1bmN0aW9uIENjKHQsZSxuKXt2YXIgcj10LnM9ZStuLGk9ci1lLGE9ci1pO3QudD1lLWErKG4taSl9dmFyIFNjPTFlLTYsQWM9MWUtMTIsTWM9TWF0aC5QSSxOYz1NYy8yLERjPU1jLzQsT2M9MipNYyxCYz0xODAvTWMsTGM9TWMvMTgwLEljPU1hdGguYWJzLFJjPU1hdGguYXRhbixGYz1NYXRoLmF0YW4yLFBjPU1hdGguY29zLGpjPU1hdGguY2VpbCxZYz1NYXRoLmV4cCx6Yz0oTWF0aC5mbG9vcixNYXRoLmxvZyksVWM9TWF0aC5wb3cscWM9TWF0aC5zaW4sSGM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LCRjPU1hdGguc3FydCxXYz1NYXRoLnRhbjtmdW5jdGlvbiBWYyh0KXtyZXR1cm4gdD4xPzA6dDwtMT9NYzpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gR2ModCl7cmV0dXJuIHQ+MT9OYzp0PC0xPy1OYzpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gWGModCl7cmV0dXJuKHQ9cWModC8yKSkqdH1mdW5jdGlvbiBaYygpe31mdW5jdGlvbiBRYyh0LGUpe3QmJkpjLmhhc093blByb3BlcnR5KHQudHlwZSkmJkpjW3QudHlwZV0odCxlKX12YXIgS2M9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtRYyh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspUWMobltyXS5nZW9tZXRyeSxlKX19LEpjPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe3Q9dC5jb29yZGluYXRlcyxlLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspdD1uW3JdLGUucG9pbnQodFswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7dHUodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KXR1KG5bcl0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe2V1KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspZXUobltyXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KVFjKG5bcl0sZSl9fTtmdW5jdGlvbiB0dSh0LGUsbil7dmFyIHIsaT0tMSxhPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytpPGE7KXI9dFtpXSxlLnBvaW50KHJbMF0sclsxXSxyWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBldSh0LGUpe3ZhciBuPS0xLHI9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPHI7KXR1KHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBudSh0LGUpe3QmJktjLmhhc093blByb3BlcnR5KHQudHlwZSk/S2NbdC50eXBlXSh0LGUpOlFjKHQsZSl9dmFyIHJ1LGl1LGF1LG91LHN1LGN1PWtjKCksdXU9a2MoKSxsdT17cG9pbnQ6WmMsbGluZVN0YXJ0OlpjLGxpbmVFbmQ6WmMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Y3UucmVzZXQoKSxsdS5saW5lU3RhcnQ9aHUsbHUubGluZUVuZD1mdX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStjdTt1dS5hZGQodDwwP09jK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9WmN9LHNwaGVyZTpmdW5jdGlvbigpe3V1LmFkZChPYyl9fTtmdW5jdGlvbiBodSgpe2x1LnBvaW50PWR1fWZ1bmN0aW9uIGZ1KCl7cHUocnUsaXUpfWZ1bmN0aW9uIGR1KHQsZSl7bHUucG9pbnQ9cHUscnU9dCxpdT1lLGF1PXQqPUxjLG91PVBjKGU9KGUqPUxjKS8yK0RjKSxzdT1xYyhlKX1mdW5jdGlvbiBwdSh0LGUpe3ZhciBuPSh0Kj1MYyktYXUscj1uPj0wPzE6LTEsaT1yKm4sYT1QYyhlPShlKj1MYykvMitEYyksbz1xYyhlKSxzPXN1Km8sYz1vdSphK3MqUGMoaSksdT1zKnIqcWMoaSk7Y3UuYWRkKEZjKHUsYykpLGF1PXQsb3U9YSxzdT1vfWZ1bmN0aW9uIHl1KHQpe3JldHVybiB1dS5yZXNldCgpLG51KHQsbHUpLDIqdXV9ZnVuY3Rpb24gZ3UodCl7cmV0dXJuW0ZjKHRbMV0sdFswXSksR2ModFsyXSldfWZ1bmN0aW9uIG11KHQpe3ZhciBlPXRbMF0sbj10WzFdLHI9UGMobik7cmV0dXJuW3IqUGMoZSkscipxYyhlKSxxYyhuKV19ZnVuY3Rpb24gdnUodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gYnUodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIF91KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24geHUodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIHd1KHQpe3ZhciBlPSRjKHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIga3UsVHUsRXUsQ3UsU3UsQXUsTXUsTnUsRHUsT3UsQnUsTHUsSXUsUnUsRnUsUHUsanUsWXUsenUsVXUscXUsSHUsJHUsV3UsVnUsR3UsWHU9a2MoKSxadT17cG9pbnQ6UXUsbGluZVN0YXJ0Okp1LGxpbmVFbmQ6dGwscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WnUucG9pbnQ9ZWwsWnUubGluZVN0YXJ0PW5sLFp1LmxpbmVFbmQ9cmwsWHUucmVzZXQoKSxsdS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2x1LnBvbHlnb25FbmQoKSxadS5wb2ludD1RdSxadS5saW5lU3RhcnQ9SnUsWnUubGluZUVuZD10bCxjdTwwPyhrdT0tKEV1PTE4MCksVHU9LShDdT05MCkpOlh1PlNjP0N1PTkwOlh1PC0xZS02JiYoVHU9LTkwKSxPdVswXT1rdSxPdVsxXT1FdX0sc3BoZXJlOmZ1bmN0aW9uKCl7a3U9LShFdT0xODApLFR1PS0oQ3U9OTApfX07ZnVuY3Rpb24gUXUodCxlKXtEdS5wdXNoKE91PVtrdT10LEV1PXRdKSxlPFR1JiYoVHU9ZSksZT5DdSYmKEN1PWUpfWZ1bmN0aW9uIEt1KHQsZSl7dmFyIG49bXUoW3QqTGMsZSpMY10pO2lmKE51KXt2YXIgcj1idShOdSxuKSxpPWJ1KFtyWzFdLC1yWzBdLDBdLHIpO3d1KGkpLGk9Z3UoaSk7dmFyIGEsbz10LVN1LHM9bz4wPzE6LTEsYz1pWzBdKkJjKnMsdT1JYyhvKT4xODA7dV4ocypTdTxjJiZjPHMqdCk/KGE9aVsxXSpCYyk+Q3UmJihDdT1hKTp1XihzKlN1PChjPShjKzM2MCklMzYwLTE4MCkmJmM8cyp0KT8oYT0taVsxXSpCYyk8VHUmJihUdT1hKTooZTxUdSYmKFR1PWUpLGU+Q3UmJihDdT1lKSksdT90PFN1P2lsKGt1LHQpPmlsKGt1LEV1KSYmKEV1PXQpOmlsKHQsRXUpPmlsKGt1LEV1KSYmKGt1PXQpOkV1Pj1rdT8odDxrdSYmKGt1PXQpLHQ+RXUmJihFdT10KSk6dD5TdT9pbChrdSx0KT5pbChrdSxFdSkmJihFdT10KTppbCh0LEV1KT5pbChrdSxFdSkmJihrdT10KX1lbHNlIER1LnB1c2goT3U9W2t1PXQsRXU9dF0pO2U8VHUmJihUdT1lKSxlPkN1JiYoQ3U9ZSksTnU9bixTdT10fWZ1bmN0aW9uIEp1KCl7WnUucG9pbnQ9S3V9ZnVuY3Rpb24gdGwoKXtPdVswXT1rdSxPdVsxXT1FdSxadS5wb2ludD1RdSxOdT1udWxsfWZ1bmN0aW9uIGVsKHQsZSl7aWYoTnUpe3ZhciBuPXQtU3U7WHUuYWRkKEljKG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgQXU9dCxNdT1lO2x1LnBvaW50KHQsZSksS3UodCxlKX1mdW5jdGlvbiBubCgpe2x1LmxpbmVTdGFydCgpfWZ1bmN0aW9uIHJsKCl7ZWwoQXUsTXUpLGx1LmxpbmVFbmQoKSxJYyhYdSk+U2MmJihrdT0tKEV1PTE4MCkpLE91WzBdPWt1LE91WzFdPUV1LE51PW51bGx9ZnVuY3Rpb24gaWwodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIGFsKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBvbCh0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9ZnVuY3Rpb24gc2wodCl7dmFyIGUsbixyLGksYSxvLHM7aWYoQ3U9RXU9LShrdT1UdT0xLzApLER1PVtdLG51KHQsWnUpLG49RHUubGVuZ3RoKXtmb3IoRHUuc29ydChhbCksZT0xLGE9W3I9RHVbMF1dO2U8bjsrK2Upb2wociwoaT1EdVtlXSlbMF0pfHxvbChyLGlbMV0pPyhpbChyWzBdLGlbMV0pPmlsKHJbMF0sclsxXSkmJihyWzFdPWlbMV0pLGlsKGlbMF0sclsxXSk+aWwoclswXSxyWzFdKSYmKHJbMF09aVswXSkpOmEucHVzaChyPWkpO2ZvcihvPS0xLzAsZT0wLHI9YVtuPWEubGVuZ3RoLTFdO2U8PW47cj1pLCsrZSlpPWFbZV0sKHM9aWwoclsxXSxpWzBdKSk+byYmKG89cyxrdT1pWzBdLEV1PXJbMV0pfXJldHVybiBEdT1PdT1udWxsLGt1PT09MS8wfHxUdT09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1trdSxUdV0sW0V1LEN1XV19dmFyIGNsPXtzcGhlcmU6WmMscG9pbnQ6dWwsbGluZVN0YXJ0OmhsLGxpbmVFbmQ6cGwscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Y2wubGluZVN0YXJ0PXlsLGNsLmxpbmVFbmQ9Z2x9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtjbC5saW5lU3RhcnQ9aGwsY2wubGluZUVuZD1wbH19O2Z1bmN0aW9uIHVsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpO2xsKG4qUGModCksbipxYyh0KSxxYyhlKSl9ZnVuY3Rpb24gbGwodCxlLG4peysrQnUsSXUrPSh0LUl1KS9CdSxSdSs9KGUtUnUpL0J1LEZ1Kz0obi1GdSkvQnV9ZnVuY3Rpb24gaGwoKXtjbC5wb2ludD1mbH1mdW5jdGlvbiBmbCh0LGUpe3QqPUxjO3ZhciBuPVBjKGUqPUxjKTtXdT1uKlBjKHQpLFZ1PW4qcWModCksR3U9cWMoZSksY2wucG9pbnQ9ZGwsbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIGRsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpLHI9bipQYyh0KSxpPW4qcWModCksYT1xYyhlKSxvPUZjKCRjKChvPVZ1KmEtR3UqaSkqbysobz1HdSpyLVd1KmEpKm8rKG89V3UqaS1WdSpyKSpvKSxXdSpyK1Z1KmkrR3UqYSk7THUrPW8sUHUrPW8qKFd1KyhXdT1yKSksanUrPW8qKFZ1KyhWdT1pKSksWXUrPW8qKEd1KyhHdT1hKSksbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIHBsKCl7Y2wucG9pbnQ9dWx9ZnVuY3Rpb24geWwoKXtjbC5wb2ludD1tbH1mdW5jdGlvbiBnbCgpe3ZsKEh1LCR1KSxjbC5wb2ludD11bH1mdW5jdGlvbiBtbCh0LGUpe0h1PXQsJHU9ZSx0Kj1MYyxlKj1MYyxjbC5wb2ludD12bDt2YXIgbj1QYyhlKTtXdT1uKlBjKHQpLFZ1PW4qcWModCksR3U9cWMoZSksbGwoV3UsVnUsR3UpfWZ1bmN0aW9uIHZsKHQsZSl7dCo9TGM7dmFyIG49UGMoZSo9TGMpLHI9bipQYyh0KSxpPW4qcWModCksYT1xYyhlKSxvPVZ1KmEtR3UqaSxzPUd1KnItV3UqYSxjPVd1KmktVnUqcix1PSRjKG8qbytzKnMrYypjKSxsPUdjKHUpLGg9dSYmLWwvdTt6dSs9aCpvLFV1Kz1oKnMscXUrPWgqYyxMdSs9bCxQdSs9bCooV3UrKFd1PXIpKSxqdSs9bCooVnUrKFZ1PWkpKSxZdSs9bCooR3UrKEd1PWEpKSxsbChXdSxWdSxHdSl9ZnVuY3Rpb24gYmwodCl7QnU9THU9SXU9UnU9RnU9UHU9anU9WXU9enU9VXU9cXU9MCxudSh0LGNsKTt2YXIgZT16dSxuPVV1LHI9cXUsaT1lKmUrbipuK3IqcjtyZXR1cm4gaTxBYyYmKGU9UHUsbj1qdSxyPVl1LEx1PFNjJiYoZT1JdSxuPVJ1LHI9RnUpLChpPWUqZStuKm4rcipyKTxBYyk/W05hTixOYU5dOltGYyhuLGUpKkJjLEdjKHIvJGMoaSkpKkJjXX1mdW5jdGlvbiBfbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24geGwodCxlKXtmdW5jdGlvbiBuKG4scil7cmV0dXJuIG49dChuLHIpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixyKXtyZXR1cm4obj1lLmludmVydChuLHIpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gd2wodCxlKXtyZXR1cm5bSWModCk+TWM/dCtNYXRoLnJvdW5kKC10L09jKSpPYzp0LGVdfWZ1bmN0aW9uIGtsKHQsZSxuKXtyZXR1cm4odCU9T2MpP2V8fG4/eGwoRWwodCksQ2woZSxuKSk6RWwodCk6ZXx8bj9DbChlLG4pOndsfWZ1bmN0aW9uIFRsKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVyblsoZSs9dCk+TWM/ZS1PYzplPC1NYz9lK09jOmUsbl19fWZ1bmN0aW9uIEVsKHQpe3ZhciBlPVRsKHQpO3JldHVybiBlLmludmVydD1UbCgtdCksZX1mdW5jdGlvbiBDbCh0LGUpe3ZhciBuPVBjKHQpLHI9cWModCksaT1QYyhlKSxhPXFjKGUpO2Z1bmN0aW9uIG8odCxlKXt2YXIgbz1QYyhlKSxzPVBjKHQpKm8sYz1xYyh0KSpvLHU9cWMoZSksbD11Km4rcypyO3JldHVybltGYyhjKmktbCphLHMqbi11KnIpLEdjKGwqaStjKmEpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbz1QYyhlKSxzPVBjKHQpKm8sYz1xYyh0KSpvLHU9cWMoZSksbD11KmktYyphO3JldHVybltGYyhjKmkrdSphLHMqbitsKnIpLEdjKGwqbi1zKnIpXX0sb31mdW5jdGlvbiBTbCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybihlPXQoZVswXSpMYyxlWzFdKkxjKSlbMF0qPUJjLGVbMV0qPUJjLGV9cmV0dXJuIHQ9a2wodFswXSpMYyx0WzFdKkxjLHQubGVuZ3RoPjI/dFsyXSpMYzowKSxlLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4oZT10LmludmVydChlWzBdKkxjLGVbMV0qTGMpKVswXSo9QmMsZVsxXSo9QmMsZX0sZX1mdW5jdGlvbiBBbCh0LGUsbixyLGksYSl7aWYobil7dmFyIG89UGMoZSkscz1xYyhlKSxjPXIqbjtudWxsPT1pPyhpPWUrcipPYyxhPWUtYy8yKTooaT1NbChvLGkpLGE9TWwobyxhKSwocj4wP2k8YTppPmEpJiYoaSs9cipPYykpO2Zvcih2YXIgdSxsPWk7cj4wP2w+YTpsPGE7bC09Yyl1PWd1KFtvLC1zKlBjKGwpLC1zKnFjKGwpXSksdC5wb2ludCh1WzBdLHVbMV0pfX1mdW5jdGlvbiBNbCh0LGUpeyhlPW11KGUpKVswXS09dCx3dShlKTt2YXIgbj1WYygtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1uOm4pK09jLVNjKSVPY31mdW5jdGlvbiBObCgpe3ZhciB0LGUsbj1fbChbMCwwXSkscj1fbCg5MCksaT1fbCg2KSxhPXtwb2ludDpmdW5jdGlvbihuLHIpe3QucHVzaChuPWUobixyKSksblswXSo9QmMsblsxXSo9QmN9fTtmdW5jdGlvbiBvKCl7dmFyIG89bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscz1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpMYyxjPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKkxjO3JldHVybiB0PVtdLGU9a2woLW9bMF0qTGMsLW9bMV0qTGMsMCkuaW52ZXJ0LEFsKGEscyxjLDEpLG89e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1lPW51bGwsb31yZXR1cm4gby5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpfbChbK3RbMF0sK3RbMV1dKSxvKTpufSxvLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ol9sKCt0KSxvKTpyfSxvLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ol9sKCt0KSxvKTppfSxvfWZ1bmN0aW9uIERsKCl7dmFyIHQsZT1bXTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24oZSxuLHIpe3QucHVzaChbZSxuLHJdKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ZS5wdXNoKHQ9W10pfSxsaW5lRW5kOlpjLHJlam9pbjpmdW5jdGlvbigpe2UubGVuZ3RoPjEmJmUucHVzaChlLnBvcCgpLmNvbmNhdChlLnNoaWZ0KCkpKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIG49ZTtyZXR1cm4gZT1bXSx0PW51bGwsbn19fWZ1bmN0aW9uIE9sKHQsZSl7cmV0dXJuIEljKHRbMF0tZVswXSk8U2MmJkljKHRbMV0tZVsxXSk8U2N9ZnVuY3Rpb24gQmwodCxlLG4scil7dGhpcy54PXQsdGhpcy56PWUsdGhpcy5vPW4sdGhpcy5lPXIsdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBMbCh0LGUsbixyLGkpe3ZhciBhLG8scz1bXSxjPVtdO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoISgoZT10Lmxlbmd0aC0xKTw9MCkpe3ZhciBlLG4scj10WzBdLG89dFtlXTtpZihPbChyLG8pKXtpZighclsyXSYmIW9bMl0pe2ZvcihpLmxpbmVTdGFydCgpLGE9MDthPGU7KythKWkucG9pbnQoKHI9dFthXSlbMF0sclsxXSk7cmV0dXJuIHZvaWQgaS5saW5lRW5kKCl9b1swXSs9MmUtNn1zLnB1c2gobj1uZXcgQmwocix0LG51bGwsITApKSxjLnB1c2gobi5vPW5ldyBCbChyLG51bGwsbiwhMSkpLHMucHVzaChuPW5ldyBCbChvLHQsbnVsbCwhMSkpLGMucHVzaChuLm89bmV3IEJsKG8sbnVsbCxuLCEwKSl9fSkpLHMubGVuZ3RoKXtmb3IoYy5zb3J0KGUpLElsKHMpLElsKGMpLGE9MCxvPWMubGVuZ3RoO2E8bzsrK2EpY1thXS5lPW49IW47Zm9yKHZhciB1LGwsaD1zWzBdOzspe2Zvcih2YXIgZj1oLGQ9ITA7Zi52OylpZigoZj1mLm4pPT09aClyZXR1cm47dT1mLnosaS5saW5lU3RhcnQoKTtkb3tpZihmLnY9Zi5vLnY9ITAsZi5lKXtpZihkKWZvcihhPTAsbz11Lmxlbmd0aDthPG87KythKWkucG9pbnQoKGw9dVthXSlbMF0sbFsxXSk7ZWxzZSByKGYueCxmLm4ueCwxLGkpO2Y9Zi5ufWVsc2V7aWYoZClmb3IodT1mLnAueixhPXUubGVuZ3RoLTE7YT49MDstLWEpaS5wb2ludCgobD11W2FdKVswXSxsWzFdKTtlbHNlIHIoZi54LGYucC54LC0xLGkpO2Y9Zi5wfXU9KGY9Zi5vKS56LGQ9IWR9d2hpbGUoIWYudik7aS5saW5lRW5kKCl9fX1mdW5jdGlvbiBJbCh0KXtpZihlPXQubGVuZ3RoKXtmb3IodmFyIGUsbixyPTAsaT10WzBdOysrcjxlOylpLm49bj10W3JdLG4ucD1pLGk9bjtpLm49bj10WzBdLG4ucD1pfX13bC5pbnZlcnQ9d2w7dmFyIFJsPWtjKCk7ZnVuY3Rpb24gRmwodCl7cmV0dXJuIEljKHRbMF0pPD1NYz90WzBdOkhjKHRbMF0pKigoSWModFswXSkrTWMpJU9jLU1jKX1mdW5jdGlvbiBQbCh0LGUpe3ZhciBuPUZsKGUpLHI9ZVsxXSxpPXFjKHIpLGE9W3FjKG4pLC1QYyhuKSwwXSxvPTAscz0wO1JsLnJlc2V0KCksMT09PWk/cj1OYytTYzotMT09PWkmJihyPS1OYy1TYyk7Zm9yKHZhciBjPTAsdT10Lmxlbmd0aDtjPHU7KytjKWlmKGg9KGw9dFtjXSkubGVuZ3RoKWZvcih2YXIgbCxoLGY9bFtoLTFdLGQ9RmwoZikscD1mWzFdLzIrRGMseT1xYyhwKSxnPVBjKHApLG09MDttPGg7KyttLGQ9Yix5PXgsZz13LGY9dil7dmFyIHY9bFttXSxiPUZsKHYpLF89dlsxXS8yK0RjLHg9cWMoXyksdz1QYyhfKSxrPWItZCxUPWs+PTA/MTotMSxFPVQqayxDPUU+TWMsUz15Kng7aWYoUmwuYWRkKEZjKFMqVCpxYyhFKSxnKncrUypQYyhFKSkpLG8rPUM/aytUKk9jOmssQ15kPj1uXmI+PW4pe3ZhciBBPWJ1KG11KGYpLG11KHYpKTt3dShBKTt2YXIgTT1idShhLEEpO3d1KE0pO3ZhciBOPShDXms+PTA/LTE6MSkqR2MoTVsyXSk7KHI+Tnx8cj09PU4mJihBWzBdfHxBWzFdKSkmJihzKz1DXms+PTA/MTotMSl9fXJldHVybihvPC0xZS02fHxvPFNjJiZSbDwtMWUtNileMSZzfWZ1bmN0aW9uIGpsKHQsZSxuLHIpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgYSxvLHMsYz1lKGkpLHU9RGwoKSxsPWUodSksaD0hMSxmPXtwb2ludDpkLGxpbmVTdGFydDp5LGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmLnBvaW50PW0sZi5saW5lU3RhcnQ9dixmLmxpbmVFbmQ9YixvPVtdLGE9W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmLnBvaW50PWQsZi5saW5lU3RhcnQ9eSxmLmxpbmVFbmQ9ZyxvPVAobyk7dmFyIHQ9UGwoYSxyKTtvLmxlbmd0aD8oaHx8KGkucG9seWdvblN0YXJ0KCksaD0hMCksTGwobyx6bCx0LG4saSkpOnQmJihofHwoaS5wb2x5Z29uU3RhcnQoKSxoPSEwKSxpLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLGgmJihpLnBvbHlnb25FbmQoKSxoPSExKSxvPWE9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBkKGUsbil7dChlLG4pJiZpLnBvaW50KGUsbil9ZnVuY3Rpb24gcCh0LGUpe2MucG9pbnQodCxlKX1mdW5jdGlvbiB5KCl7Zi5wb2ludD1wLGMubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2YucG9pbnQ9ZCxjLmxpbmVFbmQoKX1mdW5jdGlvbiBtKHQsZSl7cy5wdXNoKFt0LGVdKSxsLnBvaW50KHQsZSl9ZnVuY3Rpb24gdigpe2wubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiBiKCl7bShzWzBdWzBdLHNbMF1bMV0pLGwubGluZUVuZCgpO3ZhciB0LGUsbixyLGM9bC5jbGVhbigpLGY9dS5yZXN1bHQoKSxkPWYubGVuZ3RoO2lmKHMucG9wKCksYS5wdXNoKHMpLHM9bnVsbCxkKWlmKDEmYyl7aWYoKGU9KG49ZlswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoaS5wb2x5Z29uU3RhcnQoKSxoPSEwKSxpLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KWkucG9pbnQoKHI9blt0XSlbMF0sclsxXSk7aS5saW5lRW5kKCl9fWVsc2UgZD4xJiYyJmMmJmYucHVzaChmLnBvcCgpLmNvbmNhdChmLnNoaWZ0KCkpKSxvLnB1c2goZi5maWx0ZXIoWWwpKX1yZXR1cm4gZn19ZnVuY3Rpb24gWWwodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gemwodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tTmMtU2M6TmMtdFsxXSktKChlPWUueClbMF08MD9lWzFdLU5jLVNjOk5jLWVbMV0pfWNvbnN0IFVsPWpsKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uKHQpe3ZhciBlLG49TmFOLHI9TmFOLGk9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24oYSxvKXt2YXIgcz1hPjA/TWM6LU1jLGM9SWMoYS1uKTtJYyhjLU1jKTxTYz8odC5wb2ludChuLHI9KHIrbykvMj4wP05jOi1OYyksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLHIpLHQucG9pbnQoYSxyKSxlPTApOmkhPT1zJiZjPj1NYyYmKEljKG4taSk8U2MmJihuLT1pKlNjKSxJYyhhLXMpPFNjJiYoYS09cypTYykscj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLG89cWModC1uKTtyZXR1cm4gSWMobyk+U2M/UmMoKHFjKGUpKihhPVBjKHIpKSpxYyhuKS1xYyhyKSooaT1QYyhlKSkqcWModCkpLyhpKmEqbykpOihlK3IpLzJ9KG4scixhLG8pLHQucG9pbnQoaSxyKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxyKSxlPTApLHQucG9pbnQobj1hLHI9byksaT1zfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksbj1yPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1lfX19KSwoZnVuY3Rpb24odCxlLG4scil7dmFyIGk7aWYobnVsbD09dClpPW4qTmMsci5wb2ludCgtTWMsaSksci5wb2ludCgwLGkpLHIucG9pbnQoTWMsaSksci5wb2ludChNYywwKSxyLnBvaW50KE1jLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLU1jLC1pKSxyLnBvaW50KC1NYywwKSxyLnBvaW50KC1NYyxpKTtlbHNlIGlmKEljKHRbMF0tZVswXSk+U2Mpe3ZhciBhPXRbMF08ZVswXT9NYzotTWM7aT1uKmEvMixyLnBvaW50KC1hLGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KGEsaSl9ZWxzZSByLnBvaW50KGVbMF0sZVsxXSl9KSxbLU1jLC1OY10pO2Z1bmN0aW9uIHFsKHQpe3ZhciBlPVBjKHQpLG49NipMYyxyPWU+MCxpPUljKGUpPlNjO2Z1bmN0aW9uIGEodCxuKXtyZXR1cm4gUGModCkqUGMobik+ZX1mdW5jdGlvbiBvKHQsbixyKXt2YXIgaT1bMSwwLDBdLGE9YnUobXUodCksbXUobikpLG89dnUoYSxhKSxzPWFbMF0sYz1vLXMqcztpZighYylyZXR1cm4hciYmdDt2YXIgdT1lKm8vYyxsPS1lKnMvYyxoPWJ1KGksYSksZj14dShpLHUpO191KGYseHUoYSxsKSk7dmFyIGQ9aCxwPXZ1KGYsZCkseT12dShkLGQpLGc9cCpwLXkqKHZ1KGYsZiktMSk7aWYoIShnPDApKXt2YXIgbT0kYyhnKSx2PXh1KGQsKC1wLW0pL3kpO2lmKF91KHYsZiksdj1ndSh2KSwhcilyZXR1cm4gdjt2YXIgYixfPXRbMF0seD1uWzBdLHc9dFsxXSxrPW5bMV07eDxfJiYoYj1fLF89eCx4PWIpO3ZhciBUPXgtXyxFPUljKFQtTWMpPFNjO2lmKCFFJiZrPHcmJihiPXcsdz1rLGs9YiksRXx8VDxTYz9FP3craz4wXnZbMV08KEljKHZbMF0tXyk8U2M/dzprKTp3PD12WzFdJiZ2WzFdPD1rOlQ+TWNeKF88PXZbMF0mJnZbMF08PXgpKXt2YXIgQz14dShkLCgtcCttKS95KTtyZXR1cm4gX3UoQyxmKSxbdixndShDKV19fX1mdW5jdGlvbiBzKGUsbil7dmFyIGk9cj90Ok1jLXQsYT0wO3JldHVybiBlPC1pP2F8PTE6ZT5pJiYoYXw9MiksbjwtaT9hfD00Om4+aSYmKGF8PTgpLGF9cmV0dXJuIGpsKGEsKGZ1bmN0aW9uKHQpe3ZhciBlLG4sYyx1LGw7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3U9Yz0hMSxsPTF9LHBvaW50OmZ1bmN0aW9uKGgsZil7dmFyIGQscD1baCxmXSx5PWEoaCxmKSxnPXI/eT8wOnMoaCxmKTp5P3MoaCsoaDwwP01jOi1NYyksZik6MDtpZighZSYmKHU9Yz15KSYmdC5saW5lU3RhcnQoKSx5IT09YyYmKCEoZD1vKGUscCkpfHxPbChlLGQpfHxPbChwLGQpKSYmKHBbMl09MSkseSE9PWMpbD0wLHk/KHQubGluZVN0YXJ0KCksZD1vKHAsZSksdC5wb2ludChkWzBdLGRbMV0pKTooZD1vKGUscCksdC5wb2ludChkWzBdLGRbMV0sMiksdC5saW5lRW5kKCkpLGU9ZDtlbHNlIGlmKGkmJmUmJnJeeSl7dmFyIG07ZyZufHwhKG09byhwLGUsITApKXx8KGw9MCxyPyh0LmxpbmVTdGFydCgpLHQucG9pbnQobVswXVswXSxtWzBdWzFdKSx0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KG1bMF1bMF0sbVswXVsxXSwzKSkpfSF5fHxlJiZPbChlLHApfHx0LnBvaW50KHBbMF0scFsxXSksZT1wLGM9eSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGx8KHUmJmMpPDwxfX19KSwoZnVuY3Rpb24oZSxyLGksYSl7QWwoYSx0LG4saSxlLHIpfSkscj9bMCwtdF06Wy1NYyx0LU1jXSl9dmFyIEhsPTFlOSwkbD0tSGw7ZnVuY3Rpb24gV2wodCxlLG4scil7ZnVuY3Rpb24gaShpLGEpe3JldHVybiB0PD1pJiZpPD1uJiZlPD1hJiZhPD1yfWZ1bmN0aW9uIGEoaSxhLHMsdSl7dmFyIGw9MCxoPTA7aWYobnVsbD09aXx8KGw9byhpLHMpKSE9PShoPW8oYSxzKSl8fGMoaSxhKTwwXnM+MClkb3t1LnBvaW50KDA9PT1sfHwzPT09bD90Om4sbD4xP3I6ZSl9d2hpbGUoKGw9KGwrcys0KSU0KSE9PWgpO2Vsc2UgdS5wb2ludChhWzBdLGFbMV0pfWZ1bmN0aW9uIG8ocixpKXtyZXR1cm4gSWMoclswXS10KTxTYz9pPjA/MDozOkljKHJbMF0tbik8U2M/aT4wPzI6MTpJYyhyWzFdLWUpPFNjP2k+MD8xOjA6aT4wPzM6Mn1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGModC54LGUueCl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPW8odCwxKSxyPW8oZSwxKTtyZXR1cm4gbiE9PXI/bi1yOjA9PT1uP2VbMV0tdFsxXToxPT09bj90WzBdLWVbMF06Mj09PW4/dFsxXS1lWzFdOmVbMF0tdFswXX1yZXR1cm4gZnVuY3Rpb24obyl7dmFyIGMsdSxsLGgsZixkLHAseSxnLG0sdixiPW8sXz1EbCgpLHg9e3BvaW50OncsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7eC5wb2ludD1rLHUmJnUucHVzaChsPVtdKSxtPSEwLGc9ITEscD15PU5hTn0sbGluZUVuZDpmdW5jdGlvbigpe2MmJihrKGgsZiksZCYmZyYmXy5yZWpvaW4oKSxjLnB1c2goXy5yZXN1bHQoKSkpLHgucG9pbnQ9dyxnJiZiLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yj1fLGM9W10sdT1bXSx2PSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxuPTAsaT11Lmxlbmd0aDtuPGk7KytuKWZvcih2YXIgYSxvLHM9dVtuXSxjPTEsbD1zLmxlbmd0aCxoPXNbMF0sZj1oWzBdLGQ9aFsxXTtjPGw7KytjKWE9ZixvPWQsZj0oaD1zW2NdKVswXSxkPWhbMV0sbzw9cj9kPnImJihmLWEpKihyLW8pPihkLW8pKih0LWEpJiYrK2U6ZDw9ciYmKGYtYSkqKHItbyk8KGQtbykqKHQtYSkmJi0tZTtyZXR1cm4gZX0oKSxuPXYmJmUsaT0oYz1QKGMpKS5sZW5ndGg7KG58fGkpJiYoby5wb2x5Z29uU3RhcnQoKSxuJiYoby5saW5lU3RhcnQoKSxhKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpKSxpJiZMbChjLHMsZSxhLG8pLG8ucG9seWdvbkVuZCgpKSxiPW8sYz11PWw9bnVsbH19O2Z1bmN0aW9uIHcodCxlKXtpKHQsZSkmJmIucG9pbnQodCxlKX1mdW5jdGlvbiBrKGEsbyl7dmFyIHM9aShhLG8pO2lmKHUmJmwucHVzaChbYSxvXSksbSloPWEsZj1vLGQ9cyxtPSExLHMmJihiLmxpbmVTdGFydCgpLGIucG9pbnQoYSxvKSk7ZWxzZSBpZihzJiZnKWIucG9pbnQoYSxvKTtlbHNle3ZhciBjPVtwPU1hdGgubWF4KCRsLE1hdGgubWluKEhsLHApKSx5PU1hdGgubWF4KCRsLE1hdGgubWluKEhsLHkpKV0sXz1bYT1NYXRoLm1heCgkbCxNYXRoLm1pbihIbCxhKSksbz1NYXRoLm1heCgkbCxNYXRoLm1pbihIbCxvKSldOyFmdW5jdGlvbih0LGUsbixyLGksYSl7dmFyIG8scz10WzBdLGM9dFsxXSx1PTAsbD0xLGg9ZVswXS1zLGY9ZVsxXS1jO2lmKG89bi1zLGh8fCEobz4wKSl7aWYoby89aCxoPDApe2lmKG88dSlyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGg+MCl7aWYobz5sKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1zLGh8fCEobzwwKSl7aWYoby89aCxoPDApe2lmKG8+bClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGg+MCl7aWYobzx1KXJldHVybjtvPGwmJihsPW8pfWlmKG89ci1jLGZ8fCEobz4wKSl7aWYoby89ZixmPDApe2lmKG88dSlyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGY+MCl7aWYobz5sKXJldHVybjtvPnUmJih1PW8pfWlmKG89YS1jLGZ8fCEobzwwKSl7aWYoby89ZixmPDApe2lmKG8+bClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGY+MCl7aWYobzx1KXJldHVybjtvPGwmJihsPW8pfXJldHVybiB1PjAmJih0WzBdPXMrdSpoLHRbMV09Yyt1KmYpLGw8MSYmKGVbMF09cytsKmgsZVsxXT1jK2wqZiksITB9fX19fShjLF8sdCxlLG4scik/cyYmKGIubGluZVN0YXJ0KCksYi5wb2ludChhLG8pLHY9ITEpOihnfHwoYi5saW5lU3RhcnQoKSxiLnBvaW50KGNbMF0sY1sxXSkpLGIucG9pbnQoX1swXSxfWzFdKSxzfHxiLmxpbmVFbmQoKSx2PSExKX1wPWEseT1vLGc9c31yZXR1cm4geH19ZnVuY3Rpb24gVmwoKXt2YXIgdCxlLG4scj0wLGk9MCxhPTk2MCxvPTUwMDtyZXR1cm4gbj17c3RyZWFtOmZ1bmN0aW9uKG4pe3JldHVybiB0JiZlPT09bj90OnQ9V2wocixpLGEsbykoZT1uKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStzWzBdWzBdLGk9K3NbMF1bMV0sYT0rc1sxXVswXSxvPStzWzFdWzFdLHQ9ZT1udWxsLG4pOltbcixpXSxbYSxvXV19fX12YXIgR2wsWGwsWmwsUWw9a2MoKSxLbD17c3BoZXJlOlpjLHBvaW50OlpjLGxpbmVTdGFydDpmdW5jdGlvbigpe0tsLnBvaW50PXRoLEtsLmxpbmVFbmQ9Smx9LGxpbmVFbmQ6WmMscG9seWdvblN0YXJ0OlpjLHBvbHlnb25FbmQ6WmN9O2Z1bmN0aW9uIEpsKCl7S2wucG9pbnQ9S2wubGluZUVuZD1aY31mdW5jdGlvbiB0aCh0LGUpe0dsPXQqPUxjLFhsPXFjKGUqPUxjKSxabD1QYyhlKSxLbC5wb2ludD1laH1mdW5jdGlvbiBlaCh0LGUpe3QqPUxjO3ZhciBuPXFjKGUqPUxjKSxyPVBjKGUpLGk9SWModC1HbCksYT1QYyhpKSxvPXIqcWMoaSkscz1abCpuLVhsKnIqYSxjPVhsKm4rWmwqciphO1FsLmFkZChGYygkYyhvKm8rcypzKSxjKSksR2w9dCxYbD1uLFpsPXJ9ZnVuY3Rpb24gbmgodCl7cmV0dXJuIFFsLnJlc2V0KCksbnUodCxLbCksK1FsfXZhciByaD1bbnVsbCxudWxsXSxpaD17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6cmh9O2Z1bmN0aW9uIGFoKHQsZSl7cmV0dXJuIHJoWzBdPXQscmhbMV09ZSxuaChpaCl9dmFyIG9oPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNoKHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZihjaChuW3JdLmdlb21ldHJ5LGUpKXJldHVybiEwO3JldHVybiExfX0sc2g9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiB1aCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZih1aChuW3JdLGUpKXJldHVybiEwO3JldHVybiExfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGxoKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspaWYobGgobltyXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe3JldHVybiBoaCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWlmKGhoKG5bcl0sZSkpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10Lmdlb21ldHJpZXMscj0tMSxpPW4ubGVuZ3RoOysrcjxpOylpZihjaChuW3JdLGUpKXJldHVybiEwO3JldHVybiExfX07ZnVuY3Rpb24gY2godCxlKXtyZXR1cm4hKCF0fHwhc2guaGFzT3duUHJvcGVydHkodC50eXBlKSkmJnNoW3QudHlwZV0odCxlKX1mdW5jdGlvbiB1aCh0LGUpe3JldHVybiAwPT09YWgodCxlKX1mdW5jdGlvbiBsaCh0LGUpe2Zvcih2YXIgbixyLGksYT0wLG89dC5sZW5ndGg7YTxvO2ErKyl7aWYoMD09PShyPWFoKHRbYV0sZSkpKXJldHVybiEwO2lmKGE+MCYmKGk9YWgodFthXSx0W2EtMV0pKT4wJiZuPD1pJiZyPD1pJiYobityLWkpKigxLU1hdGgucG93KChuLXIpL2ksMikpPEFjKmkpcmV0dXJuITA7bj1yfXJldHVybiExfWZ1bmN0aW9uIGhoKHQsZSl7cmV0dXJuISFQbCh0Lm1hcChmaCksZGgoZSkpfWZ1bmN0aW9uIGZoKHQpe3JldHVybih0PXQubWFwKGRoKSkucG9wKCksdH1mdW5jdGlvbiBkaCh0KXtyZXR1cm5bdFswXSpMYyx0WzFdKkxjXX1mdW5jdGlvbiBwaCh0LGUpe3JldHVybih0JiZvaC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP29oW3QudHlwZV06Y2gpKHQsZSl9ZnVuY3Rpb24geWgodCxlLG4pe3ZhciByPWsodCxlLVNjLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pKX19ZnVuY3Rpb24gZ2godCxlLG4pe3ZhciByPWsodCxlLVNjLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gbWgoKXt2YXIgdCxlLG4scixpLGEsbyxzLGMsdSxsLGgsZj0xMCxkPWYscD05MCx5PTM2MCxnPTIuNTtmdW5jdGlvbiBtKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6digpfX1mdW5jdGlvbiB2KCl7cmV0dXJuIGsoamMoci9wKSpwLG4scCkubWFwKGwpLmNvbmNhdChrKGpjKHMveSkqeSxvLHkpLm1hcChoKSkuY29uY2F0KGsoamMoZS9mKSpmLHQsZikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gSWModCVwKT5TY30pKS5tYXAoYykpLmNvbmNhdChrKGpjKGEvZCkqZCxpLGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIEljKHQleSk+U2N9KSkubWFwKHUpKX1yZXR1cm4gbS5saW5lcz1mdW5jdGlvbigpe3JldHVybiB2KCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19KSl9LG0ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbbChyKS5jb25jYXQoaChvKS5zbGljZSgxKSxsKG4pLnJldmVyc2UoKS5zbGljZSgxKSxoKHMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sbS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bS5leHRlbnRNYWpvcih0KS5leHRlbnRNaW5vcih0KTptLmV4dGVudE1pbm9yKCl9LG0uZXh0ZW50TWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3RbMF1bMF0sbj0rdFsxXVswXSxzPSt0WzBdWzFdLG89K3RbMV1bMV0scj5uJiYodD1yLHI9bixuPXQpLHM+byYmKHQ9cyxzPW8sbz10KSxtLnByZWNpc2lvbihnKSk6W1tyLHNdLFtuLG9dXX0sbS5leHRlbnRNaW5vcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rblswXVswXSx0PStuWzFdWzBdLGE9K25bMF1bMV0saT0rblsxXVsxXSxlPnQmJihuPWUsZT10LHQ9biksYT5pJiYobj1hLGE9aSxpPW4pLG0ucHJlY2lzaW9uKGcpKTpbW2UsYV0sW3QsaV1dfSxtLnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bS5zdGVwTWFqb3IodCkuc3RlcE1pbm9yKHQpOm0uc3RlcE1pbm9yKCl9LG0uc3RlcE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHk9K3RbMV0sbSk6W3AseV19LG0uc3RlcE1pbm9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSt0WzBdLGQ9K3RbMV0sbSk6W2YsZF19LG0ucHJlY2lzaW9uPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPStmLGM9eWgoYSxpLDkwKSx1PWdoKGUsdCxnKSxsPXloKHMsbyw5MCksaD1naChyLG4sZyksbSk6Z30sbS5leHRlbnRNYWpvcihbWy0xODAsLTg5Ljk5OTk5OV0sWzE4MCw4OS45OTk5OTldXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC4wMDAwMDFdLFsxODAsODAuMDAwMDAxXV0pfWZ1bmN0aW9uIHZoKCl7cmV0dXJuIG1oKCkoKX1mdW5jdGlvbiBiaCh0LGUpe3ZhciBuPXRbMF0qTGMscj10WzFdKkxjLGk9ZVswXSpMYyxhPWVbMV0qTGMsbz1QYyhyKSxzPXFjKHIpLGM9UGMoYSksdT1xYyhhKSxsPW8qUGMobiksaD1vKnFjKG4pLGY9YypQYyhpKSxkPWMqcWMoaSkscD0yKkdjKCRjKFhjKGEtcikrbypjKlhjKGktbikpKSx5PXFjKHApLGc9cD9mdW5jdGlvbih0KXt2YXIgZT1xYyh0Kj1wKS95LG49cWMocC10KS95LHI9bipsK2UqZixpPW4qaCtlKmQsYT1uKnMrZSp1O3JldHVybltGYyhpLHIpKkJjLEZjKGEsJGMocipyK2kqaSkpKkJjXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipCYyxyKkJjXX07cmV0dXJuIGcuZGlzdGFuY2U9cCxnfWZ1bmN0aW9uIF9oKHQpe3JldHVybiB0fXZhciB4aCx3aCxraCxUaCxFaD1rYygpLENoPWtjKCksU2g9e3BvaW50OlpjLGxpbmVTdGFydDpaYyxsaW5lRW5kOlpjLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1NoLmxpbmVTdGFydD1BaCxTaC5saW5lRW5kPURofSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7U2gubGluZVN0YXJ0PVNoLmxpbmVFbmQ9U2gucG9pbnQ9WmMsRWguYWRkKEljKENoKSksQ2gucmVzZXQoKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9RWgvMjtyZXR1cm4gRWgucmVzZXQoKSx0fX07ZnVuY3Rpb24gQWgoKXtTaC5wb2ludD1NaH1mdW5jdGlvbiBNaCh0LGUpe1NoLnBvaW50PU5oLHhoPWtoPXQsd2g9VGg9ZX1mdW5jdGlvbiBOaCh0LGUpe0NoLmFkZChUaCp0LWtoKmUpLGtoPXQsVGg9ZX1mdW5jdGlvbiBEaCgpe05oKHhoLHdoKX1jb25zdCBPaD1TaDt2YXIgQmg9MS8wLExoPUJoLEloPS1CaCxSaD1JaCxGaD17cG9pbnQ6ZnVuY3Rpb24odCxlKXt0PEJoJiYoQmg9dCksdD5JaCYmKEloPXQpLGU8TGgmJihMaD1lKSxlPlJoJiYoUmg9ZSl9LGxpbmVTdGFydDpaYyxsaW5lRW5kOlpjLHBvbHlnb25TdGFydDpaYyxwb2x5Z29uRW5kOlpjLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbQmgsTGhdLFtJaCxSaF1dO3JldHVybiBJaD1SaD0tKExoPUJoPTEvMCksdH19O2NvbnN0IFBoPUZoO3ZhciBqaCxZaCx6aCxVaCxxaD0wLEhoPTAsJGg9MCxXaD0wLFZoPTAsR2g9MCxYaD0wLFpoPTAsUWg9MCxLaD17cG9pbnQ6SmgsbGluZVN0YXJ0OnRmLGxpbmVFbmQ6cmYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7S2gubGluZVN0YXJ0PWFmLEtoLmxpbmVFbmQ9b2Z9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtLaC5wb2ludD1KaCxLaC5saW5lU3RhcnQ9dGYsS2gubGluZUVuZD1yZn0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9UWg/W1hoL1FoLFpoL1FoXTpHaD9bV2gvR2gsVmgvR2hdOiRoP1txaC8kaCxIaC8kaF06W05hTixOYU5dO3JldHVybiBxaD1IaD0kaD1XaD1WaD1HaD1YaD1aaD1RaD0wLHR9fTtmdW5jdGlvbiBKaCh0LGUpe3FoKz10LEhoKz1lLCsrJGh9ZnVuY3Rpb24gdGYoKXtLaC5wb2ludD1lZn1mdW5jdGlvbiBlZih0LGUpe0toLnBvaW50PW5mLEpoKHpoPXQsVWg9ZSl9ZnVuY3Rpb24gbmYodCxlKXt2YXIgbj10LXpoLHI9ZS1VaCxpPSRjKG4qbityKnIpO1doKz1pKih6aCt0KS8yLFZoKz1pKihVaCtlKS8yLEdoKz1pLEpoKHpoPXQsVWg9ZSl9ZnVuY3Rpb24gcmYoKXtLaC5wb2ludD1KaH1mdW5jdGlvbiBhZigpe0toLnBvaW50PXNmfWZ1bmN0aW9uIG9mKCl7Y2YoamgsWWgpfWZ1bmN0aW9uIHNmKHQsZSl7S2gucG9pbnQ9Y2YsSmgoamg9emg9dCxZaD1VaD1lKX1mdW5jdGlvbiBjZih0LGUpe3ZhciBuPXQtemgscj1lLVVoLGk9JGMobipuK3Iqcik7V2grPWkqKHpoK3QpLzIsVmgrPWkqKFVoK2UpLzIsR2grPWksWGgrPShpPVVoKnQtemgqZSkqKHpoK3QpLFpoKz1pKihVaCtlKSxRaCs9MyppLEpoKHpoPXQsVWg9ZSl9Y29uc3QgdWY9S2g7ZnVuY3Rpb24gbGYodCl7dGhpcy5fY29udGV4dD10fWxmLnByb3RvdHlwZT17X3JhZGl1czo0LjUscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhZGl1cz10LHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSksdGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTticmVhaztkZWZhdWx0OnRoaXMuX2NvbnRleHQubW92ZVRvKHQrdGhpcy5fcmFkaXVzLGUpLHRoaXMuX2NvbnRleHQuYXJjKHQsZSx0aGlzLl9yYWRpdXMsMCxPYyl9fSxyZXN1bHQ6WmN9O3ZhciBoZixmZixkZixwZix5ZixnZj1rYygpLG1mPXtwb2ludDpaYyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXttZi5wb2ludD12Zn0sbGluZUVuZDpmdW5jdGlvbigpe2hmJiZiZihmZixkZiksbWYucG9pbnQ9WmN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2hmPSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7aGY9bnVsbH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9K2dmO3JldHVybiBnZi5yZXNldCgpLHR9fTtmdW5jdGlvbiB2Zih0LGUpe21mLnBvaW50PWJmLGZmPXBmPXQsZGY9eWY9ZX1mdW5jdGlvbiBiZih0LGUpe3BmLT10LHlmLT1lLGdmLmFkZCgkYyhwZipwZit5Zip5ZikpLHBmPXQseWY9ZX1jb25zdCBfZj1tZjtmdW5jdGlvbiB4Zigpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiB3Zih0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBrZih0LGUpe3ZhciBuLHIsaT00LjU7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyLnBvaW50UmFkaXVzKCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbnUodCxuKHIpKSksci5yZXN1bHQoKX1yZXR1cm4gYS5hcmVhPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4oT2gpKSxPaC5yZXN1bHQoKX0sYS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4oX2YpKSxfZi5yZXN1bHQoKX0sYS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51KHQsbihQaCkpLFBoLnJlc3VsdCgpfSxhLmNlbnRyb2lkPWZ1bmN0aW9uKHQpe3JldHVybiBudSh0LG4odWYpKSx1Zi5yZXN1bHQoKX0sYS5wcm9qZWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PWU/KHQ9bnVsbCxfaCk6KHQ9ZSkuc3RyZWFtLGEpOnR9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10PyhlPW51bGwsbmV3IHhmKTpuZXcgbGYoZT10KSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmci5wb2ludFJhZGl1cyhpKSxhKTplfSxhLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KHIucG9pbnRSYWRpdXMoK3QpLCt0KSxhKTppfSxhLnByb2plY3Rpb24odCkuY29udGV4dChlKX1mdW5jdGlvbiBUZih0KXtyZXR1cm57c3RyZWFtOkVmKHQpfX1mdW5jdGlvbiBFZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IENmO2Zvcih2YXIgciBpbiB0KW5bcl09dFtyXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBDZigpe31mdW5jdGlvbiBTZih0LGUsbil7dmFyIHI9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9ciYmdC5jbGlwRXh0ZW50KG51bGwpLG51KG4sdC5zdHJlYW0oUGgpKSxlKFBoLnJlc3VsdCgpKSxudWxsIT1yJiZ0LmNsaXBFeHRlbnQociksdH1mdW5jdGlvbiBBZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPWVbMV1bMF0tZVswXVswXSxpPWVbMV1bMV0tZVswXVsxXSxhPU1hdGgubWluKHIvKG5bMV1bMF0tblswXVswXSksaS8oblsxXVsxXS1uWzBdWzFdKSksbz0rZVswXVswXSsoci1hKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKGktYSooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCphKS50cmFuc2xhdGUoW28sc10pfSksbil9ZnVuY3Rpb24gTWYodCxlLG4pe3JldHVybiBBZih0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiBOZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPStlLGk9ci8oblsxXVswXS1uWzBdWzBdKSxhPShyLWkqKG5bMV1bMF0rblswXVswXSkpLzIsbz0taSpuWzBdWzFdO3Quc2NhbGUoMTUwKmkpLnRyYW5zbGF0ZShbYSxvXSl9KSxuKX1mdW5jdGlvbiBEZih0LGUsbil7cmV0dXJuIFNmKHQsKGZ1bmN0aW9uKG4pe3ZhciByPStlLGk9ci8oblsxXVsxXS1uWzBdWzFdKSxhPS1pKm5bMF1bMF0sbz0oci1pKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKmkpLnRyYW5zbGF0ZShbYSxvXSl9KSxuKX14Zi5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6d2YoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT13Zih0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LENmLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q2YscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIE9mPVBjKDMwKkxjKTtmdW5jdGlvbiBCZih0LGUpe3JldHVybitlP2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihyLGksYSxvLHMsYyx1LGwsaCxmLGQscCx5LGcpe3ZhciBtPXUtcix2PWwtaSxiPW0qbSt2KnY7aWYoYj40KmUmJnktLSl7dmFyIF89bytmLHg9cytkLHc9YytwLGs9JGMoXypfK3gqeCt3KncpLFQ9R2Mody89ayksRT1JYyhJYyh3KS0xKTxTY3x8SWMoYS1oKTxTYz8oYStoKS8yOkZjKHgsXyksQz10KEUsVCksUz1DWzBdLEE9Q1sxXSxNPVMtcixOPUEtaSxEPXYqTS1tKk47KEQqRC9iPmV8fEljKChtKk0rdipOKS9iLS41KT4uM3x8bypmK3MqZCtjKnA8T2YpJiYobihyLGksYSxvLHMsYyxTLEEsRSxfLz1rLHgvPWssdyx5LGcpLGcucG9pbnQoUyxBKSxuKFMsQSxFLF8seCx3LHUsbCxoLGYsZCxwLHksZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHIsaSxhLG8scyxjLHUsbCxoLGYsZCxwLHk9e3BvaW50OmcsbGluZVN0YXJ0Om0sbGluZUVuZDpiLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCkseS5saW5lU3RhcnQ9X30scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLHkubGluZVN0YXJ0PW19fTtmdW5jdGlvbiBnKG4scil7bj10KG4sciksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIG0oKXtsPU5hTix5LnBvaW50PXYsZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB2KHIsaSl7dmFyIGE9bXUoW3IsaV0pLG89dChyLGkpO24obCxoLHUsZixkLHAsbD1vWzBdLGg9b1sxXSx1PXIsZj1hWzBdLGQ9YVsxXSxwPWFbMl0sMTYsZSksZS5wb2ludChsLGgpfWZ1bmN0aW9uIGIoKXt5LnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gXygpe20oKSx5LnBvaW50PXgseS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3Yocj10LGUpLGk9bCxhPWgsbz1mLHM9ZCxjPXAseS5wb2ludD12fWZ1bmN0aW9uIHcoKXtuKGwsaCx1LGYsZCxwLGksYSxyLG8scyxjLDE2LGUpLHkubGluZUVuZD1iLGIoKX1yZXR1cm4geX19KHQsZSk6ZnVuY3Rpb24odCl7cmV0dXJuIEVmKHtwb2ludDpmdW5jdGlvbihlLG4pe2U9dChlLG4pLHRoaXMuc3RyZWFtLnBvaW50KGVbMF0sZVsxXSl9fSl9KHQpfXZhciBMZj1FZih7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0KkxjLGUqTGMpfX0pO2Z1bmN0aW9uIElmKHQsZSxuLHIsaSl7ZnVuY3Rpb24gYShhLG8pe3JldHVybltlK3QqKGEqPXIpLG4tdCoobyo9aSldfXJldHVybiBhLmludmVydD1mdW5jdGlvbihhLG8pe3JldHVyblsoYS1lKS90KnIsKG4tbykvdCppXX0sYX1mdW5jdGlvbiBSZih0LGUsbixyLGksYSl7dmFyIG89UGMoYSkscz1xYyhhKSxjPW8qdCx1PXMqdCxsPW8vdCxoPXMvdCxmPShzKm4tbyplKS90LGQ9KHMqZStvKm4pL3Q7ZnVuY3Rpb24gcCh0LGEpe3JldHVybltjKih0Kj1yKS11KihhKj1pKStlLG4tdSp0LWMqYV19cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3IqKGwqdC1oKmUrZiksaSooZC1oKnQtbCplKV19LHB9ZnVuY3Rpb24gRmYodCl7cmV0dXJuIFBmKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gUGYodCl7dmFyIGUsbixyLGksYSxvLHMsYyx1LGwsaD0xNTAsZj00ODAsZD0yNTAscD0wLHk9MCxnPTAsbT0wLHY9MCxiPTAsXz0xLHg9MSx3PW51bGwsaz1VbCxUPW51bGwsRT1faCxDPS41O2Z1bmN0aW9uIFModCl7cmV0dXJuIGModFswXSpMYyx0WzFdKkxjKX1mdW5jdGlvbiBBKHQpe3JldHVybih0PWMuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpCYyx0WzFdKkJjXX1mdW5jdGlvbiBNKCl7dmFyIHQ9UmYoaCwwLDAsXyx4LGIpLmFwcGx5KG51bGwsZShwLHkpKSxyPShiP1JmOklmKShoLGYtdFswXSxkLXRbMV0sXyx4LGIpO3JldHVybiBuPWtsKGcsbSx2KSxzPXhsKGUsciksYz14bChuLHMpLG89QmYocyxDKSxOKCl9ZnVuY3Rpb24gTigpe3JldHVybiB1PWw9bnVsbCxTfXJldHVybiBTLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gdSYmbD09PXQ/dTp1PUxmKGZ1bmN0aW9uKHQpe3JldHVybiBFZih7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KHJbMF0sclsxXSl9fSl9KG4pKGsobyhFKGw9dCkpKSkpfSxTLnByZWNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9dCx3PXZvaWQgMCxOKCkpOmt9LFMucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9dCxUPXI9aT1hPW51bGwsTigpKTpFfSxTLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0rdD9xbCh3PXQqTGMpOih3PW51bGwsVWwpLE4oKSk6dypCY30sUy5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPW51bGw9PXQ/KFQ9cj1pPWE9bnVsbCxfaCk6V2woVD0rdFswXVswXSxyPSt0WzBdWzFdLGk9K3RbMV1bMF0sYT0rdFsxXVsxXSksTigpKTpudWxsPT1UP251bGw6W1tULHJdLFtpLGFdXX0sUy5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxNKCkpOmh9LFMudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSt0WzBdLGQ9K3RbMV0sTSgpKTpbZixkXX0sUy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9dFswXSUzNjAqTGMseT10WzFdJTM2MCpMYyxNKCkpOltwKkJjLHkqQmNdfSxTLnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10WzBdJTM2MCpMYyxtPXRbMV0lMzYwKkxjLHY9dC5sZW5ndGg+Mj90WzJdJTM2MCpMYzowLE0oKSk6W2cqQmMsbSpCYyx2KkJjXX0sUy5hbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10JTM2MCpMYyxNKCkpOmIqQmN9LFMucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dD8tMToxLE0oKSk6XzwwfSxTLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PXQ/LTE6MSxNKCkpOng8MH0sUy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89QmYocyxDPXQqdCksTigpKTokYyhDKX0sUy5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQWYoUyx0LGUpfSxTLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWYoUyx0LGUpfSxTLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE5mKFMsdCxlKX0sUy5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGYoUyx0LGUpfSxmdW5jdGlvbigpe3JldHVybiBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLFMuaW52ZXJ0PWUuaW52ZXJ0JiZBLE0oKX19ZnVuY3Rpb24gamYodCl7dmFyIGU9MCxuPU1jLzMscj1QZih0KSxpPXIoZSxuKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cihlPXRbMF0qTGMsbj10WzFdKkxjKTpbZSpCYyxuKkJjXX0saX1mdW5jdGlvbiBZZih0LGUpe3ZhciBuPXFjKHQpLHI9KG4rcWMoZSkpLzI7aWYoSWMocik8U2MpcmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVBjKHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLHFjKG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsR2MobiplKV19LG59KHQpO3ZhciBpPTErbiooMipyLW4pLGE9JGMoaSkvcjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49JGMoaS0yKnIqcWMoZSkpL3I7cmV0dXJuW24qcWModCo9ciksYS1uKlBjKHQpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1hLWUsbz1GYyh0LEljKG4pKSpIYyhuKTtyZXR1cm4gbipyPDAmJihvLT1NYypIYyh0KSpIYyhuKSksW28vcixHYygoaS0odCp0K24qbikqcipyKS8oMipyKSldfSxvfWZ1bmN0aW9uIHpmKCl7cmV0dXJuIGpmKFlmKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIFVmKCl7cmV0dXJuIHpmKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gcWYoKXt2YXIgdCxlLG4scixpLGEsbz1VZigpLHM9emYoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGM9emYoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksdT17cG9pbnQ6ZnVuY3Rpb24odCxlKXthPVt0LGVdfX07ZnVuY3Rpb24gbCh0KXt2YXIgZT10WzBdLG89dFsxXTtyZXR1cm4gYT1udWxsLG4ucG9pbnQoZSxvKSxhfHwoci5wb2ludChlLG8pLGEpfHwoaS5wb2ludChlLG8pLGEpfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGwsbH1yZXR1cm4gbC5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9by5zY2FsZSgpLG49by50cmFuc2xhdGUoKSxyPSh0WzBdLW5bMF0pL2UsaT0odFsxXS1uWzFdKS9lO3JldHVybihpPj0uMTImJmk8LjIzNCYmcj49LS40MjUmJnI8LS4yMTQ/czppPj0uMTY2JiZpPC4yMzQmJnI+PS0uMjE0JiZyPC0uMTE1P2M6bykuaW52ZXJ0KHQpfSxsLnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDoocj1bby5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxjLnN0cmVhbShuKV0saT1yLmxlbmd0aCx0PXtwb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMTsrK248aTspcltuXS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uRW5kKCl9fSk7dmFyIHIsaX0sbC5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8ucHJlY2lzaW9uKHQpLHMucHJlY2lzaW9uKHQpLGMucHJlY2lzaW9uKHQpLGgoKSk6by5wcmVjaXNpb24oKX0sbC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby5zY2FsZSh0KSxzLnNjYWxlKC4zNSp0KSxjLnNjYWxlKHQpLGwudHJhbnNsYXRlKG8udHJhbnNsYXRlKCkpKTpvLnNjYWxlKCl9LGwudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBvLnRyYW5zbGF0ZSgpO3ZhciBlPW8uc2NhbGUoKSxhPSt0WzBdLGw9K3RbMV07cmV0dXJuIG49by50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW2EtLjQ1NSplLGwtLjIzOCplXSxbYSsuNDU1KmUsbCsuMjM4KmVdXSkuc3RyZWFtKHUpLHI9cy50cmFuc2xhdGUoW2EtLjMwNyplLGwrLjIwMSplXSkuY2xpcEV4dGVudChbW2EtLjQyNSplK1NjLGwrLjEyKmUrU2NdLFthLS4yMTQqZS1TYyxsKy4yMzQqZS1TY11dKS5zdHJlYW0odSksaT1jLnRyYW5zbGF0ZShbYS0uMjA1KmUsbCsuMjEyKmVdKS5jbGlwRXh0ZW50KFtbYS0uMjE0KmUrU2MsbCsuMTY2KmUrU2NdLFthLS4xMTUqZS1TYyxsKy4yMzQqZS1TY11dKS5zdHJlYW0odSksaCgpfSxsLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBBZihsLHQsZSl9LGwuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiBNZihsLHQsZSl9LGwuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTmYobCx0LGUpfSxsLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBEZihsLHQsZSl9LGwuc2NhbGUoMTA3MCl9ZnVuY3Rpb24gSGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9UGMoZSksaT1QYyhuKSxhPXQocippKTtyZXR1cm5bYSppKnFjKGUpLGEqcWMobildfX1mdW5jdGlvbiAkZih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcj0kYyhlKmUrbipuKSxpPXQociksYT1xYyhpKSxvPVBjKGkpO3JldHVybltGYyhlKmEscipvKSxHYyhyJiZuKmEvcildfX12YXIgV2Y9SGYoKGZ1bmN0aW9uKHQpe3JldHVybiAkYygyLygxK3QpKX0pKTtmdW5jdGlvbiBWZigpe3JldHVybiBGZihXZikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9V2YuaW52ZXJ0PSRmKChmdW5jdGlvbih0KXtyZXR1cm4gMipHYyh0LzIpfSkpO3ZhciBHZj1IZigoZnVuY3Rpb24odCl7cmV0dXJuKHQ9VmModCkpJiZ0L3FjKHQpfSkpO2Z1bmN0aW9uIFhmKCl7cmV0dXJuIEZmKEdmKS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9ZnVuY3Rpb24gWmYodCxlKXtyZXR1cm5bdCx6YyhXYygoTmMrZSkvMikpXX1mdW5jdGlvbiBRZigpe3JldHVybiBLZihaZikuc2NhbGUoOTYxL09jKX1mdW5jdGlvbiBLZih0KXt2YXIgZSxuLHIsaT1GZih0KSxhPWkuY2VudGVyLG89aS5zY2FsZSxzPWkudHJhbnNsYXRlLGM9aS5jbGlwRXh0ZW50LHU9bnVsbDtmdW5jdGlvbiBsKCl7dmFyIGE9TWMqbygpLHM9aShTbChpLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gYyhudWxsPT11P1tbc1swXS1hLHNbMV0tYV0sW3NbMF0rYSxzWzFdK2FdXTp0PT09WmY/W1tNYXRoLm1heChzWzBdLWEsdSksZV0sW01hdGgubWluKHNbMF0rYSxuKSxyXV06W1t1LE1hdGgubWF4KHNbMV0tYSxlKV0sW24sTWF0aC5taW4oc1sxXSthLHIpXV0pfXJldHVybiBpLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLGwoKSk6bygpfSxpLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSxsKCkpOnMoKX0saS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEodCksbCgpKTphKCl9LGkuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD91PWU9bj1yPW51bGw6KHU9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLHI9K3RbMV1bMV0pLGwoKSk6bnVsbD09dT9udWxsOltbdSxlXSxbbixyXV19LGwoKX1mdW5jdGlvbiBKZih0KXtyZXR1cm4gV2MoKE5jK3QpLzIpfWZ1bmN0aW9uIHRkKHQsZSl7dmFyIG49UGModCkscj10PT09ZT9xYyh0KTp6YyhuL1BjKGUpKS96YyhKZihlKS9KZih0KSksaT1uKlVjKEpmKHQpLHIpL3I7aWYoIXIpcmV0dXJuIFpmO2Z1bmN0aW9uIGEodCxlKXtpPjA/ZTwtTmMrU2MmJihlPS1OYytTYyk6ZT5OYy1TYyYmKGU9TmMtU2MpO3ZhciBuPWkvVWMoSmYoZSkscik7cmV0dXJuW24qcWMocip0KSxpLW4qUGMocip0KV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49aS1lLGE9SGMocikqJGModCp0K24qbiksbz1GYyh0LEljKG4pKSpIYyhuKTtyZXR1cm4gbipyPDAmJihvLT1NYypIYyh0KSpIYyhuKSksW28vciwyKlJjKFVjKGkvYSwxL3IpKS1OY119LGF9ZnVuY3Rpb24gZWQoKXtyZXR1cm4gamYodGQpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9ZnVuY3Rpb24gbmQodCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiByZCgpe3JldHVybiBGZihuZCkuc2NhbGUoMTUyLjYzKX1mdW5jdGlvbiBpZCh0LGUpe3ZhciBuPVBjKHQpLHI9dD09PWU/cWModCk6KG4tUGMoZSkpLyhlLXQpLGk9bi9yK3Q7aWYoSWMocik8U2MpcmV0dXJuIG5kO2Z1bmN0aW9uIGEodCxlKXt2YXIgbj1pLWUsYT1yKnQ7cmV0dXJuW24qcWMoYSksaS1uKlBjKGEpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1pLWUsYT1GYyh0LEljKG4pKSpIYyhuKTtyZXR1cm4gbipyPDAmJihhLT1NYypIYyh0KSpIYyhuKSksW2EvcixpLUhjKHIpKiRjKHQqdCtuKm4pXX0sYX1mdW5jdGlvbiBhZCgpe3JldHVybiBqZihpZCkuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX1HZi5pbnZlcnQ9JGYoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLFpmLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIqUmMoWWMoZSkpLU5jXX0sbmQuaW52ZXJ0PW5kO3ZhciBvZD0xLjM0MDI2NCxzZD0tLjA4MTEwNixjZD04OTNlLTYsdWQ9LjAwMzc5NixsZD0kYygzKS8yO2Z1bmN0aW9uIGhkKHQsZSl7dmFyIG49R2MobGQqcWMoZSkpLHI9bipuLGk9cipyKnI7cmV0dXJuW3QqUGMobikvKGxkKihvZCszKnNkKnIraSooNypjZCs5KnVkKnIpKSksbioob2Qrc2QqcitpKihjZCt1ZCpyKSldfWZ1bmN0aW9uIGZkKCl7cmV0dXJuIEZmKGhkKS5zY2FsZSgxNzcuMTU4KX1mdW5jdGlvbiBkZCh0LGUpe3ZhciBuPVBjKGUpLHI9UGModCkqbjtyZXR1cm5bbipxYyh0KS9yLHFjKGUpL3JdfWZ1bmN0aW9uIHBkKCl7cmV0dXJuIEZmKGRkKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfWZ1bmN0aW9uIHlkKCl7dmFyIHQsZSxuLHIsaSxhLG8scz0xLGM9MCx1PTAsbD0xLGg9MSxmPTAsZD1udWxsLHA9MSx5PTEsZz1FZih7cG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1iKFt0LGVdKTt0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pLG09X2g7ZnVuY3Rpb24gdigpe3JldHVybiBwPXMqbCx5PXMqaCxhPW89bnVsbCxifWZ1bmN0aW9uIGIobil7dmFyIHI9blswXSpwLGk9blsxXSp5O2lmKGYpe3ZhciBhPWkqdC1yKmU7cj1yKnQraSplLGk9YX1yZXR1cm5bcitjLGkrdV19cmV0dXJuIGIuaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciByPW5bMF0tYyxpPW5bMV0tdTtpZihmKXt2YXIgYT1pKnQrciplO3I9cip0LWkqZSxpPWF9cmV0dXJuW3IvcCxpL3ldfSxiLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYSYmbz09PXQ/YTphPWcobShvPXQpKX0sYi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10LGQ9bj1yPWk9bnVsbCx2KCkpOm19LGIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1udWxsPT10PyhkPW49cj1pPW51bGwsX2gpOldsKGQ9K3RbMF1bMF0sbj0rdFswXVsxXSxyPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHYoKSk6bnVsbD09ZD9udWxsOltbZCxuXSxbcixpXV19LGIuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsdigpKTpzfSxiLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdFswXSx1PSt0WzFdLHYoKSk6W2MsdV19LGIuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cWMoZj1uJTM2MCpMYyksdD1QYyhmKSx2KCkpOmYqQmN9LGIucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dD8tMToxLHYoKSk6bDwwfSxiLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQ/LTE6MSx2KCkpOmg8MH0sYi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQWYoYix0LGUpfSxiLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWYoYix0LGUpfSxiLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE5mKGIsdCxlKX0sYi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGYoYix0LGUpfSxifWZ1bmN0aW9uIGdkKHQsZSl7dmFyIG49ZSplLHI9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4rcioociooLjAwMzk3MSpuLS4wMDE1MjkqciktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUrciooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNipyKSkpXX1mdW5jdGlvbiBtZCgpe3JldHVybiBGZihnZCkuc2NhbGUoMTc1LjI5NSl9ZnVuY3Rpb24gdmQodCxlKXtyZXR1cm5bUGMoZSkqcWModCkscWMoZSldfWZ1bmN0aW9uIGJkKCl7cmV0dXJuIEZmKHZkKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9ZnVuY3Rpb24gX2QodCxlKXt2YXIgbj1QYyhlKSxyPTErUGModCkqbjtyZXR1cm5bbipxYyh0KS9yLHFjKGUpL3JdfWZ1bmN0aW9uIHhkKCl7cmV0dXJuIEZmKF9kKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfWZ1bmN0aW9uIHdkKHQsZSl7cmV0dXJuW3pjKFdjKChOYytlKS8yKSksLXRdfWZ1bmN0aW9uIGtkKCl7dmFyIHQ9S2Yod2QpLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfWZ1bmN0aW9uIFRkKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIEVkKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIENkKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBTZCgpe3ZhciB0PVRkLGU9MSxuPTEscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBhLG89MDtpLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKEVkLDApL3QubGVuZ3RofShuKSxlLnk9ZnVuY3Rpb24odCl7cmV0dXJuIDErdC5yZWR1Y2UoQ2QsMCl9KG4pKTooZS54PWE/bys9dChlLGEpOjAsZS55PTAsYT1lKX0pKTt2YXIgcz1mdW5jdGlvbih0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbMF07cmV0dXJuIHR9KGkpLGM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fShpKSx1PXMueC10KHMsYykvMixsPWMueCt0KGMscykvMjtyZXR1cm4gaS5lYWNoQWZ0ZXIocj9mdW5jdGlvbih0KXt0Lng9KHQueC1pLngpKmUsdC55PShpLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC11KS8obC11KSplLHQueT0oMS0oaS55P3QueS9pLnk6MSkpKm59KX1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLGU9K3RbMF0sbj0rdFsxXSxpKTpyP251bGw6W2Usbl19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsZT0rdFswXSxuPSt0WzFdLGkpOnI/W2Usbl06bnVsbH0saX1mdW5jdGlvbiBBZCh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixyPW4mJm4ubGVuZ3RoO2lmKHIpZm9yKDstLXI+PTA7KWUrPW5bcl0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIE1kKHQsZSl7dmFyIG4scixpLGEsbyxzPW5ldyBCZCh0KSxjPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSx1PVtzXTtmb3IobnVsbD09ZSYmKGU9TmQpO249dS5wb3AoKTspaWYoYyYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKGk9ZShuLmRhdGEpKSYmKG89aS5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShvKSxhPW8tMTthPj0wOy0tYSl1LnB1c2gocj1uLmNoaWxkcmVuW2FdPW5ldyBCZChpW2FdKSksci5wYXJlbnQ9bixyLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKE9kKX1mdW5jdGlvbiBOZCh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBEZCh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gT2QodCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBCZCh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH1oZC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4scj1lLGk9cipyLGE9aSppKmksbz0wO288MTImJihhPShpPShyLT1uPShyKihvZCtzZCppK2EqKGNkK3VkKmkpKS1lKS8ob2QrMypzZCppK2EqKDcqY2QrOSp1ZCppKSkpKnIpKmkqaSwhKEljKG4pPEFjKSk7KytvKTtyZXR1cm5bbGQqdCoob2QrMypzZCppK2EqKDcqY2QrOSp1ZCppKSkvUGMociksR2MocWMocikvbGQpXX0sZGQuaW52ZXJ0PSRmKFJjKSxnZC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixyPWUsaT0yNTtkb3t2YXIgYT1yKnIsbz1hKmE7ci09bj0ociooMS4wMDcyMjYrYSooLjAxNTA4NStvKiguMDI4ODc0KmEtLjA0NDQ3NS0uMDA1OTE2Km8pKSktZSkvKDEuMDA3MjI2K2EqKC4wNDUyNTUrbyooLjI1OTg2NiphLS4zMTEzMjUtLjAwNTkxNioxMSpvKSkpfXdoaWxlKEljKG4pPlNjJiYtLWk+MCk7cmV0dXJuW3QvKC44NzA3KyhhPXIqcikqKGEqKGEqYSphKiguMDAzOTcxLS4wMDE1MjkqYSktLjAxMzc5MSktLjEzMTk3OSkpLHJdfSx2ZC5pbnZlcnQ9JGYoR2MpLF9kLmludmVydD0kZigoZnVuY3Rpb24odCl7cmV0dXJuIDIqUmModCl9KSksd2QuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqUmMoWWModCkpLU5jXX0sQmQucHJvdG90eXBlPU1kLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QmQsY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQWQpfSxlYWNoOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLGE9dGhpcyxvPVthXTtkb3tmb3IoZT1vLnJldmVyc2UoKSxvPVtdO2E9ZS5wb3AoKTspaWYodChhKSxuPWEuY2hpbGRyZW4pZm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTsrK3Ipby5wdXNoKG5bcl0pfXdoaWxlKG8ubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHIsaT10aGlzLGE9W2ldLG89W107aT1hLnBvcCgpOylpZihvLnB1c2goaSksZT1pLmNoaWxkcmVuKWZvcihuPTAscj1lLmxlbmd0aDtuPHI7KytuKWEucHVzaChlW25dKTtmb3IoO2k9by5wb3AoKTspdChpKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbixyPXRoaXMsaT1bcl07cj1pLnBvcCgpOylpZih0KHIpLGU9ci5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKWkucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAscj1lLmNoaWxkcmVuLGk9ciYmci5sZW5ndGg7LS1pPj0wOyluKz1yW2ldLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsbj1mdW5jdGlvbih0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCkscj1lLmFuY2VzdG9ycygpLGk9bnVsbDtmb3IodD1uLnBvcCgpLGU9ci5wb3AoKTt0PT09ZTspaT10LHQ9bi5wb3AoKSxlPXIucG9wKCk7cmV0dXJuIGl9KGUsdCkscj1bZV07ZSE9PW47KWU9ZS5wYXJlbnQsci5wdXNoKGUpO2Zvcih2YXIgaT1yLmxlbmd0aDt0IT09bjspci5zcGxpY2UoaSwwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHJ9LGFuY2VzdG9yczpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKG4pe24hPT10JiZlLnB1c2goe3NvdXJjZTpuLnBhcmVudCx0YXJnZXQ6bn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24oKXtyZXR1cm4gTWQodGhpcykuZWFjaEJlZm9yZShEZCl9fTt2YXIgTGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIElkKHQpe2Zvcih2YXIgZSxuLHI9MCxpPSh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHI9dC5sZW5ndGg7cjspbj1NYXRoLnJhbmRvbSgpKnItLXwwLGU9dFtyXSx0W3JdPXRbbl0sdFtuXT1lO3JldHVybiB0fShMZC5jYWxsKHQpKSkubGVuZ3RoLGE9W107cjxpOyllPXRbcl0sbiYmUGQobixlKT8rK3I6KG49WWQoYT1SZChhLGUpKSxyPTApO3JldHVybiBufWZ1bmN0aW9uIFJkKHQsZSl7dmFyIG4scjtpZihqZChlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKEZkKGUsdFtuXSkmJmpkKHpkKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihyPW4rMTtyPHQubGVuZ3RoOysrcilpZihGZCh6ZCh0W25dLHRbcl0pLGUpJiZGZCh6ZCh0W25dLGUpLHRbcl0pJiZGZCh6ZCh0W3JdLGUpLHRbbl0pJiZqZChVZCh0W25dLHRbcl0sZSksdCkpcmV0dXJuW3Rbbl0sdFtyXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gRmQodCxlKXt2YXIgbj10LnItZS5yLHI9ZS54LXQueCxpPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPHIqcitpKml9ZnVuY3Rpb24gUGQodCxlKXt2YXIgbj10LnItZS5yKzFlLTYscj1lLngtdC54LGk9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+cipyK2kqaX1mdW5jdGlvbiBqZCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFQZCh0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFlkKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fSh0WzBdKTtjYXNlIDI6cmV0dXJuIHpkKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBVZCh0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIHpkKHQsZSl7dmFyIG49dC54LHI9dC55LGk9dC5yLGE9ZS54LG89ZS55LHM9ZS5yLGM9YS1uLHU9by1yLGw9cy1pLGg9TWF0aC5zcXJ0KGMqYyt1KnUpO3JldHVybnt4OihuK2ErYy9oKmwpLzIseToocitvK3UvaCpsKS8yLHI6KGgraStzKS8yfX1mdW5jdGlvbiBVZCh0LGUsbil7dmFyIHI9dC54LGk9dC55LGE9dC5yLG89ZS54LHM9ZS55LGM9ZS5yLHU9bi54LGw9bi55LGg9bi5yLGY9ci1vLGQ9ci11LHA9aS1zLHk9aS1sLGc9Yy1hLG09aC1hLHY9cipyK2kqaS1hKmEsYj12LW8qby1zKnMrYypjLF89di11KnUtbCpsK2gqaCx4PWQqcC1mKnksdz0ocCpfLXkqYikvKDIqeCktcixrPSh5KmctcCptKS94LFQ9KGQqYi1mKl8pLygyKngpLWksRT0oZiptLWQqZykveCxDPWsqaytFKkUtMSxTPTIqKGErdyprK1QqRSksQT13KncrVCpULWEqYSxNPS0oQz8oUytNYXRoLnNxcnQoUypTLTQqQypBKSkvKDIqQyk6QS9TKTtyZXR1cm57eDpyK3craypNLHk6aStUK0UqTSxyOk19fWZ1bmN0aW9uIHFkKHQsZSxuKXt2YXIgcixpLGEsbyxzPXQueC1lLngsYz10LnktZS55LHU9cypzK2MqYzt1PyhpPWUucituLnIsaSo9aSxvPXQucituLnIsaT4obyo9byk/KHI9KHUrby1pKS8oMip1KSxhPU1hdGguc3FydChNYXRoLm1heCgwLG8vdS1yKnIpKSxuLng9dC54LXIqcy1hKmMsbi55PXQueS1yKmMrYSpzKToocj0odStpLW8pLygyKnUpLGE9TWF0aC5zcXJ0KE1hdGgubWF4KDAsaS91LXIqcikpLG4ueD1lLngrcipzLWEqYyxuLnk9ZS55K3IqYythKnMpKToobi54PWUueCtuLnIsbi55PWUueSl9ZnVuY3Rpb24gSGQodCxlKXt2YXIgbj10LnIrZS5yLTFlLTYscj1lLngtdC54LGk9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+cipyK2kqaX1mdW5jdGlvbiAkZCh0KXt2YXIgZT10Ll8sbj10Lm5leHQuXyxyPWUucituLnIsaT0oZS54Km4ucituLngqZS5yKS9yLGE9KGUueSpuLnIrbi55KmUucikvcjtyZXR1cm4gaSppK2EqYX1mdW5jdGlvbiBXZCh0KXt0aGlzLl89dCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gVmQodCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm4gMDt2YXIgZSxuLHIsaSxhLG8scyxjLHUsbCxoO2lmKChlPXRbMF0pLng9MCxlLnk9MCwhKGk+MSkpcmV0dXJuIGUucjtpZihuPXRbMV0sZS54PS1uLnIsbi54PWUucixuLnk9MCwhKGk+MikpcmV0dXJuIGUucituLnI7cWQobixlLHI9dFsyXSksZT1uZXcgV2QoZSksbj1uZXcgV2Qobikscj1uZXcgV2QociksZS5uZXh0PXIucHJldmlvdXM9bixuLm5leHQ9ZS5wcmV2aW91cz1yLHIubmV4dD1uLnByZXZpb3VzPWU7dDpmb3Iocz0zO3M8aTsrK3Mpe3FkKGUuXyxuLl8scj10W3NdKSxyPW5ldyBXZChyKSxjPW4ubmV4dCx1PWUucHJldmlvdXMsbD1uLl8ucixoPWUuXy5yO2Rve2lmKGw8PWgpe2lmKEhkKGMuXyxyLl8pKXtuPWMsZS5uZXh0PW4sbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fWwrPWMuXy5yLGM9Yy5uZXh0fWVsc2V7aWYoSGQodS5fLHIuXykpeyhlPXUpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9dS5fLnIsdT11LnByZXZpb3VzfX13aGlsZShjIT09dS5uZXh0KTtmb3Ioci5wcmV2aW91cz1lLHIubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49cixhPSRkKGUpOyhyPXIubmV4dCkhPT1uOykobz0kZChyKSk8YSYmKGU9cixhPW8pO249ZS5uZXh0fWZvcihlPVtuLl9dLHI9bjsocj1yLm5leHQpIT09bjspZS5wdXNoKHIuXyk7Zm9yKHI9SWQoZSkscz0wO3M8aTsrK3MpKGU9dFtzXSkueC09ci54LGUueS09ci55O3JldHVybiByLnJ9ZnVuY3Rpb24gR2QodCl7cmV0dXJuIFZkKHQpLHR9ZnVuY3Rpb24gWGQodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpaZCh0KX1mdW5jdGlvbiBaZCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gUWQoKXtyZXR1cm4gMH1mdW5jdGlvbiBLZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSmQodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiB0cCgpe3ZhciB0PW51bGwsZT0xLG49MSxyPVFkO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIGkueD1lLzIsaS55PW4vMix0P2kuZWFjaEJlZm9yZShlcCh0KSkuZWFjaEFmdGVyKG5wKHIsLjUpKS5lYWNoQmVmb3JlKHJwKDEpKTppLmVhY2hCZWZvcmUoZXAoSmQpKS5lYWNoQWZ0ZXIobnAoUWQsMSkpLmVhY2hBZnRlcihucChyLGkuci9NYXRoLm1pbihlLG4pKSkuZWFjaEJlZm9yZShycChNYXRoLm1pbihlLG4pLygyKmkucikpKSxpfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1YZChlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxpKTpbZSxuXX0saS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGkpOnJ9LGl9ZnVuY3Rpb24gZXAodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fChlLnI9TWF0aC5tYXgoMCwrdChlKXx8MCkpfX1mdW5jdGlvbiBucCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtpZihyPW4uY2hpbGRyZW4pe3ZhciByLGksYSxvPXIubGVuZ3RoLHM9dChuKSplfHwwO2lmKHMpZm9yKGk9MDtpPG87KytpKXJbaV0ucis9cztpZihhPVZkKHIpLHMpZm9yKGk9MDtpPG87KytpKXJbaV0uci09cztuLnI9YStzfX19ZnVuY3Rpb24gcnAodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUucGFyZW50O2Uucio9dCxuJiYoZS54PW4ueCt0KmUueCxlLnk9bi55K3QqZS55KX19ZnVuY3Rpb24gaXAodCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5yb3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEpfWZ1bmN0aW9uIGFwKHQsZSxuLHIsaSl7Zm9yKHZhciBhLG89dC5jaGlsZHJlbixzPS0xLGM9by5sZW5ndGgsdT10LnZhbHVlJiYoci1lKS90LnZhbHVlOysrczxjOykoYT1vW3NdKS55MD1uLGEueTE9aSxhLngwPWUsYS54MT1lKz1hLnZhbHVlKnV9ZnVuY3Rpb24gb3AoKXt2YXIgdD0xLGU9MSxuPTAscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBhPWkuaGVpZ2h0KzE7cmV0dXJuIGkueDA9aS55MD1uLGkueDE9dCxpLnkxPWUvYSxpLmVhY2hCZWZvcmUoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7ci5jaGlsZHJlbiYmYXAocixyLngwLHQqKHIuZGVwdGgrMSkvZSxyLngxLHQqKHIuZGVwdGgrMikvZSk7dmFyIGk9ci54MCxhPXIueTAsbz1yLngxLW4scz1yLnkxLW47bzxpJiYoaT1vPShpK28pLzIpLHM8YSYmKGE9cz0oYStzKS8yKSxyLngwPWksci55MD1hLHIueDE9byxyLnkxPXN9fShlLGEpKSxyJiZpLmVhY2hCZWZvcmUoaXApLGl9cmV0dXJuIGkucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGkpOnJ9LGkuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLGkpOlt0LGVdfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSk6bn0saX12YXIgc3A9e2RlcHRoOi0xfSxjcD17fTtmdW5jdGlvbiB1cCh0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBscCh0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBocCgpe3ZhciB0PXVwLGU9bHA7ZnVuY3Rpb24gbihuKXt2YXIgcixpLGEsbyxzLGMsdSxsPW4ubGVuZ3RoLGg9bmV3IEFycmF5KGwpLGY9e307Zm9yKGk9MDtpPGw7KytpKXI9bltpXSxzPWhbaV09bmV3IEJkKHIpLG51bGwhPShjPXQocixpLG4pKSYmKGMrPSIiKSYmKGZbdT0iJCIrKHMuaWQ9YyldPXUgaW4gZj9jcDpzKTtmb3IoaT0wO2k8bDsrK2kpaWYocz1oW2ldLG51bGwhPShjPWUobltpXSxpLG4pKSYmKGMrPSIiKSl7aWYoIShvPWZbIiQiK2NdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrYyk7aWYobz09PWNwKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2MpO28uY2hpbGRyZW4/by5jaGlsZHJlbi5wdXNoKHMpOm8uY2hpbGRyZW49W3NdLHMucGFyZW50PW99ZWxzZXtpZihhKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTthPXN9aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoYS5wYXJlbnQ9c3AsYS5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS1sfSkpLmVhY2hCZWZvcmUoT2QpLGEucGFyZW50PW51bGwsbD4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gYX1yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1aZChlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVpkKHQpLG4pOmV9LG59ZnVuY3Rpb24gZnAodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gZHAodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lWzBdOnQudH1mdW5jdGlvbiBwcCh0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbZS5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIHlwKHQsZSxuKXt2YXIgcj1uLyhlLmktdC5pKTtlLmMtPXIsZS5zKz1uLHQuYys9cixlLnorPW4sZS5tKz1ufWZ1bmN0aW9uIGdwKHQsZSxuKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpufWZ1bmN0aW9uIG1wKHQsZSl7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPWV9ZnVuY3Rpb24gdnAoKXt2YXIgdD1mcCxlPTEsbj0xLHI9bnVsbDtmdW5jdGlvbiBpKGkpe3ZhciBjPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHIsaSxhLG89bmV3IG1wKHQsMCkscz1bb107ZT1zLnBvcCgpOylpZihyPWUuXy5jaGlsZHJlbilmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkoYT1yLmxlbmd0aCksaT1hLTE7aT49MDstLWkpcy5wdXNoKG49ZS5jaGlsZHJlbltpXT1uZXcgbXAocltpXSxpKSksbi5wYXJlbnQ9ZTtyZXR1cm4oby5wYXJlbnQ9bmV3IG1wKG51bGwsMCkpLmNoaWxkcmVuPVtvXSxvfShpKTtpZihjLmVhY2hBZnRlcihhKSxjLnBhcmVudC5tPS1jLnosYy5lYWNoQmVmb3JlKG8pLHIpaS5lYWNoQmVmb3JlKHMpO2Vsc2V7dmFyIHU9aSxsPWksaD1pO2kuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PHUueCYmKHU9dCksdC54PmwueCYmKGw9dCksdC5kZXB0aD5oLmRlcHRoJiYoaD10KX0pKTt2YXIgZj11PT09bD8xOnQodSxsKS8yLGQ9Zi11LngscD1lLyhsLngrZitkKSx5PW4vKGguZGVwdGh8fDEpO2kuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PSh0LngrZCkqcCx0Lnk9dC5kZXB0aCp5fSkpfXJldHVybiBpfWZ1bmN0aW9uIGEoZSl7dmFyIG49ZS5jaGlsZHJlbixyPWUucGFyZW50LmNoaWxkcmVuLGk9ZS5pP3JbZS5pLTFdOm51bGw7aWYobil7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAscj0wLGk9dC5jaGlsZHJlbixhPWkubGVuZ3RoOy0tYT49MDspKGU9aVthXSkueis9bixlLm0rPW4sbis9ZS5zKyhyKz1lLmMpfShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtpPyhlLno9aS56K3QoZS5fLGkuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIGkmJihlLno9aS56K3QoZS5fLGkuXykpO2UucGFyZW50LkE9ZnVuY3Rpb24oZSxuLHIpe2lmKG4pe2Zvcih2YXIgaSxhPWUsbz1lLHM9bixjPWEucGFyZW50LmNoaWxkcmVuWzBdLHU9YS5tLGw9by5tLGg9cy5tLGY9Yy5tO3M9cHAocyksYT1kcChhKSxzJiZhOyljPWRwKGMpLChvPXBwKG8pKS5hPWUsKGk9cy56K2gtYS56LXUrdChzLl8sYS5fKSk+MCYmKHlwKGdwKHMsZSxyKSxlLGkpLHUrPWksbCs9aSksaCs9cy5tLHUrPWEubSxmKz1jLm0sbCs9by5tO3MmJiFwcChvKSYmKG8udD1zLG8ubSs9aC1sKSxhJiYhZHAoYykmJihjLnQ9YSxjLm0rPXUtZixyPWUpfXJldHVybiByfShlLGksZS5wYXJlbnQuQXx8clswXSl9ZnVuY3Rpb24gbyh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUsdC55PXQuZGVwdGgqbn1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLGU9K3RbMF0sbj0rdFsxXSxpKTpyP251bGw6W2Usbl19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsZT0rdFswXSxuPSt0WzFdLGkpOnI/W2Usbl06bnVsbH0saX1mdW5jdGlvbiBicCh0LGUsbixyLGkpe2Zvcih2YXIgYSxvPXQuY2hpbGRyZW4scz0tMSxjPW8ubGVuZ3RoLHU9dC52YWx1ZSYmKGktbikvdC52YWx1ZTsrK3M8YzspKGE9b1tzXSkueDA9ZSxhLngxPXIsYS55MD1uLGEueTE9bis9YS52YWx1ZSp1fW1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEJkLnByb3RvdHlwZSk7dmFyIF9wPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiB4cCh0LGUsbixyLGksYSl7Zm9yKHZhciBvLHMsYyx1LGwsaCxmLGQscCx5LGcsbT1bXSx2PWUuY2hpbGRyZW4sYj0wLF89MCx4PXYubGVuZ3RoLHc9ZS52YWx1ZTtiPHg7KXtjPWktbix1PWEtcjtkb3tsPXZbXysrXS52YWx1ZX13aGlsZSghbCYmXzx4KTtmb3IoaD1mPWwsZz1sKmwqKHk9TWF0aC5tYXgodS9jLGMvdSkvKHcqdCkpLHA9TWF0aC5tYXgoZi9nLGcvaCk7Xzx4OysrXyl7aWYobCs9cz12W19dLnZhbHVlLHM8aCYmKGg9cykscz5mJiYoZj1zKSxnPWwqbCp5LChkPU1hdGgubWF4KGYvZyxnL2gpKT5wKXtsLT1zO2JyZWFrfXA9ZH1tLnB1c2gobz17dmFsdWU6bCxkaWNlOmM8dSxjaGlsZHJlbjp2LnNsaWNlKGIsXyl9KSxvLmRpY2U/YXAobyxuLHIsaSx3P3IrPXUqbC93OmEpOmJwKG8sbixyLHc/bis9YypsL3c6aSxhKSx3LT1sLGI9X31yZXR1cm4gbX1jb25zdCB3cD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLHIsaSxhKXt4cChlLHQsbixyLGksYSl9cmV0dXJuIG4ucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0sbn0oX3ApO2Z1bmN0aW9uIGtwKCl7dmFyIHQ9d3AsZT0hMSxuPTEscj0xLGk9WzBdLGE9UWQsbz1RZCxzPVFkLGM9UWQsdT1RZDtmdW5jdGlvbiBsKHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1yLHQuZWFjaEJlZm9yZShoKSxpPVswXSxlJiZ0LmVhY2hCZWZvcmUoaXApLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1pW2UuZGVwdGhdLHI9ZS54MCtuLGw9ZS55MCtuLGg9ZS54MS1uLGY9ZS55MS1uO2g8ciYmKHI9aD0ocitoKS8yKSxmPGwmJihsPWY9KGwrZikvMiksZS54MD1yLGUueTA9bCxlLngxPWgsZS55MT1mLGUuY2hpbGRyZW4mJihuPWlbZS5kZXB0aCsxXT1hKGUpLzIscis9dShlKS1uLGwrPW8oZSktbiwoaC09cyhlKS1uKTxyJiYocj1oPShyK2gpLzIpLChmLT1jKGUpLW4pPGwmJihsPWY9KGwrZikvMiksdChlLHIsbCxoLGYpKX1yZXR1cm4gbC5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsbCk6ZX0sbC5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLHI9K3RbMV0sbCk6W24scl19LGwudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1aZChlKSxsKTp0fSxsLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bC5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOmwucGFkZGluZ0lubmVyKCl9LGwucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOmF9LGwucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2wucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTpsLnBhZGRpbmdUb3AoKX0sbC5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOm99LGwucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOnN9LGwucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OktkKCt0KSxsKTpjfSxsLnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2QoK3QpLGwpOnV9LGx9ZnVuY3Rpb24gVHAodCxlLG4scixpKXt2YXIgYSxvLHM9dC5jaGlsZHJlbixjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMrMSk7Zm9yKHVbMF09bz1hPTA7YTxjOysrYSl1W2ErMV09bys9c1thXS52YWx1ZTshZnVuY3Rpb24gdChlLG4scixpLGEsbyxjKXtpZihlPj1uLTEpe3ZhciBsPXNbZV07cmV0dXJuIGwueDA9aSxsLnkwPWEsbC54MT1vLHZvaWQobC55MT1jKX1mb3IodmFyIGg9dVtlXSxmPXIvMitoLGQ9ZSsxLHA9bi0xO2Q8cDspe3ZhciB5PWQrcD4+PjE7dVt5XTxmP2Q9eSsxOnA9eX1mLXVbZC0xXTx1W2RdLWYmJmUrMTxkJiYtLWQ7dmFyIGc9dVtkXS1oLG09ci1nO2lmKG8taT5jLWEpe3ZhciB2PShpKm0rbypnKS9yO3QoZSxkLGcsaSxhLHYsYyksdChkLG4sbSx2LGEsbyxjKX1lbHNle3ZhciBiPShhKm0rYypnKS9yO3QoZSxkLGcsaSxhLG8sYiksdChkLG4sbSxpLGIsbyxjKX19KDAsYyx0LnZhbHVlLGUsbixyLGkpfWZ1bmN0aW9uIEVwKHQsZSxuLHIsaSl7KDEmdC5kZXB0aD9icDphcCkodCxlLG4scixpKX1jb25zdCBDcD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLHIsaSxhKXtpZigobz10Ll9zcXVhcmlmeSkmJm8ucmF0aW89PT1lKWZvcih2YXIgbyxzLGMsdSxsLGg9LTEsZj1vLmxlbmd0aCxkPXQudmFsdWU7KytoPGY7KXtmb3IoYz0ocz1vW2hdKS5jaGlsZHJlbix1PXMudmFsdWU9MCxsPWMubGVuZ3RoO3U8bDsrK3Upcy52YWx1ZSs9Y1t1XS52YWx1ZTtzLmRpY2U/YXAocyxuLHIsaSxyKz0oYS1yKSpzLnZhbHVlL2QpOmJwKHMsbixyLG4rPShpLW4pKnMudmFsdWUvZCxhKSxkLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9bz14cChlLHQsbixyLGksYSksby5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KF9wKTtmdW5jdGlvbiBTcCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX1mdW5jdGlvbiBBcCh0LGUpe3ZhciBuPWRuKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fWZ1bmN0aW9uIE1wKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLW4pK2Uqbil9fXZhciBOcD1NYXRoLlNRUlQyO2Z1bmN0aW9uIERwKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIE9wKHQsZSl7dmFyIG4scixpPXRbMF0sYT10WzFdLG89dFsyXSxzPWVbMF0sYz1lWzFdLHU9ZVsyXSxsPXMtaSxoPWMtYSxmPWwqbCtoKmg7aWYoZjwxZS0xMilyPU1hdGgubG9nKHUvbykvTnAsbj1mdW5jdGlvbih0KXtyZXR1cm5baSt0KmwsYSt0KmgsbypNYXRoLmV4cChOcCp0KnIpXX07ZWxzZXt2YXIgZD1NYXRoLnNxcnQoZikscD0odSp1LW8qbys0KmYpLygyKm8qMipkKSx5PSh1KnUtbypvLTQqZikvKDIqdSoyKmQpLGc9TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKSxtPU1hdGgubG9nKE1hdGguc3FydCh5KnkrMSkteSk7cj0obS1nKS9OcCxuPWZ1bmN0aW9uKHQpe3ZhciBlLG49dCpyLHM9RHAoZyksYz1vLygyKmQpKihzKihlPU5wKm4rZywoKGU9TWF0aC5leHAoMiplKSktMSkvKGUrMSkpLWZ1bmN0aW9uKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfShnKSk7cmV0dXJuW2krYypsLGErYypoLG8qcy9EcChOcCpuK2cpXX19cmV0dXJuIG4uZHVyYXRpb249MWUzKnIsbn1mdW5jdGlvbiBCcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcj10KChlPWFuKGUpKS5oLChuPWFuKG4pKS5oKSxpPXBuKGUucyxuLnMpLGE9cG4oZS5sLG4ubCksbz1wbihlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1vKHQpLGUrIiJ9fX1jb25zdCBMcD1CcChkbik7dmFyIElwPUJwKHBuKTtmdW5jdGlvbiBScCh0LGUpe3ZhciBuPXBuKCh0PVRhKHQpKS5sLChlPVRhKGUpKS5sKSxyPXBuKHQuYSxlLmEpLGk9cG4odC5iLGUuYiksYT1wbih0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQubD1uKGUpLHQuYT1yKGUpLHQuYj1pKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fWZ1bmN0aW9uIEZwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPXQoKGU9T2EoZSkpLmgsKG49T2EobikpLmgpLGk9cG4oZS5jLG4uYyksYT1wbihlLmwsbi5sKSxvPXBuKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5jPWkodCksZS5sPWEodCksZS5vcGFjaXR5PW8odCksZSsiIn19fWNvbnN0IFBwPUZwKGRuKTt2YXIganA9RnAocG4pO2Z1bmN0aW9uIFlwKHQpe3JldHVybiBmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIHIoZSxyKXt2YXIgaT10KChlPUhhKGUpKS5oLChyPUhhKHIpKS5oKSxhPXBuKGUucyxyLnMpLG89cG4oZS5sLHIubCkscz1wbihlLm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1pKHQpLGUucz1hKHQpLGUubD1vKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLHIuZ2FtbWE9ZSxyfSgxKX1jb25zdCB6cD1ZcChkbik7dmFyIFVwPVlwKHBuKTtmdW5jdGlvbiBxcCh0LGUpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGgtMSxpPWVbMF0sYT1uZXcgQXJyYXkocjwwPzA6cik7bjxyOylhW25dPXQoaSxpPWVbKytuXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5taW4oci0xLE1hdGguZmxvb3IodCo9cikpKTtyZXR1cm4gYVtlXSh0LWUpfX1mdW5jdGlvbiBIcCh0LGUpe2Zvcih2YXIgbj1uZXcgQXJyYXkoZSkscj0wO3I8ZTsrK3IpbltyXT10KHIvKGUtMSkpO3JldHVybiBufWZ1bmN0aW9uICRwKHQpe2Zvcih2YXIgZSxuPS0xLHI9dC5sZW5ndGgsaT10W3ItMV0sYT0wOysrbjxyOyllPWksaT10W25dLGErPWVbMV0qaVswXS1lWzBdKmlbMV07cmV0dXJuIGEvMn1mdW5jdGlvbiBXcCh0KXtmb3IodmFyIGUsbixyPS0xLGk9dC5sZW5ndGgsYT0wLG89MCxzPXRbaS0xXSxjPTA7KytyPGk7KWU9cyxzPXRbcl0sYys9bj1lWzBdKnNbMV0tc1swXSplWzFdLGErPShlWzBdK3NbMF0pKm4sbys9KGVbMV0rc1sxXSkqbjtyZXR1cm5bYS8oYyo9Myksby9jXX1mdW5jdGlvbiBWcCh0LGUsbil7cmV0dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSktKGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gR3AodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gWHAodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49WzAsMV0scj0yLGk9MjtpPGU7KytpKXtmb3IoO3I+MSYmVnAodFtuW3ItMl1dLHRbbltyLTFdXSx0W2ldKTw9MDspLS1yO25bcisrXT1pfXJldHVybiBuLnNsaWNlKDAscil9ZnVuY3Rpb24gWnAodCl7aWYoKG49dC5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIGUsbixyPW5ldyBBcnJheShuKSxpPW5ldyBBcnJheShuKTtmb3IoZT0wO2U8bjsrK2UpcltlXT1bK3RbZV1bMF0sK3RbZV1bMV0sZV07Zm9yKHIuc29ydChHcCksZT0wO2U8bjsrK2UpaVtlXT1bcltlXVswXSwtcltlXVsxXV07dmFyIGE9WHAociksbz1YcChpKSxzPW9bMF09PT1hWzBdLGM9b1tvLmxlbmd0aC0xXT09PWFbYS5sZW5ndGgtMV0sdT1bXTtmb3IoZT1hLmxlbmd0aC0xO2U+PTA7LS1lKXUucHVzaCh0W3JbYVtlXV1bMl1dKTtmb3IoZT0rcztlPG8ubGVuZ3RoLWM7KytlKXUucHVzaCh0W3Jbb1tlXV1bMl1dKTtyZXR1cm4gdX1mdW5jdGlvbiBRcCh0LGUpe2Zvcih2YXIgbixyLGk9dC5sZW5ndGgsYT10W2ktMV0sbz1lWzBdLHM9ZVsxXSxjPWFbMF0sdT1hWzFdLGw9ITEsaD0wO2g8aTsrK2gpbj0oYT10W2hdKVswXSwocj1hWzFdKT5zIT11PnMmJm88KGMtbikqKHMtcikvKHUtcikrbiYmKGw9IWwpLGM9bix1PXI7cmV0dXJuIGx9ZnVuY3Rpb24gS3AodCl7Zm9yKHZhciBlLG4scj0tMSxpPXQubGVuZ3RoLGE9dFtpLTFdLG89YVswXSxzPWFbMV0sYz0wOysrcjxpOyllPW8sbj1zLGUtPW89KGE9dFtyXSlbMF0sbi09cz1hWzFdLGMrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gY31mdW5jdGlvbiBKcCgpe3JldHVybiBNYXRoLnJhbmRvbSgpfWNvbnN0IHR5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbiwxPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9MCk6bi09dCxmdW5jdGlvbigpe3JldHVybiBlKCkqbit0fX1yZXR1cm4gbi5zb3VyY2U9dCxufShKcCksZXk9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIHIsaTtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgYTtpZihudWxsIT1yKWE9cixyPW51bGw7ZWxzZSBkb3tyPTIqZSgpLTEsYT0yKmUoKS0xLGk9cipyK2EqYX13aGlsZSghaXx8aT4xKTtyZXR1cm4gdCtuKmEqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKGkpL2kpfX1yZXR1cm4gbi5zb3VyY2U9dCxufShKcCksbnk9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKCl7dmFyIHQ9ZXkuc291cmNlKGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19cmV0dXJuIG4uc291cmNlPXQsbn0oSnApLHJ5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49MCxyPTA7cjx0OysrciluKz1lKCk7cmV0dXJuIG59fXJldHVybiBuLnNvdXJjZT10LG59KEpwKSxpeT1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49cnkuc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0oSnApLGF5PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2coMS1lKCkpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KEpwKTtmdW5jdGlvbiBveSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBzeSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBjeT1BcnJheS5wcm90b3R5cGUsdXk9Y3kubWFwLGx5PWN5LnNsaWNlLGh5PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIGZ5KCl7dmFyIHQ9bmEoKSxlPVtdLG49W10scj1oeTtmdW5jdGlvbiBpKGkpe3ZhciBhPWkrIiIsbz10LmdldChhKTtpZighbyl7aWYociE9PWh5KXJldHVybiByO3Quc2V0KGEsbz1lLnB1c2goaSkpfXJldHVybiBuWyhvLTEpJW4ubGVuZ3RoXX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9bmEoKTtmb3IodmFyIHIsYSxvPS0xLHM9bi5sZW5ndGg7KytvPHM7KXQuaGFzKGE9KHI9bltvXSkrIiIpfHx0LnNldChhLGUucHVzaChyKSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bHkuY2FsbCh0KSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBmeShlLG4pLnVua25vd24ocil9LG95LmFwcGx5KGksYXJndW1lbnRzKSxpfWZ1bmN0aW9uIGR5KCl7dmFyIHQsZSxuPWZ5KCkudW5rbm93bih2b2lkIDApLHI9bi5kb21haW4saT1uLnJhbmdlLGE9WzAsMV0sbz0hMSxzPTAsYz0wLHU9LjU7ZnVuY3Rpb24gbCgpe3ZhciBuPXIoKS5sZW5ndGgsbD1hWzFdPGFbMF0saD1hW2wtMF0sZj1hWzEtbF07dD0oZi1oKS9NYXRoLm1heCgxLG4tcysyKmMpLG8mJih0PU1hdGguZmxvb3IodCkpLGgrPShmLWgtdCoobi1zKSkqdSxlPXQqKDEtcyksbyYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBkPWsobikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaCt0KmV9KSk7cmV0dXJuIGkobD9kLnJldmVyc2UoKTpkKX1yZXR1cm4gZGVsZXRlIG4udW5rbm93bixuLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxsKCkpOnIoKX0sbi5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1bK3RbMF0sK3RbMV1dLGwoKSk6YS5zbGljZSgpfSxuLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGE9Wyt0WzBdLCt0WzFdXSxvPSEwLGwoKX0sbi5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ISF0LGwoKSk6b30sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsYz0rdCksbCgpKTpzfSxuLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHQpLGwoKSk6c30sbi5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbCgpKTpjfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksbCgpKTp1fSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZHkocigpLGEpLnJvdW5kKG8pLnBhZGRpbmdJbm5lcihzKS5wYWRkaW5nT3V0ZXIoYykuYWxpZ24odSl9LG95LmFwcGx5KGwoKSxhcmd1bWVudHMpfWZ1bmN0aW9uIHB5KHQpe3ZhciBlPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHB5KGUoKSl9LHR9ZnVuY3Rpb24geXkoKXtyZXR1cm4gcHkoZHkuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9ZnVuY3Rpb24gZ3kodCl7cmV0dXJuK3R9dmFyIG15PVswLDFdO2Z1bmN0aW9uIHZ5KHQpe3JldHVybiB0fWZ1bmN0aW9uIGJ5KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9OihuPWlzTmFOKGUpP05hTjouNSxmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIG59ZnVuY3Rpb24gX3kodCl7dmFyIGUsbj10WzBdLHI9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gbj5yJiYoZT1uLG49cixyPWUpLGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKHIsdCkpfX1mdW5jdGlvbiB4eSh0LGUsbil7dmFyIHI9dFswXSxpPXRbMV0sYT1lWzBdLG89ZVsxXTtyZXR1cm4gaTxyPyhyPWJ5KGksciksYT1uKG8sYSkpOihyPWJ5KHIsaSksYT1uKGEsbykpLGZ1bmN0aW9uKHQpe3JldHVybiBhKHIodCkpfX1mdW5jdGlvbiB3eSh0LGUsbil7dmFyIHI9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz0tMTtmb3IodFtyXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytvPHI7KWlbb109YnkodFtvXSx0W28rMV0pLGFbb109bihlW29dLGVbbysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXUodCxlLDEsciktMTtyZXR1cm4gYVtuXShpW25dKGUpKX19ZnVuY3Rpb24ga3kodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gVHkoKXt2YXIgdCxlLG4scixpLGEsbz1teSxzPW15LGM9TW4sdT12eTtmdW5jdGlvbiBsKCl7cmV0dXJuIHI9TWF0aC5taW4oby5sZW5ndGgscy5sZW5ndGgpPjI/d3k6eHksaT1hPW51bGwsaH1mdW5jdGlvbiBoKGUpe3JldHVybiBpc05hTihlPStlKT9uOihpfHwoaT1yKG8ubWFwKHQpLHMsYykpKSh0KHUoZSkpKX1yZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIHUoZSgoYXx8KGE9cihzLG8ubWFwKHQpLFRuKSkpKG4pKSl9LGguZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXV5LmNhbGwodCxneSksdT09PXZ5fHwodT1feShvKSksbCgpKTpvLnNsaWNlKCl9LGgucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bHkuY2FsbCh0KSxsKCkpOnMuc2xpY2UoKX0saC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPWx5LmNhbGwodCksYz1NcCxsKCl9LGguY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dD9feShvKTp2eSxoKTp1IT09dnl9LGguaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxsKCkpOmN9LGgudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGgpOm59LGZ1bmN0aW9uKG4scil7cmV0dXJuIHQ9bixlPXIsbCgpfX1mdW5jdGlvbiBFeSh0LGUpe3JldHVybiBUeSgpKHQsZSl9ZnVuY3Rpb24gQ3kodCxlLG4scil7dmFyIGksYT1NKHQsZSxuKTtzd2l0Y2goKHI9Y2MobnVsbD09cj8iLGYiOnIpKS50eXBlKXtjYXNlInMiOnZhciBvPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9eGMoYSxvKSl8fChyLnByZWNpc2lvbj1pKSx5YyhyLG8pO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPXIucHJlY2lzaW9ufHxpc05hTihpPXdjKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChyLnByZWNpc2lvbj1pLSgiZSI9PT1yLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9X2MoYSkpfHwoci5wcmVjaXNpb249aS0yKigiJSI9PT1yLnR5cGUpKX1yZXR1cm4gcGMocil9ZnVuY3Rpb24gU3kodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiBTKG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKCk7cmV0dXJuIEN5KHJbMF0scltyLmxlbmd0aC0xXSxudWxsPT10PzEwOnQsbil9LHQubmljZT1mdW5jdGlvbihuKXtudWxsPT1uJiYobj0xMCk7dmFyIHIsaT1lKCksYT0wLG89aS5sZW5ndGgtMSxzPWlbYV0sYz1pW29dO3JldHVybiBjPHMmJihyPXMscz1jLGM9cixyPWEsYT1vLG89ciksKHI9QShzLGMsbikpPjA/cj1BKHM9TWF0aC5mbG9vcihzL3IpKnIsYz1NYXRoLmNlaWwoYy9yKSpyLG4pOnI8MCYmKHI9QShzPU1hdGguY2VpbChzKnIpL3IsYz1NYXRoLmZsb29yKGMqcikvcixuKSkscj4wPyhpW2FdPU1hdGguZmxvb3Iocy9yKSpyLGlbb109TWF0aC5jZWlsKGMvcikqcixlKGkpKTpyPDAmJihpW2FdPU1hdGguY2VpbChzKnIpL3IsaVtvXT1NYXRoLmZsb29yKGMqcikvcixlKGkpKSx0fSx0fWZ1bmN0aW9uIEF5KCl7dmFyIHQ9RXkodnksdnkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4ga3kodCxBeSgpKX0sb3kuYXBwbHkodCxhcmd1bWVudHMpLFN5KHQpfWZ1bmN0aW9uIE15KHQpe3ZhciBlO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGlzTmFOKHQ9K3QpP2U6dH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXV5LmNhbGwoZSxneSksbik6dC5zbGljZSgpfSxuLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTXkodCkudW5rbm93bihlKX0sdD1hcmd1bWVudHMubGVuZ3RoP3V5LmNhbGwodCxneSk6WzAsMV0sU3kobil9ZnVuY3Rpb24gTnkodCxlKXt2YXIgbixyPTAsaT0odD10LnNsaWNlKCkpLmxlbmd0aC0xLGE9dFtyXSxvPXRbaV07cmV0dXJuIG88YSYmKG49cixyPWksaT1uLG49YSxhPW8sbz1uKSx0W3JdPWUuZmxvb3IoYSksdFtpXT1lLmNlaWwobyksdH1mdW5jdGlvbiBEeSh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gT3kodCl7cmV0dXJuIE1hdGguZXhwKHQpfWZ1bmN0aW9uIEJ5KHQpe3JldHVybi1NYXRoLmxvZygtdCl9ZnVuY3Rpb24gTHkodCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiBJeSh0KXtyZXR1cm4gaXNGaW5pdGUodCk/KygiMWUiK3QpOnQ8MD8wOnR9ZnVuY3Rpb24gUnkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi10KC1lKX19ZnVuY3Rpb24gRnkodCl7dmFyIGUsbixyPXQoRHksT3kpLGk9ci5kb21haW4sYT0xMDtmdW5jdGlvbiBvKCl7cmV0dXJuIGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvdH0pfShhKSxuPWZ1bmN0aW9uKHQpe3JldHVybiAxMD09PXQ/SXk6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KGEpLGkoKVswXTwwPyhlPVJ5KGUpLG49UnkobiksdChCeSxMeSkpOnQoRHksT3kpLHJ9cmV0dXJuIHIuYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxvKCkpOmF9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLG8oKSk6aSgpfSxyLnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciByLG89aSgpLHM9b1swXSxjPW9bby5sZW5ndGgtMV07KHI9YzxzKSYmKGY9cyxzPWMsYz1mKTt2YXIgdSxsLGgsZj1lKHMpLGQ9ZShjKSxwPW51bGw9PXQ/MTA6K3QseT1bXTtpZighKGElMSkmJmQtZjxwKXtpZihmPU1hdGgucm91bmQoZiktMSxkPU1hdGgucm91bmQoZCkrMSxzPjApe2Zvcig7ZjxkOysrZilmb3IobD0xLHU9bihmKTtsPGE7KytsKWlmKCEoKGg9dSpsKTxzKSl7aWYoaD5jKWJyZWFrO3kucHVzaChoKX19ZWxzZSBmb3IoO2Y8ZDsrK2YpZm9yKGw9YS0xLHU9bihmKTtsPj0xOy0tbClpZighKChoPXUqbCk8cykpe2lmKGg+YylicmVhazt5LnB1c2goaCl9fWVsc2UgeT1TKGYsZCxNYXRoLm1pbihkLWYscCkpLm1hcChuKTtyZXR1cm4gcj95LnJldmVyc2UoKTp5fSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxpKXtpZihudWxsPT1pJiYoaT0xMD09PWE/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmKGk9cGMoaSkpLHQ9PT0xLzApcmV0dXJuIGk7bnVsbD09dCYmKHQ9MTApO3ZhciBvPU1hdGgubWF4KDEsYSp0L3IudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10L24oTWF0aC5yb3VuZChlKHQpKSk7cmV0dXJuIHIqYTxhLS41JiYocio9YSkscjw9bz9pKHQpOiIifX0sci5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGkoTnkoaSgpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmZsb29yKGUodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmNlaWwoZSh0KSkpfX0pKX0scn1mdW5jdGlvbiBQeSgpe3ZhciB0PUZ5KFR5KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4ga3kodCxQeSgpKS5iYXNlKHQuYmFzZSgpKX0sb3kuYXBwbHkodCxhcmd1bWVudHMpLHR9ZnVuY3Rpb24gankodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5sb2cxcChNYXRoLmFicyhlL3QpKX19ZnVuY3Rpb24gWXkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5leHBtMShNYXRoLmFicyhlKSkqdH19ZnVuY3Rpb24genkodCl7dmFyIGU9MSxuPXQoankoZSksWXkoZSkpO3JldHVybiBuLmNvbnN0YW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QoankoZT0rbiksWXkoZSkpOmV9LFN5KG4pfWZ1bmN0aW9uIFV5KCl7dmFyIHQ9enkoVHkoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBreSh0LFV5KCkpLmNvbnN0YW50KHQuY29uc3RhbnQoKSl9LG95LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBxeSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGU8MD8tTWF0aC5wb3coLWUsdCk6TWF0aC5wb3coZSx0KX19ZnVuY3Rpb24gSHkodCl7cmV0dXJuIHQ8MD8tTWF0aC5zcXJ0KC10KTpNYXRoLnNxcnQodCl9ZnVuY3Rpb24gJHkodCl7cmV0dXJuIHQ8MD8tdCp0OnQqdH1mdW5jdGlvbiBXeSh0KXt2YXIgZT10KHZ5LHZ5KSxuPTE7ZnVuY3Rpb24gcigpe3JldHVybiAxPT09bj90KHZ5LHZ5KTouNT09PW4/dChIeSwkeSk6dChxeShuKSxxeSgxL24pKX1yZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxyKCkpOm59LFN5KGUpfWZ1bmN0aW9uIFZ5KCl7dmFyIHQ9V3koVHkoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBreSh0LFZ5KCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LG95LmFwcGx5KHQsYXJndW1lbnRzKSx0fWZ1bmN0aW9uIEd5KCl7cmV0dXJuIFZ5LmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9ZnVuY3Rpb24gWHkoKXt2YXIgdCxlPVtdLG49W10scj1bXTtmdW5jdGlvbiBhKCl7dmFyIHQ9MCxpPU1hdGgubWF4KDEsbi5sZW5ndGgpO2ZvcihyPW5ldyBBcnJheShpLTEpOysrdDxpOylyW3QtMV09TyhlLHQvaSk7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW3UocixlKV19cmV0dXJuIG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBpPW4uaW5kZXhPZih0KTtyZXR1cm4gaTwwP1tOYU4sTmFOXTpbaT4wP3JbaS0xXTplWzBdLGk8ci5sZW5ndGg/cltpXTplW2UubGVuZ3RoLTFdXX0sby5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2Zvcih2YXIgbixyPTAsbz10Lmxlbmd0aDtyPG87KytyKW51bGw9PShuPXRbcl0pfHxpc05hTihuPStuKXx8ZS5wdXNoKG4pO3JldHVybiBlLnNvcnQoaSksYSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWx5LmNhbGwodCksYSgpKTpuLnNsaWNlKCl9LG8udW5rbm93bj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG8pOnR9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFh5KCkuZG9tYWluKGUpLnJhbmdlKG4pLnVua25vd24odCl9LG95LmFwcGx5KG8sYXJndW1lbnRzKX1mdW5jdGlvbiBaeSgpe3ZhciB0LGU9MCxuPTEscj0xLGk9Wy41XSxhPVswLDFdO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGU8PWU/YVt1KGksZSwwLHIpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3IoaT1uZXcgQXJyYXkocik7Kyt0PHI7KWlbdF09KCh0KzEpKm4tKHQtcikqZSkvKHIrMSk7cmV0dXJuIG99cmV0dXJuIG8uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sby5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0oYT1seS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOmEuc2xpY2UoKX0sby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG89YS5pbmRleE9mKHQpO3JldHVybiBvPDA/W05hTixOYU5dOm88MT9bZSxpWzBdXTpvPj1yP1tpW3ItMV0sbl06W2lbby0xXSxpW29dXX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6b30sby50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFp5KCkuZG9tYWluKFtlLG5dKS5yYW5nZShhKS51bmtub3duKHQpfSxveS5hcHBseShTeShvKSxhcmd1bWVudHMpfWZ1bmN0aW9uIFF5KCl7dmFyIHQsZT1bLjVdLG49WzAsMV0scj0xO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIGk8PWk/blt1KGUsaSwwLHIpXTp0fXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1seS5jYWxsKHQpLHI9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSksaSk6ZS5zbGljZSgpfSxpLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWx5LmNhbGwodCkscj1NYXRoLm1pbihlLmxlbmd0aCxuLmxlbmd0aC0xKSxpKTpuLnNsaWNlKCl9LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciByPW4uaW5kZXhPZih0KTtyZXR1cm5bZVtyLTFdLGVbcl1dfSxpLnVua25vd249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxpKTp0fSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUXkoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sb3kuYXBwbHkoaSxhcmd1bWVudHMpfXZhciBLeT1uZXcgRGF0ZSxKeT1uZXcgRGF0ZTtmdW5jdGlvbiB0Zyh0LGUsbixyKXtmdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxpLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxpLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj1pLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxpLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxpLnJhbmdlPWZ1bmN0aW9uKG4scixhKXt2YXIgbyxzPVtdO2lmKG49aS5jZWlsKG4pLGE9bnVsbD09YT8xOk1hdGguZmxvb3IoYSksIShuPHImJmE+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKG89bmV3IERhdGUoK24pKSxlKG4sYSksdChuKX13aGlsZShvPG4mJm48cik7cmV0dXJuIHN9LGkuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiB0ZygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQscil7aWYodD49dClpZihyPDApZm9yKDsrK3I8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLXI+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoaS5jb3VudD1mdW5jdGlvbihlLHIpe3JldHVybiBLeS5zZXRUaW1lKCtlKSxKeS5zZXRUaW1lKCtyKSx0KEt5KSx0KEp5KSxNYXRoLmZsb29yKG4oS3ksSnkpKX0saS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2kuZmlsdGVyKHI/ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY291bnQoMCxlKSV0PT0wfSk6aTpudWxsfSksaX12YXIgZWc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO2VnLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dGcoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IG5nPWVnO3ZhciByZz1lZy5yYW5nZSxpZz10ZygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpO2NvbnN0IGFnPWlnO3ZhciBvZz1pZy5yYW5nZSxzZz0xZTMsY2c9NmU0LHVnPTM2ZTUsbGc9ODY0ZTUsaGc9NjA0OGU1O2Z1bmN0aW9uIGZnKHQpe3JldHVybiB0ZygoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqY2cpL2hnfSkpfXZhciBkZz1mZygwKSxwZz1mZygxKSx5Zz1mZygyKSxnZz1mZygzKSxtZz1mZyg0KSx2Zz1mZyg1KSxiZz1mZyg2KSxfZz1kZy5yYW5nZSx4Zz1wZy5yYW5nZSx3Zz15Zy5yYW5nZSxrZz1nZy5yYW5nZSxUZz1tZy5yYW5nZSxFZz12Zy5yYW5nZSxDZz1iZy5yYW5nZSxTZz10ZygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmNnKS9sZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtjb25zdCBBZz1TZzt2YXIgTWc9U2cucmFuZ2UsTmc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqc2ctdC5nZXRNaW51dGVzKCkqY2cpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdWcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdWd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKTtjb25zdCBEZz1OZzt2YXIgT2c9TmcucmFuZ2UsQmc9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqc2cpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqY2cpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvY2d9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpO2NvbnN0IExnPUJnO3ZhciBJZz1CZy5yYW5nZSxSZz10ZygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpzZyl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9zZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSk7Y29uc3QgRmc9Umc7dmFyIFBnPVJnLnJhbmdlLGpnPXRnKChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7amcuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT90ZygoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpqZzpudWxsfTtjb25zdCBZZz1qZzt2YXIgemc9amcucmFuZ2U7ZnVuY3Rpb24gVWcodCl7cmV0dXJuIHRnKChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9oZ30pKX12YXIgcWc9VWcoMCksSGc9VWcoMSksJGc9VWcoMiksV2c9VWcoMyksVmc9VWcoNCksR2c9VWcoNSksWGc9VWcoNiksWmc9cWcucmFuZ2UsUWc9SGcucmFuZ2UsS2c9JGcucmFuZ2UsSmc9V2cucmFuZ2UsdG09VmcucmFuZ2UsZW09R2cucmFuZ2Usbm09WGcucmFuZ2Uscm09dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9sZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKTtjb25zdCBpbT1ybTt2YXIgYW09cm0ucmFuZ2Usb209dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO29tLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dGcoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O2NvbnN0IHNtPW9tO3ZhciBjbT1vbS5yYW5nZTtmdW5jdGlvbiB1bSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gbG0odCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gaG0odCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIGZtKHQpe3ZhciBlPXQuZGF0ZVRpbWUsbj10LmRhdGUscj10LnRpbWUsaT10LnBlcmlvZHMsYT10LmRheXMsbz10LnNob3J0RGF5cyxzPXQubW9udGhzLGM9dC5zaG9ydE1vbnRocyx1PVRtKGkpLGw9RW0oaSksaD1UbShhKSxmPUVtKGEpLGQ9VG0obykscD1FbShvKSx5PVRtKHMpLGc9RW0ocyksbT1UbShjKSx2PUVtKGMpLGI9e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDpXbSxlOldtLGY6UW0sZzpjdixHOmx2LEg6Vm0sSTpHbSxqOlhtLEw6Wm0sbTpLbSxNOkptLHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRNb250aCgpLzMpfSxROkJ2LHM6THYsUzp0dix1OmV2LFU6bnYsVjppdix3OmF2LFc6b3YseDpudWxsLFg6bnVsbCx5OnN2LFk6dXYsWjpodiwiJSI6T3Z9LF89e2E6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRVVENNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpmdixlOmZ2LGY6bXYsZzpBdixHOk52LEg6ZHYsSTpwdixqOnl2LEw6Z3YsbTp2dixNOmJ2LHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24odCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROkJ2LHM6THYsUzpfdix1Onh2LFU6d3YsVjpUdix3OkV2LFc6Q3YseDpudWxsLFg6bnVsbCx5OlN2LFk6TXYsWjpEdiwiJSI6T3Z9LHg9e2E6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC53PXBbclswXS50b0xvd2VyQ2FzZSgpXSxuK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LGUsbil7dmFyIHI9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0Lnc9ZltyWzBdLnRvTG93ZXJDYXNlKCldLG4rclswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQubT12W3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXkuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5tPWdbclswXS50b0xvd2VyQ2FzZSgpXSxuK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LG4scil7cmV0dXJuIFQodCxlLG4scil9LGQ6Um0sZTpSbSxmOlVtLGc6T20sRzpEbSxIOlBtLEk6UG0sajpGbSxMOnptLG06SW0sTTpqbSxwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj11LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIHI/KHQucD1sW3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LHE6TG0sUTpIbSxzOiRtLFM6WW0sdTpTbSxVOkFtLFY6TW0sdzpDbSxXOk5tLHg6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBUKHQsbixlLHIpfSxYOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gVCh0LHIsZSxuKX0seTpPbSxZOkRtLFo6Qm0sIiUiOnFtfTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYSxvPVtdLHM9LTEsYz0wLHU9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczx1OykzNz09PXQuY2hhckNvZGVBdChzKSYmKG8ucHVzaCh0LnNsaWNlKGMscykpLG51bGwhPShpPXZtW3I9dC5jaGFyQXQoKytzKV0pP3I9dC5jaGFyQXQoKytzKTppPSJlIj09PXI/IiAiOiIwIiwoYT1lW3JdKSYmKHI9YShuLGkpKSxvLnB1c2gociksYz1zKzEpO3JldHVybiBvLnB1c2godC5zbGljZShjLHMpKSxvLmpvaW4oIiIpfX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksYT1obSgxOTAwLHZvaWQgMCwxKTtpZihUKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0ocj1sbShobShhLnksMCwxKSkpLmdldFVUQ0RheSgpLHI9aT40fHwwPT09aT9IZy5jZWlsKHIpOkhnKHIpLHI9aW0ub2Zmc2V0KHIsNyooYS5WLTEpKSxhLnk9ci5nZXRVVENGdWxsWWVhcigpLGEubT1yLmdldFVUQ01vbnRoKCksYS5kPXIuZ2V0VVRDRGF0ZSgpKyhhLncrNiklNyk6KGk9KHI9dW0oaG0oYS55LDAsMSkpKS5nZXREYXkoKSxyPWk+NHx8MD09PWk/cGcuY2VpbChyKTpwZyhyKSxyPUFnLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0RnVsbFllYXIoKSxhLm09ci5nZXRNb250aCgpLGEuZD1yLmdldERhdGUoKSsoYS53KzYpJTcpfWVsc2UoIlciaW4gYXx8IlUiaW4gYSkmJigidyJpbiBhfHwoYS53PSJ1ImluIGE/YS51JTc6IlciaW4gYT8xOjApLGk9IloiaW4gYT9sbShobShhLnksMCwxKSkuZ2V0VVRDRGF5KCk6dW0oaG0oYS55LDAsMSkpLmdldERheSgpLGEubT0wLGEuZD0iVyJpbiBhPyhhLncrNiklNys3KmEuVy0oaSs1KSU3OmEudys3KmEuVS0oaSs2KSU3KTtyZXR1cm4iWiJpbiBhPyhhLkgrPWEuWi8xMDB8MCxhLk0rPWEuWiUxMDAsbG0oYSkpOnVtKGEpfX1mdW5jdGlvbiBUKHQsZSxuLHIpe2Zvcih2YXIgaSxhLG89MCxzPWUubGVuZ3RoLGM9bi5sZW5ndGg7bzxzOyl7aWYocj49YylyZXR1cm4tMTtpZigzNz09PShpPWUuY2hhckNvZGVBdChvKyspKSl7aWYoaT1lLmNoYXJBdChvKyspLCEoYT14W2kgaW4gdm0/ZS5jaGFyQXQobysrKTppXSl8fChyPWEodCxuLHIpKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9bi5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9cmV0dXJuIGIueD13KG4sYiksYi5YPXcocixiKSxiLmM9dyhlLGIpLF8ueD13KG4sXyksXy5YPXcocixfKSxfLmM9dyhlLF8pLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixiKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dyh0Kz0iIixfKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1rKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19dmFyIGRtLHBtLHltLGdtLG1tLHZtPXsiLSI6IiIsXzoiICIsMDoiMCJ9LGJtPS9eXHMqXGQrLyxfbT0vXiUvLHhtPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB3bSh0LGUsbil7dmFyIHI9dDwwPyItIjoiIixpPShyPy10OnQpKyIiLGE9aS5sZW5ndGg7cmV0dXJuIHIrKGE8bj9uZXcgQXJyYXkobi1hKzEpLmpvaW4oZSkraTppKX1mdW5jdGlvbiBrbSh0KXtyZXR1cm4gdC5yZXBsYWNlKHhtLCJcXCQmIil9ZnVuY3Rpb24gVG0odCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGttKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gRW0odCl7Zm9yKHZhciBlPXt9LG49LTEscj10Lmxlbmd0aDsrK248cjspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gQ20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiByPyh0LnU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQW0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlU9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTW0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0LlY9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTm0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Llc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRG0odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiByPyh0Lnk9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gT20odCxlLG4pe3ZhciByPWJtLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiByPyh0Lnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCbSh0LGUsbil7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIExtKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8odC5xPTMqclswXS0zLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEltKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBZbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB6bSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KHQuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBxbSh0LGUsbil7dmFyIHI9X20uZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/bityWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBIbSh0LGUsbil7dmFyIHI9Ym0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gcj8odC5RPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uICRtKHQsZSxuKXt2YXIgcj1ibS5leGVjKGUuc2xpY2UobikpO3JldHVybiByPyh0LnM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gV20odCxlKXtyZXR1cm4gd20odC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBWbSh0LGUpe3JldHVybiB3bSh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBHbSh0LGUpe3JldHVybiB3bSh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gWG0odCxlKXtyZXR1cm4gd20oMStBZy5jb3VudChuZyh0KSx0KSxlLDMpfWZ1bmN0aW9uIFptKHQsZSl7cmV0dXJuIHdtKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBRbSh0LGUpe3JldHVybiBabSh0LGUpKyIwMDAifWZ1bmN0aW9uIEttKHQsZSl7cmV0dXJuIHdtKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gSm0odCxlKXtyZXR1cm4gd20odC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiB0dih0LGUpe3JldHVybiB3bSh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIGV2KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBudih0LGUpe3JldHVybiB3bShkZy5jb3VudChuZyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gcnYodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/bWcodCk6bWcuY2VpbCh0KX1mdW5jdGlvbiBpdih0LGUpe3JldHVybiB0PXJ2KHQpLHdtKG1nLmNvdW50KG5nKHQpLHQpKyg0PT09bmcodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gYXYodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gb3YodCxlKXtyZXR1cm4gd20ocGcuY291bnQobmcodCktMSx0KSxlLDIpfWZ1bmN0aW9uIHN2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBjdih0LGUpe3JldHVybiB3bSgodD1ydih0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB1dih0LGUpe3JldHVybiB3bSh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gbHYodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB3bSgodD1uPj00fHwwPT09bj9tZyh0KTptZy5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGh2KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrd20oZS82MHwwLCIwIiwyKSt3bShlJTYwLCIwIiwyKX1mdW5jdGlvbiBmdih0LGUpe3JldHVybiB3bSh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIGR2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIHB2KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiB5dih0LGUpe3JldHVybiB3bSgxK2ltLmNvdW50KHNtKHQpLHQpLGUsMyl9ZnVuY3Rpb24gZ3YodCxlKXtyZXR1cm4gd20odC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIG12KHQsZSl7cmV0dXJuIGd2KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gdnYodCxlKXtyZXR1cm4gd20odC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBidih0LGUpe3JldHVybiB3bSh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIF92KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24geHYodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIHd2KHQsZSl7cmV0dXJuIHdtKHFnLmNvdW50KHNtKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBrdih0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9WZyh0KTpWZy5jZWlsKHQpfWZ1bmN0aW9uIFR2KHQsZSl7cmV0dXJuIHQ9a3YodCksd20oVmcuY291bnQoc20odCksdCkrKDQ9PT1zbSh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBFdih0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBDdih0LGUpe3JldHVybiB3bShIZy5jb3VudChzbSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gU3YodCxlKXtyZXR1cm4gd20odC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEF2KHQsZSl7cmV0dXJuIHdtKCh0PWt2KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIE12KHQsZSl7cmV0dXJuIHdtKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBOdih0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHdtKCh0PW4+PTR8fDA9PT1uP1ZnKHQpOlZnLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gRHYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIE92KCl7cmV0dXJuIiUifWZ1bmN0aW9uIEJ2KHQpe3JldHVybit0fWZ1bmN0aW9uIEx2KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9ZnVuY3Rpb24gSXYodCl7cmV0dXJuIGRtPWZtKHQpLHBtPWRtLmZvcm1hdCx5bT1kbS5wYXJzZSxnbT1kbS51dGNGb3JtYXQsbW09ZG0udXRjUGFyc2UsZG19SXYoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgUnY9MzE1MzZlNjtmdW5jdGlvbiBGdih0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gUHYodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24ganYodCxlLG4scixpLG8scyxjLHUpe3ZhciBsPUV5KHZ5LHZ5KSxoPWwuaW52ZXJ0LGY9bC5kb21haW4sZD11KCIuJUwiKSxwPXUoIjolUyIpLHk9dSgiJUk6JU0iKSxnPXUoIiVJICVwIiksbT11KCIlYSAlZCIpLHY9dSgiJWIgJWQiKSxiPXUoIiVCIiksXz11KCIlWSIpLHg9W1tzLDEsMWUzXSxbcyw1LDVlM10sW3MsMTUsMTVlM10sW3MsMzAsM2U0XSxbbywxLDZlNF0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW2ksMSwzNmU1XSxbaSwzLDEwOGU1XSxbaSw2LDIxNmU1XSxbaSwxMiw0MzJlNV0sW3IsMSw4NjRlNV0sW3IsMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsUnZdXTtmdW5jdGlvbiB3KGEpe3JldHVybihzKGEpPGE/ZDpvKGEpPGE/cDppKGEpPGE/eTpyKGEpPGE/ZzplKGEpPGE/bihhKTxhP206djp0KGEpPGE/YjpfKShhKX1mdW5jdGlvbiBrKGUsbixyLGkpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKHItbikvZSxzPWEoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KHgsbyk7cz09PXgubGVuZ3RoPyhpPU0obi9SdixyL1J2LGUpLGU9dCk6cz8oaT0ocz14W28veFtzLTFdWzJdPHhbc11bMl0vbz9zLTE6c10pWzFdLGU9c1swXSk6KGk9TWF0aC5tYXgoTShuLHIsZSksMSksZT1jKX1yZXR1cm4gbnVsbD09aT9lOmUuZXZlcnkoaSl9cmV0dXJuIGwuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShoKHQpKX0sbC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/Zih1eS5jYWxsKHQsUHYpKTpmKCkubWFwKEZ2KX0sbC50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLHI9ZigpLGk9clswXSxhPXJbci5sZW5ndGgtMV0sbz1hPGk7cmV0dXJuIG8mJihuPWksaT1hLGE9biksbj0obj1rKHQsaSxhLGUpKT9uLnJhbmdlKGksYSsxKTpbXSxvP24ucmV2ZXJzZSgpOm59LGwudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3c6dShlKX0sbC5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZigpO3JldHVybih0PWsodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2YoTnkobix0KSk6bH0sbC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGt5KGwsanYodCxlLG4scixpLG8scyxjLHUpKX0sbH1mdW5jdGlvbiBZdigpe3JldHVybiBveS5hcHBseShqdihuZyxhZyxkZyxBZyxEZyxMZyxGZyxZZyxwbSkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9dmFyIHp2PXRnKChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSk7Y29uc3QgVXY9enY7dmFyIHF2PXp2LnJhbmdlLEh2PXRnKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdWcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdWd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKTtjb25zdCAkdj1Idjt2YXIgV3Y9SHYucmFuZ2UsVnY9dGcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqY2cpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvY2d9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpO2NvbnN0IEd2PVZ2O3ZhciBYdj1Wdi5yYW5nZTtmdW5jdGlvbiBadigpe3JldHVybiBveS5hcHBseShqdihzbSxVdixxZyxpbSwkdixHdixGZyxZZyxnbSkuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUXYoKXt2YXIgdCxlLG4scixpLGE9MCxvPTEscz12eSxjPSExO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP2k6cygwPT09bj8uNTooZT0ocihlKS10KSpuLGM/TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKTplKSl9cmV0dXJuIHUuZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXIoYT0raVswXSksZT1yKG89K2lbMV0pLG49dD09PWU/MDoxLyhlLXQpLHUpOlthLG9dfSx1LmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSEhdCx1KTpjfSx1LmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LHUpOnN9LHUudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHUpOml9LGZ1bmN0aW9uKGkpe3JldHVybiByPWksdD1pKGEpLGU9aShvKSxuPXQ9PT1lPzA6MS8oZS10KSx1fX1mdW5jdGlvbiBLdih0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5pbnRlcnBvbGF0b3IodC5pbnRlcnBvbGF0b3IoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBKdigpe3ZhciB0PVN5KFF2KCkodnkpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEt2KHQsSnYoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiB0Yigpe3ZhciB0PUZ5KFF2KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCx0YigpKS5iYXNlKHQuYmFzZSgpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIGViKCl7dmFyIHQ9enkoUXYoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LGViKCkpLmNvbnN0YW50KHQuY29uc3RhbnQoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBuYigpe3ZhciB0PVd5KFF2KCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCxuYigpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxzeS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmIoKXtyZXR1cm4gbmIuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX1mdW5jdGlvbiBpYigpe3ZhciB0PVtdLGU9dnk7ZnVuY3Rpb24gbihuKXtpZighaXNOYU4obj0rbikpcmV0dXJuIGUoKHUodCxuKS0xKS8odC5sZW5ndGgtMSkpfXJldHVybiBuLmRvbWFpbj1mdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W107Zm9yKHZhciByLGE9MCxvPWUubGVuZ3RoO2E8bzsrK2EpbnVsbD09KHI9ZVthXSl8fGlzTmFOKHI9K3IpfHx0LnB1c2gocik7cmV0dXJuIHQuc29ydChpKSxufSxuLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBpYihlKS5kb21haW4odCl9LHN5LmFwcGx5KG4sYXJndW1lbnRzKX1mdW5jdGlvbiBhYigpe3ZhciB0LGUsbixyLGksYSxvLHM9MCxjPS41LHU9MSxsPXZ5LGg9ITE7ZnVuY3Rpb24gZih0KXtyZXR1cm4gaXNOYU4odD0rdCk/bzoodD0uNSsoKHQ9K2EodCkpLWUpKih0PGU/cjppKSxsKGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9cmV0dXJuIGYuZG9tYWluPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWEocz0rb1swXSksZT1hKGM9K29bMV0pLG49YSh1PStvWzJdKSxyPXQ9PT1lPzA6LjUvKGUtdCksaT1lPT09bj8wOi41LyhuLWUpLGYpOltzLGMsdV19LGYuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ISF0LGYpOmh9LGYuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsZik6bH0sZi51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsZik6b30sZnVuY3Rpb24obyl7cmV0dXJuIGE9byx0PW8ocyksZT1vKGMpLG49byh1KSxyPXQ9PT1lPzA6LjUvKGUtdCksaT1lPT09bj8wOi41LyhuLWUpLGZ9fWZ1bmN0aW9uIG9iKCl7dmFyIHQ9U3koYWIoKSh2eSkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS3YodCxvYigpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIHNiKCl7dmFyIHQ9RnkoYWIoKSkuZG9tYWluKFsuMSwxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LHNiKCkpLmJhc2UodC5iYXNlKCkpfSxzeS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gY2IoKXt2YXIgdD16eShhYigpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEt2KHQsY2IoKSkuY29uc3RhbnQodC5jb25zdGFudCgpKX0sc3kuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIHViKCl7dmFyIHQ9V3koYWIoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLdih0LHViKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LHN5LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBsYigpe3JldHVybiB1Yi5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIGhiKHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAsbj1uZXcgQXJyYXkoZSkscj0wO3I8ZTspbltyXT0iIyIrdC5zbGljZSg2KnIsNiorK3IpO3JldHVybiBufWNvbnN0IGZiPWhiKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxkYj1oYigiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IikscGI9aGIoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLHliPWhiKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxnYj1oYigiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksbWI9aGIoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLHZiPWhiKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxiYj1oYigiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksX2I9aGIoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLHhiPWhiKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKTtmdW5jdGlvbiB3Yih0KXtyZXR1cm4gbW4odFt0Lmxlbmd0aC0xXSl9dmFyIGtiPW5ldyBBcnJheSgzKS5jb25jYXQoImQ4YjM2NWY1ZjVmNTVhYjRhYyIsImE2NjExYWRmYzI3ZDgwY2RjMTAxODU3MSIsImE2NjExYWRmYzI3ZGY1ZjVmNTgwY2RjMTAxODU3MSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2M3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2Y1ZjVmNWM3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIpLm1hcChoYik7Y29uc3QgVGI9d2Ioa2IpO3ZhciBFYj1uZXcgQXJyYXkoMykuY29uY2F0KCJhZjhkYzNmN2Y3Zjc3ZmJmN2IiLCI3YjMyOTRjMmE1Y2ZhNmRiYTAwMDg4MzciLCI3YjMyOTRjMmE1Y2ZmN2Y3ZjdhNmRiYTAwMDg4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThmN2Y3ZjdkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiKS5tYXAoaGIpO2NvbnN0IENiPXdiKEViKTt2YXIgU2I9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKGhiKTtjb25zdCBBYj13YihTYik7dmFyIE1iPW5ldyBBcnJheSgzKS5jb25jYXQoIjk5OGVjM2Y3ZjdmN2YxYTM0MCIsIjVlM2M5OWIyYWJkMmZkYjg2M2U2NjEwMSIsIjVlM2M5OWIyYWJkMmY3ZjdmN2ZkYjg2M2U2NjEwMSIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmY3ZjdmN2ZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIpLm1hcChoYik7Y29uc3QgTmI9d2IoTWIpO3ZhciBEYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlZjhhNjJmN2Y3Zjc2N2E5Y2YiLCJjYTAwMjBmNGE1ODI5MmM1ZGUwNTcxYjAiLCJjYTAwMjBmNGE1ODJmN2Y3Zjc5MmM1ZGUwNTcxYjAiLCJiMjE4MmJlZjhhNjJmZGRiYzdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJlZjhhNjJmZGRiYzdmN2Y3ZjdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiKS5tYXAoaGIpO2NvbnN0IE9iPXdiKERiKTt2YXIgQmI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKGhiKTtjb25zdCBMYj13YihCYik7dmFyIEliPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxYmZkYiIsImQ3MTkxY2ZkYWU2MWFiZDllOTJjN2JiNiIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZDllOTJjN2JiNiIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGZmZmZiZmUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIpLm1hcChoYik7Y29uc3QgUmI9d2IoSWIpO3ZhciBGYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5MWNmNjAiLCJkNzE5MWNmZGFlNjFhNmQ5NmExYTk2NDEiLCJkNzE5MWNmZGFlNjFmZmZmYmZhNmQ5NmExYTk2NDEiLCJkNzMwMjdmYzhkNTlmZWUwOGJkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmYzhkNTlmZWUwOGJmZmZmYmZkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciKS5tYXAoaGIpO2NvbnN0IFBiPXdiKEZiKTt2YXIgamI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKGhiKTtjb25zdCBZYj13YihqYik7dmFyIHpiPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVmOTk5ZDhjOTJjYTI1ZiIsImVkZjhmYmIyZTJlMjY2YzJhNDIzOGI0NSIsImVkZjhmYmIyZTJlMjY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChoYik7Y29uc3QgVWI9d2IoemIpO3ZhciBxYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlMGVjZjQ5ZWJjZGE4ODU2YTciLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODQxOWQiLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ4MTBmN2M0ZDAwNGIiKS5tYXAoaGIpO2NvbnN0IEhiPXdiKHFiKTt2YXIgJGI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKGhiKTtjb25zdCBXYj13YigkYik7dmFyIFZiPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZThjOGZkYmI4NGUzNGEzMyIsImZlZjBkOWZkY2M4YWZjOGQ1OWQ3MzAxZiIsImZlZjBkOWZkY2M4YWZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZmIzMDAwMDdmMDAwMCIpLm1hcChoYik7Y29uc3QgR2I9d2IoVmIpO3ZhciBYYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlY2UyZjBhNmJkZGIxYzkwOTkiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YwMjgxOGEiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTZjNTkwMTQ2MzYiKS5tYXAoaGIpO2NvbnN0IFpiPXdiKFhiKTt2YXIgUWI9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKGhiKTtjb25zdCBLYj13YihRYik7dmFyIEpiPW5ldyBBcnJheSgzKS5jb25jYXQoImU3ZTFlZmM5OTRjN2RkMWM3NyIsImYxZWVmNmQ3YjVkOGRmNjViMGNlMTI1NiIsImYxZWVmNmQ3YjVkOGRmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1Njk4MDA0MzY3MDAxZiIpLm1hcChoYik7Y29uc3QgdF89d2IoSmIpO3ZhciBlXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZGUwZGRmYTlmYjVjNTFiOGEiLCJmZWViZTJmYmI0YjlmNzY4YTFhZTAxN2UiLCJmZWViZTJmYmI0YjlmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzc0OTAwNmEiKS5tYXAoaGIpO2NvbnN0IG5fPXdiKGVfKTt2YXIgcl89bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKGhiKTtjb25zdCBpXz13YihyXyk7dmFyIGFfPW5ldyBBcnJheSgzKS5jb25jYXQoImY3ZmNiOWFkZGQ4ZTMxYTM1NCIsImZmZmZjY2MyZTY5OTc4YzY3OTIzODQ0MyIsImZmZmZjY2MyZTY5OTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNjgzNzAwNDUyOSIpLm1hcChoYik7Y29uc3Qgb189d2IoYV8pO3ZhciBzXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZmY3YmNmZWM0NGZkOTVmMGUiLCJmZmZmZDRmZWQ5OGVmZTk5MjljYzRjMDIiLCJmZmZmZDRmZWQ5OGVmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI5OTM0MDQ2NjI1MDYiKS5tYXAoaGIpO2NvbnN0IGNfPXdiKHNfKTt2YXIgdV89bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKGhiKTtjb25zdCBsXz13Yih1Xyk7dmFyIGhfPW5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChoYik7Y29uc3QgZl89d2IoaF8pO3ZhciBkXz1uZXcgQXJyYXkoMykuY29uY2F0KCJlNWY1ZTBhMWQ5OWIzMWEzNTQiLCJlZGY4ZTliYWU0YjM3NGM0NzYyMzhiNDUiLCJlZGY4ZTliYWU0YjM3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDZkMmMwMDQ0MWIiKS5tYXAoaGIpO2NvbnN0IHBfPXdiKGRfKTt2YXIgeV89bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKGhiKTtjb25zdCBnXz13Yih5Xyk7dmFyIG1fPW5ldyBBcnJheSgzKS5jb25jYXQoImVmZWRmNWJjYmRkYzc1NmJiMSIsImYyZjBmN2NiYzllMjllOWFjODZhNTFhMyIsImYyZjBmN2NiYzllMjllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzU0Mjc4ZjNmMDA3ZCIpLm1hcChoYik7Y29uc3Qgdl89d2IobV8pO3ZhciBiXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWUwZDJmYzkyNzJkZTJkMjYiLCJmZWU1ZDlmY2FlOTFmYjZhNGFjYjE4MWQiLCJmZWU1ZDlmY2FlOTFmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWRhNTBmMTU2NzAwMGQiKS5tYXAoaGIpO2NvbnN0IF9fPXdiKGJfKTt2YXIgeF89bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKGhiKTtjb25zdCB3Xz13Yih4Xyk7ZnVuY3Rpb24ga18odCl7cmV0dXJuIHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSwicmdiKCIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgtNC41NC10KigzNS4zNC10KigyMzgxLjczLXQqKDY0MDIuNy10Kig3MDI0LjcyLTI3MTAuNTcqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDMyLjQ5K3QqKDE3MC43Myt0Kig1Mi44Mi10KigxMzEuNDYtdCooMTc2LjU4LTY3LjM3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCg4MS4yNCt0Kig0NDIuMzYtdCooMjQ4Mi40My10Kig2MTY3LjI0LXQqKDY2MTQuOTQtMjQ3NS42Nyp0KSkpKSkpKSsiKSJ9Y29uc3QgVF89VXAoSGEoMzAwLC41LDApLEhhKC0yNDAsLjUsMSkpO3ZhciBFXz1VcChIYSgtMTAwLC43NSwuMzUpLEhhKDgwLDEuNSwuOCkpLENfPVVwKEhhKDI2MCwuNzUsLjM1KSxIYSg4MCwxLjUsLjgpKSxTXz1IYSgpO2Z1bmN0aW9uIEFfKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gU18uaD0zNjAqdC0xMDAsU18ucz0xLjUtMS41KmUsU18ubD0uOC0uOSplLFNfKyIifXZhciBNXz1RZSgpLE5fPU1hdGguUEkvMyxEXz0yKk1hdGguUEkvMztmdW5jdGlvbiBPXyh0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxNXy5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxNXy5nPTI1NSooZT1NYXRoLnNpbih0K05fKSkqZSxNXy5iPTI1NSooZT1NYXRoLnNpbih0K0RfKSkqZSxNXysiIn1mdW5jdGlvbiBCXyh0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifWZ1bmN0aW9uIExfKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fWNvbnN0IElfPUxfKGhiKCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSk7dmFyIFJfPUxfKGhiKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksRl89TF8oaGIoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxQXz1MXyhoYigiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIGpfKHQpe3JldHVybiBUZShpZSh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfXZhciBZXz0wO2Z1bmN0aW9uIHpfKCl7cmV0dXJuIG5ldyBVX31mdW5jdGlvbiBVXygpe3RoaXMuXz0iQCIrKCsrWV8pLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBxXyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHhlKFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHhlKFtudWxsPT10P1tdOnRdLF9lKX1mdW5jdGlvbiBIXyh0LGUpe251bGw9PWUmJihlPU5uKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAscj1lP2UubGVuZ3RoOjAsaT1uZXcgQXJyYXkocik7bjxyOysrbilpW25dPURuKHQsZVtuXSk7cmV0dXJuIGl9ZnVuY3Rpb24gJF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fVVfLnByb3RvdHlwZT16Xy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVfLGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBXXz1NYXRoLmFicyxWXz1NYXRoLmF0YW4yLEdfPU1hdGguY29zLFhfPU1hdGgubWF4LFpfPU1hdGgubWluLFFfPU1hdGguc2luLEtfPU1hdGguc3FydCxKXz0xZS0xMix0eD1NYXRoLlBJLGV4PXR4LzIsbng9Mip0eDtmdW5jdGlvbiByeCh0KXtyZXR1cm4gdD4xPzA6dDwtMT90eDpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gaXgodCl7cmV0dXJuIHQ+PTE/ZXg6dDw9LTE/LWV4Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBheCh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBveCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBzeCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIGN4KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIHV4KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIGx4KHQsZSxuLHIsaSxhLG8scyl7dmFyIGM9bi10LHU9ci1lLGw9by1pLGg9cy1hLGY9aCpjLWwqdTtpZighKGYqZjxKXykpcmV0dXJuW3QrKGY9KGwqKGUtYSktaCoodC1pKSkvZikqYyxlK2YqdV19ZnVuY3Rpb24gaHgodCxlLG4scixpLGEsbyl7dmFyIHM9dC1uLGM9ZS1yLHU9KG8/YTotYSkvS18ocypzK2MqYyksbD11KmMsaD0tdSpzLGY9dCtsLGQ9ZStoLHA9bitsLHk9citoLGc9KGYrcCkvMixtPShkK3kpLzIsdj1wLWYsYj15LWQsXz12KnYrYipiLHg9aS1hLHc9Zip5LXAqZCxrPShiPDA/LTE6MSkqS18oWF8oMCx4KngqXy13KncpKSxUPSh3KmItdiprKS9fLEU9KC13KnYtYiprKS9fLEM9KHcqYit2KmspL18sUz0oLXcqditiKmspL18sQT1ULWcsTT1FLW0sTj1DLWcsRD1TLW07cmV0dXJuIEEqQStNKk0+TipOK0QqRCYmKFQ9QyxFPVMpLHtjeDpULGN5OkUseDAxOi1sLHkwMTotaCx4MTE6VCooaS94LTEpLHkxMTpFKihpL3gtMSl9fWZ1bmN0aW9uIGZ4KCl7dmFyIHQ9YXgsZT1veCxuPSRfKDApLHI9bnVsbCxpPXN4LGE9Y3gsbz11eCxzPW51bGw7ZnVuY3Rpb24gYygpe3ZhciBjLHUsbD0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaD0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1leCxkPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLWV4LHA9V18oZC1mKSx5PWQ+ZjtpZihzfHwocz1jPVdpKCkpLGg8bCYmKHU9aCxoPWwsbD11KSxoPkpfKWlmKHA+bngtSl8pcy5tb3ZlVG8oaCpHXyhmKSxoKlFfKGYpKSxzLmFyYygwLDAsaCxmLGQsIXkpLGw+Sl8mJihzLm1vdmVUbyhsKkdfKGQpLGwqUV8oZCkpLHMuYXJjKDAsMCxsLGQsZix5KSk7ZWxzZXt2YXIgZyxtLHY9ZixiPWQsXz1mLHg9ZCx3PXAsaz1wLFQ9by5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixFPVQ+Sl8mJihyPytyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpLXyhsKmwraCpoKSksQz1aXyhXXyhoLWwpLzIsK24uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxTPUMsQT1DO2lmKEU+Sl8pe3ZhciBNPWl4KEUvbCpRXyhUKSksTj1peChFL2gqUV8oVCkpOyh3LT0yKk0pPkpfPyhfKz1NKj15PzE6LTEseC09TSk6KHc9MCxfPXg9KGYrZCkvMiksKGstPTIqTik+Sl8/KHYrPU4qPXk/MTotMSxiLT1OKTooaz0wLHY9Yj0oZitkKS8yKX12YXIgRD1oKkdfKHYpLE89aCpRXyh2KSxCPWwqR18oeCksTD1sKlFfKHgpO2lmKEM+Sl8pe3ZhciBJLFI9aCpHXyhiKSxGPWgqUV8oYiksUD1sKkdfKF8pLGo9bCpRXyhfKTtpZihwPHR4JiYoST1seChELE8sUCxqLFIsRixCLEwpKSl7dmFyIFk9RC1JWzBdLHo9Ty1JWzFdLFU9Ui1JWzBdLHE9Ri1JWzFdLEg9MS9RXyhyeCgoWSpVK3oqcSkvKEtfKFkqWSt6KnopKktfKFUqVStxKnEpKSkvMiksJD1LXyhJWzBdKklbMF0rSVsxXSpJWzFdKTtTPVpfKEMsKGwtJCkvKEgtMSkpLEE9Wl8oQywoaC0kKS8oSCsxKSl9fWs+Sl8/QT5KXz8oZz1oeChQLGosRCxPLGgsQSx5KSxtPWh4KFIsRixCLEwsaCxBLHkpLHMubW92ZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksQTxDP3MuYXJjKGcuY3gsZy5jeSxBLFZfKGcueTAxLGcueDAxKSxWXyhtLnkwMSxtLngwMSksIXkpOihzLmFyYyhnLmN4LGcuY3ksQSxWXyhnLnkwMSxnLngwMSksVl8oZy55MTEsZy54MTEpLCF5KSxzLmFyYygwLDAsaCxWXyhnLmN5K2cueTExLGcuY3grZy54MTEpLFZfKG0uY3krbS55MTEsbS5jeCttLngxMSksIXkpLHMuYXJjKG0uY3gsbS5jeSxBLFZfKG0ueTExLG0ueDExKSxWXyhtLnkwMSxtLngwMSksIXkpKSk6KHMubW92ZVRvKEQsTykscy5hcmMoMCwwLGgsdixiLCF5KSk6cy5tb3ZlVG8oRCxPKSxsPkpfJiZ3PkpfP1M+Sl8/KGc9aHgoQixMLFIsRixsLC1TLHkpLG09aHgoRCxPLFAsaixsLC1TLHkpLHMubGluZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksUzxDP3MuYXJjKGcuY3gsZy5jeSxTLFZfKGcueTAxLGcueDAxKSxWXyhtLnkwMSxtLngwMSksIXkpOihzLmFyYyhnLmN4LGcuY3ksUyxWXyhnLnkwMSxnLngwMSksVl8oZy55MTEsZy54MTEpLCF5KSxzLmFyYygwLDAsbCxWXyhnLmN5K2cueTExLGcuY3grZy54MTEpLFZfKG0uY3krbS55MTEsbS5jeCttLngxMSkseSkscy5hcmMobS5jeCxtLmN5LFMsVl8obS55MTEsbS54MTEpLFZfKG0ueTAxLG0ueDAxKSwheSkpKTpzLmFyYygwLDAsbCx4LF8seSk6cy5saW5lVG8oQixMKX1lbHNlIHMubW92ZVRvKDAsMCk7aWYocy5jbG9zZVBhdGgoKSxjKXJldHVybiBzPW51bGwsYysiInx8bnVsbH1yZXR1cm4gYy5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBuPSgrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixyPSgraS5hcHBseSh0aGlzLGFyZ3VtZW50cykrICthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi10eC8yO3JldHVybltHXyhyKSpuLFFfKHIpKm5dfSxjLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6JF8oK2UpLGMpOnR9LGMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksYyk6ZX0sYy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksYyk6bn0sYy5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLGMpOnJ9LGMuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCt0KSxjKTppfSxjLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLGMpOmF9LGMucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksYyk6b30sYy5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW51bGw9PXQ/bnVsbDp0LGMpOnN9LGN9ZnVuY3Rpb24gZHgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHB4KHQpe3JldHVybiBuZXcgZHgodCl9ZnVuY3Rpb24geXgodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gZ3godCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gbXgoKXt2YXIgdD15eCxlPWd4LG49JF8oITApLHI9bnVsbCxpPXB4LGE9bnVsbDtmdW5jdGlvbiBvKG8pe3ZhciBzLGMsdSxsPW8ubGVuZ3RoLGg9ITE7Zm9yKG51bGw9PXImJihhPWkodT1XaSgpKSkscz0wO3M8PWw7KytzKSEoczxsJiZuKGM9b1tzXSxzLG8pKT09PWgmJigoaD0haCk/YS5saW5lU3RhcnQoKTphLmxpbmVFbmQoKSksaCYmYS5wb2ludCgrdChjLHMsbyksK2UoYyxzLG8pKTtpZih1KXJldHVybiBhPW51bGwsdSsiInx8bnVsbH1yZXR1cm4gby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6JF8oK2UpLG8pOnR9LG8ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCt0KSxvKTplfSxvLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXyghIXQpLG8pOm59LG8uY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxudWxsIT1yJiYoYT1pKHIpKSxvKTppfSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cj1hPW51bGw6YT1pKHI9dCksbyk6cn0sb31mdW5jdGlvbiB2eCgpe3ZhciB0PXl4LGU9bnVsbCxuPSRfKDApLHI9Z3gsaT0kXyghMCksYT1udWxsLG89cHgscz1udWxsO2Z1bmN0aW9uIGMoYyl7dmFyIHUsbCxoLGYsZCxwPWMubGVuZ3RoLHk9ITEsZz1uZXcgQXJyYXkocCksbT1uZXcgQXJyYXkocCk7Zm9yKG51bGw9PWEmJihzPW8oZD1XaSgpKSksdT0wO3U8PXA7Kyt1KXtpZighKHU8cCYmaShmPWNbdV0sdSxjKSk9PT15KWlmKHk9IXkpbD11LHMuYXJlYVN0YXJ0KCkscy5saW5lU3RhcnQoKTtlbHNle2ZvcihzLmxpbmVFbmQoKSxzLmxpbmVTdGFydCgpLGg9dS0xO2g+PWw7LS1oKXMucG9pbnQoZ1toXSxtW2hdKTtzLmxpbmVFbmQoKSxzLmFyZWFFbmQoKX15JiYoZ1t1XT0rdChmLHUsYyksbVt1XT0rbihmLHUsYykscy5wb2ludChlPytlKGYsdSxjKTpnW3VdLHI/K3IoZix1LGMpOm1bdV0pKX1pZihkKXJldHVybiBzPW51bGwsZCsiInx8bnVsbH1mdW5jdGlvbiB1KCl7cmV0dXJuIG14KCkuZGVmaW5lZChpKS5jdXJ2ZShvKS5jb250ZXh0KGEpfXJldHVybiBjLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjokXygrbiksZT1udWxsLGMpOnR9LGMueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTokXygrZSksYyk6dH0sYy54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksYyk6ZX0sYy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLHI9bnVsbCxjKTpufSxjLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLGMpOm59LGMueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLGMpOnJ9LGMubGluZVgwPWMubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkobil9LGMubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkocil9LGMubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KGUpLnkobil9LGMuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCEhdCksYyk6aX0sYy5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG51bGwhPWEmJihzPW8oYSkpLGMpOm99LGMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9hPXM9bnVsbDpzPW8oYT10KSxjKTphfSxjfWZ1bmN0aW9uIGJ4KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIF94KHQpe3JldHVybiB0fWZ1bmN0aW9uIHh4KCl7dmFyIHQ9X3gsZT1ieCxuPW51bGwscj0kXygwKSxpPSRfKG54KSxhPSRfKDApO2Z1bmN0aW9uIG8obyl7dmFyIHMsYyx1LGwsaCxmPW8ubGVuZ3RoLGQ9MCxwPW5ldyBBcnJheShmKSx5PW5ldyBBcnJheShmKSxnPStyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxtPU1hdGgubWluKG54LE1hdGgubWF4KC1ueCxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSksdj1NYXRoLm1pbihNYXRoLmFicyhtKS9mLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxiPXYqKG08MD8tMToxKTtmb3Iocz0wO3M8ZjsrK3MpKGg9eVtwW3NdPXNdPSt0KG9bc10scyxvKSk+MCYmKGQrPWgpO2ZvcihudWxsIT1lP3Auc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh5W3RdLHlbbl0pfSkpOm51bGwhPW4mJnAuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihvW3RdLG9bZV0pfSkpLHM9MCx1PWQ/KG0tZipiKS9kOjA7czxmOysrcyxnPWwpYz1wW3NdLGw9ZysoKGg9eVtjXSk+MD9oKnU6MCkrYix5W2NdPXtkYXRhOm9bY10saW5kZXg6cyx2YWx1ZTpoLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTpsLHBhZEFuZ2xlOnZ9O3JldHVybiB5fXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6JF8oK2UpLG8pOnR9LG8uc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxvKTplfSxvLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsbyk6bn0sby5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLG8pOnJ9LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksbyk6aX0sby5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCt0KSxvKTphfSxvfWR4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19O3ZhciB3eD1UeChweCk7ZnVuY3Rpb24ga3godCl7dGhpcy5fY3VydmU9dH1mdW5jdGlvbiBUeCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBuZXcga3godChlKSl9cmV0dXJuIGUuX2N1cnZlPXQsZX1mdW5jdGlvbiBFeCh0KXt2YXIgZT10LmN1cnZlO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShUeCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBDeCgpe3JldHVybiBFeChteCgpLmN1cnZlKHd4KSl9ZnVuY3Rpb24gU3goKXt2YXIgdD12eCgpLmN1cnZlKHd4KSxlPXQuY3VydmUsbj10LmxpbmVYMCxyPXQubGluZVgxLGk9dC5saW5lWTAsYT10LmxpbmVZMTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnN0YXJ0QW5nbGU9dC54MCxkZWxldGUgdC54MCx0LmVuZEFuZ2xlPXQueDEsZGVsZXRlIHQueDEsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5pbm5lclJhZGl1cz10LnkwLGRlbGV0ZSB0LnkwLHQub3V0ZXJSYWRpdXM9dC55MSxkZWxldGUgdC55MSx0LmxpbmVTdGFydEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEV4KG4oKSl9LGRlbGV0ZSB0LmxpbmVYMCx0LmxpbmVFbmRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBFeChyKCkpfSxkZWxldGUgdC5saW5lWDEsdC5saW5lSW5uZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gRXgoaSgpKX0sZGVsZXRlIHQubGluZVkwLHQubGluZU91dGVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIEV4KGEoKSl9LGRlbGV0ZSB0LmxpbmVZMSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoVHgodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gQXgodCxlKXtyZXR1cm5bKGU9K2UpKk1hdGguY29zKHQtPU1hdGguUEkvMiksZSpNYXRoLnNpbih0KV19a3gucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VydmUucG9pbnQoZSpNYXRoLnNpbih0KSxlKi1NYXRoLmNvcyh0KSl9fTt2YXIgTXg9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIE54KHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBEeCh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gT3godCl7dmFyIGU9Tngsbj1EeCxyPXl4LGk9Z3gsYT1udWxsO2Z1bmN0aW9uIG8oKXt2YXIgbyxzPU14LmNhbGwoYXJndW1lbnRzKSxjPWUuYXBwbHkodGhpcyxzKSx1PW4uYXBwbHkodGhpcyxzKTtpZihhfHwoYT1vPVdpKCkpLHQoYSwrci5hcHBseSh0aGlzLChzWzBdPWMscykpLCtpLmFwcGx5KHRoaXMscyksK3IuYXBwbHkodGhpcywoc1swXT11LHMpKSwraS5hcHBseSh0aGlzLHMpKSxvKXJldHVybiBhPW51bGwsbysiInx8bnVsbH1yZXR1cm4gby5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LG8pOm59LG8ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCt0KSxvKTpyfSxvLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokXygrdCksbyk6aX0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW51bGw9PXQ/bnVsbDp0LG8pOmF9LG99ZnVuY3Rpb24gQngodCxlLG4scixpKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlPShlK3IpLzIsbixlLGkscixpKX1mdW5jdGlvbiBMeCh0LGUsbixyLGkpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGUsbj0obitpKS8yLHIsbixyLGkpfWZ1bmN0aW9uIEl4KHQsZSxuLHIsaSl7dmFyIGE9QXgoZSxuKSxvPUF4KGUsbj0obitpKS8yKSxzPUF4KHIsbiksYz1BeChyLGkpO3QubW92ZVRvKGFbMF0sYVsxXSksdC5iZXppZXJDdXJ2ZVRvKG9bMF0sb1sxXSxzWzBdLHNbMV0sY1swXSxjWzFdKX1mdW5jdGlvbiBSeCgpe3JldHVybiBPeChCeCl9ZnVuY3Rpb24gRngoKXtyZXR1cm4gT3goTHgpfWZ1bmN0aW9uIFB4KCl7dmFyIHQ9T3goSXgpO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHR9Y29uc3Qgang9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS90eCk7dC5tb3ZlVG8obiwwKSx0LmFyYygwLDAsbiwwLG54KX19LFl4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvNSkvMjt0Lm1vdmVUbygtMypuLC1uKSx0LmxpbmVUbygtbiwtbiksdC5saW5lVG8oLW4sLTMqbiksdC5saW5lVG8obiwtMypuKSx0LmxpbmVUbyhuLC1uKSx0LmxpbmVUbygzKm4sLW4pLHQubGluZVRvKDMqbixuKSx0LmxpbmVUbyhuLG4pLHQubGluZVRvKG4sMypuKSx0LmxpbmVUbygtbiwzKm4pLHQubGluZVRvKC1uLG4pLHQubGluZVRvKC0zKm4sbiksdC5jbG9zZVBhdGgoKX19O3ZhciB6eD1NYXRoLnNxcnQoMS8zKSxVeD0yKnp4O2NvbnN0IHF4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvVXgpLHI9bip6eDt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhyLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLXIsMCksdC5jbG9zZVBhdGgoKX19O3ZhciBIeD1NYXRoLnNpbih0eC8xMCkvTWF0aC5zaW4oNyp0eC8xMCksJHg9TWF0aC5zaW4obngvMTApKkh4LFd4PS1NYXRoLmNvcyhueC8xMCkqSHg7Y29uc3QgVng9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSkscj0keCpuLGk9V3gqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhyLGkpO2Zvcih2YXIgYT0xO2E8NTsrK2Epe3ZhciBvPW54KmEvNSxzPU1hdGguY29zKG8pLGM9TWF0aC5zaW4obyk7dC5saW5lVG8oYypuLC1zKm4pLHQubGluZVRvKHMqci1jKmksYypyK3MqaSl9dC5jbG9zZVBhdGgoKX19LEd4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLHI9LW4vMjt0LnJlY3QocixyLG4sbil9fTt2YXIgWHg9TWF0aC5zcXJ0KDMpO2NvbnN0IFp4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49LU1hdGguc3FydChlLygzKlh4KSk7dC5tb3ZlVG8oMCwyKm4pLHQubGluZVRvKC1YeCpuLC1uKSx0LmxpbmVUbyhYeCpuLC1uKSx0LmNsb3NlUGF0aCgpfX07dmFyIFF4PS0uNSxLeD1NYXRoLnNxcnQoMykvMixKeD0xL01hdGguc3FydCgxMiksdHc9MyooSngvMisxKTtjb25zdCBldz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3R3KSxyPW4vMixpPW4qSngsYT1yLG89bipKeCtuLHM9LWEsYz1vO3QubW92ZVRvKHIsaSksdC5saW5lVG8oYSxvKSx0LmxpbmVUbyhzLGMpLHQubGluZVRvKFF4KnItS3gqaSxLeCpyK1F4KmkpLHQubGluZVRvKFF4KmEtS3gqbyxLeCphK1F4Km8pLHQubGluZVRvKFF4KnMtS3gqYyxLeCpzK1F4KmMpLHQubGluZVRvKFF4KnIrS3gqaSxReCppLUt4KnIpLHQubGluZVRvKFF4KmErS3gqbyxReCpvLUt4KmEpLHQubGluZVRvKFF4KnMrS3gqYyxReCpjLUt4KnMpLHQuY2xvc2VQYXRoKCl9fTt2YXIgbnc9W2p4LFl4LHF4LEd4LFZ4LFp4LGV3XTtmdW5jdGlvbiBydygpe3ZhciB0PSRfKGp4KSxlPSRfKDY0KSxuPW51bGw7ZnVuY3Rpb24gcigpe3ZhciByO2lmKG58fChuPXI9V2koKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscilyZXR1cm4gbj1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIHIudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOiRfKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKCt0KSxyKTplfSxyLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQscik6bn0scn1mdW5jdGlvbiBpdygpe31mdW5jdGlvbiBhdyh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24gb3codCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHN3KHQpe3JldHVybiBuZXcgb3codCl9ZnVuY3Rpb24gY3codCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHV3KHQpe3JldHVybiBuZXcgY3codCl9ZnVuY3Rpb24gbHcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGh3KHQpe3JldHVybiBuZXcgbHcodCl9ZnVuY3Rpb24gZncodCxlKXt0aGlzLl9iYXNpcz1uZXcgb3codCksdGhpcy5fYmV0YT1lfW93LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6YXcodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6YXcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LGN3LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95MysyKnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0OmF3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxsdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgbj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LHI9KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKG4scik6dGhpcy5fY29udGV4dC5tb3ZlVG8obixyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmF3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxmdy5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGgtMTtpZihuPjApZm9yKHZhciByLGk9dFswXSxhPWVbMF0sbz10W25dLWkscz1lW25dLWEsYz0tMTsrK2M8PW47KXI9Yy9uLHRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtjXSsoMS10aGlzLl9iZXRhKSooaStyKm8pLHRoaXMuX2JldGEqZVtjXSsoMS10aGlzLl9iZXRhKSooYStyKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX07Y29uc3QgZHc9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxPT09ZT9uZXcgb3codCk6bmV3IGZ3KHQsZSl9cmV0dXJuIG4uYmV0YT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KC44NSk7ZnVuY3Rpb24gcHcodCxlLG4pe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLWUpLHQuX3kyK3QuX2sqKHQuX3kxLW4pLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiB5dyh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9eXcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnB3KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpwdyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3QgZ3c9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgeXcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0oMCk7ZnVuY3Rpb24gbXcodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fW13LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpwdyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3Qgdnc9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgbXcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0oMCk7ZnVuY3Rpb24gYncodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWJ3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OnB3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBfdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBidyh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSgwKTtmdW5jdGlvbiB4dyh0LGUsbil7dmFyIHI9dC5feDEsaT10Ll95MSxhPXQuX3gyLG89dC5feTI7aWYodC5fbDAxX2E+Sl8pe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGM9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO3I9KHIqcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9jLGk9KGkqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9jfWlmKHQuX2wyM19hPkpfKXt2YXIgdT0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTthPShhKnUrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS9sLG89KG8qdSt0Ll95MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL2x9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIsaSxhLG8sdC5feDIsdC5feTIpfWZ1bmN0aW9uIHd3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9d3cucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDp4dyh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O2NvbnN0IGt3PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgd3codCxlKTpuZXcgeXcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KC41KTtmdW5jdGlvbiBUdyh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfVR3LnByb3RvdHlwZT17YXJlYVN0YXJ0Oml3LGFyZWFFbmQ6aXcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6eHcodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBFdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IFR3KHQsZSk6bmV3IG13KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSguNSk7ZnVuY3Rpb24gQ3codCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1Ddy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQscj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6eHcodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBTdz1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IEN3KHQsZSk6bmV3IGJ3KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSguNSk7ZnVuY3Rpb24gQXcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE13KHQpe3JldHVybiBuZXcgQXcodCl9ZnVuY3Rpb24gTncodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIER3KHQsZSxuKXt2YXIgcj10Ll94MS10Ll94MCxpPWUtdC5feDEsYT0odC5feTEtdC5feTApLyhyfHxpPDAmJi0wKSxvPShuLXQuX3kxKS8oaXx8cjwwJiYtMCkscz0oYSppK28qcikvKHIraSk7cmV0dXJuKE53KGEpK053KG8pKSpNYXRoLm1pbihNYXRoLmFicyhhKSxNYXRoLmFicyhvKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gT3codCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIEJ3KHQsZSxuKXt2YXIgcj10Ll94MCxpPXQuX3kwLGE9dC5feDEsbz10Ll95MSxzPShhLXIpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIrcyxpK3MqZSxhLXMsby1zKm4sYSxvKX1mdW5jdGlvbiBMdyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gSXcodCl7dGhpcy5fY29udGV4dD1uZXcgUncodCl9ZnVuY3Rpb24gUncodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEZ3KHQpe3JldHVybiBuZXcgTHcodCl9ZnVuY3Rpb24gUHcodCl7cmV0dXJuIG5ldyBJdyh0KX1mdW5jdGlvbiBqdyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWXcodCl7dmFyIGUsbixyPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxhWzBdPTIsb1swXT10WzBdKzIqdFsxXSxlPTE7ZTxyLTE7KytlKWlbZV09MSxhW2VdPTQsb1tlXT00KnRbZV0rMip0W2UrMV07Zm9yKGlbci0xXT0yLGFbci0xXT03LG9bci0xXT04KnRbci0xXSt0W3JdLGU9MTtlPHI7KytlKW49aVtlXS9hW2UtMV0sYVtlXS09bixvW2VdLT1uKm9bZS0xXTtmb3IoaVtyLTFdPW9bci0xXS9hW3ItMV0sZT1yLTI7ZT49MDstLWUpaVtlXT0ob1tlXS1pW2UrMV0pL2FbZV07Zm9yKGFbci0xXT0odFtyXStpW3ItMV0pLzIsZT0wO2U8ci0xOysrZSlhW2VdPTIqdFtlKzFdLWlbZSsxXTtyZXR1cm5baSxhXX1mdW5jdGlvbiB6dyh0KXtyZXR1cm4gbmV3IGp3KHQpfWZ1bmN0aW9uIFV3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBxdyh0KXtyZXR1cm4gbmV3IFV3KHQsLjUpfWZ1bmN0aW9uIEh3KHQpe3JldHVybiBuZXcgVXcodCwwKX1mdW5jdGlvbiAkdyh0KXtyZXR1cm4gbmV3IFV3KHQsMSl9ZnVuY3Rpb24gV3codCxlKXtpZigoaT10Lmxlbmd0aCk+MSlmb3IodmFyIG4scixpLGE9MSxvPXRbZVswXV0scz1vLmxlbmd0aDthPGk7KythKWZvcihyPW8sbz10W2VbYV1dLG49MDtuPHM7KytuKW9bbl1bMV0rPW9bbl1bMF09aXNOYU4ocltuXVsxXSk/cltuXVswXTpyW25dWzFdfWZ1bmN0aW9uIFZ3KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTstLWU+PTA7KW5bZV09ZTtyZXR1cm4gbn1mdW5jdGlvbiBHdyh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIFh3KCl7dmFyIHQ9JF8oW10pLGU9Vncsbj1XdyxyPUd3O2Z1bmN0aW9uIGkoaSl7dmFyIGEsbyxzPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGM9aS5sZW5ndGgsdT1zLmxlbmd0aCxsPW5ldyBBcnJheSh1KTtmb3IoYT0wO2E8dTsrK2Epe2Zvcih2YXIgaCxmPXNbYV0sZD1sW2FdPW5ldyBBcnJheShjKSxwPTA7cDxjOysrcClkW3BdPWg9WzAsK3IoaVtwXSxmLHAsaSldLGguZGF0YT1pW3BdO2Qua2V5PWZ9Zm9yKGE9MCxvPWUobCk7YTx1OysrYSlsW29bYV1dLmluZGV4PWE7cmV0dXJuIG4obCxvKSxsfXJldHVybiBpLmtleXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTokXyhNeC5jYWxsKGUpKSxpKTp0fSxpLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JF8oK3QpLGkpOnJ9LGkub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9WdzoiZnVuY3Rpb24iPT10eXBlb2YgdD90OiRfKE14LmNhbGwodCkpLGkpOmV9LGkub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/V3c6dCxpKTpufSxpfWZ1bmN0aW9uIFp3KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixyLGksYT0wLG89dFswXS5sZW5ndGg7YTxvOysrYSl7Zm9yKGk9bj0wO248cjsrK24paSs9dFtuXVthXVsxXXx8MDtpZihpKWZvcihuPTA7bjxyOysrbil0W25dW2FdWzFdLz1pfVd3KHQsZSl9fWZ1bmN0aW9uIFF3KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLHIsaSxhLG8scyxjPTAsdT10W2VbMF1dLmxlbmd0aDtjPHU7KytjKWZvcihhPW89MCxuPTA7bjxzOysrbikoaT0ocj10W2Vbbl1dW2NdKVsxXS1yWzBdKT4wPyhyWzBdPWEsclsxXT1hKz1pKTppPDA/KHJbMV09byxyWzBdPW8rPWkpOihyWzBdPTAsclsxXT1pKX1mdW5jdGlvbiBLdyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4scj0wLGk9dFtlWzBdXSxhPWkubGVuZ3RoO3I8YTsrK3Ipe2Zvcih2YXIgbz0wLHM9MDtvPG47KytvKXMrPXRbb11bcl1bMV18fDA7aVtyXVsxXSs9aVtyXVswXT0tcy8yfVd3KHQsZSl9fWZ1bmN0aW9uIEp3KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjAmJihyPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLHIsaSxhPTAsbz0xO288cjsrK28pe2Zvcih2YXIgcz0wLGM9MCx1PTA7czxpOysrcyl7Zm9yKHZhciBsPXRbZVtzXV0saD1sW29dWzFdfHwwLGY9KGgtKGxbby0xXVsxXXx8MCkpLzIsZD0wO2Q8czsrK2Qpe3ZhciBwPXRbZVtkXV07Zis9KHBbb11bMV18fDApLShwW28tMV1bMV18fDApfWMrPWgsdSs9ZipofW5bby0xXVsxXSs9bltvLTFdWzBdPWEsYyYmKGEtPXUvYyl9bltvLTFdWzFdKz1uW28tMV1bMF09YSxXdyh0LGUpfX1mdW5jdGlvbiB0ayh0KXt2YXIgZT10Lm1hcChlayk7cmV0dXJuIFZ3KHQpLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF0tZVtuXX0pKX1mdW5jdGlvbiBlayh0KXtmb3IodmFyIGUsbj0tMSxyPTAsaT10Lmxlbmd0aCxhPS0xLzA7KytuPGk7KShlPSt0W25dWzFdKT5hJiYoYT1lLHI9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gbmsodCl7dmFyIGU9dC5tYXAocmspO3JldHVybiBWdyh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gcmsodCl7Zm9yKHZhciBlLG49MCxyPS0xLGk9dC5sZW5ndGg7KytyPGk7KShlPSt0W3JdWzFdKSYmKG4rPWUpO3JldHVybiBufWZ1bmN0aW9uIGlrKHQpe3JldHVybiBuayh0KS5yZXZlcnNlKCl9ZnVuY3Rpb24gYWsodCl7dmFyIGUsbixyPXQubGVuZ3RoLGk9dC5tYXAocmspLGE9dGsodCksbz0wLHM9MCxjPVtdLHU9W107Zm9yKGU9MDtlPHI7KytlKW49YVtlXSxvPHM/KG8rPWlbbl0sYy5wdXNoKG4pKToocys9aVtuXSx1LnB1c2gobikpO3JldHVybiB1LnJldmVyc2UoKS5jb25jYXQoYyl9ZnVuY3Rpb24gb2sodCl7cmV0dXJuIFZ3KHQpLnJldmVyc2UoKX1Bdy5wcm90b3R5cGU9e2FyZWFTdGFydDppdyxhcmVhRW5kOml3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LEx3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpCdyh0aGlzLHRoaXMuX3QwLE93KHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxCdyh0aGlzLE93KHRoaXMsbj1Edyh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6QncodGhpcyx0aGlzLl90MCxuPUR3KHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKEl3LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEx3LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7THcucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxSdy5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4scixpLGEpe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQscixuLGEsaSl9fSxqdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgcj1Zdyh0KSxpPVl3KGUpLGE9MCxvPTE7bzxuOysrYSwrK28pdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHJbMF1bYV0saVswXVthXSxyWzFdW2FdLGlbMV1bYV0sdFtvXSxlW29dKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxVdy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgc2s9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIsY2s9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX06Z20oc2spO2NvbnN0IHVrPWNrO3ZhciBsaz0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihlKT9udWxsOmV9Om1tKHNrKTtjb25zdCBoaz1saztmdW5jdGlvbiBmayh0LGUsbil7dmFyIHI9bmV3IFduLGk9ZTtyZXR1cm4gbnVsbD09ZT8oci5yZXN0YXJ0KHQsZSxuKSxyKTooZT0rZSxuPW51bGw9PW4/SG4oKTorbixyLnJlc3RhcnQoKGZ1bmN0aW9uIGEobyl7bys9aSxyLnJlc3RhcnQoYSxpKz1lLG4pLHQobyl9KSxlLG4pLHIpfWZ1bmN0aW9uIGRrKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBwayh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiB5ayh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBnaygpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIG1rKHQpe3QuVT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gdmsodCxlKXt2YXIgbj1lLHI9ZS5SLGk9bi5VO2k/aS5MPT09bj9pLkw9cjppLlI9cjp0Ll89cixyLlU9aSxuLlU9cixuLlI9ci5MLG4uUiYmKG4uUi5VPW4pLHIuTD1ufWZ1bmN0aW9uIGJrKHQsZSl7dmFyIG49ZSxyPWUuTCxpPW4uVTtpP2kuTD09PW4/aS5MPXI6aS5SPXI6dC5fPXIsci5VPWksbi5VPXIsbi5MPXIuUixuLkwmJihuLkwuVT1uKSxyLlI9bn1mdW5jdGlvbiBfayh0KXtmb3IoO3QuTDspdD10Lkw7cmV0dXJuIHR9Z2sucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpnayxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGk7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PV9rKHRoaXMuXyksZS5QPW51bGwsZS5OPXQsdC5QPXQuTD1lLG49dCk6KGUuUD1lLk49bnVsbCx0aGlzLl89ZSxuPW51bGwpO2ZvcihlLkw9ZS5SPW51bGwsZS5VPW4sZS5DPSEwLHQ9ZTtuJiZuLkM7KW49PT0ocj1uLlUpLkw/KGk9ci5SKSYmaS5DPyhuLkM9aS5DPSExLHIuQz0hMCx0PXIpOih0PT09bi5SJiYodmsodGhpcyxuKSxuPSh0PW4pLlUpLG4uQz0hMSxyLkM9ITAsYmsodGhpcyxyKSk6KGk9ci5MKSYmaS5DPyhuLkM9aS5DPSExLHIuQz0hMCx0PXIpOih0PT09bi5MJiYoYmsodGhpcyxuKSxuPSh0PW4pLlUpLG4uQz0hMSxyLkM9ITAsdmsodGhpcyxyKSksbj10LlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbih0KXt0Lk4mJih0Lk4uUD10LlApLHQuUCYmKHQuUC5OPXQuTiksdC5OPXQuUD1udWxsO3ZhciBlLG4scixpPXQuVSxhPXQuTCxvPXQuUjtpZihuPWE/bz9fayhvKTphOm8saT9pLkw9PT10P2kuTD1uOmkuUj1uOnRoaXMuXz1uLGEmJm8/KHI9bi5DLG4uQz10LkMsbi5MPWEsYS5VPW4sbiE9PW8/KGk9bi5VLG4uVT10LlUsdD1uLlIsaS5MPXQsbi5SPW8sby5VPW4pOihuLlU9aSxpPW4sdD1uLlIpKToocj10LkMsdD1uKSx0JiYodC5VPWkpLCFyKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1pLkwpe2lmKChlPWkuUikuQyYmKGUuQz0hMSxpLkM9ITAsdmsodGhpcyxpKSxlPWkuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxiayh0aGlzLGUpLGU9aS5SKSxlLkM9aS5DLGkuQz1lLlIuQz0hMSx2ayh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPWkuTCkuQyYmKGUuQz0hMSxpLkM9ITAsYmsodGhpcyxpKSxlPWkuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCx2ayh0aGlzLGUpLGU9aS5MKSxlLkM9aS5DLGkuQz1lLkwuQz0hMSxiayh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PWksaT1pLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07Y29uc3QgeGs9Z2s7ZnVuY3Rpb24gd2sodCxlLG4scil7dmFyIGk9W251bGwsbnVsbF0sYT1Xay5wdXNoKGkpLTE7cmV0dXJuIGkubGVmdD10LGkucmlnaHQ9ZSxuJiZUayhpLHQsZSxuKSxyJiZUayhpLGUsdCxyKSxIa1t0LmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSxIa1tlLmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSxpfWZ1bmN0aW9uIGtrKHQsZSxuKXt2YXIgcj1bZSxuXTtyZXR1cm4gci5sZWZ0PXQscn1mdW5jdGlvbiBUayh0LGUsbixyKXt0WzBdfHx0WzFdP3QubGVmdD09PW4/dFsxXT1yOnRbMF09cjoodFswXT1yLHQubGVmdD1lLHQucmlnaHQ9bil9ZnVuY3Rpb24gRWsodCxlLG4scixpKXt2YXIgYSxvPXRbMF0scz10WzFdLGM9b1swXSx1PW9bMV0sbD0wLGg9MSxmPXNbMF0tYyxkPXNbMV0tdTtpZihhPWUtYyxmfHwhKGE+MCkpe2lmKGEvPWYsZjwwKXtpZihhPGwpcmV0dXJuO2E8aCYmKGg9YSl9ZWxzZSBpZihmPjApe2lmKGE+aClyZXR1cm47YT5sJiYobD1hKX1pZihhPXItYyxmfHwhKGE8MCkpe2lmKGEvPWYsZjwwKXtpZihhPmgpcmV0dXJuO2E+bCYmKGw9YSl9ZWxzZSBpZihmPjApe2lmKGE8bClyZXR1cm47YTxoJiYoaD1hKX1pZihhPW4tdSxkfHwhKGE+MCkpe2lmKGEvPWQsZDwwKXtpZihhPGwpcmV0dXJuO2E8aCYmKGg9YSl9ZWxzZSBpZihkPjApe2lmKGE+aClyZXR1cm47YT5sJiYobD1hKX1pZihhPWktdSxkfHwhKGE8MCkpe2lmKGEvPWQsZDwwKXtpZihhPmgpcmV0dXJuO2E+bCYmKGw9YSl9ZWxzZSBpZihkPjApe2lmKGE8bClyZXR1cm47YTxoJiYoaD1hKX1yZXR1cm4hKGw+MHx8aDwxKXx8KGw+MCYmKHRbMF09W2MrbCpmLHUrbCpkXSksaDwxJiYodFsxXT1bYytoKmYsdStoKmRdKSwhMCl9fX19fWZ1bmN0aW9uIENrKHQsZSxuLHIsaSl7dmFyIGE9dFsxXTtpZihhKXJldHVybiEwO3ZhciBvLHMsYz10WzBdLHU9dC5sZWZ0LGw9dC5yaWdodCxoPXVbMF0sZj11WzFdLGQ9bFswXSxwPWxbMV0seT0oaCtkKS8yLGc9KGYrcCkvMjtpZihwPT09Zil7aWYoeTxlfHx5Pj1yKXJldHVybjtpZihoPmQpe2lmKGMpe2lmKGNbMV0+PWkpcmV0dXJufWVsc2UgYz1beSxuXTthPVt5LGldfWVsc2V7aWYoYyl7aWYoY1sxXTxuKXJldHVybn1lbHNlIGM9W3ksaV07YT1beSxuXX19ZWxzZSBpZihzPWctKG89KGgtZCkvKHAtZikpKnksbzwtMXx8bz4xKWlmKGg+ZCl7aWYoYyl7aWYoY1sxXT49aSlyZXR1cm59ZWxzZSBjPVsobi1zKS9vLG5dO2E9WyhpLXMpL28saV19ZWxzZXtpZihjKXtpZihjWzFdPG4pcmV0dXJufWVsc2UgYz1bKGktcykvbyxpXTthPVsobi1zKS9vLG5dfWVsc2UgaWYoZjxwKXtpZihjKXtpZihjWzBdPj1yKXJldHVybn1lbHNlIGM9W2UsbyplK3NdO2E9W3IsbypyK3NdfWVsc2V7aWYoYyl7aWYoY1swXTxlKXJldHVybn1lbHNlIGM9W3IsbypyK3NdO2E9W2UsbyplK3NdfXJldHVybiB0WzBdPWMsdFsxXT1hLCEwfWZ1bmN0aW9uIFNrKHQsZSl7dmFyIG49dC5zaXRlLHI9ZS5sZWZ0LGk9ZS5yaWdodDtyZXR1cm4gbj09PWkmJihpPXIscj1uKSxpP01hdGguYXRhbjIoaVsxXS1yWzFdLGlbMF0tclswXSk6KG49PT1yPyhyPWVbMV0saT1lWzBdKToocj1lWzBdLGk9ZVsxXSksTWF0aC5hdGFuMihyWzBdLWlbMF0saVsxXS1yWzFdKSl9ZnVuY3Rpb24gQWsodCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIE1rKHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQ9PT10LnNpdGUpXX12YXIgTmssRGs9W107ZnVuY3Rpb24gT2soKXttayh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gQmsodCl7dmFyIGU9dC5QLG49dC5OO2lmKGUmJm4pe3ZhciByPWUuc2l0ZSxpPXQuc2l0ZSxhPW4uc2l0ZTtpZihyIT09YSl7dmFyIG89aVswXSxzPWlbMV0sYz1yWzBdLW8sdT1yWzFdLXMsbD1hWzBdLW8saD1hWzFdLXMsZj0yKihjKmgtdSpsKTtpZighKGY+PS1Haykpe3ZhciBkPWMqYyt1KnUscD1sKmwraCpoLHk9KGgqZC11KnApL2YsZz0oYypwLWwqZCkvZixtPURrLnBvcCgpfHxuZXcgT2s7bS5hcmM9dCxtLnNpdGU9aSxtLng9eStvLG0ueT0obS5jeT1nK3MpK01hdGguc3FydCh5KnkrZypnKSx0LmNpcmNsZT1tO2Zvcih2YXIgdj1udWxsLGI9JGsuXztiOylpZihtLnk8Yi55fHxtLnk9PT1iLnkmJm0ueDw9Yi54KXtpZighYi5MKXt2PWIuUDticmVha31iPWIuTH1lbHNle2lmKCFiLlIpe3Y9YjticmVha31iPWIuUn0kay5pbnNlcnQodixtKSx2fHwoTms9bSl9fX19ZnVuY3Rpb24gTGsodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KE5rPWUuTiksJGsucmVtb3ZlKGUpLERrLnB1c2goZSksbWsoZSksdC5jaXJjbGU9bnVsbCl9dmFyIElrPVtdO2Z1bmN0aW9uIFJrKCl7bWsodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIEZrKHQpe3ZhciBlPUlrLnBvcCgpfHxuZXcgUms7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gUGsodCl7TGsodCkscWsucmVtb3ZlKHQpLElrLnB1c2godCksbWsodCl9ZnVuY3Rpb24gamsodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngscj1lLmN5LGk9W24scl0sYT10LlAsbz10Lk4scz1bdF07UGsodCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8VmsmJk1hdGguYWJzKHItYy5jaXJjbGUuY3kpPFZrOylhPWMuUCxzLnVuc2hpZnQoYyksUGsoYyksYz1hO3MudW5zaGlmdChjKSxMayhjKTtmb3IodmFyIHU9bzt1LmNpcmNsZSYmTWF0aC5hYnMobi11LmNpcmNsZS54KTxWayYmTWF0aC5hYnMoci11LmNpcmNsZS5jeSk8Vms7KW89dS5OLHMucHVzaCh1KSxQayh1KSx1PW87cy5wdXNoKHUpLExrKHUpO3ZhciBsLGg9cy5sZW5ndGg7Zm9yKGw9MTtsPGg7KytsKXU9c1tsXSxjPXNbbC0xXSxUayh1LmVkZ2UsYy5zaXRlLHUuc2l0ZSxpKTtjPXNbMF0sKHU9c1toLTFdKS5lZGdlPXdrKGMuc2l0ZSx1LnNpdGUsbnVsbCxpKSxCayhjKSxCayh1KX1mdW5jdGlvbiBZayh0KXtmb3IodmFyIGUsbixyLGksYT10WzBdLG89dFsxXSxzPXFrLl87czspaWYoKHI9emsocyxvKS1hKT5WaylzPXMuTDtlbHNle2lmKCEoKGk9YS1VayhzLG8pKT5Waykpe3I+LVZrPyhlPXMuUCxuPXMpOmk+LVZrPyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hZnVuY3Rpb24odCl7SGtbdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fSh0KTt2YXIgYz1Gayh0KTtpZihxay5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gTGsoZSksbj1GayhlLnNpdGUpLHFrLmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9d2soZS5zaXRlLGMuc2l0ZSksQmsoZSksdm9pZCBCayhuKTtpZihuKXtMayhlKSxMayhuKTt2YXIgdT1lLnNpdGUsbD11WzBdLGg9dVsxXSxmPXRbMF0tbCxkPXRbMV0taCxwPW4uc2l0ZSx5PXBbMF0tbCxnPXBbMV0taCxtPTIqKGYqZy1kKnkpLHY9ZipmK2QqZCxiPXkqeStnKmcsXz1bKGcqdi1kKmIpL20rbCwoZipiLXkqdikvbStoXTtUayhuLmVkZ2UsdSxwLF8pLGMuZWRnZT13ayh1LHQsbnVsbCxfKSxuLmVkZ2U9d2sodCxwLG51bGwsXyksQmsoZSksQmsobil9ZWxzZSBjLmVkZ2U9d2soZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIHprKHQsZSl7dmFyIG49dC5zaXRlLHI9blswXSxpPW5bMV0sYT1pLWU7aWYoIWEpcmV0dXJuIHI7dmFyIG89dC5QO2lmKCFvKXJldHVybi0xLzA7dmFyIHM9KG49by5zaXRlKVswXSxjPW5bMV0sdT1jLWU7aWYoIXUpcmV0dXJuIHM7dmFyIGw9cy1yLGg9MS9hLTEvdSxmPWwvdTtyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKGwqbC8oLTIqdSktYyt1LzIraS1hLzIpKSkvaCtyOihyK3MpLzJ9ZnVuY3Rpb24gVWsodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gemsobixlKTt2YXIgcj10LnNpdGU7cmV0dXJuIHJbMV09PT1lP3JbMF06MS8wfXZhciBxayxIaywkayxXayxWaz0xZS02LEdrPTFlLTEyO2Z1bmN0aW9uIFhrKHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBaayh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiBRayh0LGUpe3ZhciBuLHIsaSxhPXQuc29ydChaaykucG9wKCk7Zm9yKFdrPVtdLEhrPW5ldyBBcnJheSh0Lmxlbmd0aCkscWs9bmV3IHhrLCRrPW5ldyB4azs7KWlmKGk9TmssYSYmKCFpfHxhWzFdPGkueXx8YVsxXT09PWkueSYmYVswXTxpLngpKWFbMF09PT1uJiZhWzFdPT09cnx8KFlrKGEpLG49YVswXSxyPWFbMV0pLGE9dC5wb3AoKTtlbHNle2lmKCFpKWJyZWFrO2prKGkuYXJjKX1pZihmdW5jdGlvbigpe2Zvcih2YXIgdCxlLG4scixpPTAsYT1Iay5sZW5ndGg7aTxhOysraSlpZigodD1Ia1tpXSkmJihyPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgbz1uZXcgQXJyYXkocikscz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPHI7KytuKW9bbl09bixzW25dPVNrKHQsV2tbZVtuXV0pO2ZvcihvLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxyOysrbilzW25dPWVbb1tuXV07Zm9yKG49MDtuPHI7KytuKWVbbl09c1tuXX19KCksZSl7dmFyIG89K2VbMF1bMF0scz0rZVswXVsxXSxjPStlWzFdWzBdLHU9K2VbMV1bMV07IWZ1bmN0aW9uKHQsZSxuLHIpe2Zvcih2YXIgaSxhPVdrLmxlbmd0aDthLS07KUNrKGk9V2tbYV0sdCxlLG4scikmJkVrKGksdCxlLG4scikmJihNYXRoLmFicyhpWzBdWzBdLWlbMV1bMF0pPlZrfHxNYXRoLmFicyhpWzBdWzFdLWlbMV1bMV0pPlZrKXx8ZGVsZXRlIFdrW2FdfShvLHMsYyx1KSxmdW5jdGlvbih0LGUsbixyKXt2YXIgaSxhLG8scyxjLHUsbCxoLGYsZCxwLHksZz1Iay5sZW5ndGgsbT0hMDtmb3IoaT0wO2k8ZzsrK2kpaWYoYT1Ia1tpXSl7Zm9yKG89YS5zaXRlLHM9KGM9YS5oYWxmZWRnZXMpLmxlbmd0aDtzLS07KVdrW2Nbc11dfHxjLnNwbGljZShzLDEpO2ZvcihzPTAsdT1jLmxlbmd0aDtzPHU7KXA9KGQ9TWsoYSxXa1tjW3NdXSkpWzBdLHk9ZFsxXSxoPShsPUFrKGEsV2tbY1srK3MldV1dKSlbMF0sZj1sWzFdLChNYXRoLmFicyhwLWgpPlZrfHxNYXRoLmFicyh5LWYpPlZrKSYmKGMuc3BsaWNlKHMsMCxXay5wdXNoKGtrKG8sZCxNYXRoLmFicyhwLXQpPFZrJiZyLXk+Vms/W3QsTWF0aC5hYnMoaC10KTxWaz9mOnJdOk1hdGguYWJzKHktcik8VmsmJm4tcD5Waz9bTWF0aC5hYnMoZi1yKTxWaz9oOm4scl06TWF0aC5hYnMocC1uKTxWayYmeS1lPlZrP1tuLE1hdGguYWJzKGgtbik8Vms/ZjplXTpNYXRoLmFicyh5LWUpPFZrJiZwLXQ+Vms/W01hdGguYWJzKGYtZSk8Vms/aDp0LGVdOm51bGwpKS0xKSwrK3UpO3UmJihtPSExKX1pZihtKXt2YXIgdixiLF8seD0xLzA7Zm9yKGk9MCxtPW51bGw7aTxnOysraSkoYT1Ia1tpXSkmJihfPSh2PShvPWEuc2l0ZSlbMF0tdCkqdisoYj1vWzFdLWUpKmIpPHgmJih4PV8sbT1hKTtpZihtKXt2YXIgdz1bdCxlXSxrPVt0LHJdLFQ9W24scl0sRT1bbixlXTttLmhhbGZlZGdlcy5wdXNoKFdrLnB1c2goa2sobz1tLnNpdGUsdyxrKSktMSxXay5wdXNoKGtrKG8sayxUKSktMSxXay5wdXNoKGtrKG8sVCxFKSktMSxXay5wdXNoKGtrKG8sRSx3KSktMSl9fWZvcihpPTA7aTxnOysraSkoYT1Ia1tpXSkmJihhLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBIa1tpXSl9KG8scyxjLHUpfXRoaXMuZWRnZXM9V2ssdGhpcy5jZWxscz1Iayxxaz0kaz1Xaz1Iaz1udWxsfWZ1bmN0aW9uIEtrKCl7dmFyIHQ9cGssZT15ayxuPW51bGw7ZnVuY3Rpb24gcihyKXtyZXR1cm4gbmV3IFFrKHIubWFwKChmdW5jdGlvbihuLGkpe3ZhciBhPVtNYXRoLnJvdW5kKHQobixpLHIpL1ZrKSpWayxNYXRoLnJvdW5kKGUobixpLHIpL1ZrKSpWa107cmV0dXJuIGEuaW5kZXg9aSxhLmRhdGE9bixhfSkpLG4pfXJldHVybiByLnBvbHlnb25zPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpLnBvbHlnb25zKCl9LHIubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkubGlua3MoKX0sci50cmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkudHJpYW5nbGVzKCl9LHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRrKCtlKSxyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkaygrdCkscik6ZX0sci5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLHIpOm4mJltbblswXVswXSxuWzBdWzFdXSxbblsxXVswXSxuWzFdWzFdXV19LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLHIpOm4mJltuWzFdWzBdLW5bMF1bMF0sblsxXVsxXS1uWzBdWzFdXX0scn1mdW5jdGlvbiBKayh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdFQodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy50cmFuc2Zvcm09bn1mdW5jdGlvbiBlVCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59UWsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpRayxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lLmhhbGZlZGdlcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBBayhlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4scil7aWYoYT0oaT1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgaSxhLG8scz1uLnNpdGUsYz0tMSx1PWVbaVthLTFdXSxsPXUubGVmdD09PXM/dS5yaWdodDp1LmxlZnQ7KytjPGE7KW89bCxsPSh1PWVbaVtjXV0pLmxlZnQ9PT1zP3UucmlnaHQ6dS5sZWZ0LG8mJmwmJnI8by5pbmRleCYmcjxsLmluZGV4JiZYayhzLG8sbCk8MCYmdC5wdXNoKFtzLmRhdGEsby5kYXRhLGwuZGF0YV0pfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KSl9LGZpbmQ6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcixpLGE9dGhpcyxvPWEuX2ZvdW5kfHwwLHM9YS5jZWxscy5sZW5ndGg7IShpPWEuY2VsbHNbb10pOylpZigrK28+PXMpcmV0dXJuIG51bGw7dmFyIGM9dC1pLnNpdGVbMF0sdT1lLWkuc2l0ZVsxXSxsPWMqYyt1KnU7ZG97aT1hLmNlbGxzW3I9b10sbz1udWxsLGkuaGFsZmVkZ2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWEuZWRnZXNbbl0scz1yLmxlZnQ7aWYocyE9PWkuc2l0ZSYmc3x8KHM9ci5yaWdodCkpe3ZhciBjPXQtc1swXSx1PWUtc1sxXSxoPWMqYyt1KnU7aDxsJiYobD1oLG89cy5pbmRleCl9fSkpfXdoaWxlKG51bGwhPT1vKTtyZXR1cm4gYS5fZm91bmQ9cixudWxsPT1ufHxsPD1uKm4/aS5zaXRlOm51bGx9fSxlVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmVULHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyBlVCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IGVUKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIG5UPW5ldyBlVCgxLDAsMCk7ZnVuY3Rpb24gclQodCl7Zm9yKDshdC5fX3pvb207KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBuVDtyZXR1cm4gdC5fX3pvb219ZnVuY3Rpb24gaVQoKXtsZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBhVCgpe2xlLnByZXZlbnREZWZhdWx0KCksbGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gb1QoKXtyZXR1cm4hbGUuY3RybEtleSYmIWxlLmJ1dHRvbn1mdW5jdGlvbiBzVCgpe3ZhciB0PXRoaXM7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PXQub3duZXJTVkdFbGVtZW50fHx0KS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW3QuY2xpZW50V2lkdGgsdC5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBjVCgpe3JldHVybiB0aGlzLl9fem9vbXx8blR9ZnVuY3Rpb24gdVQoKXtyZXR1cm4tbGUuZGVsdGFZKigxPT09bGUuZGVsdGFNb2RlPy4wNTpsZS5kZWx0YU1vZGU/MTouMDAyKX1mdW5jdGlvbiBsVCgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBoVCh0LGUsbil7dmFyIHI9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0saT10LmludmVydFgoZVsxXVswXSktblsxXVswXSxhPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLG89dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKGk+cj8ocitpKS8yOk1hdGgubWluKDAscil8fE1hdGgubWF4KDAsaSksbz5hPyhhK28pLzI6TWF0aC5taW4oMCxhKXx8TWF0aC5tYXgoMCxvKSl9ZnVuY3Rpb24gZlQoKXt2YXIgdCxlLG49b1Qscj1zVCxpPWhULGE9dVQsbz1sVCxzPVswLDEvMF0sYz1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSx1PTI1MCxsPU9wLGg9ZnQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLGY9NTAwLGQ9MDtmdW5jdGlvbiBwKHQpe3QucHJvcGVydHkoIl9fem9vbSIsY1QpLm9uKCJ3aGVlbC56b29tIix4KS5vbigibW91c2Vkb3duLnpvb20iLHcpLm9uKCJkYmxjbGljay56b29tIixrKS5maWx0ZXIobykub24oInRvdWNoc3RhcnQuem9vbSIsVCkub24oInRvdWNobW92ZS56b29tIixFKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixDKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24geSh0LGUpe3JldHVybihlPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlKSkpPT09dC5rP3Q6bmV3IGVUKGUsdC54LHQueSl9ZnVuY3Rpb24gZyh0LGUsbil7dmFyIHI9ZVswXS1uWzBdKnQuayxpPWVbMV0tblsxXSp0Lms7cmV0dXJuIHI9PT10LngmJmk9PT10Lnk/dDpuZXcgZVQodC5rLHIsaSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB2KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1hcmd1bWVudHMsYT1iKHQsaSksbz1yLmFwcGx5KHQsaSkscz1udWxsPT1uP20obyk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LGkpOm4sYz1NYXRoLm1heChvWzFdWzBdLW9bMF1bMF0sb1sxXVsxXS1vWzBdWzFdKSx1PXQuX196b29tLGg9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LGkpOmUsZj1sKHUuaW52ZXJ0KHMpLmNvbmNhdChjL3UuayksaC5pbnZlcnQocykuY29uY2F0KGMvaC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9aDtlbHNle3ZhciBlPWYodCksbj1jL2VbMl07dD1uZXcgZVQobixzWzBdLWVbMF0qbixzWzFdLWVbMV0qbil9YS56b29tKG51bGwsdCl9fSkpfWZ1bmN0aW9uIGIodCxlLG4pe3JldHVybiFuJiZ0Ll9fem9vbWluZ3x8bmV3IF8odCxlKX1mdW5jdGlvbiBfKHQsZSl7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD1yLmFwcGx5KHQsZSksdGhpcy50YXBzPTB9ZnVuY3Rpb24geCgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxlPXRoaXMuX196b29tLHI9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUuaypNYXRoLnBvdygyLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLG89Qm4odGhpcyk7aWYodC53aGVlbCl0Lm1vdXNlWzBdWzBdPT09b1swXSYmdC5tb3VzZVswXVsxXT09PW9bMV18fCh0Lm1vdXNlWzFdPWUuaW52ZXJ0KHQubW91c2VbMF09bykpLGNsZWFyVGltZW91dCh0LndoZWVsKTtlbHNle2lmKGUuaz09PXIpcmV0dXJuO3QubW91c2U9W28sZS5pbnZlcnQobyldLGFyKHRoaXMpLHQuc3RhcnQoKX1hVCgpLHQud2hlZWw9c2V0VGltZW91dCh1LDE1MCksdC56b29tKCJtb3VzZSIsaShnKHkoZSxyKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGMpKX1mdW5jdGlvbiB1KCl7dC53aGVlbD1udWxsLHQuZW5kKCl9fWZ1bmN0aW9uIHcoKXtpZighZSYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PWIodGhpcyxhcmd1bWVudHMsITApLHI9VGUobGUudmlldykub24oIm1vdXNlbW92ZS56b29tIix1LCEwKS5vbigibW91c2V1cC56b29tIixsLCEwKSxhPUJuKHRoaXMpLG89bGUuY2xpZW50WCxzPWxlLmNsaWVudFk7U2UobGUudmlldyksaVQoKSx0Lm1vdXNlPVthLHRoaXMuX196b29tLmludmVydChhKV0sYXIodGhpcyksdC5zdGFydCgpfWZ1bmN0aW9uIHUoKXtpZihhVCgpLCF0Lm1vdmVkKXt2YXIgZT1sZS5jbGllbnRYLW8sbj1sZS5jbGllbnRZLXM7dC5tb3ZlZD1lKmUrbipuPmR9dC56b29tKCJtb3VzZSIsaShnKHQudGhhdC5fX3pvb20sdC5tb3VzZVswXT1Cbih0LnRoYXQpLHQubW91c2VbMV0pLHQuZXh0ZW50LGMpKX1mdW5jdGlvbiBsKCl7ci5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxBZShsZS52aWV3LHQubW92ZWQpLGFUKCksdC5lbmQoKX19ZnVuY3Rpb24gaygpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD10aGlzLl9fem9vbSxlPUJuKHRoaXMpLGE9dC5pbnZlcnQoZSksbz10LmsqKGxlLnNoaWZ0S2V5Py41OjIpLHM9aShnKHkodCxvKSxlLGEpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMpO2FUKCksdT4wP1RlKHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbih1KS5jYWxsKHYscyxlKTpUZSh0aGlzKS5jYWxsKHAudHJhbnNmb3JtLHMpfX1mdW5jdGlvbiBUKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLHIsaSxhLG89bGUudG91Y2hlcyxzPW8ubGVuZ3RoLGM9Yih0aGlzLGFyZ3VtZW50cyxsZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1zKTtmb3IoaVQoKSxyPTA7cjxzOysrcilhPVthPU9uKHRoaXMsbywoaT1vW3JdKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQoYSksaS5pZGVudGlmaWVyXSxjLnRvdWNoMD9jLnRvdWNoMXx8Yy50b3VjaDBbMl09PT1hWzJdfHwoYy50b3VjaDE9YSxjLnRhcHM9MCk6KGMudG91Y2gwPWEsZT0hMCxjLnRhcHM9MSshIXQpO3QmJih0PWNsZWFyVGltZW91dCh0KSksZSYmKGMudGFwczwyJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Q9bnVsbH0pLGYpKSxhcih0aGlzKSxjLnN0YXJ0KCkpfX1mdW5jdGlvbiBFKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciBlLG4scixhLG89Yih0aGlzLGFyZ3VtZW50cykscz1sZS5jaGFuZ2VkVG91Y2hlcyx1PXMubGVuZ3RoO2ZvcihhVCgpLHQmJih0PWNsZWFyVGltZW91dCh0KSksby50YXBzPTAsZT0wO2U8dTsrK2Upcj1Pbih0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksby50b3VjaDAmJm8udG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP28udG91Y2gwWzBdPXI6by50b3VjaDEmJm8udG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoby50b3VjaDFbMF09cik7aWYobj1vLnRoYXQuX196b29tLG8udG91Y2gxKXt2YXIgbD1vLnRvdWNoMFswXSxoPW8udG91Y2gwWzFdLGY9by50b3VjaDFbMF0sZD1vLnRvdWNoMVsxXSxwPShwPWZbMF0tbFswXSkqcCsocD1mWzFdLWxbMV0pKnAsbT0obT1kWzBdLWhbMF0pKm0rKG09ZFsxXS1oWzFdKSptO249eShuLE1hdGguc3FydChwL20pKSxyPVsobFswXStmWzBdKS8yLChsWzFdK2ZbMV0pLzJdLGE9WyhoWzBdK2RbMF0pLzIsKGhbMV0rZFsxXSkvMl19ZWxzZXtpZighby50b3VjaDApcmV0dXJuO3I9by50b3VjaDBbMF0sYT1vLnRvdWNoMFsxXX1vLnpvb20oInRvdWNoIixpKGcobixyLGEpLG8uZXh0ZW50LGMpKX19ZnVuY3Rpb24gQygpe2lmKHRoaXMuX196b29taW5nKXt2YXIgdCxuLHI9Yih0aGlzLGFyZ3VtZW50cyksaT1sZS5jaGFuZ2VkVG91Y2hlcyxhPWkubGVuZ3RoO2ZvcihpVCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSksZiksdD0wO3Q8YTsrK3Qpbj1pW3RdLHIudG91Y2gwJiZyLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgci50b3VjaDA6ci50b3VjaDEmJnIudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgci50b3VjaDE7aWYoci50b3VjaDEmJiFyLnRvdWNoMCYmKHIudG91Y2gwPXIudG91Y2gxLGRlbGV0ZSByLnRvdWNoMSksci50b3VjaDApci50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KHIudG91Y2gwWzBdKTtlbHNlIGlmKHIuZW5kKCksMj09PXIudGFwcyl7dmFyIG89VGUodGhpcykub24oImRibGNsaWNrLnpvb20iKTtvJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBwLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O3IucHJvcGVydHkoIl9fem9vbSIsY1QpLHQhPT1yP3YodCxlLG4pOnIuaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0scC5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSxuKXtwLnNjYWxlVG8odCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSksbil9LHAuc2NhbGVUbz1mdW5jdGlvbih0LGUsbil7cC50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXRoaXMuX196b29tLG89bnVsbD09bj9tKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4scz1hLmludmVydChvKSx1PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIGkoZyh5KGEsdSksbyxzKSx0LGMpfSksbil9LHAudHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe3AudHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYyl9KSl9LHAudHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4sYSl7cC50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXRoaXMuX196b29tLHM9bnVsbD09YT9tKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE7cmV0dXJuIGkoblQudHJhbnNsYXRlKHNbMF0sc1sxXSkuc2NhbGUoby5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/LWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1lLCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiksdCxjKX0pLGEpfSxfLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtnZShuZXcgdFQocCx0LHRoaXMudGhhdC5fX3pvb20pLGguYXBwbHksaCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxwLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKaygrdCkscCk6YX0scC5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKayghIXQpLHApOm59LHAudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmsoISF0KSxwKTpvfSxwLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkprKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxwKTpyfSxwLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzWzBdPSt0WzBdLHNbMV09K3RbMV0scCk6W3NbMF0sc1sxXV19LHAudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjWzBdWzBdPSt0WzBdWzBdLGNbMV1bMF09K3RbMV1bMF0sY1swXVsxXT0rdFswXVsxXSxjWzFdWzFdPSt0WzFdWzFdLHApOltbY1swXVswXSxjWzBdWzFdXSxbY1sxXVswXSxjWzFdWzFdXV19LHAuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQscCk6aX0scC5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxwKTp1fSxwLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQscCk6bH0scC5vbj1mdW5jdGlvbigpe3ZhciB0PWgub24uYXBwbHkoaCxhcmd1bWVudHMpO3JldHVybiB0PT09aD9wOnR9LHAuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0odD0rdCkqdCxwKTpNYXRoLnNxcnQoZCl9LHB9clQucHJvdG90eXBlPWVULnByb3RvdHlwZX0sNjgxOih0LGUsbik9Pnt0LmV4cG9ydHM9e2dyYXBobGliOm4oNTc0KSxsYXlvdXQ6big4MTIzKSxkZWJ1ZzpuKDc1NzApLHV0aWw6e3RpbWU6bigxMTM4KS50aW1lLG5vdGltZTpuKDExMzgpLm5vdGltZX0sdmVyc2lvbjpuKDgxNzcpfX0sMTIwNzoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNiksaT1uKDQwNzkpO3QuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJncmVlZHkiPT09dC5ncmFwaCgpLmFjeWNsaWNlcj9pKHQsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkud2VpZ2h0fX0odCkpOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49e30saT17fTtyZXR1cm4gci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24gYShvKXtyLmhhcyhpLG8pfHwoaVtvXT0hMCxuW29dPSEwLHIuZm9yRWFjaCh0Lm91dEVkZ2VzKG8pLChmdW5jdGlvbih0KXtyLmhhcyhuLHQudyk/ZS5wdXNoKHQpOmEodC53KX0pKSxkZWxldGUgbltvXSl9KSksZX0odCk7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTt0LnJlbW92ZUVkZ2UoZSksbi5mb3J3YXJkTmFtZT1lLm5hbWUsbi5yZXZlcnNlZD0hMCx0LnNldEVkZ2UoZS53LGUudixuLHIudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciByPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixyKX19KSl9fX0sMTEzMzoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbixyLGEsbyl7dmFyIHM9e3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6ZX0sYz1hW2VdW28tMV0sdT1pLmFkZER1bW15Tm9kZSh0LCJib3JkZXIiLHMsbik7YVtlXVtvXT11LHQuc2V0UGFyZW50KHUsciksYyYmdC5zZXRFZGdlKGMsdSx7d2VpZ2h0OjF9KX10LmV4cG9ydHM9ZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24gZShuKXt2YXIgaT10LmNoaWxkcmVuKG4pLG89dC5ub2RlKG4pO2lmKGkubGVuZ3RoJiZyLmZvckVhY2goaSxlKSxyLmhhcyhvLCJtaW5SYW5rIikpe28uYm9yZGVyTGVmdD1bXSxvLmJvcmRlclJpZ2h0PVtdO2Zvcih2YXIgcz1vLm1pblJhbmssYz1vLm1heFJhbmsrMTtzPGM7KytzKWEodCwiYm9yZGVyTGVmdCIsIl9ibCIsbixvLHMpLGEodCwiYm9yZGVyUmlnaHQiLCJfYnIiLG4sbyxzKX19KSl9fSwzMjU4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTtmdW5jdGlvbiBpKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe2EodC5ub2RlKGUpKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXthKHQuZWRnZShlKSl9KSl9ZnVuY3Rpb24gYSh0KXt2YXIgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQsdC5oZWlnaHQ9ZX1mdW5jdGlvbiBvKHQpe3QueT0tdC55fWZ1bmN0aW9uIHModCl7dmFyIGU9dC54O3QueD10LnksdC55PWV9dC5leHBvcnRzPXthZGp1c3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTsibHIiIT09ZSYmInJsIiE9PWV8fGkodCl9LHVuZG86ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTsiYnQiIT09ZSYmInJsIiE9PWV8fGZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe28odC5ub2RlKGUpKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7ci5mb3JFYWNoKG4ucG9pbnRzLG8pLHIuaGFzKG4sInkiKSYmbyhuKX0pKX0odCksImxyIiE9PWUmJiJybCIhPT1lfHwoZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cyh0Lm5vZGUoZSkpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtyLmZvckVhY2gobi5wb2ludHMscyksci5oYXMobiwieCIpJiZzKG4pfSkpfSh0KSxpKHQpKX19fSw3ODIyOnQ9PntmdW5jdGlvbiBlKCl7dmFyIHQ9e307dC5fbmV4dD10Ll9wcmV2PXQsdGhpcy5fc2VudGluZWw9dH1mdW5jdGlvbiBuKHQpe3QuX3ByZXYuX25leHQ9dC5fbmV4dCx0Ll9uZXh0Ll9wcmV2PXQuX3ByZXYsZGVsZXRlIHQuX25leHQsZGVsZXRlIHQuX3ByZXZ9ZnVuY3Rpb24gcih0LGUpe2lmKCJfbmV4dCIhPT10JiYiX3ByZXYiIT09dClyZXR1cm4gZX10LmV4cG9ydHM9ZSxlLnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VudGluZWwsZT10Ll9wcmV2O2lmKGUhPT10KXJldHVybiBuKGUpLGV9LGUucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2VudGluZWw7dC5fcHJldiYmdC5fbmV4dCYmbih0KSx0Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj10LGUuX25leHQ9dCx0Ll9wcmV2PWV9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5fc2VudGluZWwsbj1lLl9wcmV2O24hPT1lOyl0LnB1c2goSlNPTi5zdHJpbmdpZnkobixyKSksbj1uLl9wcmV2O3JldHVybiJbIit0LmpvaW4oIiwgIikrIl0ifX0sNzU3MDoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCksYT1uKDU3NCkuR3JhcGg7dC5leHBvcnRzPXtkZWJ1Z09yZGVyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPWkuYnVpbGRMYXllck1hdHJpeCh0KSxuPW5ldyBhKHtjb21wb3VuZDohMCxtdWx0aWdyYXBoOiEwfSkuc2V0R3JhcGgoe30pO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtuLnNldE5vZGUoZSx7bGFiZWw6ZX0pLG4uc2V0UGFyZW50KGUsImxheWVyIit0Lm5vZGUoZSkucmFuayl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24odCl7bi5zZXRFZGdlKHQudix0Lncse30sdC5uYW1lKX0pKSxyLmZvckVhY2goZSwoZnVuY3Rpb24odCxlKXt2YXIgaT0ibGF5ZXIiK2U7bi5zZXROb2RlKGkse3Jhbms6InNhbWUifSksci5yZWR1Y2UodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZXRFZGdlKHQsZSx7c3R5bGU6ImludmlzIn0pLGV9KSl9KSksbn19fSw1NzQ6KHQsZSxuKT0+e3ZhciByO3RyeXtyPW4oODI4Mil9Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5ncmFwaGxpYiksdC5leHBvcnRzPXJ9LDQwNzk6KHQsZSxuKT0+e3ZhciByPW4oODQzNiksaT1uKDU3NCkuR3JhcGgsYT1uKDc4MjIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQubm9kZUNvdW50KCk8PTEpcmV0dXJuW107dmFyIG49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgaSxvPTAscz0wO3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe24uc2V0Tm9kZSh0LHt2OnQsaW46MCxvdXQ6MH0pfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKHQpe3ZhciByPW4uZWRnZSh0LnYsdC53KXx8MCxpPWUodCksYT1yK2k7bi5zZXRFZGdlKHQudix0LncsYSkscz1NYXRoLm1heChzLG4ubm9kZSh0LnYpLm91dCs9aSksbz1NYXRoLm1heChvLG4ubm9kZSh0LncpLmluKz1pKX0pKTt2YXIgdT1yLnJhbmdlKHMrbyszKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhfSkpLGw9bysxO3JldHVybiByLmZvckVhY2gobi5ub2RlcygpLChmdW5jdGlvbih0KXtjKHUsbCxuLm5vZGUodCkpfSkpLHtncmFwaDpuLGJ1Y2tldHM6dSx6ZXJvSWR4Omx9fSh0LGV8fG8pLHU9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcixpPVtdLGE9ZVtlLmxlbmd0aC0xXSxvPWVbMF07dC5ub2RlQ291bnQoKTspe2Zvcig7cj1vLmRlcXVldWUoKTspcyh0LGUsbixyKTtmb3IoO3I9YS5kZXF1ZXVlKCk7KXModCxlLG4scik7aWYodC5ub2RlQ291bnQoKSlmb3IodmFyIGM9ZS5sZW5ndGgtMjtjPjA7LS1jKWlmKHI9ZVtjXS5kZXF1ZXVlKCkpe2k9aS5jb25jYXQocyh0LGUsbixyLCEwKSk7YnJlYWt9fXJldHVybiBpfShuLmdyYXBoLG4uYnVja2V0cyxuLnplcm9JZHgpO3JldHVybiByLmZsYXR0ZW4oci5tYXAodSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZS52LGUudyl9KSksITApfTt2YXIgbz1yLmNvbnN0YW50KDEpO2Z1bmN0aW9uIHModCxlLG4saSxhKXt2YXIgbz1hP1tdOnZvaWQgMDtyZXR1cm4gci5mb3JFYWNoKHQuaW5FZGdlcyhpLnYpLChmdW5jdGlvbihyKXt2YXIgaT10LmVkZ2Uocikscz10Lm5vZGUoci52KTthJiZvLnB1c2goe3Y6ci52LHc6ci53fSkscy5vdXQtPWksYyhlLG4scyl9KSksci5mb3JFYWNoKHQub3V0RWRnZXMoaS52KSwoZnVuY3Rpb24ocil7dmFyIGk9dC5lZGdlKHIpLGE9ci53LG89dC5ub2RlKGEpO28uaW4tPWksYyhlLG4sbyl9KSksdC5yZW1vdmVOb2RlKGkudiksb31mdW5jdGlvbiBjKHQsZSxuKXtuLm91dD9uLmluP3Rbbi5vdXQtbi5pbitlXS5lbnF1ZXVlKG4pOnRbdC5sZW5ndGgtMV0uZW5xdWV1ZShuKTp0WzBdLmVucXVldWUobil9fSw4MTIzOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMTIwNyksYT1uKDU5OTUpLG89big4MDkzKSxzPW4oMTEzOCkubm9ybWFsaXplUmFua3MsYz1uKDQyMTkpLHU9bigxMTM4KS5yZW1vdmVFbXB0eVJhbmtzLGw9bigyOTgxKSxoPW4oMTEzMyksZj1uKDMyNTgpLGQ9bigzNDA4KSxwPW4oNzg3MykseT1uKDExMzgpLGc9big1NzQpLkdyYXBoO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWUmJmUuZGVidWdUaW1pbmc/eS50aW1lOnkubm90aW1lO24oImxheW91dCIsKGZ1bmN0aW9uKCl7dmFyIGU9bigiICBidWlsZExheW91dEdyYXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bmV3IGcoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPUModC5ncmFwaCgpKTtyZXR1cm4gZS5zZXRHcmFwaChyLm1lcmdlKHt9LHYsRShuLG0pLHIucGljayhuLGIpKSksci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9Qyh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLHIuZGVmYXVsdHMoRShpLF8pLHgpKSxlLnNldFBhcmVudChuLHQucGFyZW50KG4pKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXt2YXIgaT1DKHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sci5tZXJnZSh7fSxrLEUoaSx3KSxyLnBpY2soaSxUKSkpfSkpLGV9KHQpfSkpO24oIiAgcnVuTGF5b3V0IiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXtlKCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ3JhcGgoKTtlLnJhbmtzZXAvPTIsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIHI9dC5lZGdlKG4pO3IubWlubGVuKj0yLCJjIiE9PXIubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1lLnJhbmtkaXJ8fCJCVCI9PT1lLnJhbmtkaXI/ci53aWR0aCs9ci5sYWJlbG9mZnNldDpyLmhlaWdodCs9ci5sYWJlbG9mZnNldCl9KSl9KHQpfSkpLGUoIiAgICByZW1vdmVTZWxmRWRnZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXtpZihlLnY9PT1lLncpe3ZhciBuPXQubm9kZShlLnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2UsbGFiZWw6dC5lZGdlKGUpfSksdC5yZW1vdmVFZGdlKGUpfX0pKX0odCl9KSksZSgiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe2kucnVuKHQpfSkpLGUoIiAgICBuZXN0aW5nR3JhcGgucnVuIiwoZnVuY3Rpb24oKXtsLnJ1bih0KX0pKSxlKCIgICAgcmFuayIsKGZ1bmN0aW9uKCl7byh5LmFzTm9uQ29tcG91bmRHcmFwaCh0KSl9KSksZSgiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi53aWR0aCYmbi5oZWlnaHQpe3ZhciByPXQubm9kZShlLnYpLGk9e3Jhbms6KHQubm9kZShlLncpLnJhbmstci5yYW5rKS8yK3IucmFuayxlfTt5LmFkZER1bW15Tm9kZSh0LCJlZGdlLXByb3h5IixpLCJfZXAiKX19KSl9KHQpfSkpLGUoIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXt1KHQpfSkpLGUoIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cCIsKGZ1bmN0aW9uKCl7bC5jbGVhbnVwKHQpfSkpLGUoIiAgICBub3JtYWxpemVSYW5rcyIsKGZ1bmN0aW9uKCl7cyh0KX0pKSxlKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPTA7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pO2kuYm9yZGVyVG9wJiYoaS5taW5SYW5rPXQubm9kZShpLmJvcmRlclRvcCkucmFuayxpLm1heFJhbms9dC5ub2RlKGkuYm9yZGVyQm90dG9tKS5yYW5rLGU9ci5tYXgoZSxpLm1heFJhbmspKX0pKSx0LmdyYXBoKCkubWF4UmFuaz1lfSh0KX0pKSxlKCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTsiZWRnZS1wcm94eSI9PT1uLmR1bW15JiYodC5lZGdlKG4uZSkubGFiZWxSYW5rPW4ucmFuayx0LnJlbW92ZU5vZGUoZSkpfSkpfSh0KX0pKSxlKCIgICAgbm9ybWFsaXplLnJ1biIsKGZ1bmN0aW9uKCl7YS5ydW4odCl9KSksZSgiICAgIHBhcmVudER1bW15Q2hhaW5zIiwoZnVuY3Rpb24oKXtjKHQpfSkpLGUoIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7aCh0KX0pKSxlKCIgICAgb3JkZXIiLChmdW5jdGlvbigpe2QodCl9KSksZSgiICAgIGluc2VydFNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPXkuYnVpbGRMYXllck1hdHJpeCh0KTtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIG49MDtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSxpKXt2YXIgYT10Lm5vZGUoZSk7YS5vcmRlcj1pK24sci5mb3JFYWNoKGEuc2VsZkVkZ2VzLChmdW5jdGlvbihlKXt5LmFkZER1bW15Tm9kZSh0LCJzZWxmZWRnZSIse3dpZHRoOmUubGFiZWwud2lkdGgsaGVpZ2h0OmUubGFiZWwuaGVpZ2h0LHJhbms6YS5yYW5rLG9yZGVyOmkrICsrbixlOmUuZSxsYWJlbDplLmxhYmVsfSwiX3NlIil9KSksZGVsZXRlIGEuc2VsZkVkZ2VzfSkpfSkpfSh0KX0pKSxlKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7Zi5hZGp1c3QodCl9KSksZSgiICAgIHBvc2l0aW9uIiwoZnVuY3Rpb24oKXtwKHQpfSkpLGUoIiAgICBwb3NpdGlvblNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIHI9dC5ub2RlKG4uZS52KSxpPXIueCtyLndpZHRoLzIsYT1yLnksbz1uLngtaSxzPXIuaGVpZ2h0LzI7dC5zZXRFZGdlKG4uZSxuLmxhYmVsKSx0LnJlbW92ZU5vZGUoZSksbi5sYWJlbC5wb2ludHM9W3t4OmkrMipvLzMseTphLXN9LHt4OmkrNSpvLzYseTphLXN9LHt4Omkrbyx5OmF9LHt4OmkrNSpvLzYseTphK3N9LHt4OmkrMipvLzMseTphK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSh0KX0pKSxlKCIgICAgcmVtb3ZlQm9yZGVyTm9kZXMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtpZih0LmNoaWxkcmVuKGUpLmxlbmd0aCl7dmFyIG49dC5ub2RlKGUpLGk9dC5ub2RlKG4uYm9yZGVyVG9wKSxhPXQubm9kZShuLmJvcmRlckJvdHRvbSksbz10Lm5vZGUoci5sYXN0KG4uYm9yZGVyTGVmdCkpLHM9dC5ub2RlKHIubGFzdChuLmJvcmRlclJpZ2h0KSk7bi53aWR0aD1NYXRoLmFicyhzLngtby54KSxuLmhlaWdodD1NYXRoLmFicyhhLnktaS55KSxuLng9by54K24ud2lkdGgvMixuLnk9aS55K24uaGVpZ2h0LzJ9fSkpLHIuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpeyJib3JkZXIiPT09dC5ub2RlKGUpLmR1bW15JiZ0LnJlbW92ZU5vZGUoZSl9KSl9KHQpfSkpLGUoIiAgICBub3JtYWxpemUudW5kbyIsKGZ1bmN0aW9uKCl7YS51bmRvKHQpfSkpLGUoIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtpZihyLmhhcyhuLCJ4Iikpc3dpdGNoKCJsIiE9PW4ubGFiZWxwb3MmJiJyIiE9PW4ubGFiZWxwb3N8fChuLndpZHRoLT1uLmxhYmVsb2Zmc2V0KSxuLmxhYmVscG9zKXtjYXNlImwiOm4ueC09bi53aWR0aC8yK24ubGFiZWxvZmZzZXQ7YnJlYWs7Y2FzZSJyIjpuLngrPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0fX0pKX0odCl9KSksZSgiICAgIHVuZG9Db29yZGluYXRlU3lzdGVtIiwoZnVuY3Rpb24oKXtmLnVuZG8odCl9KSksZSgiICAgIHRyYW5zbGF0ZUdyYXBoIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7dmFyIGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG49MCxpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhPTAsbz10LmdyYXBoKCkscz1vLm1hcmdpbnh8fDAsYz1vLm1hcmdpbnl8fDA7ZnVuY3Rpb24gdSh0KXt2YXIgcj10Lngsbz10Lnkscz10LndpZHRoLGM9dC5oZWlnaHQ7ZT1NYXRoLm1pbihlLHItcy8yKSxuPU1hdGgubWF4KG4scitzLzIpLGk9TWF0aC5taW4oaSxvLWMvMiksYT1NYXRoLm1heChhLG8rYy8yKX1yLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt1KHQubm9kZShlKSl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO3IuaGFzKG4sIngiKSYmdShuKX0pKSxlLT1zLGktPWMsci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIHI9dC5ub2RlKG4pO3IueC09ZSxyLnktPWl9KSksci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGE9dC5lZGdlKG4pO3IuZm9yRWFjaChhLnBvaW50cywoZnVuY3Rpb24odCl7dC54LT1lLHQueS09aX0pKSxyLmhhcyhhLCJ4IikmJihhLngtPWUpLHIuaGFzKGEsInkiKSYmKGEueS09aSl9KSksby53aWR0aD1uLWUrcyxvLmhlaWdodD1hLWkrY30odCl9KSksZSgiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG4scixpPXQuZWRnZShlKSxhPXQubm9kZShlLnYpLG89dC5ub2RlKGUudyk7aS5wb2ludHM/KG49aS5wb2ludHNbMF0scj1pLnBvaW50c1tpLnBvaW50cy5sZW5ndGgtMV0pOihpLnBvaW50cz1bXSxuPW8scj1hKSxpLnBvaW50cy51bnNoaWZ0KHkuaW50ZXJzZWN0UmVjdChhLG4pKSxpLnBvaW50cy5wdXNoKHkuaW50ZXJzZWN0UmVjdChvLHIpKX0pKX0odCl9KSksZSgiICAgIHJldmVyc2VQb2ludHMiLChmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7bi5yZXZlcnNlZCYmbi5wb2ludHMucmV2ZXJzZSgpfSkpfSh0KX0pKSxlKCIgICAgYWN5Y2xpYy51bmRvIiwoZnVuY3Rpb24oKXtpLnVuZG8odCl9KSl9KGUsbil9KSksbigiICB1cGRhdGVJbnB1dEdyYXBoIiwoZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgcj10Lm5vZGUobiksaT1lLm5vZGUobik7ciYmKHIueD1pLngsci55PWkueSxlLmNoaWxkcmVuKG4pLmxlbmd0aCYmKHIud2lkdGg9aS53aWR0aCxyLmhlaWdodD1pLmhlaWdodCkpfSkpLHIuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQuZWRnZShuKSxhPWUuZWRnZShuKTtpLnBvaW50cz1hLnBvaW50cyxyLmhhcyhhLCJ4IikmJihpLng9YS54LGkueT1hLnkpfSkpLHQuZ3JhcGgoKS53aWR0aD1lLmdyYXBoKCkud2lkdGgsdC5ncmFwaCgpLmhlaWdodD1lLmdyYXBoKCkuaGVpZ2h0fSh0LGUpfSkpfSkpfTt2YXIgbT1bIm5vZGVzZXAiLCJlZGdlc2VwIiwicmFua3NlcCIsIm1hcmdpbngiLCJtYXJnaW55Il0sdj17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxiPVsiYWN5Y2xpY2VyIiwicmFua2VyIiwicmFua2RpciIsImFsaWduIl0sXz1bIndpZHRoIiwiaGVpZ2h0Il0seD17d2lkdGg6MCxoZWlnaHQ6MH0sdz1bIm1pbmxlbiIsIndlaWdodCIsIndpZHRoIiwiaGVpZ2h0IiwibGFiZWxvZmZzZXQiXSxrPXttaW5sZW46MSx3ZWlnaHQ6MSx3aWR0aDowLGhlaWdodDowLGxhYmVsb2Zmc2V0OjEwLGxhYmVscG9zOiJyIn0sVD1bImxhYmVscG9zIl07ZnVuY3Rpb24gRSh0LGUpe3JldHVybiByLm1hcFZhbHVlcyhyLnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uIEModCl7dmFyIGU9e307cmV0dXJuIHIuZm9yRWFjaCh0LChmdW5jdGlvbih0LG4pe2Vbbi50b0xvd2VyQ2FzZSgpXT10fSkpLGV9fSw4NDM2Oih0LGUsbik9Pnt2YXIgcjt0cnl7cj17Y2xvbmVEZWVwOm4oMzYxKSxjb25zdGFudDpuKDU3MDMpLGRlZmF1bHRzOm4oMTc0NyksZWFjaDpuKDYwNzMpLGZpbHRlcjpuKDMxMDUpLGZpbmQ6bigzMzExKSxmbGF0dGVuOm4oNTU2NCksZm9yRWFjaDpuKDQ0ODYpLGZvckluOm4oMjYyMCksaGFzOm4oODcyMSksaXNVbmRlZmluZWQ6bigyMzUzKSxsYXN0Om4oOTI4KSxtYXA6big1MTYxKSxtYXBWYWx1ZXM6big2NjA0KSxtYXg6big2MTYyKSxtZXJnZTpuKDM4NTcpLG1pbjpuKDM2MzIpLG1pbkJ5Om4oMjc2Miksbm93Om4oNzc3MSkscGljazpuKDk3MjIpLHJhbmdlOm4oNjAyNikscmVkdWNlOm4oNDA2MSksc29ydEJ5Om4oOTczNCksdW5pcXVlSWQ6bigzOTU1KSx2YWx1ZXM6bigyNjI4KSx6aXBPYmplY3Q6big3Mjg3KX19Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5fKSx0LmV4cG9ydHM9cn0sMjk4MToodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbixvLHMsYyx1KXt2YXIgbD10LmNoaWxkcmVuKHUpO2lmKGwubGVuZ3RoKXt2YXIgaD1pLmFkZEJvcmRlck5vZGUodCwiX2J0IiksZj1pLmFkZEJvcmRlck5vZGUodCwiX2JiIiksZD10Lm5vZGUodSk7dC5zZXRQYXJlbnQoaCx1KSxkLmJvcmRlclRvcD1oLHQuc2V0UGFyZW50KGYsdSksZC5ib3JkZXJCb3R0b209ZixyLmZvckVhY2gobCwoZnVuY3Rpb24ocil7YSh0LGUsbixvLHMsYyxyKTt2YXIgaT10Lm5vZGUociksbD1pLmJvcmRlclRvcD9pLmJvcmRlclRvcDpyLGQ9aS5ib3JkZXJCb3R0b20/aS5ib3JkZXJCb3R0b206cixwPWkuYm9yZGVyVG9wP286MipvLHk9bCE9PWQ/MTpzLWNbdV0rMTt0LnNldEVkZ2UoaCxsLHt3ZWlnaHQ6cCxtaW5sZW46eSxuZXN0aW5nRWRnZTohMH0pLHQuc2V0RWRnZShkLGYse3dlaWdodDpwLG1pbmxlbjp5LG5lc3RpbmdFZGdlOiEwfSl9KSksdC5wYXJlbnQodSl8fHQuc2V0RWRnZShlLGgse3dlaWdodDowLG1pbmxlbjpzK2NbdV19KX1lbHNlIHUhPT1lJiZ0LnNldEVkZ2UoZSx1LHt3ZWlnaHQ6MCxtaW5sZW46bn0pfXQuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3ZhciBlPWkuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLGEpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJnIuZm9yRWFjaChvLChmdW5jdGlvbih0KXtuKHQsYSsxKX0pKSxlW2ldPWF9cmV0dXJuIHIuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uKHQpe24odCwxKX0pKSxlfSh0KSxvPXIubWF4KHIudmFsdWVzKG4pKS0xLHM9MipvKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm1pbmxlbio9c30pKTt2YXIgYz1mdW5jdGlvbih0KXtyZXR1cm4gci5yZWR1Y2UodC5lZGdlcygpLChmdW5jdGlvbihlLG4pe3JldHVybiBlK3QuZWRnZShuKS53ZWlnaHR9KSwwKX0odCkrMTtyLmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbihyKXthKHQsZSxzLGMsbyxuLHIpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1zfSxjbGVhbnVwOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ3JhcGgoKTt0LnJlbW92ZU5vZGUoZS5uZXN0aW5nUm9vdCksZGVsZXRlIGUubmVzdGluZ1Jvb3Qsci5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm5lc3RpbmdFZGdlJiZ0LnJlbW92ZUVkZ2UoZSl9KSl9fX0sNTk5NToodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNiksaT1uKDExMzgpO3QuZXhwb3J0cz17cnVuOmZ1bmN0aW9uKHQpe3QuZ3JhcGgoKS5kdW1teUNoYWlucz1bXSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXshZnVuY3Rpb24odCxlKXt2YXIgbixyLGEsbz1lLnYscz10Lm5vZGUobykucmFuayxjPWUudyx1PXQubm9kZShjKS5yYW5rLGw9ZS5uYW1lLGg9dC5lZGdlKGUpLGY9aC5sYWJlbFJhbms7aWYodSE9PXMrMSl7Zm9yKHQucmVtb3ZlRWRnZShlKSxhPTAsKytzO3M8dTsrK2EsKytzKWgucG9pbnRzPVtdLHI9e3dpZHRoOjAsaGVpZ2h0OjAsZWRnZUxhYmVsOmgsZWRnZU9iajplLHJhbms6c30sbj1pLmFkZER1bW15Tm9kZSh0LCJlZGdlIixyLCJfZCIpLHM9PT1mJiYoci53aWR0aD1oLndpZHRoLHIuaGVpZ2h0PWguaGVpZ2h0LHIuZHVtbXk9ImVkZ2UtbGFiZWwiLHIubGFiZWxwb3M9aC5sYWJlbHBvcyksdC5zZXRFZGdlKG8sbix7d2VpZ2h0Omgud2VpZ2h0fSxsKSwwPT09YSYmdC5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2gobiksbz1uO3Quc2V0RWRnZShvLGMse3dlaWdodDpoLndlaWdodH0sbCl9fSh0LGUpfSkpfSx1bmRvOmZ1bmN0aW9uKHQpe3IuZm9yRWFjaCh0LmdyYXBoKCkuZHVtbXlDaGFpbnMsKGZ1bmN0aW9uKGUpe3ZhciBuLHI9dC5ub2RlKGUpLGk9ci5lZGdlTGFiZWw7Zm9yKHQuc2V0RWRnZShyLmVkZ2VPYmosaSk7ci5kdW1teTspbj10LnN1Y2Nlc3NvcnMoZSlbMF0sdC5yZW1vdmVOb2RlKGUpLGkucG9pbnRzLnB1c2goe3g6ci54LHk6ci55fSksImVkZ2UtbGFiZWwiPT09ci5kdW1teSYmKGkueD1yLngsaS55PXIueSxpLndpZHRoPXIud2lkdGgsaS5oZWlnaHQ9ci5oZWlnaHQpLGU9bixyPXQubm9kZShlKX0pKX19fSw1MDkzOih0LGUsbik9Pnt2YXIgcj1uKDg0MzYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGksYT17fTtyLmZvckVhY2gobiwoZnVuY3Rpb24obil7Zm9yKHZhciByLG8scz10LnBhcmVudChuKTtzOyl7aWYoKHI9dC5wYXJlbnQocykpPyhvPWFbcl0sYVtyXT1zKToobz1pLGk9cyksbyYmbyE9PXMpcmV0dXJuIHZvaWQgZS5zZXRFZGdlKG8scyk7cz1yfX0pKX19LDU0Mzk6KHQsZSxuKT0+e3ZhciByPW4oODQzNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIubWFwKGUsKGZ1bmN0aW9uKGUpe3ZhciBuPXQuaW5FZGdlcyhlKTtpZihuLmxlbmd0aCl7dmFyIGk9ci5yZWR1Y2UobiwoZnVuY3Rpb24oZSxuKXt2YXIgcj10LmVkZ2UobiksaT10Lm5vZGUobi52KTtyZXR1cm57c3VtOmUuc3VtK3Iud2VpZ2h0Kmkub3JkZXIsd2VpZ2h0OmUud2VpZ2h0K3Iud2VpZ2h0fX0pLHtzdW06MCx3ZWlnaHQ6MH0pO3JldHVybnt2OmUsYmFyeWNlbnRlcjppLnN1bS9pLndlaWdodCx3ZWlnaHQ6aS53ZWlnaHR9fXJldHVybnt2OmV9fSkpfX0sMzEyODoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oNTc0KS5HcmFwaDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZTt0Lmhhc05vZGUoZT1yLnVuaXF1ZUlkKCJfcm9vdCIpKTspO3JldHVybiBlfSh0KSxvPW5ldyBpKHtjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyb290OmF9KS5zZXREZWZhdWx0Tm9kZUxhYmVsKChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpfSkpO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihpKXt2YXIgcz10Lm5vZGUoaSksYz10LnBhcmVudChpKTsocy5yYW5rPT09ZXx8cy5taW5SYW5rPD1lJiZlPD1zLm1heFJhbmspJiYoby5zZXROb2RlKGkpLG8uc2V0UGFyZW50KGksY3x8YSksci5mb3JFYWNoKHRbbl0oaSksKGZ1bmN0aW9uKGUpe3ZhciBuPWUudj09PWk/ZS53OmUudixhPW8uZWRnZShuLGkpLHM9ci5pc1VuZGVmaW5lZChhKT8wOmEud2VpZ2h0O28uc2V0RWRnZShuLGkse3dlaWdodDp0LmVkZ2UoZSkud2VpZ2h0K3N9KX0pKSxyLmhhcyhzLCJtaW5SYW5rIikmJm8uc2V0Tm9kZShpLHtib3JkZXJMZWZ0OnMuYm9yZGVyTGVmdFtlXSxib3JkZXJSaWdodDpzLmJvcmRlclJpZ2h0W2VdfSkpfSkpLG99fSw2NjMwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTtmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9ci56aXBPYmplY3QobixyLm1hcChuLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpKSxhPXIuZmxhdHRlbihyLm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gci5zb3J0Qnkoci5tYXAodC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJue3BvczppW2Uud10sd2VpZ2h0OnQuZWRnZShlKS53ZWlnaHR9fSkpLCJwb3MiKX0pKSwhMCksbz0xO288bi5sZW5ndGg7KW88PD0xO3ZhciBzPTIqby0xO28tPTE7dmFyIGM9ci5tYXAobmV3IEFycmF5KHMpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLHU9MDtyZXR1cm4gci5mb3JFYWNoKGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5wb3MrbztjW2VdKz10LndlaWdodDtmb3IodmFyIG49MDtlPjA7KWUlMiYmKG4rPWNbZSsxXSksY1tlPWUtMT4+MV0rPXQud2VpZ2h0O3UrPXQud2VpZ2h0Km59KSkpLHV9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAscj0xO3I8ZS5sZW5ndGg7KytyKW4rPWkodCxlW3ItMV0sZVtyXSk7cmV0dXJuIG59fSwzNDA4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMjU4OCksYT1uKDY2MzApLG89bigxMDI2KSxzPW4oMzEyOCksYz1uKDUwOTMpLHU9big1NzQpLkdyYXBoLGw9bigxMTM4KTtmdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gci5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHModCxlLG4pfSkpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbj1uZXcgdTtyLmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIGk9dC5ncmFwaCgpLnJvb3QsYT1vKHQsaSxuLGUpO3IuZm9yRWFjaChhLnZzLChmdW5jdGlvbihlLG4pe3Qubm9kZShlKS5vcmRlcj1ufSkpLGModCxuLGEudnMpfSkpfWZ1bmN0aW9uIGQodCxlKXtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSl9KSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWwubWF4UmFuayh0KSxuPWgodCxyLnJhbmdlKDEsZSsxKSwiaW5FZGdlcyIpLG89aCh0LHIucmFuZ2UoZS0xLC0xLC0xKSwib3V0RWRnZXMiKSxzPWkodCk7ZCh0LHMpO2Zvcih2YXIgYyx1PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwPTAseT0wO3k8NDsrK3AsKyt5KXtmKHAlMj9uOm8scCU0Pj0yKSxzPWwuYnVpbGRMYXllck1hdHJpeCh0KTt2YXIgZz1hKHQscyk7Zzx1JiYoeT0wLGM9ci5jbG9uZURlZXAocyksdT1nKX1kKHQsYyl9fSwyNTg4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9e30sbj1yLmZpbHRlcih0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiF0LmNoaWxkcmVuKGUpLmxlbmd0aH0pKSxpPXIubWF4KHIubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksYT1yLm1hcChyLnJhbmdlKGkrMSksKGZ1bmN0aW9uKCl7cmV0dXJuW119KSksbz1yLnNvcnRCeShuLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLnJhbmt9KSk7cmV0dXJuIHIuZm9yRWFjaChvLChmdW5jdGlvbiBuKGkpe2lmKCFyLmhhcyhlLGkpKXtlW2ldPSEwO3ZhciBvPXQubm9kZShpKTthW28ucmFua10ucHVzaChpKSxyLmZvckVhY2godC5zdWNjZXNzb3JzKGkpLG4pfX0pKSxhfX0sOTU2NzoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49e307cmV0dXJuIHIuZm9yRWFjaCh0LChmdW5jdGlvbih0LGUpe3ZhciBpPW5bdC52XT17aW5kZWdyZWU6MCxpbjpbXSxvdXQ6W10sdnM6W3Qudl0saTplfTtyLmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fChpLmJhcnljZW50ZXI9dC5iYXJ5Y2VudGVyLGkud2VpZ2h0PXQud2VpZ2h0KX0pKSxyLmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgZT1uW3Qudl0saT1uW3Qud107ci5pc1VuZGVmaW5lZChlKXx8ci5pc1VuZGVmaW5lZChpKXx8KGkuaW5kZWdyZWUrKyxlLm91dC5wdXNoKG5bdC53XSkpfSkpLGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGksYSxvO2UubWVyZ2VkfHwoci5pc1VuZGVmaW5lZChlLmJhcnljZW50ZXIpfHxyLmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fGUuYmFyeWNlbnRlcj49dC5iYXJ5Y2VudGVyKSYmKGk9ZSxhPTAsbz0wLChuPXQpLndlaWdodCYmKGErPW4uYmFyeWNlbnRlcipuLndlaWdodCxvKz1uLndlaWdodCksaS53ZWlnaHQmJihhKz1pLmJhcnljZW50ZXIqaS53ZWlnaHQsbys9aS53ZWlnaHQpLG4udnM9aS52cy5jb25jYXQobi52cyksbi5iYXJ5Y2VudGVyPWEvbyxuLndlaWdodD1vLG4uaT1NYXRoLm1pbihpLmksbi5pKSxpLm1lcmdlZD0hMCl9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uaW4ucHVzaChlKSwwPT0tLW4uaW5kZWdyZWUmJnQucHVzaChuKX19Zm9yKDt0Lmxlbmd0aDspe3ZhciBhPXQucG9wKCk7ZS5wdXNoKGEpLHIuZm9yRWFjaChhLmluLnJldmVyc2UoKSxuKGEpKSxyLmZvckVhY2goYS5vdXQsaShhKSl9cmV0dXJuIHIubWFwKHIuZmlsdGVyKGUsKGZ1bmN0aW9uKHQpe3JldHVybiF0Lm1lcmdlZH0pKSwoZnVuY3Rpb24odCl7cmV0dXJuIHIucGljayh0LFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pKX0oci5maWx0ZXIobiwoZnVuY3Rpb24odCl7cmV0dXJuIXQuaW5kZWdyZWV9KSkpfX0sMTAyNjoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oNTQzOSksYT1uKDk1NjcpLG89big3MzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24gdChlLG4scyxjKXt2YXIgdT1lLmNoaWxkcmVuKG4pLGw9ZS5ub2RlKG4pLGg9bD9sLmJvcmRlckxlZnQ6dm9pZCAwLGY9bD9sLmJvcmRlclJpZ2h0OnZvaWQgMCxkPXt9O2gmJih1PXIuZmlsdGVyKHUsKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09aCYmdCE9PWZ9KSkpO3ZhciBwPWkoZSx1KTtyLmZvckVhY2gocCwoZnVuY3Rpb24obil7aWYoZS5jaGlsZHJlbihuLnYpLmxlbmd0aCl7dmFyIGk9dChlLG4udixzLGMpO2Rbbi52XT1pLHIuaGFzKGksImJhcnljZW50ZXIiKSYmKGE9bixvPWksci5pc1VuZGVmaW5lZChhLmJhcnljZW50ZXIpPyhhLmJhcnljZW50ZXI9by5iYXJ5Y2VudGVyLGEud2VpZ2h0PW8ud2VpZ2h0KTooYS5iYXJ5Y2VudGVyPShhLmJhcnljZW50ZXIqYS53ZWlnaHQrby5iYXJ5Y2VudGVyKm8ud2VpZ2h0KS8oYS53ZWlnaHQrby53ZWlnaHQpLGEud2VpZ2h0Kz1vLndlaWdodCkpfXZhciBhLG99KSk7dmFyIHk9YShwLHMpOyFmdW5jdGlvbih0LGUpe3IuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt0LnZzPXIuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0oeSxkKTt2YXIgZz1vKHksYyk7aWYoaCYmKGcudnM9ci5mbGF0dGVuKFtoLGcudnMsZl0sITApLGUucHJlZGVjZXNzb3JzKGgpLmxlbmd0aCkpe3ZhciBtPWUubm9kZShlLnByZWRlY2Vzc29ycyhoKVswXSksdj1lLm5vZGUoZS5wcmVkZWNlc3NvcnMoZilbMF0pO3IuaGFzKGcsImJhcnljZW50ZXIiKXx8KGcuYmFyeWNlbnRlcj0wLGcud2VpZ2h0PTApLGcuYmFyeWNlbnRlcj0oZy5iYXJ5Y2VudGVyKmcud2VpZ2h0K20ub3JkZXIrdi5vcmRlcikvKGcud2VpZ2h0KzIpLGcud2VpZ2h0Kz0yfXJldHVybiBnfX0sNzMwNDoodCxlLG4pPT57dmFyIHI9big4NDM2KSxpPW4oMTEzOCk7ZnVuY3Rpb24gYSh0LGUsbil7Zm9yKHZhciBpO2UubGVuZ3RoJiYoaT1yLmxhc3QoZSkpLmk8PW47KWUucG9wKCksdC5wdXNoKGkudnMpLG4rKztyZXR1cm4gbn10LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixvPWkucGFydGl0aW9uKHQsKGZ1bmN0aW9uKHQpe3JldHVybiByLmhhcyh0LCJiYXJ5Y2VudGVyIil9KSkscz1vLmxocyxjPXIuc29ydEJ5KG8ucmhzLChmdW5jdGlvbih0KXtyZXR1cm4tdC5pfSkpLHU9W10sbD0wLGg9MCxmPTA7cy5zb3J0KChuPSEhZSxmdW5jdGlvbih0LGUpe3JldHVybiB0LmJhcnljZW50ZXI8ZS5iYXJ5Y2VudGVyPy0xOnQuYmFyeWNlbnRlcj5lLmJhcnljZW50ZXI/MTpuP2UuaS10Lmk6dC5pLWUuaX0pKSxmPWEodSxjLGYpLHIuZm9yRWFjaChzLChmdW5jdGlvbih0KXtmKz10LnZzLmxlbmd0aCx1LnB1c2godC52cyksbCs9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LGgrPXQud2VpZ2h0LGY9YSh1LGMsZil9KSk7dmFyIGQ9e3ZzOnIuZmxhdHRlbih1LCEwKX07cmV0dXJuIGgmJihkLmJhcnljZW50ZXI9bC9oLGQud2VpZ2h0PWgpLGR9fSw0MjE5Oih0LGUsbik9Pnt2YXIgcj1uKDg0MzYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT17fSxuPTA7cmV0dXJuIHIuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uIGkoYSl7dmFyIG89bjtyLmZvckVhY2godC5jaGlsZHJlbihhKSxpKSxlW2FdPXtsb3c6byxsaW06bisrfX0pKSxlfSh0KTtyLmZvckVhY2godC5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbihuKXtmb3IodmFyIHI9dC5ub2RlKG4pLGk9ci5lZGdlT2JqLGE9ZnVuY3Rpb24odCxlLG4scil7dmFyIGksYSxvPVtdLHM9W10sYz1NYXRoLm1pbihlW25dLmxvdyxlW3JdLmxvdyksdT1NYXRoLm1heChlW25dLmxpbSxlW3JdLmxpbSk7aT1uO2Rve2k9dC5wYXJlbnQoaSksby5wdXNoKGkpfXdoaWxlKGkmJihlW2ldLmxvdz5jfHx1PmVbaV0ubGltKSk7Zm9yKGE9aSxpPXI7KGk9dC5wYXJlbnQoaSkpIT09YTspcy5wdXNoKGkpO3JldHVybntwYXRoOm8uY29uY2F0KHMucmV2ZXJzZSgpKSxsY2E6YX19KHQsZSxpLnYsaS53KSxvPWEucGF0aCxzPWEubGNhLGM9MCx1PW9bY10sbD0hMDtuIT09aS53Oyl7aWYocj10Lm5vZGUobiksbCl7Zm9yKDsodT1vW2NdKSE9PXMmJnQubm9kZSh1KS5tYXhSYW5rPHIucmFuazspYysrO3U9PT1zJiYobD0hMSl9aWYoIWwpe2Zvcig7YzxvLmxlbmd0aC0xJiZ0Lm5vZGUodT1vW2MrMV0pLm1pblJhbms8PXIucmFuazspYysrO3U9b1tjXX10LnNldFBhcmVudChuLHUpLG49dC5zdWNjZXNzb3JzKG4pWzBdfX0pKX19LDM1NzM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg0MzYpLGk9big1NzQpLkdyYXBoLGE9bigxMTM4KTtmdW5jdGlvbiBvKHQsZSl7dmFyIG49e307cmV0dXJuIHIucmVkdWNlKGUsKGZ1bmN0aW9uKGUsaSl7dmFyIGE9MCxvPTAscz1lLmxlbmd0aCx1PXIubGFzdChpKTtyZXR1cm4gci5mb3JFYWNoKGksKGZ1bmN0aW9uKGUsbCl7dmFyIGg9ZnVuY3Rpb24odCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIHIuZmluZCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5kdW1teX0pKX0odCxlKSxmPWg/dC5ub2RlKGgpLm9yZGVyOnM7KGh8fGU9PT11KSYmKHIuZm9yRWFjaChpLnNsaWNlKG8sbCsxKSwoZnVuY3Rpb24oZSl7ci5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihyKXt2YXIgaT10Lm5vZGUociksbz1pLm9yZGVyOyEobzxhfHxmPG8pfHxpLmR1bW15JiZ0Lm5vZGUoZSkuZHVtbXl8fGMobixyLGUpfSkpfSkpLG89bCsxLGE9Zil9KSksaX0pKSxufWZ1bmN0aW9uIHModCxlKXt2YXIgbj17fTtmdW5jdGlvbiBpKGUsaSxhLG8scyl7dmFyIHU7ci5mb3JFYWNoKHIucmFuZ2UoaSxhKSwoZnVuY3Rpb24oaSl7dT1lW2ldLHQubm9kZSh1KS5kdW1teSYmci5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHUpLChmdW5jdGlvbihlKXt2YXIgcj10Lm5vZGUoZSk7ci5kdW1teSYmKHIub3JkZXI8b3x8ci5vcmRlcj5zKSYmYyhuLGUsdSl9KSl9KSl9cmV0dXJuIHIucmVkdWNlKGUsKGZ1bmN0aW9uKGUsbil7dmFyIGEsbz0tMSxzPTA7cmV0dXJuIHIuZm9yRWFjaChuLChmdW5jdGlvbihyLGMpe2lmKCJib3JkZXIiPT09dC5ub2RlKHIpLmR1bW15KXt2YXIgdT10LnByZWRlY2Vzc29ycyhyKTt1Lmxlbmd0aCYmKGE9dC5ub2RlKHVbMF0pLm9yZGVyLGkobixzLGMsbyxhKSxzPWMsbz1hKX1pKG4scyxuLmxlbmd0aCxhLGUubGVuZ3RoKX0pKSxufSkpLG59ZnVuY3Rpb24gYyh0LGUsbil7aWYoZT5uKXt2YXIgcj1lO2U9bixuPXJ9dmFyIGk9dFtlXTtpfHwodFtlXT1pPXt9KSxpW25dPSEwfWZ1bmN0aW9uIHUodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiByLmhhcyh0W2VdLG4pfWZ1bmN0aW9uIGwodCxlLG4saSl7dmFyIGE9e30sbz17fSxzPXt9O3JldHVybiByLmZvckVhY2goZSwoZnVuY3Rpb24odCl7ci5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7YVt0XT10LG9bdF09dCxzW3RdPWV9KSl9KSksci5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQpe3ZhciBlPS0xO3IuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt2YXIgYz1pKHQpO2lmKGMubGVuZ3RoKXtjPXIuc29ydEJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBzW3RdfSkpO2Zvcih2YXIgbD0oYy5sZW5ndGgtMSkvMixoPU1hdGguZmxvb3IobCksZj1NYXRoLmNlaWwobCk7aDw9ZjsrK2gpe3ZhciBkPWNbaF07b1t0XT09PXQmJmU8c1tkXSYmIXUobix0LGQpJiYob1tkXT10LG9bdF09YVt0XT1hW2RdLGU9c1tkXSl9fX0pKX0pKSx7cm9vdDphLGFsaWduOm99fWZ1bmN0aW9uIGgodCxlLG4sYSxvKXt2YXIgcz17fSxjPWZ1bmN0aW9uKHQsZSxuLGEpe3ZhciBvPW5ldyBpLHM9dC5ncmFwaCgpLGM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbihpLGEsbyl7dmFyIHMsYz1pLm5vZGUoYSksdT1pLm5vZGUobyksbD0wO2lmKGwrPWMud2lkdGgvMixyLmhhcyhjLCJsYWJlbHBvcyIpKXN3aXRjaChjLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6cz0tYy53aWR0aC8yO2JyZWFrO2Nhc2UiciI6cz1jLndpZHRoLzJ9aWYocyYmKGwrPW4/czotcykscz0wLGwrPShjLmR1bW15P2U6dCkvMixsKz0odS5kdW1teT9lOnQpLzIsbCs9dS53aWR0aC8yLHIuaGFzKHUsImxhYmVscG9zIikpc3dpdGNoKHUubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjpzPXUud2lkdGgvMjticmVhaztjYXNlInIiOnM9LXUud2lkdGgvMn1yZXR1cm4gcyYmKGwrPW4/czotcykscz0wLGx9fShzLm5vZGVzZXAscy5lZGdlc2VwLGEpO3JldHVybiByLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGk7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciByPW5bZV07aWYoby5zZXROb2RlKHIpLGkpe3ZhciBhPW5baV0scz1vLmVkZ2UoYSxyKTtvLnNldEVkZ2UoYSxyLE1hdGgubWF4KGModCxlLGkpLHN8fDApKX1pPWV9KSl9KSksb30odCxlLG4sbyksdT1vPyJib3JkZXJMZWZ0IjoiYm9yZGVyUmlnaHQiO2Z1bmN0aW9uIGwodCxlKXtmb3IodmFyIG49Yy5ub2RlcygpLHI9bi5wb3AoKSxpPXt9O3I7KWlbcl0/dChyKTooaVtyXT0hMCxuLnB1c2gociksbj1uLmNvbmNhdChlKHIpKSkscj1uLnBvcCgpfXJldHVybiBsKChmdW5jdGlvbih0KXtzW3RdPWMuaW5FZGdlcyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsc1tlLnZdK2MuZWRnZShlKSl9KSwwKX0pLGMucHJlZGVjZXNzb3JzLmJpbmQoYykpLGwoKGZ1bmN0aW9uKGUpe3ZhciBuPWMub3V0RWRnZXMoZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LHNbZS53XS1jLmVkZ2UoZSkpfSksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxyPXQubm9kZShlKTtuIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZJiZyLmJvcmRlclR5cGUhPT11JiYoc1tlXT1NYXRoLm1heChzW2VdLG4pKX0pLGMuc3VjY2Vzc29ycy5iaW5kKGMpKSxyLmZvckVhY2goYSwoZnVuY3Rpb24odCl7c1t0XT1zW25bdF1dfSkpLHN9ZnVuY3Rpb24gZih0LGUpe3JldHVybiByLm1pbkJ5KHIudmFsdWVzKGUpLChmdW5jdGlvbihlKXt2YXIgbj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksaT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIHIuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgYT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KHQscikvMjtuPU1hdGgubWF4KGUrYSxuKSxpPU1hdGgubWluKGUtYSxpKX0pKSxuLWl9KSl9ZnVuY3Rpb24gZCh0LGUpe3ZhciBuPXIudmFsdWVzKGUpLGk9ci5taW4obiksYT1yLm1heChuKTtyLmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihuKXtyLmZvckVhY2goWyJsIiwiciJdLChmdW5jdGlvbihvKXt2YXIgcyxjPW4rbyx1PXRbY107aWYodSE9PWUpe3ZhciBsPXIudmFsdWVzKHUpOyhzPSJsIj09PW8/aS1yLm1pbihsKTphLXIubWF4KGwpKSYmKHRbY109ci5tYXBWYWx1ZXModSwoZnVuY3Rpb24odCl7cmV0dXJuIHQrc30pKSl9fSkpfSkpfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gci5tYXBWYWx1ZXModC51bCwoZnVuY3Rpb24obixpKXtpZihlKXJldHVybiB0W2UudG9Mb3dlckNhc2UoKV1baV07dmFyIGE9ci5zb3J0Qnkoci5tYXAodCxpKSk7cmV0dXJuKGFbMV0rYVsyXSkvMn0pKX10LmV4cG9ydHM9e3Bvc2l0aW9uWDpmdW5jdGlvbih0KXt2YXIgZSxuPWEuYnVpbGRMYXllck1hdHJpeCh0KSxpPXIubWVyZ2Uobyh0LG4pLHModCxuKSksYz17fTtyLmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihhKXtlPSJ1Ij09PWE/bjpyLnZhbHVlcyhuKS5yZXZlcnNlKCksci5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obil7InIiPT09biYmKGU9ci5tYXAoZSwoZnVuY3Rpb24odCl7cmV0dXJuIHIudmFsdWVzKHQpLnJldmVyc2UoKX0pKSk7dmFyIG89KCJ1Ij09PWE/dC5wcmVkZWNlc3NvcnM6dC5zdWNjZXNzb3JzKS5iaW5kKHQpLHM9bCgwLGUsaSxvKSx1PWgodCxlLHMucm9vdCxzLmFsaWduLCJyIj09PW4pOyJyIj09PW4mJih1PXIubWFwVmFsdWVzKHUsKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpKSxjW2Erbl09dX0pKX0pKTt2YXIgdT1mKHQsYyk7cmV0dXJuIGQoYyx1KSxwKGMsdC5ncmFwaCgpLmFsaWduKX0sZmluZFR5cGUxQ29uZmxpY3RzOm8sZmluZFR5cGUyQ29uZmxpY3RzOnMsYWRkQ29uZmxpY3Q6YyxoYXNDb25mbGljdDp1LHZlcnRpY2FsQWxpZ25tZW50OmwsaG9yaXpvbnRhbENvbXBhY3Rpb246aCxhbGlnbkNvb3JkaW5hdGVzOmQsZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQ6ZixiYWxhbmNlOnB9fSw3ODczOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oMTEzOCksYT1uKDM1NzMpLnBvc2l0aW9uWDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7KGZ1bmN0aW9uKHQpe3ZhciBlPWkuYnVpbGRMYXllck1hdHJpeCh0KSxuPXQuZ3JhcGgoKS5yYW5rc2VwLGE9MDtyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGk9ci5tYXgoci5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5oZWlnaHR9KSkpO3IuZm9yRWFjaChlLChmdW5jdGlvbihlKXt0Lm5vZGUoZSkueT1hK2kvMn0pKSxhKz1pK259KSl9KSh0PWkuYXNOb25Db21wb3VuZEdyYXBoKHQpKSxyLmZvckVhY2goYSh0KSwoZnVuY3Rpb24oZSxuKXt0Lm5vZGUobikueD1lfSkpfX0sMzAwOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oNTc0KS5HcmFwaCxhPW4oNjY4MSkuc2xhY2s7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe3IuZm9yRWFjaChlLm5vZGVFZGdlcyhpKSwoZnVuY3Rpb24ocil7dmFyIG89ci52LHM9aT09PW8/ci53Om87dC5oYXNOb2RlKHMpfHxhKGUscil8fCh0LnNldE5vZGUocyx7fSksdC5zZXRFZGdlKGkscyx7fSksbihzKSl9KSl9KSksdC5ub2RlQ291bnQoKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHIubWluQnkoZS5lZGdlcygpLChmdW5jdGlvbihuKXtpZih0Lmhhc05vZGUobi52KSE9PXQuaGFzTm9kZShuLncpKXJldHVybiBhKGUsbil9KSl9ZnVuY3Rpb24gYyh0LGUsbil7ci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZS5ub2RlKHQpLnJhbmsrPW59KSl9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4scj1uZXcgaSh7ZGlyZWN0ZWQ6ITF9KSx1PXQubm9kZXMoKVswXSxsPXQubm9kZUNvdW50KCk7Zm9yKHIuc2V0Tm9kZSh1LHt9KTtvKHIsdCk8bDspZT1zKHIsdCksbj1yLmhhc05vZGUoZS52KT9hKHQsZSk6LWEodCxlKSxjKHIsdCxuKTtyZXR1cm4gcn19LDgwOTM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2ODEpLmxvbmdlc3RQYXRoLGk9bigzMDApLGE9bigyNDcyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQuZ3JhcGgoKS5yYW5rZXIpe2Nhc2UibmV0d29yay1zaW1wbGV4IjpkZWZhdWx0OiFmdW5jdGlvbih0KXthKHQpfSh0KTticmVhaztjYXNlInRpZ2h0LXRyZWUiOiFmdW5jdGlvbih0KXtyKHQpLGkodCl9KHQpO2JyZWFrO2Nhc2UibG9uZ2VzdC1wYXRoIjpvKHQpfX07dmFyIG89cn0sMjQ3MjoodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNiksaT1uKDMwMCksYT1uKDY2ODEpLnNsYWNrLG89big2NjgxKS5sb25nZXN0UGF0aCxzPW4oNTc0KS5hbGcucHJlb3JkZXIsYz1uKDU3NCkuYWxnLnBvc3RvcmRlcix1PW4oMTEzOCkuc2ltcGxpZnk7ZnVuY3Rpb24gbCh0KXt0PXUodCksbyh0KTt2YXIgZSxuPWkodCk7Zm9yKGQobiksaChuLHQpO2U9eShuKTspbShuLHQsZSxnKG4sdCxlKSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWModCx0Lm5vZGVzKCkpO249bi5zbGljZSgwLG4ubGVuZ3RoLTEpLHIuZm9yRWFjaChuLChmdW5jdGlvbihuKXshZnVuY3Rpb24odCxlLG4pe3ZhciByPXQubm9kZShuKS5wYXJlbnQ7dC5lZGdlKG4scikuY3V0dmFsdWU9Zih0LGUsbil9KHQsZSxuKX0pKX1mdW5jdGlvbiBmKHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LGE9ITAsbz1lLmVkZ2UobixpKSxzPTA7cmV0dXJuIG98fChhPSExLG89ZS5lZGdlKGksbikpLHM9by53ZWlnaHQsci5mb3JFYWNoKGUubm9kZUVkZ2VzKG4pLChmdW5jdGlvbihyKXt2YXIgbyxjLHU9ci52PT09bixsPXU/ci53OnIudjtpZihsIT09aSl7dmFyIGg9dT09PWEsZj1lLmVkZ2Uocikud2VpZ2h0O2lmKHMrPWg/ZjotZixvPW4sYz1sLHQuaGFzRWRnZShvLGMpKXt2YXIgZD10LmVkZ2UobixsKS5jdXR2YWx1ZTtzKz1oPy1kOmR9fX0pKSxzfWZ1bmN0aW9uIGQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSkscCh0LHt9LDEsZSl9ZnVuY3Rpb24gcCh0LGUsbixpLGEpe3ZhciBvPW4scz10Lm5vZGUoaSk7cmV0dXJuIGVbaV09ITAsci5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihhKXtyLmhhcyhlLGEpfHwobj1wKHQsZSxuLGEsaSkpfSkpLHMubG93PW8scy5saW09bisrLGE/cy5wYXJlbnQ9YTpkZWxldGUgcy5wYXJlbnQsbn1mdW5jdGlvbiB5KHQpe3JldHVybiByLmZpbmQodC5lZGdlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5lZGdlKGUpLmN1dHZhbHVlPDB9KSl9ZnVuY3Rpb24gZyh0LGUsbil7dmFyIGk9bi52LG89bi53O2UuaGFzRWRnZShpLG8pfHwoaT1uLncsbz1uLnYpO3ZhciBzPXQubm9kZShpKSxjPXQubm9kZShvKSx1PXMsbD0hMTtzLmxpbT5jLmxpbSYmKHU9YyxsPSEwKTt2YXIgaD1yLmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09digwLHQubm9kZShlLnYpLHUpJiZsIT09digwLHQubm9kZShlLncpLHUpfSkpO3JldHVybiByLm1pbkJ5KGgsKGZ1bmN0aW9uKHQpe3JldHVybiBhKGUsdCl9KSl9ZnVuY3Rpb24gbSh0LGUsbixpKXt2YXIgYT1uLnYsbz1uLnc7dC5yZW1vdmVFZGdlKGEsbyksdC5zZXRFZGdlKGkudixpLncse30pLGQodCksaCh0LGUpLGZ1bmN0aW9uKHQsZSl7dmFyIG49ci5maW5kKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7cmV0dXJuIWUubm9kZSh0KS5wYXJlbnR9KSksaT1zKHQsbik7aT1pLnNsaWNlKDEpLHIuZm9yRWFjaChpLChmdW5jdGlvbihuKXt2YXIgcj10Lm5vZGUobikucGFyZW50LGk9ZS5lZGdlKG4sciksYT0hMTtpfHwoaT1lLmVkZ2UocixuKSxhPSEwKSxlLm5vZGUobikucmFuaz1lLm5vZGUocikucmFuaysoYT9pLm1pbmxlbjotaS5taW5sZW4pfSkpfSh0LGUpfWZ1bmN0aW9uIHYodCxlLG4pe3JldHVybiBuLmxvdzw9ZS5saW0mJmUubGltPD1uLmxpbX10LmV4cG9ydHM9bCxsLmluaXRMb3dMaW1WYWx1ZXM9ZCxsLmluaXRDdXRWYWx1ZXM9aCxsLmNhbGNDdXRWYWx1ZT1mLGwubGVhdmVFZGdlPXksbC5lbnRlckVkZ2U9ZyxsLmV4Y2hhbmdlRWRnZXM9bX0sNjY4MToodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciByPW4oODQzNik7dC5leHBvcnRzPXtsb25nZXN0UGF0aDpmdW5jdGlvbih0KXt2YXIgZT17fTtyLmZvckVhY2godC5zb3VyY2VzKCksKGZ1bmN0aW9uIG4oaSl7dmFyIGE9dC5ub2RlKGkpO2lmKHIuaGFzKGUsaSkpcmV0dXJuIGEucmFuaztlW2ldPSEwO3ZhciBvPXIubWluKHIubWFwKHQub3V0RWRnZXMoaSksKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUudyktdC5lZGdlKGUpLm1pbmxlbn0pKSk7cmV0dXJuIG8hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJm51bGwhPW98fChvPTApLGEucmFuaz1vfSkpfSxzbGFjazpmdW5jdGlvbih0LGUpe3JldHVybiB0Lm5vZGUoZS53KS5yYW5rLXQubm9kZShlLnYpLnJhbmstdC5lZGdlKGUpLm1pbmxlbn19fSwxMTM4Oih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big4NDM2KSxpPW4oNTc0KS5HcmFwaDtmdW5jdGlvbiBhKHQsZSxuLGkpe3ZhciBhO2Rve2E9ci51bmlxdWVJZChpKX13aGlsZSh0Lmhhc05vZGUoYSkpO3JldHVybiBuLmR1bW15PWUsdC5zZXROb2RlKGEsbiksYX1mdW5jdGlvbiBvKHQpe3JldHVybiByLm1heChyLm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKS5yYW5rO2lmKCFyLmlzVW5kZWZpbmVkKG4pKXJldHVybiBufSkpKX10LmV4cG9ydHM9e2FkZER1bW15Tm9kZTphLHNpbXBsaWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPShuZXcgaSkuc2V0R3JhcGgodC5ncmFwaCgpKTtyZXR1cm4gci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXt2YXIgcj1lLmVkZ2Uobi52LG4udyl8fHt3ZWlnaHQ6MCxtaW5sZW46MX0saT10LmVkZ2Uobik7ZS5zZXRFZGdlKG4udixuLncse3dlaWdodDpyLndlaWdodCtpLndlaWdodCxtaW5sZW46TWF0aC5tYXgoci5taW5sZW4saS5taW5sZW4pfSl9KSksZX0sYXNOb25Db21wb3VuZEdyYXBoOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBpKHttdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCl9KS5zZXRHcmFwaCh0LmdyYXBoKCkpO3JldHVybiByLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt0LmNoaWxkcmVuKG4pLmxlbmd0aHx8ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxyLmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXtlLnNldEVkZ2Uobix0LmVkZ2UobikpfSkpLGV9LHN1Y2Nlc3NvcldlaWdodHM6ZnVuY3Rpb24odCl7dmFyIGU9ci5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gci5mb3JFYWNoKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS53XT0obltlLnddfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIHIuemlwT2JqZWN0KHQubm9kZXMoKSxlKX0scHJlZGVjZXNzb3JXZWlnaHRzOmZ1bmN0aW9uKHQpe3ZhciBlPXIubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49e307cmV0dXJuIHIuZm9yRWFjaCh0LmluRWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS52XT0obltlLnZdfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIHIuemlwT2JqZWN0KHQubm9kZXMoKSxlKX0saW50ZXJzZWN0UmVjdDpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaT10LngsYT10Lnksbz1lLngtaSxzPWUueS1hLGM9dC53aWR0aC8yLHU9dC5oZWlnaHQvMjtpZighbyYmIXMpdGhyb3cgbmV3IEVycm9yKCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUiKTtyZXR1cm4gTWF0aC5hYnMocykqYz5NYXRoLmFicyhvKSp1PyhzPDAmJih1PS11KSxuPXUqby9zLHI9dSk6KG88MCYmKGM9LWMpLG49YyxyPWMqcy9vKSx7eDppK24seTphK3J9fSxidWlsZExheWVyTWF0cml4OmZ1bmN0aW9uKHQpe3ZhciBlPXIubWFwKHIucmFuZ2Uobyh0KSsxKSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gci5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pLGE9aS5yYW5rO3IuaXNVbmRlZmluZWQoYSl8fChlW2FdW2kub3JkZXJdPW4pfSkpLGV9LG5vcm1hbGl6ZVJhbmtzOmZ1bmN0aW9uKHQpe3ZhciBlPXIubWluKHIubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKTtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobik7ci5oYXMoaSwicmFuayIpJiYoaS5yYW5rLT1lKX0pKX0scmVtb3ZlRW1wdHlSYW5rczpmdW5jdGlvbih0KXt2YXIgZT1yLm1pbihyLm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksbj1bXTtyLmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihyKXt2YXIgaT10Lm5vZGUocikucmFuay1lO25baV18fChuW2ldPVtdKSxuW2ldLnB1c2gocil9KSk7dmFyIGk9MCxhPXQuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvcjtyLmZvckVhY2gobiwoZnVuY3Rpb24oZSxuKXtyLmlzVW5kZWZpbmVkKGUpJiZuJWEhPTA/LS1pOmkmJnIuZm9yRWFjaChlLChmdW5jdGlvbihlKXt0Lm5vZGUoZSkucmFuays9aX0pKX0pKX0sYWRkQm9yZGVyTm9kZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT17d2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTQmJihpLnJhbms9bixpLm9yZGVyPXIpLGEodCwiYm9yZGVyIixpLGUpfSxtYXhSYW5rOm8scGFydGl0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49e2xoczpbXSxyaHM6W119O3JldHVybiByLmZvckVhY2godCwoZnVuY3Rpb24odCl7ZSh0KT9uLmxocy5wdXNoKHQpOm4ucmhzLnB1c2godCl9KSksbn0sdGltZTpmdW5jdGlvbih0LGUpe3ZhciBuPXIubm93KCk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXtjb25zb2xlLmxvZyh0KyIgdGltZTogIisoci5ub3coKS1uKSsibXMiKX19LG5vdGltZTpmdW5jdGlvbih0LGUpe3JldHVybiBlKCl9fX0sODE3Nzp0PT57dC5leHBvcnRzPSIwLjguNSJ9LDc4NTY6ZnVuY3Rpb24odCl7dC5leHBvcnRzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxlPU9iamVjdC5zZXRQcm90b3R5cGVPZixuPU9iamVjdC5pc0Zyb3plbixyPU9iamVjdC5nZXRQcm90b3R5cGVPZixpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYT1PYmplY3QuZnJlZXplLG89T2JqZWN0LnNlYWwscz1PYmplY3QuY3JlYXRlLGM9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LHU9Yy5hcHBseSxsPWMuY29uc3RydWN0O3V8fCh1PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5hcHBseShlLG4pfSksYXx8KGE9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxvfHwobz1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLGx8fChsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyhGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseSh0LFtudWxsXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBlPTAsbj1BcnJheSh0Lmxlbmd0aCk7ZTx0Lmxlbmd0aDtlKyspbltlXT10W2VdO3JldHVybiBufXJldHVybiBBcnJheS5mcm9tKHQpfShlKSkpKX0pO3ZhciBoLGY9dyhBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksZD13KEFycmF5LnByb3RvdHlwZS5wb3ApLHA9dyhBcnJheS5wcm90b3R5cGUucHVzaCkseT13KFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLGc9dyhTdHJpbmcucHJvdG90eXBlLm1hdGNoKSxtPXcoU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSx2PXcoU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mKSxiPXcoU3RyaW5nLnByb3RvdHlwZS50cmltKSxfPXcoUmVnRXhwLnByb3RvdHlwZS50ZXN0KSx4PShoPVR5cGVFcnJvcixmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9QXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGwoaCxlKX0pO2Z1bmN0aW9uIHcodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkobj4xP24tMTowKSxpPTE7aTxuO2krKylyW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiB1KHQsZSxyKX19ZnVuY3Rpb24gayh0LHIpe2UmJmUodCxudWxsKTtmb3IodmFyIGk9ci5sZW5ndGg7aS0tOyl7dmFyIGE9cltpXTtpZigic3RyaW5nIj09dHlwZW9mIGEpe3ZhciBvPXkoYSk7byE9PWEmJihuKHIpfHwocltpXT1vKSxhPW8pfXRbYV09ITB9cmV0dXJuIHR9ZnVuY3Rpb24gVChlKXt2YXIgbj1zKG51bGwpLHI9dm9pZCAwO2ZvcihyIGluIGUpdSh0LGUsW3JdKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gRSh0LGUpe2Zvcig7bnVsbCE9PXQ7KXt2YXIgbj1pKHQsZSk7aWYobil7aWYobi5nZXQpcmV0dXJuIHcobi5nZXQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnZhbHVlKXJldHVybiB3KG4udmFsdWUpfXQ9cih0KX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiZmFsbGJhY2sgdmFsdWUgZm9yIix0KSxudWxsfX12YXIgQz1hKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9iciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5IiwicyIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSxTPWEoWyJzdmciLCJhIiwiYWx0Z2x5cGgiLCJhbHRnbHlwaGRlZiIsImFsdGdseXBoaXRlbSIsImFuaW1hdGVjb2xvciIsImFuaW1hdGVtb3Rpb24iLCJhbmltYXRldHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcHBhdGgiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZyIsImdseXBoIiwiZ2x5cGhyZWYiLCJoa2VybiIsImltYWdlIiwibGluZSIsImxpbmVhcmdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwibXBhdGgiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdHlsZSIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0cGF0aCIsInRpdGxlIiwidHJlZiIsInRzcGFuIiwidmlldyIsInZrZXJuIl0pLEE9YShbImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZURpc3RhbnRMaWdodCIsImZlRmxvb2QiLCJmZUZ1bmNBIiwiZmVGdW5jQiIsImZlRnVuY0ciLCJmZUZ1bmNSIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTWVyZ2VOb2RlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVBvaW50TGlnaHQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVNwb3RMaWdodCIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSJdKSxNPWEoWyJhbmltYXRlIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRpc2NhcmQiLCJmZWRyb3BzaGFkb3ciLCJmb250LWZhY2UiLCJmb250LWZhY2UtZm9ybWF0IiwiZm9udC1mYWNlLW5hbWUiLCJmb250LWZhY2Utc3JjIiwiZm9udC1mYWNlLXVyaSIsImZvcmVpZ25vYmplY3QiLCJoYXRjaCIsImhhdGNocGF0aCIsIm1lc2giLCJtZXNoZ3JhZGllbnQiLCJtZXNocGF0Y2giLCJtZXNocm93IiwibWlzc2luZy1nbHlwaCIsInNjcmlwdCIsInNldCIsInNvbGlkY29sb3IiLCJ1bmtub3duIiwidXNlIl0pLE49YShbIm1hdGgiLCJtZW5jbG9zZSIsIm1lcnJvciIsIm1mZW5jZWQiLCJtZnJhYyIsIm1nbHlwaCIsIm1pIiwibWxhYmVsZWR0ciIsIm1tdWx0aXNjcmlwdHMiLCJtbiIsIm1vIiwibW92ZXIiLCJtcGFkZGVkIiwibXBoYW50b20iLCJtcm9vdCIsIm1yb3ciLCJtcyIsIm1zcGFjZSIsIm1zcXJ0IiwibXN0eWxlIiwibXN1YiIsIm1zdXAiLCJtc3Vic3VwIiwibXRhYmxlIiwibXRkIiwibXRleHQiLCJtdHIiLCJtdW5kZXIiLCJtdW5kZXJvdmVyIl0pLEQ9YShbIm1hY3Rpb24iLCJtYWxpZ25ncm91cCIsIm1hbGlnbm1hcmsiLCJtbG9uZ2RpdiIsIm1zY2FycmllcyIsIm1zY2FycnkiLCJtc2dyb3VwIiwibXN0YWNrIiwibXNsaW5lIiwibXNyb3ciLCJzZW1hbnRpY3MiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbi14bWwiLCJtcHJlc2NyaXB0cyIsIm5vbmUiXSksTz1hKFsiI3RleHQiXSksQj1hKFsiYWNjZXB0IiwiYWN0aW9uIiwiYWxpZ24iLCJhbHQiLCJhdXRvY2FwaXRhbGl6ZSIsImF1dG9jb21wbGV0ZSIsImF1dG9waWN0dXJlaW5waWN0dXJlIiwiYXV0b3BsYXkiLCJiYWNrZ3JvdW5kIiwiYmdjb2xvciIsImJvcmRlciIsImNhcHR1cmUiLCJjZWxscGFkZGluZyIsImNlbGxzcGFjaW5nIiwiY2hlY2tlZCIsImNpdGUiLCJjbGFzcyIsImNsZWFyIiwiY29sb3IiLCJjb2xzIiwiY29sc3BhbiIsImNvbnRyb2xzIiwiY29udHJvbHNsaXN0IiwiY29vcmRzIiwiY3Jvc3NvcmlnaW4iLCJkYXRldGltZSIsImRlY29kaW5nIiwiZGVmYXVsdCIsImRpciIsImRpc2FibGVkIiwiZGlzYWJsZXBpY3R1cmVpbnBpY3R1cmUiLCJkaXNhYmxlcmVtb3RlcGxheWJhY2siLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImVuY3R5cGUiLCJlbnRlcmtleWhpbnQiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImlucHV0bW9kZSIsImludGVncml0eSIsImlzbWFwIiwia2luZCIsImxhYmVsIiwibGFuZyIsImxpc3QiLCJsb2FkaW5nIiwibG9vcCIsImxvdyIsIm1heCIsIm1heGxlbmd0aCIsIm1lZGlhIiwibWV0aG9kIiwibWluIiwibWlubGVuZ3RoIiwibXVsdGlwbGUiLCJtdXRlZCIsIm5hbWUiLCJub25jZSIsIm5vc2hhZGUiLCJub3ZhbGlkYXRlIiwibm93cmFwIiwib3BlbiIsIm9wdGltdW0iLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzcGFuIiwic3JjbGFuZyIsInN0YXJ0Iiwic3JjIiwic3Jjc2V0Iiwic3RlcCIsInN0eWxlIiwic3VtbWFyeSIsInRhYmluZGV4IiwidGl0bGUiLCJ0cmFuc2xhdGUiLCJ0eXBlIiwidXNlbWFwIiwidmFsaWduIiwidmFsdWUiLCJ3aWR0aCIsInhtbG5zIiwic2xvdCJdKSxMPWEoWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29sb3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIsImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3QiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUiLCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdlLXJlbmRlcmluZyIsImluIiwiaW4yIiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgiLCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtZWRpYSIsIm1ldGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29udGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlvIiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3RvcC1jb2xvciIsInN0b3Atb3BhY2l0eSIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1saW5lY2FwIiwic3Ryb2tlLWxpbmVqb2luIiwic3Ryb2tlLW1pdGVybGltaXQiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCIsInN0eWxlIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJpbmRleCIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidGV4dC1hbmNob3IiLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LXJlbmRlcmluZyIsInRleHRsZW5ndGgiLCJ0eXBlIiwidTEiLCJ1MiIsInVuaWNvZGUiLCJ2YWx1ZXMiLCJ2aWV3Ym94IiwidmlzaWJpbGl0eSIsInZlcnNpb24iLCJ2ZXJ0LWFkdi15IiwidmVydC1vcmlnaW4teCIsInZlcnQtb3JpZ2luLXkiLCJ3aWR0aCIsIndvcmQtc3BhY2luZyIsIndyYXAiLCJ3cml0aW5nLW1vZGUiLCJ4Y2hhbm5lbHNlbGVjdG9yIiwieWNoYW5uZWxzZWxlY3RvciIsIngiLCJ4MSIsIngyIiwieG1sbnMiLCJ5IiwieTEiLCJ5MiIsInoiLCJ6b29tYW5kcGFuIl0pLEk9YShbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uc2FsaWduIiwiY29sdW1ubGluZXMiLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRlcHRoIiwiZGlyIiwiZGlzcGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHNwYWNlIiwibHF1b3RlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3IiLCJtYXRoc2l6ZSIsIm1hdGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZlbCIsInNjcmlwdG1pbnNpemUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSxSPWEoWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxGPW8oL1x7XHtbXHNcU10qfFtcc1xTXSpcfVx9L2dtKSxQPW8oLzwlW1xzXFNdKnxbXHNcU10qJT4vZ20pLGo9bygvXmRhdGEtW1wtXHcuXHUwMEI3LVx1RkZGRl0vKSxZPW8oL15hcmlhLVtcLVx3XSskLyksej1vKC9eKD86KD86KD86ZnxodCl0cHM/fG1haWx0b3x0ZWx8Y2FsbHRvfGNpZHx4bXBwKTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06XXwkKSkvaSksVT1vKC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSxxPW8oL1tcdTAwMDAtXHUwMDIwXHUwMEEwXHUxNjgwXHUxODBFXHUyMDAwLVx1MjAyOVx1MjA1Rlx1MzAwMF0vZyksSD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07ZnVuY3Rpb24gJCh0KXtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxuPUFycmF5KHQubGVuZ3RoKTtlPHQubGVuZ3RoO2UrKyluW2VdPXRbZV07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20odCl9dmFyIFc9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9udWxsOndpbmRvd30sVj1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6SCh0KSl8fCJmdW5jdGlvbiIhPXR5cGVvZiB0LmNyZWF0ZVBvbGljeSlyZXR1cm4gbnVsbDt2YXIgbj1udWxsLHI9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7ZS5jdXJyZW50U2NyaXB0JiZlLmN1cnJlbnRTY3JpcHQuaGFzQXR0cmlidXRlKHIpJiYobj1lLmN1cnJlbnRTY3JpcHQuZ2V0QXR0cmlidXRlKHIpKTt2YXIgaT0iZG9tcHVyaWZ5Iisobj8iIyIrbjoiIik7dHJ5e3JldHVybiB0LmNyZWF0ZVBvbGljeShpLHtjcmVhdGVIVE1MOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0pfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRydXN0ZWRUeXBlcyBwb2xpY3kgIitpKyIgY291bGQgbm90IGJlIGNyZWF0ZWQuIiksbnVsbH19O3JldHVybiBmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlcoKSxuPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfTtpZihuLnZlcnNpb249IjIuMy40IixuLnJlbW92ZWQ9W10sIWV8fCFlLmRvY3VtZW50fHw5IT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbi5pc1N1cHBvcnRlZD0hMSxuO3ZhciByPWUuZG9jdW1lbnQsaT1lLmRvY3VtZW50LG89ZS5Eb2N1bWVudEZyYWdtZW50LHM9ZS5IVE1MVGVtcGxhdGVFbGVtZW50LGM9ZS5Ob2RlLHU9ZS5FbGVtZW50LGw9ZS5Ob2RlRmlsdGVyLGg9ZS5OYW1lZE5vZGVNYXAsdz12b2lkIDA9PT1oP2UuTmFtZWROb2RlTWFwfHxlLk1vek5hbWVkQXR0ck1hcDpoLEc9ZS5IVE1MRm9ybUVsZW1lbnQsWD1lLkRPTVBhcnNlcixaPWUudHJ1c3RlZFR5cGVzLFE9dS5wcm90b3R5cGUsSz1FKFEsImNsb25lTm9kZSIpLEo9RShRLCJuZXh0U2libGluZyIpLHR0PUUoUSwiY2hpbGROb2RlcyIpLGV0PUUoUSwicGFyZW50Tm9kZSIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgbnQ9aS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO250LmNvbnRlbnQmJm50LmNvbnRlbnQub3duZXJEb2N1bWVudCYmKGk9bnQuY29udGVudC5vd25lckRvY3VtZW50KX12YXIgcnQ9VihaLHIpLGl0PXJ0JiZSdD9ydC5jcmVhdGVIVE1MKCIiKToiIixhdD1pLG90PWF0LmltcGxlbWVudGF0aW9uLHN0PWF0LmNyZWF0ZU5vZGVJdGVyYXRvcixjdD1hdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50LHV0PWF0LmdldEVsZW1lbnRzQnlUYWdOYW1lLGx0PXIuaW1wb3J0Tm9kZSxodD17fTt0cnl7aHQ9VChpKS5kb2N1bWVudE1vZGU/aS5kb2N1bWVudE1vZGU6e319Y2F0Y2godCl7fXZhciBmdD17fTtuLmlzU3VwcG9ydGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBldCYmb3QmJnZvaWQgMCE9PW90LmNyZWF0ZUhUTUxEb2N1bWVudCYmOSE9PWh0O3ZhciBkdD1GLHB0PVAseXQ9aixndD1ZLG10PVUsdnQ9cSxidD16LF90PW51bGwseHQ9ayh7fSxbXS5jb25jYXQoJChDKSwkKFMpLCQoQSksJChOKSwkKE8pKSksd3Q9bnVsbCxrdD1rKHt9LFtdLmNvbmNhdCgkKEIpLCQoTCksJChJKSwkKFIpKSksVHQ9T2JqZWN0LnNlYWwoT2JqZWN0LmNyZWF0ZShudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksRXQ9bnVsbCxDdD1udWxsLFN0PSEwLEF0PSEwLE10PSExLE50PSExLER0PSExLE90PSExLEJ0PSExLEx0PSExLEl0PSExLFJ0PSExLEZ0PSEwLFB0PSEwLGp0PSExLFl0PXt9LHp0PW51bGwsVXQ9ayh7fSxbImFubm90YXRpb24teG1sIiwiYXVkaW8iLCJjb2xncm91cCIsImRlc2MiLCJmb3JlaWdub2JqZWN0IiwiaGVhZCIsImlmcmFtZSIsIm1hdGgiLCJtaSIsIm1uIiwibW8iLCJtcyIsIm10ZXh0Iiwibm9lbWJlZCIsIm5vZnJhbWVzIiwibm9zY3JpcHQiLCJwbGFpbnRleHQiLCJzY3JpcHQiLCJzdHlsZSIsInN2ZyIsInRlbXBsYXRlIiwidGhlYWQiLCJ0aXRsZSIsInZpZGVvIiwieG1wIl0pLHF0PW51bGwsSHQ9ayh7fSxbImF1ZGlvIiwidmlkZW8iLCJpbWciLCJzb3VyY2UiLCJpbWFnZSIsInRyYWNrIl0pLCR0PW51bGwsV3Q9ayh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJlbCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLFZ0PSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixHdD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLFh0PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixadD1YdCxRdD0hMSxLdD12b2lkIDAsSnQ9WyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCJ0ZXh0L2h0bWwiXSx0ZT0idGV4dC9odG1sIixlZT12b2lkIDAsbmU9bnVsbCxyZT1pLmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxpZT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFJlZ0V4cHx8dCBpbnN0YW5jZW9mIEZ1bmN0aW9ufSxhZT1mdW5jdGlvbih0KXtuZSYmbmU9PT10fHwodCYmIm9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpIKHQpKXx8KHQ9e30pLHQ9VCh0KSxfdD0iQUxMT1dFRF9UQUdTImluIHQ/ayh7fSx0LkFMTE9XRURfVEFHUyk6eHQsd3Q9IkFMTE9XRURfQVRUUiJpbiB0P2soe30sdC5BTExPV0VEX0FUVFIpOmt0LCR0PSJBRERfVVJJX1NBRkVfQVRUUiJpbiB0P2soVChXdCksdC5BRERfVVJJX1NBRkVfQVRUUik6V3QscXQ9IkFERF9EQVRBX1VSSV9UQUdTImluIHQ/ayhUKEh0KSx0LkFERF9EQVRBX1VSSV9UQUdTKTpIdCx6dD0iRk9SQklEX0NPTlRFTlRTImluIHQ/ayh7fSx0LkZPUkJJRF9DT05URU5UUyk6VXQsRXQ9IkZPUkJJRF9UQUdTImluIHQ/ayh7fSx0LkZPUkJJRF9UQUdTKTp7fSxDdD0iRk9SQklEX0FUVFIiaW4gdD9rKHt9LHQuRk9SQklEX0FUVFIpOnt9LFl0PSJVU0VfUFJPRklMRVMiaW4gdCYmdC5VU0VfUFJPRklMRVMsU3Q9ITEhPT10LkFMTE9XX0FSSUFfQVRUUixBdD0hMSE9PXQuQUxMT1dfREFUQV9BVFRSLE10PXQuQUxMT1dfVU5LTk9XTl9QUk9UT0NPTFN8fCExLE50PXQuU0FGRV9GT1JfVEVNUExBVEVTfHwhMSxEdD10LldIT0xFX0RPQ1VNRU5UfHwhMSxMdD10LlJFVFVSTl9ET018fCExLEl0PXQuUkVUVVJOX0RPTV9GUkFHTUVOVHx8ITEsUnQ9dC5SRVRVUk5fVFJVU1RFRF9UWVBFfHwhMSxCdD10LkZPUkNFX0JPRFl8fCExLEZ0PSExIT09dC5TQU5JVElaRV9ET00sUHQ9ITEhPT10LktFRVBfQ09OVEVOVCxqdD10LklOX1BMQUNFfHwhMSxidD10LkFMTE9XRURfVVJJX1JFR0VYUHx8YnQsWnQ9dC5OQU1FU1BBQ0V8fFh0LHQuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJmllKHQuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSYmKFR0LnRhZ05hbWVDaGVjaz10LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjayksdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmaWUodC5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2spJiYoVHQuYXR0cmlidXRlTmFtZUNoZWNrPXQuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrKSx0LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiYiYm9vbGVhbiI9PXR5cGVvZiB0LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKFR0LmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz10LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyksS3Q9S3Q9LTE9PT1KdC5pbmRleE9mKHQuUEFSU0VSX01FRElBX1RZUEUpP3RlOnQuUEFSU0VSX01FRElBX1RZUEUsZWU9ImFwcGxpY2F0aW9uL3hodG1sK3htbCI9PT1LdD9mdW5jdGlvbih0KXtyZXR1cm4gdH06eSxOdCYmKEF0PSExKSxJdCYmKEx0PSEwKSxZdCYmKF90PWsoe30sW10uY29uY2F0KCQoTykpKSx3dD1bXSwhMD09PVl0Lmh0bWwmJihrKF90LEMpLGsod3QsQikpLCEwPT09WXQuc3ZnJiYoayhfdCxTKSxrKHd0LEwpLGsod3QsUikpLCEwPT09WXQuc3ZnRmlsdGVycyYmKGsoX3QsQSksayh3dCxMKSxrKHd0LFIpKSwhMD09PVl0Lm1hdGhNbCYmKGsoX3QsTiksayh3dCxJKSxrKHd0LFIpKSksdC5BRERfVEFHUyYmKF90PT09eHQmJihfdD1UKF90KSksayhfdCx0LkFERF9UQUdTKSksdC5BRERfQVRUUiYmKHd0PT09a3QmJih3dD1UKHd0KSksayh3dCx0LkFERF9BVFRSKSksdC5BRERfVVJJX1NBRkVfQVRUUiYmaygkdCx0LkFERF9VUklfU0FGRV9BVFRSKSx0LkZPUkJJRF9DT05URU5UUyYmKHp0PT09VXQmJih6dD1UKHp0KSksayh6dCx0LkZPUkJJRF9DT05URU5UUykpLFB0JiYoX3RbIiN0ZXh0Il09ITApLER0JiZrKF90LFsiaHRtbCIsImhlYWQiLCJib2R5Il0pLF90LnRhYmxlJiYoayhfdCxbInRib2R5Il0pLGRlbGV0ZSBFdC50Ym9keSksYSYmYSh0KSxuZT10KX0sb2U9ayh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksc2U9ayh7fSxbImZvcmVpZ25vYmplY3QiLCJkZXNjIiwidGl0bGUiLCJhbm5vdGF0aW9uLXhtbCJdKSxjZT1rKHt9LFMpO2soY2UsQSksayhjZSxNKTt2YXIgdWU9ayh7fSxOKTtrKHVlLEQpO3ZhciBsZT1mdW5jdGlvbih0KXt2YXIgZT1ldCh0KTtlJiZlLnRhZ05hbWV8fChlPXtuYW1lc3BhY2VVUkk6WHQsdGFnTmFtZToidGVtcGxhdGUifSk7dmFyIG49eSh0LnRhZ05hbWUpLHI9eShlLnRhZ05hbWUpO2lmKHQubmFtZXNwYWNlVVJJPT09R3QpcmV0dXJuIGUubmFtZXNwYWNlVVJJPT09WHQ/InN2ZyI9PT1uOmUubmFtZXNwYWNlVVJJPT09VnQ/InN2ZyI9PT1uJiYoImFubm90YXRpb24teG1sIj09PXJ8fG9lW3JdKTpCb29sZWFuKGNlW25dKTtpZih0Lm5hbWVzcGFjZVVSST09PVZ0KXJldHVybiBlLm5hbWVzcGFjZVVSST09PVh0PyJtYXRoIj09PW46ZS5uYW1lc3BhY2VVUkk9PT1HdD8ibWF0aCI9PT1uJiZzZVtyXTpCb29sZWFuKHVlW25dKTtpZih0Lm5hbWVzcGFjZVVSST09PVh0KXtpZihlLm5hbWVzcGFjZVVSST09PUd0JiYhc2Vbcl0pcmV0dXJuITE7aWYoZS5uYW1lc3BhY2VVUkk9PT1WdCYmIW9lW3JdKXJldHVybiExO3ZhciBpPWsoe30sWyJ0aXRsZSIsInN0eWxlIiwiZm9udCIsImEiLCJzY3JpcHQiXSk7cmV0dXJuIXVlW25dJiYoaVtuXXx8IWNlW25dKX1yZXR1cm4hMX0saGU9ZnVuY3Rpb24odCl7cChuLnJlbW92ZWQse2VsZW1lbnQ6dH0pO3RyeXt0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9Y2F0Y2goZSl7dHJ5e3Qub3V0ZXJIVE1MPWl0fWNhdGNoKGUpe3QucmVtb3ZlKCl9fX0sZmU9ZnVuY3Rpb24odCxlKXt0cnl7cChuLnJlbW92ZWQse2F0dHJpYnV0ZTplLmdldEF0dHJpYnV0ZU5vZGUodCksZnJvbTplfSl9Y2F0Y2godCl7cChuLnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206ZX0pfWlmKGUucmVtb3ZlQXR0cmlidXRlKHQpLCJpcyI9PT10JiYhd3RbdF0paWYoTHR8fEl0KXRyeXtoZShlKX1jYXRjaCh0KXt9ZWxzZSB0cnl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9Y2F0Y2godCl7fX0sZGU9ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwLG49dm9pZCAwO2lmKEJ0KXQ9IjxyZW1vdmU+PC9yZW1vdmU+Iit0O2Vsc2V7dmFyIHI9Zyh0LC9eW1xyXG5cdCBdKy8pO249ciYmclswXX0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PUt0JiYodD0nPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjwvaGVhZD48Ym9keT4nK3QrIjwvYm9keT48L2h0bWw+Iik7dmFyIGE9cnQ/cnQuY3JlYXRlSFRNTCh0KTp0O2lmKFp0PT09WHQpdHJ5e2U9KG5ldyBYKS5wYXJzZUZyb21TdHJpbmcoYSxLdCl9Y2F0Y2godCl7fWlmKCFlfHwhZS5kb2N1bWVudEVsZW1lbnQpe2U9b3QuY3JlYXRlRG9jdW1lbnQoWnQsInRlbXBsYXRlIixudWxsKTt0cnl7ZS5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MPVF0PyIiOmF9Y2F0Y2godCl7fX12YXIgbz1lLmJvZHl8fGUuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0JiZuJiZvLmluc2VydEJlZm9yZShpLmNyZWF0ZVRleHROb2RlKG4pLG8uY2hpbGROb2Rlc1swXXx8bnVsbCksWnQ9PT1YdD91dC5jYWxsKGUsRHQ/Imh0bWwiOiJib2R5IilbMF06RHQ/ZS5kb2N1bWVudEVsZW1lbnQ6b30scGU9ZnVuY3Rpb24odCl7cmV0dXJuIHN0LmNhbGwodC5vd25lckRvY3VtZW50fHx0LHQsbC5TSE9XX0VMRU1FTlR8bC5TSE9XX0NPTU1FTlR8bC5TSE9XX1RFWFQsbnVsbCwhMSl9LHllPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRyYmKCJzdHJpbmciIT10eXBlb2YgdC5ub2RlTmFtZXx8InN0cmluZyIhPXR5cGVvZiB0LnRleHRDb250ZW50fHwiZnVuY3Rpb24iIT10eXBlb2YgdC5yZW1vdmVDaGlsZHx8ISh0LmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiB3KXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQucmVtb3ZlQXR0cmlidXRlfHwiZnVuY3Rpb24iIT10eXBlb2YgdC5zZXRBdHRyaWJ1dGV8fCJzdHJpbmciIT10eXBlb2YgdC5uYW1lc3BhY2VVUkl8fCJmdW5jdGlvbiIhPXR5cGVvZiB0Lmluc2VydEJlZm9yZSl9LGdlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT09KHZvaWQgMD09PWM/InVuZGVmaW5lZCI6SChjKSk/dCBpbnN0YW5jZW9mIGM6dCYmIm9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpIKHQpKSYmIm51bWJlciI9PXR5cGVvZiB0Lm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIHQubm9kZU5hbWV9LG1lPWZ1bmN0aW9uKHQsZSxyKXtmdFt0XSYmZihmdFt0XSwoZnVuY3Rpb24odCl7dC5jYWxsKG4sZSxyLG5lKX0pKX0sdmU9ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwO2lmKG1lKCJiZWZvcmVTYW5pdGl6ZUVsZW1lbnRzIix0LG51bGwpLHllKHQpKXJldHVybiBoZSh0KSwhMDtpZihnKHQubm9kZU5hbWUsL1tcdTAwODAtXHVGRkZGXS8pKXJldHVybiBoZSh0KSwhMDt2YXIgcj1lZSh0Lm5vZGVOYW1lKTtpZihtZSgidXBvblNhbml0aXplRWxlbWVudCIsdCx7dGFnTmFtZTpyLGFsbG93ZWRUYWdzOl90fSksIWdlKHQuZmlyc3RFbGVtZW50Q2hpbGQpJiYoIWdlKHQuY29udGVudCl8fCFnZSh0LmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQpKSYmXygvPFsvXHddL2csdC5pbm5lckhUTUwpJiZfKC88Wy9cd10vZyx0LnRleHRDb250ZW50KSlyZXR1cm4gaGUodCksITA7aWYoInNlbGVjdCI9PT1yJiZfKC88dGVtcGxhdGUvaSx0LmlubmVySFRNTCkpcmV0dXJuIGhlKHQpLCEwO2lmKCFfdFtyXXx8RXRbcl0pe2lmKFB0JiYhenRbcl0pe3ZhciBpPWV0KHQpfHx0LnBhcmVudE5vZGUsYT10dCh0KXx8dC5jaGlsZE5vZGVzO2lmKGEmJmkpZm9yKHZhciBvPWEubGVuZ3RoLTE7bz49MDstLW8paS5pbnNlcnRCZWZvcmUoSyhhW29dLCEwKSxKKHQpKX1pZighRXRbcl0mJl9lKHIpKXtpZihUdC50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJl8oVHQudGFnTmFtZUNoZWNrLHIpKXJldHVybiExO2lmKFR0LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZUdC50YWdOYW1lQ2hlY2socikpcmV0dXJuITF9cmV0dXJuIGhlKHQpLCEwfXJldHVybiB0IGluc3RhbmNlb2YgdSYmIWxlKHQpPyhoZSh0KSwhMCk6Im5vc2NyaXB0IiE9PXImJiJub2VtYmVkIiE9PXJ8fCFfKC88XC9ubyhzY3JpcHR8ZW1iZWQpL2ksdC5pbm5lckhUTUwpPyhOdCYmMz09PXQubm9kZVR5cGUmJihlPXQudGV4dENvbnRlbnQsZT1tKGUsZHQsIiAiKSxlPW0oZSxwdCwiICIpLHQudGV4dENvbnRlbnQhPT1lJiYocChuLnJlbW92ZWQse2VsZW1lbnQ6dC5jbG9uZU5vZGUoKX0pLHQudGV4dENvbnRlbnQ9ZSkpLG1lKCJhZnRlclNhbml0aXplRWxlbWVudHMiLHQsbnVsbCksITEpOihoZSh0KSwhMCl9LGJlPWZ1bmN0aW9uKHQsZSxuKXtpZihGdCYmKCJpZCI9PT1lfHwibmFtZSI9PT1lKSYmKG4gaW4gaXx8biBpbiByZSkpcmV0dXJuITE7aWYoQXQmJiFDdFtlXSYmXyh5dCxlKSk7ZWxzZSBpZihTdCYmXyhndCxlKSk7ZWxzZSBpZighd3RbZV18fEN0W2VdKXtpZighKF9lKHQpJiYoVHQudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZfKFR0LnRhZ05hbWVDaGVjayx0KXx8VHQudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlR0LnRhZ05hbWVDaGVjayh0KSkmJihUdC5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJl8oVHQuYXR0cmlidXRlTmFtZUNoZWNrLGUpfHxUdC5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmVHQuYXR0cmlidXRlTmFtZUNoZWNrKGUpKXx8ImlzIj09PWUmJlR0LmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKFR0LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmXyhUdC50YWdOYW1lQ2hlY2ssbil8fFR0LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZUdC50YWdOYW1lQ2hlY2sobikpKSlyZXR1cm4hMX1lbHNlIGlmKCR0W2VdKTtlbHNlIGlmKF8oYnQsbShuLHZ0LCIiKSkpO2Vsc2UgaWYoInNyYyIhPT1lJiYieGxpbms6aHJlZiIhPT1lJiYiaHJlZiIhPT1lfHwic2NyaXB0Ij09PXR8fDAhPT12KG4sImRhdGE6Iil8fCFxdFt0XSlpZihNdCYmIV8obXQsbShuLHZ0LCIiKSkpO2Vsc2UgaWYobilyZXR1cm4hMTtyZXR1cm4hMH0sX2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5kZXhPZigiLSIpPjB9LHhlPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCxyPXZvaWQgMCxpPXZvaWQgMCxhPXZvaWQgMDttZSgiYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzIix0LG51bGwpO3ZhciBvPXQuYXR0cmlidXRlcztpZihvKXt2YXIgcz17YXR0ck5hbWU6IiIsYXR0clZhbHVlOiIiLGtlZXBBdHRyOiEwLGFsbG93ZWRBdHRyaWJ1dGVzOnd0fTtmb3IoYT1vLmxlbmd0aDthLS07KXt2YXIgYz1lPW9bYV0sdT1jLm5hbWUsbD1jLm5hbWVzcGFjZVVSSTtpZihyPWIoZS52YWx1ZSksaT1lZSh1KSxzLmF0dHJOYW1lPWkscy5hdHRyVmFsdWU9cixzLmtlZXBBdHRyPSEwLHMuZm9yY2VLZWVwQXR0cj12b2lkIDAsbWUoInVwb25TYW5pdGl6ZUF0dHJpYnV0ZSIsdCxzKSxyPXMuYXR0clZhbHVlLCFzLmZvcmNlS2VlcEF0dHImJihmZSh1LHQpLHMua2VlcEF0dHIpKWlmKF8oL1wvPi9pLHIpKWZlKHUsdCk7ZWxzZXtOdCYmKHI9bShyLGR0LCIgIikscj1tKHIscHQsIiAiKSk7dmFyIGg9ZWUodC5ub2RlTmFtZSk7aWYoYmUoaCxpLHIpKXRyeXtsP3Quc2V0QXR0cmlidXRlTlMobCx1LHIpOnQuc2V0QXR0cmlidXRlKHUsciksZChuLnJlbW92ZWQpfWNhdGNoKHQpe319fW1lKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsdCxudWxsKX19LHdlPWZ1bmN0aW9uIHQoZSl7dmFyIG49dm9pZCAwLHI9cGUoZSk7Zm9yKG1lKCJiZWZvcmVTYW5pdGl6ZVNoYWRvd0RPTSIsZSxudWxsKTtuPXIubmV4dE5vZGUoKTspbWUoInVwb25TYW5pdGl6ZVNoYWRvd05vZGUiLG4sbnVsbCksdmUobil8fChuLmNvbnRlbnQgaW5zdGFuY2VvZiBvJiZ0KG4uY29udGVudCkseGUobikpO21lKCJhZnRlclNhbml0aXplU2hhZG93RE9NIixlLG51bGwpfTtyZXR1cm4gbi5zYW5pdGl6ZT1mdW5jdGlvbih0LGkpe3ZhciBhPXZvaWQgMCxzPXZvaWQgMCx1PXZvaWQgMCxsPXZvaWQgMCxoPXZvaWQgMDtpZigoUXQ9IXQpJiYodD0iXHgzYyEtLVx4M2UiKSwic3RyaW5nIiE9dHlwZW9mIHQmJiFnZSh0KSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQudG9TdHJpbmcpdGhyb3cgeCgidG9TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKTtpZigic3RyaW5nIiE9dHlwZW9mKHQ9dC50b1N0cmluZygpKSl0aHJvdyB4KCJkaXJ0eSBpcyBub3QgYSBzdHJpbmcsIGFib3J0aW5nIil9aWYoIW4uaXNTdXBwb3J0ZWQpe2lmKCJvYmplY3QiPT09SChlLnRvU3RhdGljSFRNTCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RhdGljSFRNTCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBlLnRvU3RhdGljSFRNTCh0KTtpZihnZSh0KSlyZXR1cm4gZS50b1N0YXRpY0hUTUwodC5vdXRlckhUTUwpfXJldHVybiB0fWlmKE90fHxhZShpKSxuLnJlbW92ZWQ9W10sInN0cmluZyI9PXR5cGVvZiB0JiYoanQ9ITEpLGp0KTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBjKTE9PT0ocz0oYT1kZSgiXHgzYyEtLS0tXHgzZSIpKS5vd25lckRvY3VtZW50LmltcG9ydE5vZGUodCwhMCkpLm5vZGVUeXBlJiYiQk9EWSI9PT1zLm5vZGVOYW1lfHwiSFRNTCI9PT1zLm5vZGVOYW1lP2E9czphLmFwcGVuZENoaWxkKHMpO2Vsc2V7aWYoIUx0JiYhTnQmJiFEdCYmLTE9PT10LmluZGV4T2YoIjwiKSlyZXR1cm4gcnQmJlJ0P3J0LmNyZWF0ZUhUTUwodCk6dDtpZighKGE9ZGUodCkpKXJldHVybiBMdD9udWxsOml0fWEmJkJ0JiZoZShhLmZpcnN0Q2hpbGQpO2Zvcih2YXIgZj1wZShqdD90OmEpO3U9Zi5uZXh0Tm9kZSgpOykzPT09dS5ub2RlVHlwZSYmdT09PWx8fHZlKHUpfHwodS5jb250ZW50IGluc3RhbmNlb2YgbyYmd2UodS5jb250ZW50KSx4ZSh1KSxsPXUpO2lmKGw9bnVsbCxqdClyZXR1cm4gdDtpZihMdCl7aWYoSXQpZm9yKGg9Y3QuY2FsbChhLm93bmVyRG9jdW1lbnQpO2EuZmlyc3RDaGlsZDspaC5hcHBlbmRDaGlsZChhLmZpcnN0Q2hpbGQpO2Vsc2UgaD1hO3JldHVybiB3dC5zaGFkb3dyb290JiYoaD1sdC5jYWxsKHIsaCwhMCkpLGh9dmFyIGQ9RHQ/YS5vdXRlckhUTUw6YS5pbm5lckhUTUw7cmV0dXJuIE50JiYoZD1tKGQsZHQsIiAiKSxkPW0oZCxwdCwiICIpKSxydCYmUnQ/cnQuY3JlYXRlSFRNTChkKTpkfSxuLnNldENvbmZpZz1mdW5jdGlvbih0KXthZSh0KSxPdD0hMH0sbi5jbGVhckNvbmZpZz1mdW5jdGlvbigpe25lPW51bGwsT3Q9ITF9LG4uaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7bmV8fGFlKHt9KTt2YXIgcj1lZSh0KSxpPWVlKGUpO3JldHVybiBiZShyLGksbil9LG4uYWRkSG9vaz1mdW5jdGlvbih0LGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZnRbdF09ZnRbdF18fFtdLHAoZnRbdF0sZSkpfSxuLnJlbW92ZUhvb2s9ZnVuY3Rpb24odCl7ZnRbdF0mJmQoZnRbdF0pfSxuLnJlbW92ZUhvb2tzPWZ1bmN0aW9uKHQpe2Z0W3RdJiYoZnRbdF09W10pfSxuLnJlbW92ZUFsbEhvb2tzPWZ1bmN0aW9uKCl7ZnQ9e319LG59KCl9KCl9LDgyODI6KHQsZSxuKT0+e3ZhciByPW4oMjM1NCk7dC5leHBvcnRzPXtHcmFwaDpyLkdyYXBoLGpzb246big4OTc0KSxhbGc6bigyNDQwKSx2ZXJzaW9uOnIudmVyc2lvbn19LDI4NDI6KHQsZSxuKT0+e3ZhciByPW4oOTEyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG49e30saT1bXTtmdW5jdGlvbiBhKGkpe3IuaGFzKG4saSl8fChuW2ldPSEwLGUucHVzaChpKSxyLmVhY2godC5zdWNjZXNzb3JzKGkpLGEpLHIuZWFjaCh0LnByZWRlY2Vzc29ycyhpKSxhKSl9cmV0dXJuIHIuZWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe2U9W10sYSh0KSxlLmxlbmd0aCYmaS5wdXNoKGUpfSkpLGl9fSwzOTg0Oih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpO2Z1bmN0aW9uIGkodCxlLG4sYSxvLHMpe3IuaGFzKGEsZSl8fChhW2VdPSEwLG58fHMucHVzaChlKSxyLmVhY2gobyhlKSwoZnVuY3Rpb24oZSl7aSh0LGUsbixhLG8scyl9KSksbiYmcy5wdXNoKGUpKX10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3IuaXNBcnJheShlKXx8KGU9W2VdKTt2YXIgYT0odC5pc0RpcmVjdGVkKCk/dC5zdWNjZXNzb3JzOnQubmVpZ2hib3JzKS5iaW5kKHQpLG89W10scz17fTtyZXR1cm4gci5lYWNoKGUsKGZ1bmN0aW9uKGUpe2lmKCF0Lmhhc05vZGUoZSkpdGhyb3cgbmV3IEVycm9yKCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICIrZSk7aSh0LGUsInBvc3QiPT09bixzLGEsbyl9KSksb319LDQ4NDc6KHQsZSxuKT0+e3ZhciByPW4oMzc2MyksaT1uKDkxMjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkudHJhbnNmb3JtKHQubm9kZXMoKSwoZnVuY3Rpb24oaSxhKXtpW2FdPXIodCxhLGUsbil9KSx7fSl9fSwzNzYzOih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpLGk9big5Njc1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBhLG8scz17fSxjPW5ldyBpLHU9ZnVuY3Rpb24odCl7dmFyIGU9dC52IT09YT90LnY6dC53LHI9c1tlXSxpPW4odCksdT1vLmRpc3RhbmNlK2k7aWYoaTwwKXRocm93IG5ldyBFcnJvcigiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBCYWQgZWRnZTogIit0KyIgV2VpZ2h0OiAiK2kpO3U8ci5kaXN0YW5jZSYmKHIuZGlzdGFuY2U9dSxyLnByZWRlY2Vzc29yPWEsYy5kZWNyZWFzZShlLHUpKX07Zm9yKHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10PT09ZT8wOk51bWJlci5QT1NJVElWRV9JTkZJTklUWTtzW3RdPXtkaXN0YW5jZTpufSxjLmFkZCh0LG4pfSkpO2Muc2l6ZSgpPjAmJihhPWMucmVtb3ZlTWluKCksKG89c1thXSkuZGlzdGFuY2UhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOylyKGEpLmZvckVhY2godSk7cmV0dXJuIHN9KHQsU3RyaW5nKGUpLG58fGEscnx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX07dmFyIGE9ci5jb25zdGFudCgxKX0sOTA5NjoodCxlLG4pPT57dmFyIHI9big5MTI2KSxpPW4oNTAyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmZpbHRlcihpKHQpLChmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGg+MXx8MT09PWUubGVuZ3RoJiZ0Lmhhc0VkZ2UoZVswXSxlWzBdKX0pKX19LDg5MjQ6KHQsZSxuKT0+e3ZhciByPW4oOTEyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByPXt9LGk9dC5ub2RlcygpO3JldHVybiBpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbdF09e30sclt0XVt0XT17ZGlzdGFuY2U6MH0saS5mb3JFYWNoKChmdW5jdGlvbihlKXt0IT09ZSYmKHJbdF1bZV09e2Rpc3RhbmNlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX0pfSkpLG4odCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9bi52PT09dD9uLnc6bi52LGE9ZShuKTtyW3RdW2ldPXtkaXN0YW5jZTphLHByZWRlY2Vzc29yOnR9fSkpfSkpLGkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9clt0XTtpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBhPXJbbl07aS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1hW3RdLGk9ZVtuXSxvPWFbbl0scz1yLmRpc3RhbmNlK2kuZGlzdGFuY2U7czxvLmRpc3RhbmNlJiYoby5kaXN0YW5jZT1zLG8ucHJlZGVjZXNzb3I9aS5wcmVkZWNlc3Nvcil9KSl9KSl9KSkscn0odCxlfHxpLG58fGZ1bmN0aW9uKGUpe3JldHVybiB0Lm91dEVkZ2VzKGUpfSl9O3ZhciBpPXIuY29uc3RhbnQoMSl9LDI0NDA6KHQsZSxuKT0+e3QuZXhwb3J0cz17Y29tcG9uZW50czpuKDI4NDIpLGRpamtzdHJhOm4oMzc2MyksZGlqa3N0cmFBbGw6big0ODQ3KSxmaW5kQ3ljbGVzOm4oOTA5NiksZmxveWRXYXJzaGFsbDpuKDg5MjQpLGlzQWN5Y2xpYzpuKDI3MDcpLHBvc3RvcmRlcjpuKDg4MjgpLHByZW9yZGVyOm4oMjY0OCkscHJpbTpuKDUxNCksdGFyamFuOm4oNTAyMyksdG9wc29ydDpuKDIxNjYpfX0sMjcwNzoodCxlLG4pPT57dmFyIHI9bigyMTY2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3IodCl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIHIuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH19LDg4Mjg6KHQsZSxuKT0+e3ZhciByPW4oMzk4NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCxlLCJwb3N0Iil9fSwyNjQ4Oih0LGUsbik9Pnt2YXIgcj1uKDM5ODQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiByKHQsZSwicHJlIil9fSw1MTQ6KHQsZSxuKT0+e3ZhciByPW4oOTEyNiksaT1uKDc3MSksYT1uKDk2NzUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLG89bmV3IGkscz17fSxjPW5ldyBhO2Z1bmN0aW9uIHUodCl7dmFyIHI9dC52PT09bj90Lnc6dC52LGk9Yy5wcmlvcml0eShyKTtpZih2b2lkIDAhPT1pKXt2YXIgYT1lKHQpO2E8aSYmKHNbcl09bixjLmRlY3JlYXNlKHIsYSkpfX1pZigwPT09dC5ub2RlQ291bnQoKSlyZXR1cm4gbztyLmVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtjLmFkZCh0LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksby5zZXROb2RlKHQpfSkpLGMuZGVjcmVhc2UodC5ub2RlcygpWzBdLDApO2Zvcih2YXIgbD0hMTtjLnNpemUoKT4wOyl7aWYobj1jLnJlbW92ZU1pbigpLHIuaGFzKHMsbikpby5zZXRFZGdlKG4sc1tuXSk7ZWxzZXtpZihsKXRocm93IG5ldyBFcnJvcigiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogIit0KTtsPSEwfXQubm9kZUVkZ2VzKG4pLmZvckVhY2godSl9cmV0dXJuIG99fSw1MDIzOih0LGUsbik9Pnt2YXIgcj1uKDkxMjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT0wLG49W10saT17fSxhPVtdO2Z1bmN0aW9uIG8ocyl7dmFyIGM9aVtzXT17b25TdGFjazohMCxsb3dsaW5rOmUsaW5kZXg6ZSsrfTtpZihuLnB1c2gocyksdC5zdWNjZXNzb3JzKHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuaGFzKGksdCk/aVt0XS5vblN0YWNrJiYoYy5sb3dsaW5rPU1hdGgubWluKGMubG93bGluayxpW3RdLmluZGV4KSk6KG8odCksYy5sb3dsaW5rPU1hdGgubWluKGMubG93bGluayxpW3RdLmxvd2xpbmspKX0pKSxjLmxvd2xpbms9PT1jLmluZGV4KXt2YXIgdSxsPVtdO2Rve3U9bi5wb3AoKSxpW3VdLm9uU3RhY2s9ITEsbC5wdXNoKHUpfXdoaWxlKHMhPT11KTthLnB1c2gobCl9fXJldHVybiB0Lm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ci5oYXMoaSx0KXx8byh0KX0pKSxhfX0sMjE2NjoodCxlLG4pPT57dmFyIHI9big5MTI2KTtmdW5jdGlvbiBpKHQpe3ZhciBlPXt9LG49e30saT1bXTtpZihyLmVhY2godC5zaW5rcygpLChmdW5jdGlvbiBvKHMpe2lmKHIuaGFzKG4scykpdGhyb3cgbmV3IGE7ci5oYXMoZSxzKXx8KG5bc109ITAsZVtzXT0hMCxyLmVhY2godC5wcmVkZWNlc3NvcnMocyksbyksZGVsZXRlIG5bc10saS5wdXNoKHMpKX0pKSxyLnNpemUoZSkhPT10Lm5vZGVDb3VudCgpKXRocm93IG5ldyBhO3JldHVybiBpfWZ1bmN0aW9uIGEoKXt9dC5leHBvcnRzPWksaS5DeWNsZUV4Y2VwdGlvbj1hLGEucHJvdG90eXBlPW5ldyBFcnJvcn0sOTY3NToodCxlLG4pPT57dmFyIHI9big5MTI2KTtmdW5jdGlvbiBpKCl7dGhpcy5fYXJyPVtdLHRoaXMuX2tleUluZGljZXM9e319dC5leHBvcnRzPWksaS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubGVuZ3RofSxpLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleX0pKX0saS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiByLmhhcyh0aGlzLl9rZXlJbmRpY2VzLHQpfSxpLnByb3RvdHlwZS5wcmlvcml0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9rZXlJbmRpY2VzW3RdO2lmKHZvaWQgMCE9PWUpcmV0dXJuIHRoaXMuX2FycltlXS5wcmlvcml0eX0saS5wcm90b3R5cGUubWluPWZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuc2l6ZSgpKXRocm93IG5ldyBFcnJvcigiUXVldWUgdW5kZXJmbG93Iik7cmV0dXJuIHRoaXMuX2FyclswXS5rZXl9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2tleUluZGljZXM7aWYodD1TdHJpbmcodCksIXIuaGFzKG4sdCkpe3ZhciBpPXRoaXMuX2FycixhPWkubGVuZ3RoO3JldHVybiBuW3RdPWEsaS5wdXNoKHtrZXk6dCxwcmlvcml0eTplfSksdGhpcy5fZGVjcmVhc2UoYSksITB9cmV0dXJuITF9LGkucHJvdG90eXBlLnJlbW92ZU1pbj1mdW5jdGlvbigpe3RoaXMuX3N3YXAoMCx0aGlzLl9hcnIubGVuZ3RoLTEpO3ZhciB0PXRoaXMuX2Fyci5wb3AoKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2tleUluZGljZXNbdC5rZXldLHRoaXMuX2hlYXBpZnkoMCksdC5rZXl9LGkucHJvdG90eXBlLmRlY3JlYXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlc1t0XTtpZihlPnRoaXMuX2FycltuXS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gS2V5OiAiK3QrIiBPbGQ6ICIrdGhpcy5fYXJyW25dLnByaW9yaXR5KyIgTmV3OiAiK2UpO3RoaXMuX2FycltuXS5wcmlvcml0eT1lLHRoaXMuX2RlY3JlYXNlKG4pfSxpLnByb3RvdHlwZS5faGVhcGlmeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9hcnIsbj0yKnQscj1uKzEsaT10O248ZS5sZW5ndGgmJihpPWVbbl0ucHJpb3JpdHk8ZVtpXS5wcmlvcml0eT9uOmkscjxlLmxlbmd0aCYmKGk9ZVtyXS5wcmlvcml0eTxlW2ldLnByaW9yaXR5P3I6aSksaSE9PXQmJih0aGlzLl9zd2FwKHQsaSksdGhpcy5faGVhcGlmeShpKSkpfSxpLnByb3RvdHlwZS5fZGVjcmVhc2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49dGhpcy5fYXJyLHI9blt0XS5wcmlvcml0eTswIT09dCYmIShuW2U9dD4+MV0ucHJpb3JpdHk8cik7KXRoaXMuX3N3YXAodCxlKSx0PWV9LGkucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYXJyLHI9dGhpcy5fa2V5SW5kaWNlcyxpPW5bdF0sYT1uW2VdO25bdF09YSxuW2VdPWksclthLmtleV09dCxyW2kua2V5XT1lfX0sNzcxOih0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIHI9big5MTI2KTt0LmV4cG9ydHM9YTt2YXIgaT0iXDAiO2Z1bmN0aW9uIGEodCl7dGhpcy5faXNEaXJlY3RlZD0hci5oYXModCwiZGlyZWN0ZWQiKXx8dC5kaXJlY3RlZCx0aGlzLl9pc011bHRpZ3JhcGg9ISFyLmhhcyh0LCJtdWx0aWdyYXBoIikmJnQubXVsdGlncmFwaCx0aGlzLl9pc0NvbXBvdW5kPSEhci5oYXModCwiY29tcG91bmQiKSYmdC5jb21wb3VuZCx0aGlzLl9sYWJlbD12b2lkIDAsdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPXIuY29uc3RhbnQodm9pZCAwKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49ci5jb25zdGFudCh2b2lkIDApLHRoaXMuX25vZGVzPXt9LHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnQ9e30sdGhpcy5fY2hpbGRyZW49e30sdGhpcy5fY2hpbGRyZW5bIlwwIl09e30pLHRoaXMuX2luPXt9LHRoaXMuX3ByZWRzPXt9LHRoaXMuX291dD17fSx0aGlzLl9zdWNzPXt9LHRoaXMuX2VkZ2VPYmpzPXt9LHRoaXMuX2VkZ2VMYWJlbHM9e319ZnVuY3Rpb24gbyh0LGUpe3RbZV0/dFtlXSsrOnRbZV09MX1mdW5jdGlvbiBzKHQsZSl7LS10W2VdfHxkZWxldGUgdFtlXX1mdW5jdGlvbiBjKHQsZSxuLGkpe3ZhciBhPSIiK2Usbz0iIituO2lmKCF0JiZhPm8pe3ZhciBzPWE7YT1vLG89c31yZXR1cm4gYSsiASIrbysiASIrKHIuaXNVbmRlZmluZWQoaSk/IlwwIjppKX1mdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBpPSIiK2UsYT0iIituO2lmKCF0JiZpPmEpe3ZhciBvPWk7aT1hLGE9b312YXIgcz17djppLHc6YX07cmV0dXJuIHImJihzLm5hbWU9ciksc31mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGModCxlLnYsZS53LGUubmFtZSl9YS5wcm90b3R5cGUuX25vZGVDb3VudD0wLGEucHJvdG90eXBlLl9lZGdlQ291bnQ9MCxhLnByb3RvdHlwZS5pc0RpcmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWR9LGEucHJvdG90eXBlLmlzTXVsdGlncmFwaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc011bHRpZ3JhcGh9LGEucHJvdG90eXBlLmlzQ29tcG91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb21wb3VuZH0sYS5wcm90b3R5cGUuc2V0R3JhcGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhYmVsPXQsdGhpc30sYS5wcm90b3R5cGUuZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFiZWx9LGEucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaXNGdW5jdGlvbih0KXx8KHQ9ci5jb25zdGFudCh0KSksdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPXQsdGhpc30sYS5wcm90b3R5cGUubm9kZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vZGVDb3VudH0sYS5wcm90b3R5cGUubm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gci5rZXlzKHRoaXMuX25vZGVzKX0sYS5wcm90b3R5cGUuc291cmNlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHIuZmlsdGVyKHRoaXMubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuaXNFbXB0eSh0Ll9pbltlXSl9KSl9LGEucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gci5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gci5pc0VtcHR5KHQuX291dFtlXSl9KSl9LGEucHJvdG90eXBlLnNldE5vZGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLGk9dGhpcztyZXR1cm4gci5lYWNoKHQsKGZ1bmN0aW9uKHQpe24ubGVuZ3RoPjE/aS5zZXROb2RlKHQsZSk6aS5zZXROb2RlKHQpfSkpLHRoaXN9LGEucHJvdG90eXBlLnNldE5vZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5oYXModGhpcy5fbm9kZXMsdCk/KGFyZ3VtZW50cy5sZW5ndGg+MSYmKHRoaXMuX25vZGVzW3RdPWUpLHRoaXMpOih0aGlzLl9ub2Rlc1t0XT1hcmd1bWVudHMubGVuZ3RoPjE/ZTp0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odCksdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudFt0XT1pLHRoaXMuX2NoaWxkcmVuW3RdPXt9LHRoaXMuX2NoaWxkcmVuWyJcMCJdW3RdPSEwKSx0aGlzLl9pblt0XT17fSx0aGlzLl9wcmVkc1t0XT17fSx0aGlzLl9vdXRbdF09e30sdGhpcy5fc3Vjc1t0XT17fSwrK3RoaXMuX25vZGVDb3VudCx0aGlzKX0sYS5wcm90b3R5cGUubm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbm9kZXNbdF19LGEucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaGFzKHRoaXMuX25vZGVzLHQpfSxhLnByb3RvdHlwZS5yZW1vdmVOb2RlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoci5oYXModGhpcy5fbm9kZXMsdCkpe3ZhciBuPWZ1bmN0aW9uKHQpe2UucmVtb3ZlRWRnZShlLl9lZGdlT2Jqc1t0XSl9O2RlbGV0ZSB0aGlzLl9ub2Rlc1t0XSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksZGVsZXRlIHRoaXMuX3BhcmVudFt0XSxyLmVhY2godGhpcy5jaGlsZHJlbih0KSwoZnVuY3Rpb24odCl7ZS5zZXRQYXJlbnQodCl9KSksZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RdKSxyLmVhY2goci5rZXlzKHRoaXMuX2luW3RdKSxuKSxkZWxldGUgdGhpcy5faW5bdF0sZGVsZXRlIHRoaXMuX3ByZWRzW3RdLHIuZWFjaChyLmtleXModGhpcy5fb3V0W3RdKSxuKSxkZWxldGUgdGhpcy5fb3V0W3RdLGRlbGV0ZSB0aGlzLl9zdWNzW3RdLC0tdGhpcy5fbm9kZUNvdW50fXJldHVybiB0aGlzfSxhLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5faXNDb21wb3VuZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoIik7aWYoci5pc1VuZGVmaW5lZChlKSllPWk7ZWxzZXtmb3IodmFyIG49ZSs9IiI7IXIuaXNVbmRlZmluZWQobik7bj10aGlzLnBhcmVudChuKSlpZihuPT09dCl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgIitlKyIgYXMgcGFyZW50IG9mICIrdCsiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKGUpfXJldHVybiB0aGlzLnNldE5vZGUodCksdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksdGhpcy5fcGFyZW50W3RdPWUsdGhpcy5fY2hpbGRyZW5bZV1bdF09ITAsdGhpc30sYS5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0PWZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdF1dW3RdfSxhLnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24odCl7aWYodGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fcGFyZW50W3RdO2lmKGUhPT1pKXJldHVybiBlfX0sYS5wcm90b3R5cGUuY2hpbGRyZW49ZnVuY3Rpb24odCl7aWYoci5pc1VuZGVmaW5lZCh0KSYmKHQ9aSksdGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5bdF07aWYoZSlyZXR1cm4gci5rZXlzKGUpfWVsc2V7aWYodD09PWkpcmV0dXJuIHRoaXMubm9kZXMoKTtpZih0aGlzLmhhc05vZGUodCkpcmV0dXJuW119fSxhLnByb3RvdHlwZS5wcmVkZWNlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcHJlZHNbdF07aWYoZSlyZXR1cm4gci5rZXlzKGUpfSxhLnByb3RvdHlwZS5zdWNjZXNzb3JzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1Y3NbdF07aWYoZSlyZXR1cm4gci5rZXlzKGUpfSxhLnByb3RvdHlwZS5uZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wcmVkZWNlc3NvcnModCk7aWYoZSlyZXR1cm4gci51bmlvbihlLHRoaXMuc3VjY2Vzc29ycyh0KSl9LGEucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PSh0aGlzLmlzRGlyZWN0ZWQoKT90aGlzLnN1Y2Nlc3NvcnModCk6dGhpcy5uZWlnaGJvcnModCkpLmxlbmd0aH0sYS5wcm90b3R5cGUuZmlsdGVyTm9kZXM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3Ioe2RpcmVjdGVkOnRoaXMuX2lzRGlyZWN0ZWQsbXVsdGlncmFwaDp0aGlzLl9pc011bHRpZ3JhcGgsY29tcG91bmQ6dGhpcy5faXNDb21wb3VuZH0pO2Uuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTt2YXIgbj10aGlzO3IuZWFjaCh0aGlzLl9ub2RlcywoZnVuY3Rpb24obixyKXt0KHIpJiZlLnNldE5vZGUocixuKX0pKSxyLmVhY2godGhpcy5fZWRnZU9ianMsKGZ1bmN0aW9uKHQpe2UuaGFzTm9kZSh0LnYpJiZlLmhhc05vZGUodC53KSYmZS5zZXRFZGdlKHQsbi5lZGdlKHQpKX0pKTt2YXIgaT17fTtmdW5jdGlvbiBhKHQpe3ZhciByPW4ucGFyZW50KHQpO3JldHVybiB2b2lkIDA9PT1yfHxlLmhhc05vZGUocik/KGlbdF09cixyKTpyIGluIGk/aVtyXTphKHIpfXJldHVybiB0aGlzLl9pc0NvbXBvdW5kJiZyLmVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0LGEodCkpfSkpLGV9LGEucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaXNGdW5jdGlvbih0KXx8KHQ9ci5jb25zdGFudCh0KSksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPXQsdGhpc30sYS5wcm90b3R5cGUuZWRnZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VkZ2VDb3VudH0sYS5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gci52YWx1ZXModGhpcy5fZWRnZU9ianMpfSxhLnByb3RvdHlwZS5zZXRQYXRoPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPWFyZ3VtZW50cztyZXR1cm4gci5yZWR1Y2UodCwoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5sZW5ndGg+MT9uLnNldEVkZ2UodCxyLGUpOm4uc2V0RWRnZSh0LHIpLHJ9KSksdGhpc30sYS5wcm90b3R5cGUuc2V0RWRnZT1mdW5jdGlvbigpe3ZhciB0LGUsbixpLGE9ITEscz1hcmd1bWVudHNbMF07Im9iamVjdCI9PXR5cGVvZiBzJiZudWxsIT09cyYmInYiaW4gcz8odD1zLnYsZT1zLncsbj1zLm5hbWUsMj09PWFyZ3VtZW50cy5sZW5ndGgmJihpPWFyZ3VtZW50c1sxXSxhPSEwKSk6KHQ9cyxlPWFyZ3VtZW50c1sxXSxuPWFyZ3VtZW50c1szXSxhcmd1bWVudHMubGVuZ3RoPjImJihpPWFyZ3VtZW50c1syXSxhPSEwKSksdD0iIit0LGU9IiIrZSxyLmlzVW5kZWZpbmVkKG4pfHwobj0iIituKTt2YXIgbD1jKHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO2lmKHIuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsbCkpcmV0dXJuIGEmJih0aGlzLl9lZGdlTGFiZWxzW2xdPWkpLHRoaXM7aWYoIXIuaXNVbmRlZmluZWQobikmJiF0aGlzLl9pc011bHRpZ3JhcGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlIik7dGhpcy5zZXROb2RlKHQpLHRoaXMuc2V0Tm9kZShlKSx0aGlzLl9lZGdlTGFiZWxzW2xdPWE/aTp0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odCxlLG4pO3ZhciBoPXUodGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHQ9aC52LGU9aC53LE9iamVjdC5mcmVlemUoaCksdGhpcy5fZWRnZU9ianNbbF09aCxvKHRoaXMuX3ByZWRzW2VdLHQpLG8odGhpcy5fc3Vjc1t0XSxlKSx0aGlzLl9pbltlXVtsXT1oLHRoaXMuX291dFt0XVtsXT1oLHRoaXMuX2VkZ2VDb3VudCsrLHRoaXN9LGEucHJvdG90eXBlLmVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciByPTE9PT1hcmd1bWVudHMubGVuZ3RoP2wodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOmModGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHRoaXMuX2VkZ2VMYWJlbHNbcl19LGEucHJvdG90eXBlLmhhc0VkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP2wodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOmModGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHIuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsaSl9LGEucHJvdG90eXBlLnJlbW92ZUVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciByPTE9PT1hcmd1bWVudHMubGVuZ3RoP2wodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOmModGhpcy5faXNEaXJlY3RlZCx0LGUsbiksaT10aGlzLl9lZGdlT2Jqc1tyXTtyZXR1cm4gaSYmKHQ9aS52LGU9aS53LGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW3JdLGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tyXSxzKHRoaXMuX3ByZWRzW2VdLHQpLHModGhpcy5fc3Vjc1t0XSxlKSxkZWxldGUgdGhpcy5faW5bZV1bcl0sZGVsZXRlIHRoaXMuX291dFt0XVtyXSx0aGlzLl9lZGdlQ291bnQtLSksdGhpc30sYS5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2luW3RdO2lmKG4pe3ZhciBpPXIudmFsdWVzKG4pO3JldHVybiBlP3IuZmlsdGVyKGksKGZ1bmN0aW9uKHQpe3JldHVybiB0LnY9PT1lfSkpOml9fSxhLnByb3RvdHlwZS5vdXRFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX291dFt0XTtpZihuKXt2YXIgaT1yLnZhbHVlcyhuKTtyZXR1cm4gZT9yLmZpbHRlcihpLChmdW5jdGlvbih0KXtyZXR1cm4gdC53PT09ZX0pKTppfX0sYS5wcm90b3R5cGUubm9kZUVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5pbkVkZ2VzKHQsZSk7aWYobilyZXR1cm4gbi5jb25jYXQodGhpcy5vdXRFZGdlcyh0LGUpKX19LDIzNTQ6KHQsZSxuKT0+e3QuZXhwb3J0cz17R3JhcGg6big3NzEpLHZlcnNpb246big5NjMxKX19LDg5NzQ6KHQsZSxuKT0+e3ZhciByPW4oOTEyNiksaT1uKDc3MSk7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gci5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj10Lm5vZGUoZSksaT10LnBhcmVudChlKSxhPXt2OmV9O3JldHVybiByLmlzVW5kZWZpbmVkKG4pfHwoYS52YWx1ZT1uKSxyLmlzVW5kZWZpbmVkKGkpfHwoYS5wYXJlbnQ9aSksYX0pKX1mdW5jdGlvbiBvKHQpe3JldHVybiByLm1hcCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKSxpPXt2OmUudix3OmUud307cmV0dXJuIHIuaXNVbmRlZmluZWQoZS5uYW1lKXx8KGkubmFtZT1lLm5hbWUpLHIuaXNVbmRlZmluZWQobil8fChpLnZhbHVlPW4pLGl9KSl9dC5leHBvcnRzPXt3cml0ZTpmdW5jdGlvbih0KXt2YXIgZT17b3B0aW9uczp7ZGlyZWN0ZWQ6dC5pc0RpcmVjdGVkKCksbXVsdGlncmFwaDp0LmlzTXVsdGlncmFwaCgpLGNvbXBvdW5kOnQuaXNDb21wb3VuZCgpfSxub2RlczphKHQpLGVkZ2VzOm8odCl9O3JldHVybiByLmlzVW5kZWZpbmVkKHQuZ3JhcGgoKSl8fChlLnZhbHVlPXIuY2xvbmUodC5ncmFwaCgpKSksZX0scmVhZDpmdW5jdGlvbih0KXt2YXIgZT1uZXcgaSh0Lm9wdGlvbnMpLnNldEdyYXBoKHQudmFsdWUpO3JldHVybiByLmVhY2godC5ub2RlcywoZnVuY3Rpb24odCl7ZS5zZXROb2RlKHQudix0LnZhbHVlKSx0LnBhcmVudCYmZS5zZXRQYXJlbnQodC52LHQucGFyZW50KX0pKSxyLmVhY2godC5lZGdlcywoZnVuY3Rpb24odCl7ZS5zZXRFZGdlKHt2OnQudix3OnQudyxuYW1lOnQubmFtZX0sdC52YWx1ZSl9KSksZX19fSw5MTI2Oih0LGUsbik9Pnt2YXIgcjt0cnl7cj17Y2xvbmU6big2Njc4KSxjb25zdGFudDpuKDU3MDMpLGVhY2g6big2MDczKSxmaWx0ZXI6bigzMTA1KSxoYXM6big4NzIxKSxpc0FycmF5Om4oMTQ2OSksaXNFbXB0eTpuKDE2MDkpLGlzRnVuY3Rpb246bigzNTYwKSxpc1VuZGVmaW5lZDpuKDIzNTMpLGtleXM6bigzNjc0KSxtYXA6big1MTYxKSxyZWR1Y2U6big0MDYxKSxzaXplOm4oNDIzOCksdHJhbnNmb3JtOm4oODcxOCksdW5pb246bigzMzg2KSx2YWx1ZXM6bigyNjI4KX19Y2F0Y2godCl7fXJ8fChyPXdpbmRvdy5fKSx0LmV4cG9ydHM9cn0sOTYzMTp0PT57dC5leHBvcnRzPSIyLjEuOCJ9LDE3NzM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oNzYyOCksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLmNvbG9yPWUsdGhpcy5jaGFuZ2VkPSExLHRoaXMuZGF0YT10LHRoaXMudHlwZT1uZXcgaS5kZWZhdWx0fXJldHVybiB0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jb2xvcj1lLHRoaXMuY2hhbmdlZD0hMSx0aGlzLmRhdGE9dCx0aGlzLnR5cGUudHlwZT0wLHRoaXN9LHQucHJvdG90eXBlLl9lbnN1cmVIU0w9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10Lmgsbj10LnMsaT10Lmw7dm9pZCAwPT09ZSYmKHQuaD1yLmRlZmF1bHQuY2hhbm5lbC5yZ2IyaHNsKHQsImgiKSksdm9pZCAwPT09biYmKHQucz1yLmRlZmF1bHQuY2hhbm5lbC5yZ2IyaHNsKHQsInMiKSksdm9pZCAwPT09aSYmKHQubD1yLmRlZmF1bHQuY2hhbm5lbC5yZ2IyaHNsKHQsImwiKSl9LHQucHJvdG90eXBlLl9lbnN1cmVSR0I9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10LnIsbj10LmcsaT10LmI7dm9pZCAwPT09ZSYmKHQucj1yLmRlZmF1bHQuY2hhbm5lbC5oc2wycmdiKHQsInIiKSksdm9pZCAwPT09biYmKHQuZz1yLmRlZmF1bHQuY2hhbm5lbC5oc2wycmdiKHQsImciKSksdm9pZCAwPT09aSYmKHQuYj1yLmRlZmF1bHQuY2hhbm5lbC5oc2wycmdiKHQsImIiKSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiciIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQucjtyZXR1cm4gdGhpcy50eXBlLmlzKDIpfHx2b2lkIDA9PT1lPyh0aGlzLl9lbnN1cmVIU0woKSxyLmRlZmF1bHQuY2hhbm5lbC5oc2wycmdiKHQsInIiKSk6ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZS5zZXQoMSksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5yPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJnIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhLGU9dC5nO3JldHVybiB0aGlzLnR5cGUuaXMoMil8fHZvaWQgMD09PWU/KHRoaXMuX2Vuc3VyZUhTTCgpLHIuZGVmYXVsdC5jaGFubmVsLmhzbDJyZ2IodCwiZyIpKTplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlLnNldCgxKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLmc9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10LmI7cmV0dXJuIHRoaXMudHlwZS5pcygyKXx8dm9pZCAwPT09ZT8odGhpcy5fZW5zdXJlSFNMKCksci5kZWZhdWx0LmNoYW5uZWwuaHNsMnJnYih0LCJiIikpOmV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGUuc2V0KDEpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEuYj10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaCIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YSxlPXQuaDtyZXR1cm4gdGhpcy50eXBlLmlzKDEpfHx2b2lkIDA9PT1lPyh0aGlzLl9lbnN1cmVSR0IoKSxyLmRlZmF1bHQuY2hhbm5lbC5yZ2IyaHNsKHQsImgiKSk6ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZS5zZXQoMiksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5oPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhLGU9dC5zO3JldHVybiB0aGlzLnR5cGUuaXMoMSl8fHZvaWQgMD09PWU/KHRoaXMuX2Vuc3VyZVJHQigpLHIuZGVmYXVsdC5jaGFubmVsLnJnYjJoc2wodCwicyIpKTplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlLnNldCgyKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLnM9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGEsZT10Lmw7cmV0dXJuIHRoaXMudHlwZS5pcygxKXx8dm9pZCAwPT09ZT8odGhpcy5fZW5zdXJlUkdCKCksci5kZWZhdWx0LmNoYW5uZWwucmdiMmhzbCh0LCJsIikpOmV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGUuc2V0KDIpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEubD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuYX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEuYT10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCk7ZS5kZWZhdWx0PWF9LDgxNjc6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bmV3KG4oMTc3MykuZGVmYXVsdCkoe3I6MCxnOjAsYjowLGE6MH0sInRyYW5zcGFyZW50Iik7ZS5kZWZhdWx0PXJ9LDc2Mjg6KHQsZSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMudHlwZT0wfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlJiZ0aGlzLnR5cGUhPT10KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNoYW5nZSBib3RoIFJHQiBhbmQgSFNMIGNoYW5uZWxzIGF0IHRoZSBzYW1lIHRpbWUiKTt0aGlzLnR5cGU9dH0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnR5cGU9MH0sdC5wcm90b3R5cGUuaXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHlwZT09PXR9LHR9KCk7ZS5kZWZhdWx0PW59LDE2NTU6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big4MTY3KSxpPW4oNjA2MSksYT17cmU6L14jKCg/OlthLWYwLTldezJ9KXsyLDR9fFthLWYwLTldezN9KSQvaSxwYXJzZTpmdW5jdGlvbih0KXtpZigzNT09PXQuY2hhckNvZGVBdCgwKSl7dmFyIGU9dC5tYXRjaChhLnJlKTtpZihlKXt2YXIgbj1lWzFdLGk9cGFyc2VJbnQobiwxNiksbz1uLmxlbmd0aCxzPW8lND09MCxjPW8+NCx1PWM/MToxNyxsPWM/ODo0LGg9cz8wOi0xLGY9Yz8yNTU6MTU7cmV0dXJuIHIuZGVmYXVsdC5zZXQoe3I6KGk+PmwqKGgrMykmZikqdSxnOihpPj5sKihoKzIpJmYpKnUsYjooaT4+bCooaCsxKSZmKSp1LGE6cz8oaSZmKSp1LzI1NToxfSx0KX19fSxzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5yLG49dC5nLHI9dC5iLGE9dC5hO3JldHVybiBhPDE/IiMiK2kuREVDMkhFWFtNYXRoLnJvdW5kKGUpXStpLkRFQzJIRVhbTWF0aC5yb3VuZChuKV0raS5ERUMySEVYW01hdGgucm91bmQocildK2kuREVDMkhFWFtNYXRoLnJvdW5kKDI1NSphKV06IiMiK2kuREVDMkhFWFtNYXRoLnJvdW5kKGUpXStpLkRFQzJIRVhbTWF0aC5yb3VuZChuKV0raS5ERUMySEVYW01hdGgucm91bmQocildfX07ZS5kZWZhdWx0PWF9LDg1ODk6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oODE2NyksYT17cmU6L15oc2xhP1woXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmUtP1xkKyk/KD86ZGVnfGdyYWR8cmFkfHR1cm4pPylccyo/KD86LHxccylccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZS0/XGQrKT8lKVxzKj8oPzosfFxzKVxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplLT9cZCspPyUpKD86XHMqPyg/Oix8XC8pXHMqP1wrPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmUtP1xkKyk/KCUpPykpP1xzKj9cKSQvaSxodWVSZTovXiguKz8pKGRlZ3xncmFkfHJhZHx0dXJuKSQvaSxfaHVlMmRlZzpmdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGEuaHVlUmUpO2lmKGUpe3ZhciBuPWVbMV07c3dpdGNoKGVbMl0pe2Nhc2UiZ3JhZCI6cmV0dXJuIHIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmgoLjkqcGFyc2VGbG9hdChuKSk7Y2FzZSJyYWQiOnJldHVybiByLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5oKDE4MCpwYXJzZUZsb2F0KG4pL01hdGguUEkpO2Nhc2UidHVybiI6cmV0dXJuIHIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmgoMzYwKnBhcnNlRmxvYXQobikpfX1yZXR1cm4gci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuaChwYXJzZUZsb2F0KHQpKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFyQ29kZUF0KDApO2lmKDEwND09PWV8fDcyPT09ZSl7dmFyIG49dC5tYXRjaChhLnJlKTtpZihuKXt2YXIgbz1uWzFdLHM9blsyXSxjPW5bM10sdT1uWzRdLGw9bls1XTtyZXR1cm4gaS5kZWZhdWx0LnNldCh7aDphLl9odWUyZGVnKG8pLHM6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAucyhwYXJzZUZsb2F0KHMpKSxsOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmwocGFyc2VGbG9hdChjKSksYTp1P3IuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmEobD9wYXJzZUZsb2F0KHUpLzEwMDpwYXJzZUZsb2F0KHUpKToxfSx0KX19fSxzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5oLG49dC5zLGk9dC5sLGE9dC5hO3JldHVybiBhPDE/ImhzbGEoIityLmRlZmF1bHQubGFuZy5yb3VuZChlKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKG4pKyIlLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGkpKyIlLCAiK2ErIikiOiJoc2woIityLmRlZmF1bHQubGFuZy5yb3VuZChlKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKG4pKyIlLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGkpKyIlKSJ9fTtlLmRlZmF1bHQ9YX0sMjE5MToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE2NTUpLGk9big3NTM4KSxhPW4oNjc2Miksbz1uKDg1ODkpLHM9e2Zvcm1hdDp7a2V5d29yZDppLmRlZmF1bHQsaGV4OnIuZGVmYXVsdCxyZ2I6YS5kZWZhdWx0LHJnYmE6YS5kZWZhdWx0LGhzbDpvLmRlZmF1bHQsaHNsYTpvLmRlZmF1bHR9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDt2YXIgZT1yLmRlZmF1bHQucGFyc2UodCl8fGEuZGVmYXVsdC5wYXJzZSh0KXx8by5kZWZhdWx0LnBhcnNlKHQpfHxpLmRlZmF1bHQucGFyc2UodCk7aWYoZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbG9yIGZvcm1hdDogIicrdCsnIicpfSxzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIXQuY2hhbmdlZCYmdC5jb2xvcj90LmNvbG9yOnQudHlwZS5pcygyKXx8dm9pZCAwPT09dC5kYXRhLnI/by5kZWZhdWx0LnN0cmluZ2lmeSh0KTp0LmE8MXx8IU51bWJlci5pc0ludGVnZXIodC5yKXx8IU51bWJlci5pc0ludGVnZXIodC5nKXx8IU51bWJlci5pc0ludGVnZXIodC5iKT9hLmRlZmF1bHQuc3RyaW5naWZ5KHQpOnIuZGVmYXVsdC5zdHJpbmdpZnkodCl9fTtlLmRlZmF1bHQ9c30sNzUzODoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE2NTUpLGk9e2NvbG9yczp7YWxpY2VibHVlOiIjZjBmOGZmIixhbnRpcXVld2hpdGU6IiNmYWViZDciLGFxdWE6IiMwMGZmZmYiLGFxdWFtYXJpbmU6IiM3ZmZmZDQiLGF6dXJlOiIjZjBmZmZmIixiZWlnZToiI2Y1ZjVkYyIsYmlzcXVlOiIjZmZlNGM0IixibGFjazoiIzAwMDAwMCIsYmxhbmNoZWRhbG1vbmQ6IiNmZmViY2QiLGJsdWU6IiMwMDAwZmYiLGJsdWV2aW9sZXQ6IiM4YTJiZTIiLGJyb3duOiIjYTUyYTJhIixidXJseXdvb2Q6IiNkZWI4ODciLGNhZGV0Ymx1ZToiIzVmOWVhMCIsY2hhcnRyZXVzZToiIzdmZmYwMCIsY2hvY29sYXRlOiIjZDI2OTFlIixjb3JhbDoiI2ZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IiM2NDk1ZWQiLGNvcm5zaWxrOiIjZmZmOGRjIixjcmltc29uOiIjZGMxNDNjIixjeWFuYXF1YToiIzAwZmZmZiIsZGFya2JsdWU6IiMwMDAwOGIiLGRhcmtjeWFuOiIjMDA4YjhiIixkYXJrZ29sZGVucm9kOiIjYjg4NjBiIixkYXJrZ3JheToiI2E5YTlhOSIsZGFya2dyZWVuOiIjMDA2NDAwIixkYXJrZ3JleToiI2E5YTlhOSIsZGFya2toYWtpOiIjYmRiNzZiIixkYXJrbWFnZW50YToiIzhiMDA4YiIsZGFya29saXZlZ3JlZW46IiM1NTZiMmYiLGRhcmtvcmFuZ2U6IiNmZjhjMDAiLGRhcmtvcmNoaWQ6IiM5OTMyY2MiLGRhcmtyZWQ6IiM4YjAwMDAiLGRhcmtzYWxtb246IiNlOTk2N2EiLGRhcmtzZWFncmVlbjoiIzhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiIzQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiIzJmNGY0ZiIsZGFya3NsYXRlZ3JleToiIzJmNGY0ZiIsZGFya3R1cnF1b2lzZToiIzAwY2VkMSIsZGFya3Zpb2xldDoiIzk0MDBkMyIsZGVlcHBpbms6IiNmZjE0OTMiLGRlZXBza3libHVlOiIjMDBiZmZmIixkaW1ncmF5OiIjNjk2OTY5IixkaW1ncmV5OiIjNjk2OTY5Iixkb2RnZXJibHVlOiIjMWU5MGZmIixmaXJlYnJpY2s6IiNiMjIyMjIiLGZsb3JhbHdoaXRlOiIjZmZmYWYwIixmb3Jlc3RncmVlbjoiIzIyOGIyMiIsZnVjaHNpYToiI2ZmMDBmZiIsZ2FpbnNib3JvOiIjZGNkY2RjIixnaG9zdHdoaXRlOiIjZjhmOGZmIixnb2xkOiIjZmZkNzAwIixnb2xkZW5yb2Q6IiNkYWE1MjAiLGdyYXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixncmVlbnllbGxvdzoiI2FkZmYyZiIsZ3JleToiIzgwODA4MCIsaG9uZXlkZXc6IiNmMGZmZjAiLGhvdHBpbms6IiNmZjY5YjQiLGluZGlhbnJlZDoiI2NkNWM1YyIsaW5kaWdvOiIjNGIwMDgyIixpdm9yeToiI2ZmZmZmMCIsa2hha2k6IiNmMGU2OGMiLGxhdmVuZGVyOiIjZTZlNmZhIixsYXZlbmRlcmJsdXNoOiIjZmZmMGY1IixsYXduZ3JlZW46IiM3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiI2ZmZmFjZCIsbGlnaHRibHVlOiIjYWRkOGU2IixsaWdodGNvcmFsOiIjZjA4MDgwIixsaWdodGN5YW46IiNlMGZmZmYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiIjZmFmYWQyIixsaWdodGdyYXk6IiNkM2QzZDMiLGxpZ2h0Z3JlZW46IiM5MGVlOTAiLGxpZ2h0Z3JleToiI2QzZDNkMyIsbGlnaHRwaW5rOiIjZmZiNmMxIixsaWdodHNhbG1vbjoiI2ZmYTA3YSIsbGlnaHRzZWFncmVlbjoiIzIwYjJhYSIsbGlnaHRza3libHVlOiIjODdjZWZhIixsaWdodHNsYXRlZ3JheToiIzc3ODg5OSIsbGlnaHRzbGF0ZWdyZXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkYiIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLG1pbnRjcmVhbToiI2Y1ZmZmYSIsbWlzdHlyb3NlOiIjZmZlNGUxIixtb2NjYXNpbjoiI2ZmZTRiNSIsbmF2YWpvd2hpdGU6IiNmZmRlYWQiLG5hdnk6IiMwMDAwODAiLG9sZGxhY2U6IiNmZGY1ZTYiLG9saXZlOiIjODA4MDAwIixvbGl2ZWRyYWI6IiM2YjhlMjMiLG9yYW5nZToiI2ZmYTUwMCIsb3JhbmdlcmVkOiIjZmY0NTAwIixvcmNoaWQ6IiNkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6IiNlZWU4YWEiLHBhbGVncmVlbjoiIzk4ZmI5OCIscGFsZXR1cnF1b2lzZToiI2FmZWVlZSIscGFsZXZpb2xldHJlZDoiI2RiNzA5MyIscGFwYXlhd2hpcDoiI2ZmZWZkNSIscGVhY2hwdWZmOiIjZmZkYWI5IixwZXJ1OiIjY2Q4NTNmIixwaW5rOiIjZmZjMGNiIixwbHVtOiIjZGRhMGRkIixwb3dkZXJibHVlOiIjYjBlMGU2IixwdXJwbGU6IiM4MDAwODAiLHJlYmVjY2FwdXJwbGU6IiM2NjMzOTkiLHJlZDoiI2ZmMDAwMCIscm9zeWJyb3duOiIjYmM4ZjhmIixyb3lhbGJsdWU6IiM0MTY5ZTEiLHNhZGRsZWJyb3duOiIjOGI0NTEzIixzYWxtb246IiNmYTgwNzIiLHNhbmR5YnJvd246IiNmNGE0NjAiLHNlYWdyZWVuOiIjMmU4YjU3IixzZWFzaGVsbDoiI2ZmZjVlZSIsc2llbm5hOiIjYTA1MjJkIixzaWx2ZXI6IiNjMGMwYzAiLHNreWJsdWU6IiM4N2NlZWIiLHNsYXRlYmx1ZToiIzZhNWFjZCIsc2xhdGVncmF5OiIjNzA4MDkwIixzbGF0ZWdyZXk6IiM3MDgwOTAiLHNub3c6IiNmZmZhZmEiLHNwcmluZ2dyZWVuOiIjMDBmZjdmIix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRyYW5zcGFyZW50OiIjMDAwMDAwMDAiLHR1cnF1b2lzZToiIzQwZTBkMCIsdmlvbGV0OiIjZWU4MmVlIix3aGVhdDoiI2Y1ZGViMyIsd2hpdGU6IiNmZmZmZmYiLHdoaXRlc21va2U6IiNmNWY1ZjUiLHllbGxvdzoiI2ZmZmYwMCIseWVsbG93Z3JlZW46IiM5YWNkMzIifSxwYXJzZTpmdW5jdGlvbih0KXt0PXQudG9Mb3dlckNhc2UoKTt2YXIgZT1pLmNvbG9yc1t0XTtpZihlKXJldHVybiByLmRlZmF1bHQucGFyc2UoZSl9LHN0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZT1yLmRlZmF1bHQuc3RyaW5naWZ5KHQpO2Zvcih2YXIgbiBpbiBpLmNvbG9ycylpZihpLmNvbG9yc1tuXT09PWUpcmV0dXJuIG59fTtlLmRlZmF1bHQ9aX0sNjc2MjoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big4MTY3KSxhPXtyZTovXnJnYmE/XChccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZVxkKyk/KCU/KSlccyo/KD86LHxccylccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZVxkKyk/KCU/KSlccyo/KD86LHxccylccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZVxkKyk/KCU/KSkoPzpccyo/KD86LHxcLylccyo/XCs/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZVxkKyk/KCU/KSkpP1xzKj9cKSQvaSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10LmNoYXJDb2RlQXQoMCk7aWYoMTE0PT09ZXx8ODI9PT1lKXt2YXIgbj10Lm1hdGNoKGEucmUpO2lmKG4pe3ZhciBvPW5bMV0scz1uWzJdLGM9blszXSx1PW5bNF0sbD1uWzVdLGg9bls2XSxmPW5bN10sZD1uWzhdO3JldHVybiBpLmRlZmF1bHQuc2V0KHtyOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLnIocz8yLjU1KnBhcnNlRmxvYXQobyk6cGFyc2VGbG9hdChvKSksZzpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5nKHU/Mi41NSpwYXJzZUZsb2F0KGMpOnBhcnNlRmxvYXQoYykpLGI6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYihoPzIuNTUqcGFyc2VGbG9hdChsKTpwYXJzZUZsb2F0KGwpKSxhOmY/ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYShkP3BhcnNlRmxvYXQoZikvMTAwOnBhcnNlRmxvYXQoZikpOjF9LHQpfX19LHN0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZT10LnIsbj10LmcsaT10LmIsYT10LmE7cmV0dXJuIGE8MT8icmdiYSgiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGUpKyIsICIrci5kZWZhdWx0Lmxhbmcucm91bmQobikrIiwgIityLmRlZmF1bHQubGFuZy5yb3VuZChpKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGEpKyIpIjoicmdiKCIrci5kZWZhdWx0Lmxhbmcucm91bmQoZSkrIiwgIityLmRlZmF1bHQubGFuZy5yb3VuZChuKSsiLCAiK3IuZGVmYXVsdC5sYW5nLnJvdW5kKGkpKyIpIn19O2UuZGVmYXVsdD1hfSw2MDYxOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTA4MyksaT17fTtlLkRFQzJIRVg9aTtmb3IodmFyIGE9MDthPD0yNTU7YSsrKWlbYV09ci5kZWZhdWx0LnVuaXQuZGVjMmhleChhKX0sODYxMzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbih0KXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0obigxMjAzKSl9LDUzNzE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigyMTkxKSxpPW4oNDE4KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLmRlZmF1bHQucGFyc2UodCksYT17fTtmb3IodmFyIG8gaW4gZSllW29dJiYoYVtvXT1uW29dK2Vbb10pO3JldHVybiBpLmRlZmF1bHQodCxhKX19LDE0MTY6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1pLmRlZmF1bHQucGFyc2UodCksbz1hW2VdLHM9ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXBbZV0obytuKTtyZXR1cm4gbyE9PXMmJihhW2VdPXMpLGkuZGVmYXVsdC5zdHJpbmdpZnkoYSl9fSw5MzUzOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiYSIpfX0sMzM5NDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDYxOTcpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQsImIiKX19LDQxODoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9bigyMTkxKTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1pLmRlZmF1bHQucGFyc2UodCk7Zm9yKHZhciBhIGluIGUpblthXT1yLmRlZmF1bHQuY2hhbm5lbC5jbGFtcFthXShlW2FdKTtyZXR1cm4gaS5kZWZhdWx0LnN0cmluZ2lmeShuKX19LDYxOTc6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGVmYXVsdC5sYW5nLnJvdW5kKGkuZGVmYXVsdC5wYXJzZSh0KVtlXSl9fSw3MzYxOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTQxNik7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiaCIsMTgwKX19LDMwNDI6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oODM0Nik7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7dmFyIG49aS5kZWZhdWx0KHQpLGE9aS5kZWZhdWx0KGUpLG89TWF0aC5tYXgobixhKSxzPU1hdGgubWluKG4sYSksYz0obytOdW1iZXIuRVBTSUxPTikvKHMrTnVtYmVyLkVQU0lMT04pO3JldHVybiByLmRlZmF1bHQubGFuZy5yb3VuZChyLmRlZmF1bHQubGFuZy5jbGFtcChjLDEsMTApKX19LDEzNjQ6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0KHQsImwiLC1lKX19LDk2MTA6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0KHQsInMiLC1lKX19LDU3MjoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDQxOCk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCx7czowfSl9fSwyMjk5Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjE5Nyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiByLmRlZmF1bHQodCwiZyIpfX0sMzExNjoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDEwODMpLGk9big4MTY3KSxhPW4oMjE5MSk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSxuLG8pe3ZvaWQgMD09PW8mJihvPTEpO3ZhciBzPWkuZGVmYXVsdC5zZXQoe2g6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuaCh0KSxzOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLnMoZSksbDpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5sKG4pLGE6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYShvKX0pO3JldHVybiBhLmRlZmF1bHQuc3RyaW5naWZ5KHMpfX0sMzAwODoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDYxOTcpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQsImgiKX19LDEyMDM6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTM4KTtlLmhleD1yLmRlZmF1bHQ7dmFyIGk9big2NTM4KTtlLnJnYj1pLmRlZmF1bHQ7dmFyIGE9big2NTM4KTtlLnJnYmE9YS5kZWZhdWx0O3ZhciBvPW4oMzExNik7ZS5oc2w9by5kZWZhdWx0O3ZhciBzPW4oMzExNik7ZS5oc2xhPXMuZGVmYXVsdDt2YXIgYz1uKDI2MTkpO2UudG9LZXl3b3JkPWMuZGVmYXVsdDt2YXIgdT1uKDQzMDcpO2UudG9IZXg9dS5kZWZhdWx0O3ZhciBsPW4oNDEyNSk7ZS50b1JnYmE9bC5kZWZhdWx0O3ZhciBoPW4oNzMyOSk7ZS50b0hzbGE9aC5kZWZhdWx0O3ZhciBmPW4oNjE5Nyk7ZS5jaGFubmVsPWYuZGVmYXVsdDt2YXIgZD1uKDk2NDApO2UucmVkPWQuZGVmYXVsdDt2YXIgcD1uKDIyOTkpO2UuZ3JlZW49cC5kZWZhdWx0O3ZhciB5PW4oMzM5NCk7ZS5ibHVlPXkuZGVmYXVsdDt2YXIgZz1uKDMwMDgpO2UuaHVlPWcuZGVmYXVsdDt2YXIgbT1uKDY0NTEpO2Uuc2F0dXJhdGlvbj1tLmRlZmF1bHQ7dmFyIHY9big5MjM1KTtlLmxpZ2h0bmVzcz12LmRlZmF1bHQ7dmFyIGI9big5MzUzKTtlLmFscGhhPWIuZGVmYXVsdDt2YXIgXz1uKDkzNTMpO2Uub3BhY2l0eT1fLmRlZmF1bHQ7dmFyIHg9bigzMDQyKTtlLmNvbnRyYXN0PXguZGVmYXVsdDt2YXIgdz1uKDgzNDYpO2UubHVtaW5hbmNlPXcuZGVmYXVsdDt2YXIgaz1uKDQxMTcpO2UuaXNEYXJrPWsuZGVmYXVsdDt2YXIgVD1uKDIyMjQpO2UuaXNMaWdodD1ULmRlZmF1bHQ7dmFyIEU9big1ODUpO2UuaXNWYWxpZD1FLmRlZmF1bHQ7dmFyIEM9bigxMDgwKTtlLnNhdHVyYXRlPUMuZGVmYXVsdDt2YXIgUz1uKDk2MTApO2UuZGVzYXR1cmF0ZT1TLmRlZmF1bHQ7dmFyIEE9bigzMjM1KTtlLmxpZ2h0ZW49QS5kZWZhdWx0O3ZhciBNPW4oMTM2NCk7ZS5kYXJrZW49TS5kZWZhdWx0O3ZhciBOPW4oNzE4OSk7ZS5vcGFjaWZ5PU4uZGVmYXVsdDt2YXIgRD1uKDcxODkpO2UuZmFkZUluPUQuZGVmYXVsdDt2YXIgTz1uKDQ5ODkpO2UudHJhbnNwYXJlbnRpemU9Ty5kZWZhdWx0O3ZhciBCPW4oNDk4OSk7ZS5mYWRlT3V0PUIuZGVmYXVsdDt2YXIgTD1uKDczNjEpO2UuY29tcGxlbWVudD1MLmRlZmF1bHQ7dmFyIEk9big1NzIpO2UuZ3JheXNjYWxlPUkuZGVmYXVsdDt2YXIgUj1uKDUzNzEpO2UuYWRqdXN0PVIuZGVmYXVsdDt2YXIgRj1uKDQxOCk7ZS5jaGFuZ2U9Ri5kZWZhdWx0O3ZhciBQPW4oNTY2KTtlLmludmVydD1QLmRlZmF1bHQ7dmFyIGo9bigxODYxKTtlLm1peD1qLmRlZmF1bHQ7dmFyIFk9big3MDgxKTtlLnNjYWxlPVkuZGVmYXVsdH0sNTY2Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSksaT1uKDE4NjEpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTEwMCk7dmFyIG49ci5kZWZhdWx0LnBhcnNlKHQpO3JldHVybiBuLnI9MjU1LW4ucixuLmc9MjU1LW4uZyxuLmI9MjU1LW4uYixpLmRlZmF1bHQobix0LGUpfX0sNDExNzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIyMjQpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4hci5kZWZhdWx0KHQpfX0sMjIyNDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDgzNDYpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQpPj0uNX19LDU4NToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHIuZGVmYXVsdC5wYXJzZSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSwzMjM1Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTQxNik7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGVmYXVsdCh0LCJsIixlKX19LDkyMzU6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big2MTk3KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdCh0LCJsIil9fSw4MzQ2Oih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMTA4MyksaT1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXt2YXIgZT1pLmRlZmF1bHQucGFyc2UodCksbj1lLnIsYT1lLmcsbz1lLmIscz0uMjEyNipyLmRlZmF1bHQuY2hhbm5lbC50b0xpbmVhcihuKSsuNzE1MipyLmRlZmF1bHQuY2hhbm5lbC50b0xpbmVhcihhKSsuMDcyMipyLmRlZmF1bHQuY2hhbm5lbC50b0xpbmVhcihvKTtyZXR1cm4gci5kZWZhdWx0Lmxhbmcucm91bmQocyl9fSwxODYxOih0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oMjE5MSksaT1uKDY1MzgpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49NTApO3ZhciBhPXIuZGVmYXVsdC5wYXJzZSh0KSxvPWEucixzPWEuZyxjPWEuYix1PWEuYSxsPXIuZGVmYXVsdC5wYXJzZShlKSxoPWwucixmPWwuZyxkPWwuYixwPWwuYSx5PW4vMTAwLGc9Mip5LTEsbT11LXAsdj0oKGcqbT09LTE/ZzooZyttKS8oMStnKm0pKSsxKS8yLGI9MS12LF89byp2K2gqYix4PXMqditmKmIsdz1jKnYrZCpiLGs9dSp5K3AqKDEteSk7cmV0dXJuIGkuZGVmYXVsdChfLHgsdyxrKX19LDcxODk6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0KHQsImEiLGUpfX0sOTY0MDoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDYxOTcpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQsInIiKX19LDY1Mzg6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oODE2NyksYT1uKDIxOTEpLG89big0MTgpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUsbixzKXtpZih2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1zJiYocz0xKSwibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIG8uZGVmYXVsdCh0LHthOmV9KTt2YXIgYz1pLmRlZmF1bHQuc2V0KHtyOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLnIodCksZzpyLmRlZmF1bHQuY2hhbm5lbC5jbGFtcC5nKGUpLGI6ci5kZWZhdWx0LmNoYW5uZWwuY2xhbXAuYihuKSxhOnIuZGVmYXVsdC5jaGFubmVsLmNsYW1wLmEocyl9KTtyZXR1cm4gYS5kZWZhdWx0LnN0cmluZ2lmeShjKX19LDEwODA6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxNDE2KTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kZWZhdWx0KHQsInMiLGUpfX0sNjQ1MToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDYxOTcpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KHQsInMiKX19LDcwODE6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigxMDgzKSxpPW4oMjE5MSksYT1uKDUzNzEpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3ZhciBuLG8scyxjPWkuZGVmYXVsdC5wYXJzZSh0KSx1PXt9O2Zvcih2YXIgbCBpbiBlKXVbbF09KG49Y1tsXSxvPWVbbF0scz1yLmRlZmF1bHQuY2hhbm5lbC5tYXhbbF0sbz4wPyhzLW4pKm8vMTAwOm4qby8xMDApO3JldHVybiBhLmRlZmF1bHQodCx1KX19LDQzMDc6KHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigyMTkxKTtlLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdC5mb3JtYXQuaGV4LnN0cmluZ2lmeShyLmRlZmF1bHQucGFyc2UodCkpfX0sNzMyOToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0LmZvcm1hdC5oc2xhLnN0cmluZ2lmeShyLmRlZmF1bHQucGFyc2UodCkpfX0sMjYxOToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0LmZvcm1hdC5rZXl3b3JkLnN0cmluZ2lmeShyLmRlZmF1bHQucGFyc2UodCkpfX0sNDEyNToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDIxOTEpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXtyZXR1cm4gci5kZWZhdWx0LmZvcm1hdC5yZ2JhLnN0cmluZ2lmeShyLmRlZmF1bHQucGFyc2UodCkpfX0sNDk4OToodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDE0MTYpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiByLmRlZmF1bHQodCwiYSIsLWUpfX0sNzk5NDoodCxlKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49e21pbjp7cjowLGc6MCxiOjAsczowLGw6MCxhOjB9LG1heDp7cjoyNTUsZzoyNTUsYjoyNTUsaDozNjAsczoxMDAsbDoxMDAsYToxfSxjbGFtcDp7cjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MjU1PzI1NTp0PDA/MDp0fSxnOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0yNTU/MjU1OnQ8MD8wOnR9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTI1NT8yNTU6dDwwPzA6dH0saDpmdW5jdGlvbih0KXtyZXR1cm4gdCUzNjB9LHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEwMD8xMDA6dDwwPzA6dH0sbDpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTAwPzEwMDp0PDA/MDp0fSxhOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xPzE6dDwwPzA6dH19LHRvTGluZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXQvMjU1O3JldHVybiB0Pi4wMzkyOD9NYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpOmUvMTIuOTJ9LGh1ZTJyZ2I6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj90KzYqKGUtdCkqbjpuPC41P2U6bjwyLzM/dCsoZS10KSooMi8zLW4pKjY6dH0saHNsMnJnYjpmdW5jdGlvbih0LGUpe3ZhciByPXQuaCxpPXQucyxhPXQubDtpZighaSlyZXR1cm4gMi41NSphO3IvPTM2MCxpLz0xMDA7dmFyIG89KGEvPTEwMCk8LjU/YSooMStpKTphK2ktYSppLHM9MiphLW87c3dpdGNoKGUpe2Nhc2UiciI6cmV0dXJuIDI1NSpuLmh1ZTJyZ2IocyxvLHIrMS8zKTtjYXNlImciOnJldHVybiAyNTUqbi5odWUycmdiKHMsbyxyKTtjYXNlImIiOnJldHVybiAyNTUqbi5odWUycmdiKHMsbyxyLTEvMyl9fSxyZ2IyaHNsOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5yLHI9dC5nLGk9dC5iO24vPTI1NSxyLz0yNTUsaS89MjU1O3ZhciBhPU1hdGgubWF4KG4scixpKSxvPU1hdGgubWluKG4scixpKSxzPShhK28pLzI7aWYoImwiPT09ZSlyZXR1cm4gMTAwKnM7aWYoYT09PW8pcmV0dXJuIDA7dmFyIGM9YS1vO2lmKCJzIj09PWUpcmV0dXJuIDEwMCoocz4uNT9jLygyLWEtbyk6Yy8oYStvKSk7c3dpdGNoKGEpe2Nhc2UgbjpyZXR1cm4gNjAqKChyLWkpL2MrKHI8aT82OjApKTtjYXNlIHI6cmV0dXJuIDYwKigoaS1uKS9jKzIpO2Nhc2UgaTpyZXR1cm4gNjAqKChuLXIpL2MrNCk7ZGVmYXVsdDpyZXR1cm4tMX19fTtlLmRlZmF1bHQ9bn0sMTA4MzoodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKDc5OTQpLGk9big0MDI3KSxhPW4oMzE4KSxvPXtjaGFubmVsOnIuZGVmYXVsdCxsYW5nOmkuZGVmYXVsdCx1bml0OmEuZGVmYXVsdH07ZS5kZWZhdWx0PW99LDQwMjc6KHQsZSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXtjbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIGU+bj9NYXRoLm1pbihlLE1hdGgubWF4KG4sdCkpOk1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LHJvdW5kOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKDFlMTAqdCkvMWUxMH19O2UuZGVmYXVsdD1ufSwzMTg6KHQsZSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXtkZWMyaGV4OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aD4xP2U6IjAiK2V9fTtlLmRlZmF1bHQ9bn0sODU1MjoodCxlLG4pPT57dmFyIHI9big4NTIpKG4oNTYzOSksIkRhdGFWaWV3Iik7dC5leHBvcnRzPXJ9LDE5ODk6KHQsZSxuKT0+e3ZhciByPW4oMTc4OSksaT1uKDQwMSksYT1uKDc2NjcpLG89bigxMzI3KSxzPW4oMTg2Nik7ZnVuY3Rpb24gYyh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIHI9dFtlXTt0aGlzLnNldChyWzBdLHJbMV0pfX1jLnByb3RvdHlwZS5jbGVhcj1yLGMucHJvdG90eXBlLmRlbGV0ZT1pLGMucHJvdG90eXBlLmdldD1hLGMucHJvdG90eXBlLmhhcz1vLGMucHJvdG90eXBlLnNldD1zLHQuZXhwb3J0cz1jfSw4NDA3Oih0LGUsbik9Pnt2YXIgcj1uKDcwNDApLGk9bigyMTg4KSxhPW4oMjExNyksbz1uKDc1MTgpLHM9big0NzA1KTtmdW5jdGlvbiBjKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgcj10W2VdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWMucHJvdG90eXBlLmNsZWFyPXIsYy5wcm90b3R5cGUuZGVsZXRlPWksYy5wcm90b3R5cGUuZ2V0PWEsYy5wcm90b3R5cGUuaGFzPW8sYy5wcm90b3R5cGUuc2V0PXMsdC5leHBvcnRzPWN9LDcwNzE6KHQsZSxuKT0+e3ZhciByPW4oODUyKShuKDU2MzkpLCJNYXAiKTt0LmV4cG9ydHM9cn0sMzM2OToodCxlLG4pPT57dmFyIHI9big0Nzg1KSxpPW4oMTI4NSksYT1uKDZlMyksbz1uKDk5MTYpLHM9big1MjY1KTtmdW5jdGlvbiBjKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgcj10W2VdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWMucHJvdG90eXBlLmNsZWFyPXIsYy5wcm90b3R5cGUuZGVsZXRlPWksYy5wcm90b3R5cGUuZ2V0PWEsYy5wcm90b3R5cGUuaGFzPW8sYy5wcm90b3R5cGUuc2V0PXMsdC5leHBvcnRzPWN9LDM4MTg6KHQsZSxuKT0+e3ZhciByPW4oODUyKShuKDU2MzkpLCJQcm9taXNlIik7dC5leHBvcnRzPXJ9LDg1MjU6KHQsZSxuKT0+e3ZhciByPW4oODUyKShuKDU2MzkpLCJTZXQiKTt0LmV4cG9ydHM9cn0sODY2ODoodCxlLG4pPT57dmFyIHI9bigzMzY5KSxpPW4oNjE5KSxhPW4oMjM4NSk7ZnVuY3Rpb24gbyh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgcjsrK2U8bjspdGhpcy5hZGQodFtlXSl9by5wcm90b3R5cGUuYWRkPW8ucHJvdG90eXBlLnB1c2g9aSxvLnByb3RvdHlwZS5oYXM9YSx0LmV4cG9ydHM9b30sNjM4NDoodCxlLG4pPT57dmFyIHI9big4NDA3KSxpPW4oNzQ2NSksYT1uKDM3NzkpLG89big3NTk5KSxzPW4oNDc1OCksYz1uKDQzMDkpO2Z1bmN0aW9uIHUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgcih0KTt0aGlzLnNpemU9ZS5zaXplfXUucHJvdG90eXBlLmNsZWFyPWksdS5wcm90b3R5cGUuZGVsZXRlPWEsdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPXMsdS5wcm90b3R5cGUuc2V0PWMsdC5leHBvcnRzPXV9LDI3MDU6KHQsZSxuKT0+e3ZhciByPW4oNTYzOSkuU3ltYm9sO3QuZXhwb3J0cz1yfSwxMTQ5Oih0LGUsbik9Pnt2YXIgcj1uKDU2MzkpLlVpbnQ4QXJyYXk7dC5leHBvcnRzPXJ9LDU3NzoodCxlLG4pPT57dmFyIHI9big4NTIpKG4oNTYzOSksIldlYWtNYXAiKTt0LmV4cG9ydHM9cn0sNjg3NDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdC5jYWxsKGUpO2Nhc2UgMTpyZXR1cm4gdC5jYWxsKGUsblswXSk7Y2FzZSAyOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0pO2Nhc2UgMzpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdLG5bMl0pfXJldHVybiB0LmFwcGx5KGUsbil9fSw3NDEyOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytuPHImJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH19LDQ5NjM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPTAsYT1bXTsrK248cjspe3ZhciBvPXRbbl07ZShvLG4sdCkmJihhW2krK109byl9cmV0dXJuIGF9fSw3NDQzOih0LGUsbik9Pnt2YXIgcj1uKDIxMTgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmcih0LGUsMCk+LTF9fSwxMTk2OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8aTspaWYobihlLHRbcl0pKXJldHVybiEwO3JldHVybiExfX0sNDYzNjoodCxlLG4pPT57dmFyIHI9bigyNTQ1KSxpPW4oNTY5NCksYT1uKDE0NjkpLG89big0MTQ0KSxzPW4oNTc3NiksYz1uKDY3MTkpLHU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1hKHQpLGw9IW4mJmkodCksaD0hbiYmIWwmJm8odCksZj0hbiYmIWwmJiFoJiZjKHQpLGQ9bnx8bHx8aHx8ZixwPWQ/cih0Lmxlbmd0aCxTdHJpbmcpOltdLHk9cC5sZW5ndGg7Zm9yKHZhciBnIGluIHQpIWUmJiF1LmNhbGwodCxnKXx8ZCYmKCJsZW5ndGgiPT1nfHxoJiYoIm9mZnNldCI9PWd8fCJwYXJlbnQiPT1nKXx8ZiYmKCJidWZmZXIiPT1nfHwiYnl0ZUxlbmd0aCI9PWd8fCJieXRlT2Zmc2V0Ij09Zyl8fHMoZyx5KSl8fHAucHVzaChnKTtyZXR1cm4gcH19LDk5MzI6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPUFycmF5KHIpOysrbjxyOylpW25dPWUodFtuXSxuLHQpO3JldHVybiBpfX0sMjQ4ODp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGgsaT10Lmxlbmd0aDsrK248cjspdFtpK25dPWVbbl07cmV0dXJuIHR9fSwyNjYzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9LTEsYT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHImJmEmJihuPXRbKytpXSk7KytpPGE7KW49ZShuLHRbaV0saSx0KTtyZXR1cm4gbn19LDI5MDg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248cjspaWYoZSh0W25dLG4sdCkpcmV0dXJuITA7cmV0dXJuITF9fSw4OTgzOih0LGUsbik9Pnt2YXIgcj1uKDM3MSkoImxlbmd0aCIpO3QuZXhwb3J0cz1yfSw2NTU2Oih0LGUsbik9Pnt2YXIgcj1uKDk0NjUpLGk9big3ODEzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4peyh2b2lkIDAhPT1uJiYhaSh0W2VdLG4pfHx2b2lkIDA9PT1uJiYhKGUgaW4gdCkpJiZyKHQsZSxuKX19LDQ4NjU6KHQsZSxuKT0+e3ZhciByPW4oOTQ2NSksaT1uKDc4MTMpLGE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXRbZV07YS5jYWxsKHQsZSkmJmkobyxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fHIodCxlLG4pfX0sODQ3MDoodCxlLG4pPT57dmFyIHI9big3ODEzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tOylpZihyKHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9fSw0MDM3Oih0LGUsbik9Pnt2YXIgcj1uKDgzNjMpLGk9bigzNjc0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmcihlLGkoZSksdCl9fSwzODg2Oih0LGUsbik9Pnt2YXIgcj1uKDgzNjMpLGk9bigxNzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmcihlLGkoZSksdCl9fSw5NDY1Oih0LGUsbik9Pnt2YXIgcj1uKDg3NzcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Il9fcHJvdG9fXyI9PWUmJnI/cih0LGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTp0W2VdPW59fSw1OTkwOih0LGUsbik9Pnt2YXIgcj1uKDYzODQpLGk9big3NDEyKSxhPW4oNDg2NSksbz1uKDQwMzcpLHM9bigzODg2KSxjPW4oNDYyNiksdT1uKDI3OCksbD1uKDg4MDUpLGg9bigxOTExKSxmPW4oODIzNCksZD1uKDY5MDQpLHA9big0MTYwKSx5PW4oMzgyNCksZz1uKDkxNDgpLG09big4NTE3KSx2PW4oMTQ2OSksYj1uKDQxNDQpLF89big2Njg4KSx4PW4oMzIxOCksdz1uKDI5MjgpLGs9bigzNjc0KSxUPW4oMTcwNCksRT0iW29iamVjdCBBcmd1bWVudHNdIixDPSJbb2JqZWN0IEZ1bmN0aW9uXSIsUz0iW29iamVjdCBPYmplY3RdIixBPXt9O0FbRV09QVsiW29iamVjdCBBcnJheV0iXT1BWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPUFbIltvYmplY3QgRGF0YVZpZXddIl09QVsiW29iamVjdCBCb29sZWFuXSJdPUFbIltvYmplY3QgRGF0ZV0iXT1BWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1BWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1BWyJbb2JqZWN0IEludDhBcnJheV0iXT1BWyJbb2JqZWN0IEludDE2QXJyYXldIl09QVsiW29iamVjdCBJbnQzMkFycmF5XSJdPUFbIltvYmplY3QgTWFwXSJdPUFbIltvYmplY3QgTnVtYmVyXSJdPUFbU109QVsiW29iamVjdCBSZWdFeHBdIl09QVsiW29iamVjdCBTZXRdIl09QVsiW29iamVjdCBTdHJpbmddIl09QVsiW29iamVjdCBTeW1ib2xdIl09QVsiW29iamVjdCBVaW50OEFycmF5XSJdPUFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09QVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1BWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEFbIltvYmplY3QgRXJyb3JdIl09QVtDXT1BWyJbb2JqZWN0IFdlYWtNYXBdIl09ITEsdC5leHBvcnRzPWZ1bmN0aW9uIHQoZSxuLE0sTixELE8pe3ZhciBCLEw9MSZuLEk9MiZuLFI9NCZuO2lmKE0mJihCPUQ/TShlLE4sRCxPKTpNKGUpKSx2b2lkIDAhPT1CKXJldHVybiBCO2lmKCF4KGUpKXJldHVybiBlO3ZhciBGPXYoZSk7aWYoRil7aWYoQj15KGUpLCFMKXJldHVybiB1KGUsQil9ZWxzZXt2YXIgUD1wKGUpLGo9UD09Q3x8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09UDtpZihiKGUpKXJldHVybiBjKGUsTCk7aWYoUD09U3x8UD09RXx8aiYmIUQpe2lmKEI9SXx8aj97fTptKGUpLCFMKXJldHVybiBJP2goZSxzKEIsZSkpOmwoZSxvKEIsZSkpfWVsc2V7aWYoIUFbUF0pcmV0dXJuIEQ/ZTp7fTtCPWcoZSxQLEwpfX1PfHwoTz1uZXcgcik7dmFyIFk9Ty5nZXQoZSk7aWYoWSlyZXR1cm4gWTtPLnNldChlLEIpLHcoZSk/ZS5mb3JFYWNoKChmdW5jdGlvbihyKXtCLmFkZCh0KHIsbixNLHIsZSxPKSl9KSk6XyhlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLGkpe0Iuc2V0KGksdChyLG4sTSxpLGUsTykpfSkpO3ZhciB6PUY/dm9pZCAwOihSP0k/ZDpmOkk/VDprKShlKTtyZXR1cm4gaSh6fHxlLChmdW5jdGlvbihyLGkpe3omJihyPWVbaT1yXSksYShCLGksdChyLG4sTSxpLGUsTykpfSkpLEJ9fSwzMTE4Oih0LGUsbik9Pnt2YXIgcj1uKDMyMTgpLGk9T2JqZWN0LmNyZWF0ZSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24oZSl7aWYoIXIoZSkpcmV0dXJue307aWYoaSlyZXR1cm4gaShlKTt0LnByb3RvdHlwZT1lO3ZhciBuPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAsbn19KCk7dC5leHBvcnRzPWF9LDk4ODE6KHQsZSxuKT0+e3ZhciByPW4oNzgxNiksaT1uKDkyOTEpKHIpO3QuZXhwb3J0cz1pfSw2MDI5Oih0LGUsbik9Pnt2YXIgcj1uKDM0NDgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPS0xLGE9dC5sZW5ndGg7KytpPGE7KXt2YXIgbz10W2ldLHM9ZShvKTtpZihudWxsIT1zJiYodm9pZCAwPT09Yz9zPT1zJiYhcihzKTpuKHMsYykpKXZhciBjPXMsdT1vfXJldHVybiB1fX0sNzYwOih0LGUsbik9Pnt2YXIgcj1uKDk4ODEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPVtdO3JldHVybiByKHQsKGZ1bmN0aW9uKHQscixpKXtlKHQscixpKSYmbi5wdXNoKHQpfSkpLG59fSwxODQ4OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scil7Zm9yKHZhciBpPXQubGVuZ3RoLGE9bisocj8xOi0xKTtyP2EtLTorK2E8aTspaWYoZSh0W2FdLGEsdCkpcmV0dXJuIGE7cmV0dXJuLTF9fSwxMDc4Oih0LGUsbik9Pnt2YXIgcj1uKDI0ODgpLGk9big3Mjg1KTt0LmV4cG9ydHM9ZnVuY3Rpb24gdChlLG4sYSxvLHMpe3ZhciBjPS0xLHU9ZS5sZW5ndGg7Zm9yKGF8fChhPWkpLHN8fChzPVtdKTsrK2M8dTspe3ZhciBsPWVbY107bj4wJiZhKGwpP24+MT90KGwsbi0xLGEsbyxzKTpyKHMsbCk6b3x8KHNbcy5sZW5ndGhdPWwpfXJldHVybiBzfX0sODQ4MzoodCxlLG4pPT57dmFyIHI9big1MDYzKSgpO3QuZXhwb3J0cz1yfSw3ODE2Oih0LGUsbik9Pnt2YXIgcj1uKDg0ODMpLGk9bigzNjc0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmcih0LGUsaSl9fSw3Nzg2Oih0LGUsbik9Pnt2YXIgcj1uKDE4MTEpLGk9bigzMjcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLGE9KGU9cihlLHQpKS5sZW5ndGg7bnVsbCE9dCYmbjxhOyl0PXRbaShlW24rK10pXTtyZXR1cm4gbiYmbj09YT90OnZvaWQgMH19LDg4NjY6KHQsZSxuKT0+e3ZhciByPW4oMjQ4OCksaT1uKDE0NjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGE9ZSh0KTtyZXR1cm4gaSh0KT9hOnIoYSxuKHQpKX19LDQyMzk6KHQsZSxuKT0+e3ZhciByPW4oMjcwNSksaT1uKDk2MDcpLGE9bigyMzMzKSxvPXI/ci50b1N0cmluZ1RhZzp2b2lkIDA7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOm8mJm8gaW4gT2JqZWN0KHQpP2kodCk6YSh0KX19LDMzMjU6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0PmV9fSw4NTY1OnQ9Pnt2YXIgZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsIT10JiZlLmNhbGwodCxuKX19LDEzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9fSwyMTE4Oih0LGUsbik9Pnt2YXIgcj1uKDE4NDgpLGk9bigyNzIyKSxhPW4oMjM1MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT09ZT9hKHQsZSxuKTpyKHQsaSxuKX19LDk0NTQ6KHQsZSxuKT0+e3ZhciByPW4oNDIzOSksaT1uKDcwMDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PXIodCl9fSw5Mzk6KHQsZSxuKT0+e3ZhciByPW4oMjQ5MiksaT1uKDcwMDUpO3QuZXhwb3J0cz1mdW5jdGlvbiB0KGUsbixhLG8scyl7cmV0dXJuIGU9PT1ufHwobnVsbD09ZXx8bnVsbD09bnx8IWkoZSkmJiFpKG4pP2UhPWUmJm4hPW46cihlLG4sYSxvLHQscykpfX0sMjQ5MjoodCxlLG4pPT57dmFyIHI9big2Mzg0KSxpPW4oNzExNCksYT1uKDgzNTEpLG89big2MDk2KSxzPW4oNDE2MCksYz1uKDE0NjkpLHU9big0MTQ0KSxsPW4oNjcxOSksaD0iW29iamVjdCBBcmd1bWVudHNdIixmPSJbb2JqZWN0IEFycmF5XSIsZD0iW29iamVjdCBPYmplY3RdIixwPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHksZyxtKXt2YXIgdj1jKHQpLGI9YyhlKSxfPXY/ZjpzKHQpLHg9Yj9mOnMoZSksdz0oXz1fPT1oP2Q6Xyk9PWQsaz0oeD14PT1oP2Q6eCk9PWQsVD1fPT14O2lmKFQmJnUodCkpe2lmKCF1KGUpKXJldHVybiExO3Y9ITAsdz0hMX1pZihUJiYhdylyZXR1cm4gbXx8KG09bmV3IHIpLHZ8fGwodCk/aSh0LGUsbix5LGcsbSk6YSh0LGUsXyxuLHksZyxtKTtpZighKDEmbikpe3ZhciBFPXcmJnAuY2FsbCh0LCJfX3dyYXBwZWRfXyIpLEM9ayYmcC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoRXx8Qyl7dmFyIFM9RT90LnZhbHVlKCk6dCxBPUM/ZS52YWx1ZSgpOmU7cmV0dXJuIG18fChtPW5ldyByKSxnKFMsQSxuLHksbSl9fXJldHVybiEhVCYmKG18fChtPW5ldyByKSxvKHQsZSxuLHksZyxtKSl9fSw1NTg4Oih0LGUsbik9Pnt2YXIgcj1uKDQxNjApLGk9big3MDA1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkmJiJbb2JqZWN0IE1hcF0iPT1yKHQpfX0sMjk1ODoodCxlLG4pPT57dmFyIHI9big2Mzg0KSxpPW4oOTM5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIG89bi5sZW5ndGgscz1vLGM9IWE7aWYobnVsbD09dClyZXR1cm4hcztmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIHU9bltvXTtpZihjJiZ1WzJdP3VbMV0hPT10W3VbMF1dOiEodVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHM7KXt2YXIgbD0odT1uW29dKVswXSxoPXRbbF0sZj11WzFdO2lmKGMmJnVbMl0pe2lmKHZvaWQgMD09PWgmJiEobCBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyByO2lmKGEpdmFyIHA9YShoLGYsbCx0LGUsZCk7aWYoISh2b2lkIDA9PT1wP2koZixoLDMsYSxkKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9fSwyNzIyOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9fSw4NDU4Oih0LGUsbik9Pnt2YXIgcj1uKDM1NjApLGk9big1MzQ2KSxhPW4oMzIxOCksbz1uKDM0Nikscz0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxjPUZ1bmN0aW9uLnByb3RvdHlwZSx1PU9iamVjdC5wcm90b3R5cGUsbD1jLnRvU3RyaW5nLGg9dS5oYXNPd25Qcm9wZXJ0eSxmPVJlZ0V4cCgiXiIrbC5jYWxsKGgpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hKCFhKHQpfHxpKHQpKSYmKHIodCk/ZjpzKS50ZXN0KG8odCkpfX0sOTIyMToodCxlLG4pPT57dmFyIHI9big0MTYwKSxpPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpJiYiW29iamVjdCBTZXRdIj09cih0KX19LDg3NDk6KHQsZSxuKT0+e3ZhciByPW4oNDIzOSksaT1uKDE3ODApLGE9big3MDA1KSxvPXt9O29bIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPW9bIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPW9bIltvYmplY3QgSW50OEFycmF5XSJdPW9bIltvYmplY3QgSW50MTZBcnJheV0iXT1vWyJbb2JqZWN0IEludDMyQXJyYXldIl09b1siW29iamVjdCBVaW50OEFycmF5XSJdPW9bIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09b1siW29iamVjdCBVaW50MTZBcnJheV0iXT1vWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLG9bIltvYmplY3QgQXJndW1lbnRzXSJdPW9bIltvYmplY3QgQXJyYXldIl09b1siW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1vWyJbb2JqZWN0IEJvb2xlYW5dIl09b1siW29iamVjdCBEYXRhVmlld10iXT1vWyJbb2JqZWN0IERhdGVdIl09b1siW29iamVjdCBFcnJvcl0iXT1vWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPW9bIltvYmplY3QgTWFwXSJdPW9bIltvYmplY3QgTnVtYmVyXSJdPW9bIltvYmplY3QgT2JqZWN0XSJdPW9bIltvYmplY3QgUmVnRXhwXSJdPW9bIltvYmplY3QgU2V0XSJdPW9bIltvYmplY3QgU3RyaW5nXSJdPW9bIltvYmplY3QgV2Vha01hcF0iXT0hMSx0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCkmJmkodC5sZW5ndGgpJiYhIW9bcih0KV19fSw3MjA2Oih0LGUsbik9Pnt2YXIgcj1uKDE1NzMpLGk9big2NDMyKSxhPW4oNjU1Nyksbz1uKDE0NjkpLHM9big5NjAxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P2E6Im9iamVjdCI9PXR5cGVvZiB0P28odCk/aSh0WzBdLHRbMV0pOnIodCk6cyh0KX19LDI4MDoodCxlLG4pPT57dmFyIHI9big1NzI2KSxpPW4oNjkxNiksYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighcih0KSlyZXR1cm4gaSh0KTt2YXIgZT1bXTtmb3IodmFyIG4gaW4gT2JqZWN0KHQpKWEuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9fSwzMTM6KHQsZSxuKT0+e3ZhciByPW4oMzIxOCksaT1uKDU3MjYpLGE9bigzNDk4KSxvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpKXJldHVybiBhKHQpO3ZhciBlPWkodCksbj1bXTtmb3IodmFyIHMgaW4gdCkoImNvbnN0cnVjdG9yIiE9c3x8IWUmJm8uY2FsbCh0LHMpKSYmbi5wdXNoKHMpO3JldHVybiBufX0sNDMzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdDxlfX0sOTE5OToodCxlLG4pPT57dmFyIHI9big5ODgxKSxpPW4oODYxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49LTEsYT1pKHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsaSl7YVsrK25dPWUodCxyLGkpfSkpLGF9fSwxNTczOih0LGUsbik9Pnt2YXIgcj1uKDI5NTgpLGk9bigxNDk5KSxhPW4oMjYzNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP2EoZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fHIobix0LGUpfX19LDY0MzI6KHQsZSxuKT0+e3ZhciByPW4oOTM5KSxpPW4oMTkxNyksYT1uKDkwOTUpLG89big1NDAzKSxzPW4oOTE2MiksYz1uKDI2MzQpLHU9bigzMjcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBvKHQpJiZzKGUpP2ModSh0KSxlKTpmdW5jdGlvbihuKXt2YXIgbz1pKG4sdCk7cmV0dXJuIHZvaWQgMD09PW8mJm89PT1lP2Eobix0KTpyKGUsbywzKX19fSwyOTgwOih0LGUsbik9Pnt2YXIgcj1uKDYzODQpLGk9big2NTU2KSxhPW4oODQ4Myksbz1uKDk3ODMpLHM9bigzMjE4KSxjPW4oMTcwNCksdT1uKDYzOTApO3QuZXhwb3J0cz1mdW5jdGlvbiB0KGUsbixsLGgsZil7ZSE9PW4mJmEobiwoZnVuY3Rpb24oYSxjKXtpZihmfHwoZj1uZXcgcikscyhhKSlvKGUsbixjLGwsdCxoLGYpO2Vsc2V7dmFyIGQ9aD9oKHUoZSxjKSxhLGMrIiIsZSxuLGYpOnZvaWQgMDt2b2lkIDA9PT1kJiYoZD1hKSxpKGUsYyxkKX19KSxjKX19LDk3ODM6KHQsZSxuKT0+e3ZhciByPW4oNjU1NiksaT1uKDQ2MjYpLGE9big3MTMzKSxvPW4oMjc4KSxzPW4oODUxNyksYz1uKDU2OTQpLHU9bigxNDY5KSxsPW4oOTI0NiksaD1uKDQxNDQpLGY9bigzNTYwKSxkPW4oMzIxOCkscD1uKDg2MzApLHk9big2NzE5KSxnPW4oNjM5MCksbT1uKDM2NzgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbix2LGIsXyx4KXt2YXIgdz1nKHQsbiksaz1nKGUsbiksVD14LmdldChrKTtpZihUKXIodCxuLFQpO2Vsc2V7dmFyIEU9Xz9fKHcsayxuKyIiLHQsZSx4KTp2b2lkIDAsQz12b2lkIDA9PT1FO2lmKEMpe3ZhciBTPXUoayksQT0hUyYmaChrKSxNPSFTJiYhQSYmeShrKTtFPWssU3x8QXx8TT91KHcpP0U9dzpsKHcpP0U9byh3KTpBPyhDPSExLEU9aShrLCEwKSk6TT8oQz0hMSxFPWEoaywhMCkpOkU9W106cChrKXx8YyhrKT8oRT13LGModyk/RT1tKHcpOmQodykmJiFmKHcpfHwoRT1zKGspKSk6Qz0hMX1DJiYoeC5zZXQoayxFKSxiKEUsayx2LF8seCkseC5kZWxldGUoaykpLHIodCxuLEUpfX19LDk1NTY6KHQsZSxuKT0+e3ZhciByPW4oOTkzMiksaT1uKDc3ODYpLGE9big3MjA2KSxvPW4oOTE5OSkscz1uKDExMzEpLGM9bigxNzE3KSx1PW4oNTAyMiksbD1uKDY1NTcpLGg9bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2U9ZS5sZW5ndGg/cihlLChmdW5jdGlvbih0KXtyZXR1cm4gaCh0KT9mdW5jdGlvbihlKXtyZXR1cm4gaShlLDE9PT10Lmxlbmd0aD90WzBdOnQpfTp0fSkpOltsXTt2YXIgZj0tMTtlPXIoZSxjKGEpKTt2YXIgZD1vKHQsKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm57Y3JpdGVyaWE6cihlLChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pKSxpbmRleDorK2YsdmFsdWU6dH19KSk7cmV0dXJuIHMoZCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdSh0LGUsbil9KSl9fSw1OTcwOih0LGUsbik9Pnt2YXIgcj1uKDMwMTIpLGk9big5MDk1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGkodCxuKX0pKX19LDMwMTI6KHQsZSxuKT0+e3ZhciByPW4oNzc4NiksaT1uKDYxMSksYT1uKDE4MTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvPS0xLHM9ZS5sZW5ndGgsYz17fTsrK288czspe3ZhciB1PWVbb10sbD1yKHQsdSk7bihsLHUpJiZpKGMsYSh1LHQpLGwpfXJldHVybiBjfX0sMzcxOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX19LDkxNTI6KHQsZSxuKT0+e3ZhciByPW4oNzc4Nik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcihlLHQpfX19LDk4OnQ9Pnt2YXIgZT1NYXRoLmNlaWwsbj1NYXRoLm1heDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxyLGksYSl7Zm9yKHZhciBvPS0xLHM9bihlKChyLXQpLyhpfHwxKSksMCksYz1BcnJheShzKTtzLS07KWNbYT9zOisrb109dCx0Kz1pO3JldHVybiBjfX0sMTA3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scixpKXtyZXR1cm4gaSh0LChmdW5jdGlvbih0LGksYSl7bj1yPyhyPSExLHQpOmUobix0LGksYSl9KSksbn19LDU5NzY6KHQsZSxuKT0+e3ZhciByPW4oNjU1NyksaT1uKDUzNTcpLGE9big2MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoaSh0LGUsciksdCsiIil9fSw2MTE6KHQsZSxuKT0+e3ZhciByPW4oNDg2NSksaT1uKDE4MTEpLGE9big1Nzc2KSxvPW4oMzIxOCkscz1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGMpe2lmKCFvKHQpKXJldHVybiB0O2Zvcih2YXIgdT0tMSxsPShlPWkoZSx0KSkubGVuZ3RoLGg9bC0xLGY9dDtudWxsIT1mJiYrK3U8bDspe3ZhciBkPXMoZVt1XSkscD1uO2lmKCJfX3Byb3RvX18iPT09ZHx8ImNvbnN0cnVjdG9yIj09PWR8fCJwcm90b3R5cGUiPT09ZClyZXR1cm4gdDtpZih1IT1oKXt2YXIgeT1mW2RdO3ZvaWQgMD09PShwPWM/Yyh5LGQsZik6dm9pZCAwKSYmKHA9byh5KT95OmEoZVt1KzFdKT9bXTp7fSl9cihmLGQscCksZj1mW2RdfXJldHVybiB0fX0sNjU2MDoodCxlLG4pPT57dmFyIHI9big1NzAzKSxpPW4oODc3NyksYT1uKDY1NTcpLG89aT9mdW5jdGlvbih0LGUpe3JldHVybiBpKHQsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6cihlKSx3cml0YWJsZTohMH0pfTphO3QuZXhwb3J0cz1vfSwxMTMxOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10Lmxlbmd0aDtmb3IodC5zb3J0KGUpO24tLTspdFtuXT10W25dLnZhbHVlO3JldHVybiB0fX0sMjU0NTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9QXJyYXkodCk7KytuPHQ7KXJbbl09ZShuKTtyZXR1cm4gcn19LDUzMToodCxlLG4pPT57dmFyIHI9bigyNzA1KSxpPW4oOTkzMiksYT1uKDE0NjkpLG89bigzNDQ4KSxzPXI/ci5wcm90b3R5cGU6dm9pZCAwLGM9cz9zLnRvU3RyaW5nOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoYShlKSlyZXR1cm4gaShlLHQpKyIiO2lmKG8oZSkpcmV0dXJuIGM/Yy5jYWxsKGUpOiIiO3ZhciBuPWUrIiI7cmV0dXJuIjAiPT1uJiYxL2U9PS0xLzA/Ii0wIjpufX0sNzU2MToodCxlLG4pPT57dmFyIHI9big3OTkwKSxpPS9eXHMrLzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dC5zbGljZSgwLHIodCkrMSkucmVwbGFjZShpLCIiKTp0fX0sMTcxNzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19fSw1NjUyOih0LGUsbik9Pnt2YXIgcj1uKDg2NjgpLGk9big3NDQzKSxhPW4oMTE5Niksbz1uKDQ3NTcpLHM9bigzNTkzKSxjPW4oMTgxNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgdT0tMSxsPWksaD10Lmxlbmd0aCxmPSEwLGQ9W10scD1kO2lmKG4pZj0hMSxsPWE7ZWxzZSBpZihoPj0yMDApe3ZhciB5PWU/bnVsbDpzKHQpO2lmKHkpcmV0dXJuIGMoeSk7Zj0hMSxsPW8scD1uZXcgcn1lbHNlIHA9ZT9bXTpkO3Q6Zm9yKDsrK3U8aDspe3ZhciBnPXRbdV0sbT1lP2UoZyk6ZztpZihnPW58fDAhPT1nP2c6MCxmJiZtPT1tKXtmb3IodmFyIHY9cC5sZW5ndGg7di0tOylpZihwW3ZdPT09bSljb250aW51ZSB0O2UmJnAucHVzaChtKSxkLnB1c2goZyl9ZWxzZSBsKHAsbSxuKXx8KHAhPT1kJiZwLnB1c2gobSksZC5wdXNoKGcpKX1yZXR1cm4gZH19LDc0MTU6KHQsZSxuKT0+e3ZhciByPW4oOTkzMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9fSwxNzU3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0tMSxpPXQubGVuZ3RoLGE9ZS5sZW5ndGgsbz17fTsrK3I8aTspe3ZhciBzPXI8YT9lW3JdOnZvaWQgMDtuKG8sdFtyXSxzKX1yZXR1cm4gb319LDQ3NTc6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmhhcyhlKX19LDQyOTA6KHQsZSxuKT0+e3ZhciByPW4oNjU1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cn19LDE4MTE6KHQsZSxuKT0+e3ZhciByPW4oMTQ2OSksaT1uKDU0MDMpLGE9big1NTE0KSxvPW4oOTgzMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCk/dDppKHQsZSk/W3RdOmEobyh0KSl9fSw0MzE4Oih0LGUsbik9Pnt2YXIgcj1uKDExNDkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgcihlKS5zZXQobmV3IHIodCkpLGV9fSw0NjI2Oih0LGUsbik9Pnt0PW4ubm1kKHQpO3ZhciByPW4oNTYzOSksaT1lJiYhZS5ub2RlVHlwZSYmZSxhPWkmJnQmJiF0Lm5vZGVUeXBlJiZ0LG89YSYmYS5leHBvcnRzPT09aT9yLkJ1ZmZlcjp2b2lkIDAscz1vP28uYWxsb2NVbnNhZmU6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxyPXM/cyhuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KHIpLHJ9fSw3MTU3Oih0LGUsbik9Pnt2YXIgcj1uKDQzMTgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWU/cih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9fSwzMTQ3OnQ9Pnt2YXIgZT0vXHcqJC87dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGUuZXhlYyh0KSk7cmV0dXJuIG4ubGFzdEluZGV4PXQubGFzdEluZGV4LG59fSw0MTk6KHQsZSxuKT0+e3ZhciByPW4oMjcwNSksaT1yP3IucHJvdG90eXBlOnZvaWQgMCxhPWk/aS52YWx1ZU9mOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGE/T2JqZWN0KGEuY2FsbCh0KSk6e319fSw3MTMzOih0LGUsbik9Pnt2YXIgcj1uKDQzMTgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWU/cih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX19LDYzOTM6KHQsZSxuKT0+e3ZhciByPW4oMzQ0OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYodCE9PWUpe3ZhciBuPXZvaWQgMCE9PXQsaT1udWxsPT09dCxhPXQ9PXQsbz1yKHQpLHM9dm9pZCAwIT09ZSxjPW51bGw9PT1lLHU9ZT09ZSxsPXIoZSk7aWYoIWMmJiFsJiYhbyYmdD5lfHxvJiZzJiZ1JiYhYyYmIWx8fGkmJnMmJnV8fCFuJiZ1fHwhYSlyZXR1cm4gMTtpZighaSYmIW8mJiFsJiZ0PGV8fGwmJm4mJmEmJiFpJiYhb3x8YyYmbiYmYXx8IXMmJmF8fCF1KXJldHVybi0xfXJldHVybiAwfX0sNTAyMjoodCxlLG4pPT57dmFyIHI9big2MzkzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT0tMSxhPXQuY3JpdGVyaWEsbz1lLmNyaXRlcmlhLHM9YS5sZW5ndGgsYz1uLmxlbmd0aDsrK2k8czspe3ZhciB1PXIoYVtpXSxvW2ldKTtpZih1KXJldHVybiBpPj1jP3U6dSooImRlc2MiPT1uW2ldPy0xOjEpfXJldHVybiB0LmluZGV4LWUuaW5kZXh9fSwyNzg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPS0xLHI9dC5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KHIpKTsrK248cjspZVtuXT10W25dO3JldHVybiBlfX0sODM2MzoodCxlLG4pPT57dmFyIHI9big0ODY1KSxpPW4oOTQ2NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGEpe3ZhciBvPSFuO258fChuPXt9KTtmb3IodmFyIHM9LTEsYz1lLmxlbmd0aDsrK3M8Yzspe3ZhciB1PWVbc10sbD1hP2Eoblt1XSx0W3VdLHUsbix0KTp2b2lkIDA7dm9pZCAwPT09bCYmKGw9dFt1XSksbz9pKG4sdSxsKTpyKG4sdSxsKX1yZXR1cm4gbn19LDg4MDU6KHQsZSxuKT0+e3ZhciByPW4oODM2MyksaT1uKDk1NTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiByKHQsaSh0KSxlKX19LDE5MTE6KHQsZSxuKT0+e3ZhciByPW4oODM2MyksaT1uKDE0NDIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiByKHQsaSh0KSxlKX19LDQ0Mjk6KHQsZSxuKT0+e3ZhciByPW4oNTYzOSlbIl9fY29yZS1qc19zaGFyZWRfXyJdO3QuZXhwb3J0cz1yfSwxNzUwOih0LGUsbik9Pnt2YXIgcj1uKDU5NzYpLGk9big2NjEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIoKGZ1bmN0aW9uKGUsbil7dmFyIHI9LTEsYT1uLmxlbmd0aCxvPWE+MT9uW2EtMV06dm9pZCAwLHM9YT4yP25bMl06dm9pZCAwO2ZvcihvPXQubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBvPyhhLS0sbyk6dm9pZCAwLHMmJmkoblswXSxuWzFdLHMpJiYobz1hPDM/dm9pZCAwOm8sYT0xKSxlPU9iamVjdChlKTsrK3I8YTspe3ZhciBjPW5bcl07YyYmdChlLGMscixvKX1yZXR1cm4gZX0pKX19LDkyOTE6KHQsZSxuKT0+e3ZhciByPW4oODYxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZighcihuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgYT1uLmxlbmd0aCxvPWU/YTotMSxzPU9iamVjdChuKTsoZT9vLS06KytvPGEpJiYhMSE9PWkoc1tvXSxvLHMpOyk7cmV0dXJuIG59fX0sNTA2Mzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4scil7Zm9yKHZhciBpPS0xLGE9T2JqZWN0KGUpLG89cihlKSxzPW8ubGVuZ3RoO3MtLTspe3ZhciBjPW9bdD9zOisraV07aWYoITE9PT1uKGFbY10sYyxhKSlicmVha31yZXR1cm4gZX19fSw3NzQwOih0LGUsbik9Pnt2YXIgcj1uKDcyMDYpLGk9big4NjEyKSxhPW4oMzY3NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sbyl7dmFyIHM9T2JqZWN0KGUpO2lmKCFpKGUpKXt2YXIgYz1yKG4sMyk7ZT1hKGUpLG49ZnVuY3Rpb24odCl7cmV0dXJuIGMoc1t0XSx0LHMpfX12YXIgdT10KGUsbixvKTtyZXR1cm4gdT4tMT9zW2M/ZVt1XTp1XTp2b2lkIDB9fX0sNzQ0NToodCxlLG4pPT57dmFyIHI9big5OCksaT1uKDY2MTIpLGE9big4NjAxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gbyYmIm51bWJlciIhPXR5cGVvZiBvJiZpKGUsbixvKSYmKG49bz12b2lkIDApLGU9YShlKSx2b2lkIDA9PT1uPyhuPWUsZT0wKTpuPWEobiksbz12b2lkIDA9PT1vP2U8bj8xOi0xOmEobykscihlLG4sbyx0KX19fSwzNTkzOih0LGUsbik9Pnt2YXIgcj1uKDg1MjUpLGk9bigzMDgpLGE9bigxODE0KSxvPXImJjEvYShuZXcgcihbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyByKHQpfTppO3QuZXhwb3J0cz1vfSw4Nzc3Oih0LGUsbik9Pnt2YXIgcj1uKDg1MiksaT1mdW5jdGlvbigpe3RyeXt2YXIgdD1yKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpO3QuZXhwb3J0cz1pfSw3MTE0Oih0LGUsbik9Pnt2YXIgcj1uKDg2NjgpLGk9bigyOTA4KSxhPW4oNDc1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8scyxjKXt2YXIgdT0xJm4sbD10Lmxlbmd0aCxoPWUubGVuZ3RoO2lmKGwhPWgmJiEodSYmaD5sKSlyZXR1cm4hMTt2YXIgZj1jLmdldCh0KSxkPWMuZ2V0KGUpO2lmKGYmJmQpcmV0dXJuIGY9PWUmJmQ9PXQ7dmFyIHA9LTEseT0hMCxnPTImbj9uZXcgcjp2b2lkIDA7Zm9yKGMuc2V0KHQsZSksYy5zZXQoZSx0KTsrK3A8bDspe3ZhciBtPXRbcF0sdj1lW3BdO2lmKG8pdmFyIGI9dT9vKHYsbSxwLGUsdCxjKTpvKG0sdixwLHQsZSxjKTtpZih2b2lkIDAhPT1iKXtpZihiKWNvbnRpbnVlO3k9ITE7YnJlYWt9aWYoZyl7aWYoIWkoZSwoZnVuY3Rpb24odCxlKXtpZighYShnLGUpJiYobT09PXR8fHMobSx0LG4sbyxjKSkpcmV0dXJuIGcucHVzaChlKX0pKSl7eT0hMTticmVha319ZWxzZSBpZihtIT09diYmIXMobSx2LG4sbyxjKSl7eT0hMTticmVha319cmV0dXJuIGMuZGVsZXRlKHQpLGMuZGVsZXRlKGUpLHl9fSw4MzUxOih0LGUsbik9Pnt2YXIgcj1uKDI3MDUpLGk9bigxMTQ5KSxhPW4oNzgxMyksbz1uKDcxMTQpLHM9big4Nzc2KSxjPW4oMTgxNCksdT1yP3IucHJvdG90eXBlOnZvaWQgMCxsPXU/dS52YWx1ZU9mOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scix1LGgsZil7c3dpdGNoKG4pe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8IWgobmV3IGkodCksbmV3IGkoZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBhKCt0LCtlKTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIHQ9PWUrIiI7Y2FzZSJbb2JqZWN0IE1hcF0iOnZhciBkPXM7Y2FzZSJbb2JqZWN0IFNldF0iOnZhciBwPTEmcjtpZihkfHwoZD1jKSx0LnNpemUhPWUuc2l6ZSYmIXApcmV0dXJuITE7dmFyIHk9Zi5nZXQodCk7aWYoeSlyZXR1cm4geT09ZTtyfD0yLGYuc2V0KHQsZSk7dmFyIGc9byhkKHQpLGQoZSkscix1LGgsZik7cmV0dXJuIGYuZGVsZXRlKHQpLGc7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOmlmKGwpcmV0dXJuIGwuY2FsbCh0KT09bC5jYWxsKGUpfXJldHVybiExfX0sNjA5NjoodCxlLG4pPT57dmFyIHI9big4MjM0KSxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGEsbyxzKXt2YXIgYz0xJm4sdT1yKHQpLGw9dS5sZW5ndGg7aWYobCE9cihlKS5sZW5ndGgmJiFjKXJldHVybiExO2Zvcih2YXIgaD1sO2gtLTspe3ZhciBmPXVbaF07aWYoIShjP2YgaW4gZTppLmNhbGwoZSxmKSkpcmV0dXJuITF9dmFyIGQ9cy5nZXQodCkscD1zLmdldChlKTtpZihkJiZwKXJldHVybiBkPT1lJiZwPT10O3ZhciB5PSEwO3Muc2V0KHQsZSkscy5zZXQoZSx0KTtmb3IodmFyIGc9YzsrK2g8bDspe3ZhciBtPXRbZj11W2hdXSx2PWVbZl07aWYoYSl2YXIgYj1jP2EodixtLGYsZSx0LHMpOmEobSx2LGYsdCxlLHMpO2lmKCEodm9pZCAwPT09Yj9tPT09dnx8byhtLHYsbixhLHMpOmIpKXt5PSExO2JyZWFrfWd8fChnPSJjb25zdHJ1Y3RvciI9PWYpfWlmKHkmJiFnKXt2YXIgXz10LmNvbnN0cnVjdG9yLHg9ZS5jb25zdHJ1Y3RvcjtfPT14fHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIHgmJnggaW5zdGFuY2VvZiB4fHwoeT0hMSl9cmV0dXJuIHMuZGVsZXRlKHQpLHMuZGVsZXRlKGUpLHl9fSw5MDIxOih0LGUsbik9Pnt2YXIgcj1uKDU1NjQpLGk9big1MzU3KSxhPW4oNjEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYShpKHQsdm9pZCAwLHIpLHQrIiIpfX0sMTk1NzoodCxlLG4pPT57dmFyIHI9Im9iamVjdCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nO3QuZXhwb3J0cz1yfSw4MjM0Oih0LGUsbik9Pnt2YXIgcj1uKDg4NjYpLGk9big5NTUxKSxhPW4oMzY3NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQsYSxpKX19LDY5MDQ6KHQsZSxuKT0+e3ZhciByPW4oODg2NiksaT1uKDE0NDIpLGE9bigxNzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxhLGkpfX0sNTA1MDoodCxlLG4pPT57dmFyIHI9big3MDE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybiByKGUpP25bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06bi5tYXB9fSwxNDk5Oih0LGUsbik9Pnt2YXIgcj1uKDkxNjIpLGk9bigzNjc0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWkodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgYT1lW25dLG89dFthXTtlW25dPVthLG8scihvKV19cmV0dXJuIGV9fSw4NTI6KHQsZSxuKT0+e3ZhciByPW4oODQ1OCksaT1uKDc4MDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWkodCxlKTtyZXR1cm4gcihuKT9uOnZvaWQgMH19LDU5MjQ6KHQsZSxuKT0+e3ZhciByPW4oNTU2OSkoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dC5leHBvcnRzPXJ9LDk2MDc6KHQsZSxuKT0+e3ZhciByPW4oMjcwNSksaT1PYmplY3QucHJvdG90eXBlLGE9aS5oYXNPd25Qcm9wZXJ0eSxvPWkudG9TdHJpbmcscz1yP3IudG9TdHJpbmdUYWc6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1hLmNhbGwodCxzKSxuPXRbc107dHJ5e3Rbc109dm9pZCAwO3ZhciByPSEwfWNhdGNoKHQpe312YXIgaT1vLmNhbGwodCk7cmV0dXJuIHImJihlP3Rbc109bjpkZWxldGUgdFtzXSksaX19LDk1NTE6KHQsZSxuKT0+e3ZhciByPW4oNDk2MyksaT1uKDQ3OSksYT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxzPW8/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9T2JqZWN0KHQpLHIobyh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuY2FsbCh0LGUpfSkpKX06aTt0LmV4cG9ydHM9c30sMTQ0MjoodCxlLG4pPT57dmFyIHI9bigyNDg4KSxpPW4oNTkyNCksYT1uKDk1NTEpLG89big0NzkpLHM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspcihlLGEodCkpLHQ9aSh0KTtyZXR1cm4gZX06bzt0LmV4cG9ydHM9c30sNDE2MDoodCxlLG4pPT57dmFyIHI9big4NTUyKSxpPW4oNzA3MSksYT1uKDM4MTgpLG89big4NTI1KSxzPW4oNTc3KSxjPW4oNDIzOSksdT1uKDM0NiksbD0iW29iamVjdCBNYXBdIixoPSJbb2JqZWN0IFByb21pc2VdIixmPSJbb2JqZWN0IFNldF0iLGQ9IltvYmplY3QgV2Vha01hcF0iLHA9IltvYmplY3QgRGF0YVZpZXddIix5PXUociksZz11KGkpLG09dShhKSx2PXUobyksYj11KHMpLF89YzsociYmXyhuZXcgcihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9cHx8aSYmXyhuZXcgaSkhPWx8fGEmJl8oYS5yZXNvbHZlKCkpIT1ofHxvJiZfKG5ldyBvKSE9Znx8cyYmXyhuZXcgcykhPWQpJiYoXz1mdW5jdGlvbih0KXt2YXIgZT1jKHQpLG49IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAscj1uP3Uobik6IiI7aWYocilzd2l0Y2gocil7Y2FzZSB5OnJldHVybiBwO2Nhc2UgZzpyZXR1cm4gbDtjYXNlIG06cmV0dXJuIGg7Y2FzZSB2OnJldHVybiBmO2Nhc2UgYjpyZXR1cm4gZH1yZXR1cm4gZX0pLHQuZXhwb3J0cz1ffSw3ODAxOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX19LDIyMjoodCxlLG4pPT57dmFyIHI9bigxODExKSxpPW4oNTY5NCksYT1uKDE0NjkpLG89big1Nzc2KSxzPW4oMTc4MCksYz1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHU9LTEsbD0oZT1yKGUsdCkpLmxlbmd0aCxoPSExOysrdTxsOyl7dmFyIGY9YyhlW3VdKTtpZighKGg9bnVsbCE9dCYmbih0LGYpKSlicmVhazt0PXRbZl19cmV0dXJuIGh8fCsrdSE9bD9oOiEhKGw9bnVsbD09dD8wOnQubGVuZ3RoKSYmcyhsKSYmbyhmLGwpJiYoYSh0KXx8aSh0KSl9fSwyNjg5OnQ9Pnt2YXIgZT1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXFx1ZmUwZVxcdWZlMGZdIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlLnRlc3QodCl9fSwxNzg5Oih0LGUsbik9Pnt2YXIgcj1uKDQ1MzYpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189cj9yKG51bGwpOnt9LHRoaXMuc2l6ZT0wfX0sNDAxOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9fSw3NjY3Oih0LGUsbik9Pnt2YXIgcj1uKDQ1MzYpLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihyKXt2YXIgbj1lW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PW4/dm9pZCAwOm59cmV0dXJuIGkuY2FsbChlLHQpP2VbdF06dm9pZCAwfX0sMTMyNzoodCxlLG4pPT57dmFyIHI9big0NTM2KSxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHI/dm9pZCAwIT09ZVt0XTppLmNhbGwoZSx0KX19LDE4NjY6KHQsZSxuKT0+e3ZhciByPW4oNDUzNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsblt0XT1yJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9fSwzODI0OnQ9Pnt2YXIgZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj10Lmxlbmd0aCxyPW5ldyB0LmNvbnN0cnVjdG9yKG4pO3JldHVybiBuJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJmUuY2FsbCh0LCJpbmRleCIpJiYoci5pbmRleD10LmluZGV4LHIuaW5wdXQ9dC5pbnB1dCkscn19LDkxNDg6KHQsZSxuKT0+e3ZhciByPW4oNDMxOCksaT1uKDcxNTcpLGE9bigzMTQ3KSxvPW4oNDE5KSxzPW4oNzEzMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYz10LmNvbnN0cnVjdG9yO3N3aXRjaChlKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gcih0KTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6cmV0dXJuIG5ldyBjKCt0KTtjYXNlIltvYmplY3QgRGF0YVZpZXddIjpyZXR1cm4gaSh0LG4pO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiBzKHQsbik7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IGM7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gbmV3IGModCk7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBhKHQpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gbyh0KX19fSw4NTE3Oih0LGUsbik9Pnt2YXIgcj1uKDMxMTgpLGk9big1OTI0KSxhPW4oNTcyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxhKHQpP3t9OnIoaSh0KSl9fSw3Mjg1Oih0LGUsbik9Pnt2YXIgcj1uKDI3MDUpLGk9big1Njk0KSxhPW4oMTQ2OSksbz1yP3IuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCl8fGkodCl8fCEhKG8mJnQmJnRbb10pfX0sNTc3Njp0PT57dmFyIGU9L14oPzowfFsxLTldXGQqKSQvO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKG49bnVsbD09bj85MDA3MTk5MjU0NzQwOTkxOm4pJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZlLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8bn19LDY2MTI6KHQsZSxuKT0+e3ZhciByPW4oNzgxMyksaT1uKDg2MTIpLGE9big1Nzc2KSxvPW4oMzIxOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZighbyhuKSlyZXR1cm4hMTt2YXIgcz10eXBlb2YgZTtyZXR1cm4hISgibnVtYmVyIj09cz9pKG4pJiZhKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1zJiZlIGluIG4pJiZyKG5bZV0sdCl9fSw1NDAzOih0LGUsbik9Pnt2YXIgcj1uKDE0NjkpLGk9bigzNDQ4KSxhPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLG89L15cdyokLzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFpKHQpKXx8by50ZXN0KHQpfHwhYS50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LDcwMTk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09ZXx8Im51bWJlciI9PWV8fCJzeW1ib2wiPT1lfHwiYm9vbGVhbiI9PWU/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fX0sNTM0NjoodCxlLG4pPT57dmFyIHIsaT1uKDQ0MjkpLGE9KHI9L1teLl0rJC8uZXhlYyhpJiZpLmtleXMmJmkua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK3I6IiI7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEhYSYmYSBpbiB0fX0sNTcyNjp0PT57dmFyIGU9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49dCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4gdD09PSgiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5wcm90b3R5cGV8fGUpfX0sOTE2MjoodCxlLG4pPT57dmFyIHI9bigzMjE4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXQmJiFyKHQpfX0sNzA0MDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH19LDIxODg6KHQsZSxuKT0+e3ZhciByPW4oODQ3MCksaT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cihlLHQpO3JldHVybiEobjwwfHwobj09ZS5sZW5ndGgtMT9lLnBvcCgpOmkuY2FsbChlLG4sMSksLS10aGlzLnNpemUsMCkpfX0sMjExNzoodCxlLG4pPT57dmFyIHI9big4NDcwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPXIoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfX0sNzUxODoodCxlLG4pPT57dmFyIHI9big4NDcwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcy5fX2RhdGFfXyx0KT4tMX19LDQ3MDU6KHQsZSxuKT0+e3ZhciByPW4oODQ3MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPXIobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc319LDQ3ODU6KHQsZSxuKT0+e3ZhciByPW4oMTk4OSksaT1uKDg0MDcpLGE9big3MDcxKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyByLG1hcDpuZXcoYXx8aSksc3RyaW5nOm5ldyByfX19LDEyODU6KHQsZSxuKT0+e3ZhciByPW4oNTA1MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX19LDZlMzoodCxlLG4pPT57dmFyIHI9big1MDUwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcyx0KS5nZXQodCl9fSw5OTE2Oih0LGUsbik9Pnt2YXIgcj1uKDUwNTApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQpLmhhcyh0KX19LDUyNjU6KHQsZSxuKT0+e3ZhciByPW4oNTA1MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49cih0aGlzLHQpLGk9bi5zaXplO3JldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZSs9bi5zaXplPT1pPzA6MSx0aGlzfX0sODc3Njp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LHIpe25bKytlXT1bcix0XX0pKSxufX0sMjYzNDp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZuW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KG4pKX19fSw0NTIzOih0LGUsbik9Pnt2YXIgcj1uKDgzMDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX19LDQ1MzY6KHQsZSxuKT0+e3ZhciByPW4oODUyKShPYmplY3QsImNyZWF0ZSIpO3QuZXhwb3J0cz1yfSw2OTE2Oih0LGUsbik9Pnt2YXIgcj1uKDU1NjkpKE9iamVjdC5rZXlzLE9iamVjdCk7dC5leHBvcnRzPXJ9LDM0OTg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10KWZvcih2YXIgbiBpbiBPYmplY3QodCkpZS5wdXNoKG4pO3JldHVybiBlfX0sMTE2NzoodCxlLG4pPT57dD1uLm5tZCh0KTt2YXIgcj1uKDE5NTcpLGk9ZSYmIWUubm9kZVR5cGUmJmUsYT1pJiZ0JiYhdC5ub2RlVHlwZSYmdCxvPWEmJmEuZXhwb3J0cz09PWkmJnIucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBhJiZhLnJlcXVpcmUmJmEucmVxdWlyZSgidXRpbCIpLnR5cGVzfHxvJiZvLmJpbmRpbmcmJm8uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCk7dC5leHBvcnRzPXN9LDIzMzM6dD0+e3ZhciBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodCl9fSw1NTY5OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fX0sNTM1NzoodCxlLG4pPT57dmFyIHI9big2ODc0KSxpPU1hdGgubWF4O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9aSh2b2lkIDA9PT1lP3QubGVuZ3RoLTE6ZSwwKSxmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMsbz0tMSxzPWkoYS5sZW5ndGgtZSwwKSxjPUFycmF5KHMpOysrbzxzOyljW29dPWFbZStvXTtvPS0xO2Zvcih2YXIgdT1BcnJheShlKzEpOysrbzxlOyl1W29dPWFbb107cmV0dXJuIHVbZV09bihjKSxyKHQsdGhpcyx1KX19fSw1NjM5Oih0LGUsbik9Pnt2YXIgcj1uKDE5NTcpLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixhPXJ8fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7dC5leHBvcnRzPWF9LDYzOTA6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCgiY29uc3RydWN0b3IiIT09ZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRbZV0pJiYiX19wcm90b19fIiE9ZSlyZXR1cm4gdFtlXX19LDYxOTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc319LDIzODU6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9fSwxODE0OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59fSw2MToodCxlLG4pPT57dmFyIHI9big2NTYwKSxpPW4oMTI3NSkocik7dC5leHBvcnRzPWl9LDEyNzU6dD0+e3ZhciBlPURhdGUubm93O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj0wLHI9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lKCksYT0xNi0oaS1yKTtpZihyPWksYT4wKXtpZigrK24+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2Ugbj0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX19LDc0NjU6KHQsZSxuKT0+e3ZhciByPW4oODQwNyk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgcix0aGlzLnNpemU9MH19LDM3Nzk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUsbn19LDc1OTk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9fSw0NzU4OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfX0sNDMwOToodCxlLG4pPT57dmFyIHI9big4NDA3KSxpPW4oNzA3MSksYT1uKDMzNjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187aWYobiBpbnN0YW5jZW9mIHIpe3ZhciBvPW4uX19kYXRhX187aWYoIWl8fG8ubGVuZ3RoPDE5OSlyZXR1cm4gby5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IGEobyl9cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplPW4uc2l6ZSx0aGlzfX0sMjM1MTp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9bi0xLGk9dC5sZW5ndGg7KytyPGk7KWlmKHRbcl09PT1lKXJldHVybiByO3JldHVybi0xfX0sODAxNjoodCxlLG4pPT57dmFyIHI9big4OTgzKSxpPW4oMjY4OSksYT1uKDE5MDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KT9hKHQpOnIodCl9fSw1NTE0Oih0LGUsbik9Pnt2YXIgcj1uKDQ1MjMpLGk9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csYT0vXFwoXFwpPy9nLG89cigoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShpLChmdW5jdGlvbih0LG4scixpKXtlLnB1c2gocj9pLnJlcGxhY2UoYSwiJDEiKTpufHx0KX0pKSxlfSkpO3QuZXhwb3J0cz1vfSwzMjc6KHQsZSxuKT0+e3ZhciByPW4oMzQ0OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8cih0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX19LDM0Njp0PT57dmFyIGU9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIGUuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9fSw3OTkwOnQ9Pnt2YXIgZT0vXHMvO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZlLnRlc3QodC5jaGFyQXQobikpOyk7cmV0dXJuIG59fSwxOTAzOnQ9Pnt2YXIgZT0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLG49IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIscj0iW15cXHVkODAwLVxcdWRmZmZdIixpPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixhPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixvPSIoPzoiK2UrInwiK24rIik/IixzPSJbXFx1ZmUwZVxcdWZlMGZdPyIsYz1zK28rIig/OlxcdTIwMGQoPzoiK1tyLGksYV0uam9pbigifCIpKyIpIitzK28rIikqIix1PSIoPzoiK1tyK2UrIj8iLGUsaSxhLCJbXFx1ZDgwMC1cXHVkZmZmXSJdLmpvaW4oInwiKSsiKSIsbD1SZWdFeHAobisiKD89IituKyIpfCIrdStjLCJnIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1sLmxhc3RJbmRleD0wO2wudGVzdCh0KTspKytlO3JldHVybiBlfX0sNjY3ODoodCxlLG4pPT57dmFyIHI9big1OTkwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCw0KX19LDM2MToodCxlLG4pPT57dmFyIHI9big1OTkwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCw1KX19LDU3MDM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19fSwxNzQ3Oih0LGUsbik9Pnt2YXIgcj1uKDU5NzYpLGk9big3ODEzKSxhPW4oNjYxMiksbz1uKDE3MDQpLHM9T2JqZWN0LnByb3RvdHlwZSxjPXMuaGFzT3duUHJvcGVydHksdT1yKChmdW5jdGlvbih0LGUpe3Q9T2JqZWN0KHQpO3ZhciBuPS0xLHI9ZS5sZW5ndGgsdT1yPjI/ZVsyXTp2b2lkIDA7Zm9yKHUmJmEoZVswXSxlWzFdLHUpJiYocj0xKTsrK248cjspZm9yKHZhciBsPWVbbl0saD1vKGwpLGY9LTEsZD1oLmxlbmd0aDsrK2Y8ZDspe3ZhciBwPWhbZl0seT10W3BdOyh2b2lkIDA9PT15fHxpKHksc1twXSkmJiFjLmNhbGwodCxwKSkmJih0W3BdPWxbcF0pfXJldHVybiB0fSkpO3QuZXhwb3J0cz11fSw2MDczOih0LGUsbik9Pnt0LmV4cG9ydHM9big0NDg2KX0sNzgxMzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfX0sMzEwNToodCxlLG4pPT57dmFyIHI9big0OTYzKSxpPW4oNzYwKSxhPW4oNzIwNiksbz1uKDE0NjkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybihvKHQpP3I6aSkodCxhKGUsMykpfX0sMzMxMToodCxlLG4pPT57dmFyIHI9big3NzQwKShuKDk5OCkpO3QuZXhwb3J0cz1yfSw5OTg6KHQsZSxuKT0+e3ZhciByPW4oMTg0OCksaT1uKDcyMDYpLGE9big1NTQpLG89TWF0aC5tYXg7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1udWxsPT10PzA6dC5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIGM9bnVsbD09bj8wOmEobik7cmV0dXJuIGM8MCYmKGM9byhzK2MsMCkpLHIodCxpKGUsMyksYyl9fSw1NTY0Oih0LGUsbik9Pnt2YXIgcj1uKDEwNzgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/cih0LDEpOltdfX0sNDQ4NjoodCxlLG4pPT57dmFyIHI9big3NDEyKSxpPW4oOTg4MSksYT1uKDQyOTApLG89bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4obyh0KT9yOmkpKHQsYShlKSl9fSwyNjIwOih0LGUsbik9Pnt2YXIgcj1uKDg0ODMpLGk9big0MjkwKSxhPW4oMTcwNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpyKHQsaShlKSxhKX19LDE5MTc6KHQsZSxuKT0+e3ZhciByPW4oNzc4Nik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1udWxsPT10P3ZvaWQgMDpyKHQsZSk7cmV0dXJuIHZvaWQgMD09PWk/bjppfX0sODcyMToodCxlLG4pPT57dmFyIHI9big4NTY1KSxpPW4oMjIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dCYmaSh0LGUscil9fSw5MDk1Oih0LGUsbik9Pnt2YXIgcj1uKDEzKSxpPW4oMjIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dCYmaSh0LGUscil9fSw2NTU3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSw1Njk0Oih0LGUsbik9Pnt2YXIgcj1uKDk0NTQpLGk9big3MDA1KSxhPU9iamVjdC5wcm90b3R5cGUsbz1hLmhhc093blByb3BlcnR5LHM9YS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxjPXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9yOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpJiZvLmNhbGwodCwiY2FsbGVlIikmJiFzLmNhbGwodCwiY2FsbGVlIil9O3QuZXhwb3J0cz1jfSwxNDY5OnQ9Pnt2YXIgZT1BcnJheS5pc0FycmF5O3QuZXhwb3J0cz1lfSw4NjEyOih0LGUsbik9Pnt2YXIgcj1uKDM1NjApLGk9bigxNzgwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJmkodC5sZW5ndGgpJiYhcih0KX19LDkyNDY6KHQsZSxuKT0+e3ZhciByPW4oODYxMiksaT1uKDcwMDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KSYmcih0KX19LDQxNDQ6KHQsZSxuKT0+e3Q9bi5ubWQodCk7dmFyIHI9big1NjM5KSxpPW4oNTA2MiksYT1lJiYhZS5ub2RlVHlwZSYmZSxvPWEmJnQmJiF0Lm5vZGVUeXBlJiZ0LHM9byYmby5leHBvcnRzPT09YT9yLkJ1ZmZlcjp2b2lkIDAsYz0ocz9zLmlzQnVmZmVyOnZvaWQgMCl8fGk7dC5leHBvcnRzPWN9LDE2MDk6KHQsZSxuKT0+e3ZhciByPW4oMjgwKSxpPW4oNDE2MCksYT1uKDU2OTQpLG89bigxNDY5KSxzPW4oODYxMiksYz1uKDQxNDQpLHU9big1NzI2KSxsPW4oNjcxOSksaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiEwO2lmKHModCkmJihvKHQpfHwic3RyaW5nIj09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNwbGljZXx8Yyh0KXx8bCh0KXx8YSh0KSkpcmV0dXJuIXQubGVuZ3RoO3ZhciBlPWkodCk7aWYoIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lKXJldHVybiF0LnNpemU7aWYodSh0KSlyZXR1cm4hcih0KS5sZW5ndGg7Zm9yKHZhciBuIGluIHQpaWYoaC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9fSwzNTYwOih0LGUsbik9Pnt2YXIgcj1uKDQyMzkpLGk9bigzMjE4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWkodCkpcmV0dXJuITE7dmFyIGU9cih0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9fSwxNzgwOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9fSw2Njg4Oih0LGUsbik9Pnt2YXIgcj1uKDU1ODgpLGk9bigxNzE3KSxhPW4oMTE2Nyksbz1hJiZhLmlzTWFwLHM9bz9pKG8pOnI7dC5leHBvcnRzPXN9LDMyMTg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX19LDcwMDU6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fX0sODYzMDoodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oNTkyNCksYT1uKDcwMDUpLG89RnVuY3Rpb24ucHJvdG90eXBlLHM9T2JqZWN0LnByb3RvdHlwZSxjPW8udG9TdHJpbmcsdT1zLmhhc093blByb3BlcnR5LGw9Yy5jYWxsKE9iamVjdCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFhKHQpfHwiW29iamVjdCBPYmplY3RdIiE9cih0KSlyZXR1cm4hMTt2YXIgZT1pKHQpO2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciBuPXUuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmYy5jYWxsKG4pPT1sfX0sMjkyODoodCxlLG4pPT57dmFyIHI9big5MjIxKSxpPW4oMTcxNyksYT1uKDExNjcpLG89YSYmYS5pc1NldCxzPW8/aShvKTpyO3QuZXhwb3J0cz1zfSw3MDM3Oih0LGUsbik9Pnt2YXIgcj1uKDQyMzkpLGk9bigxNDY5KSxhPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8IWkodCkmJmEodCkmJiJbb2JqZWN0IFN0cmluZ10iPT1yKHQpfX0sMzQ0ODoodCxlLG4pPT57dmFyIHI9big0MjM5KSxpPW4oNzAwNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8aSh0KSYmIltvYmplY3QgU3ltYm9sXSI9PXIodCl9fSw2NzE5Oih0LGUsbik9Pnt2YXIgcj1uKDg3NDkpLGk9bigxNzE3KSxhPW4oMTE2Nyksbz1hJiZhLmlzVHlwZWRBcnJheSxzPW8/aShvKTpyO3QuZXhwb3J0cz1zfSwyMzUzOnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXR9fSwzNjc0Oih0LGUsbik9Pnt2YXIgcj1uKDQ2MzYpLGk9bigyODApLGE9big4NjEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCk/cih0KTppKHQpfX0sMTcwNDoodCxlLG4pPT57dmFyIHI9big0NjM2KSxpPW4oMzEzKSxhPW4oODYxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQpP3IodCwhMCk6aSh0KX19LDkyODp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT90W2UtMV06dm9pZCAwfX0sNTE2MToodCxlLG4pPT57dmFyIHI9big5OTMyKSxpPW4oNzIwNiksYT1uKDkxOTkpLG89bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4obyh0KT9yOmEpKHQsaShlLDMpKX19LDY2MDQ6KHQsZSxuKT0+e3ZhciByPW4oOTQ2NSksaT1uKDc4MTYpLGE9big3MjA2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gZT1hKGUsMyksaSh0LChmdW5jdGlvbih0LGksYSl7cihuLGksZSh0LGksYSkpfSkpLG59fSw2MTYyOih0LGUsbik9Pnt2YXIgcj1uKDYwMjkpLGk9bigzMzI1KSxhPW4oNjU1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9yKHQsYSxpKTp2b2lkIDB9fSw4MzA2Oih0LGUsbik9Pnt2YXIgcj1uKDMzNjkpO2Z1bmN0aW9uIGkodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLGk9ZT9lLmFwcGx5KHRoaXMscik6clswXSxhPW4uY2FjaGU7aWYoYS5oYXMoaSkpcmV0dXJuIGEuZ2V0KGkpO3ZhciBvPXQuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1hLnNldChpLG8pfHxhLG99O3JldHVybiBuLmNhY2hlPW5ldyhpLkNhY2hlfHxyKSxufWkuQ2FjaGU9cix0LmV4cG9ydHM9aX0sMzg1NzoodCxlLG4pPT57dmFyIHI9bigyOTgwKSxpPW4oMTc1MCkoKGZ1bmN0aW9uKHQsZSxuKXtyKHQsZSxuKX0pKTt0LmV4cG9ydHM9aX0sMzYzMjoodCxlLG4pPT57dmFyIHI9big2MDI5KSxpPW4oNDMzKSxhPW4oNjU1Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9yKHQsYSxpKTp2b2lkIDB9fSwyNzYyOih0LGUsbik9Pnt2YXIgcj1uKDYwMjkpLGk9big3MjA2KSxhPW4oNDMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/cih0LGkoZSwyKSxhKTp2b2lkIDB9fSwzMDg6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbigpe319LDc3NzE6KHQsZSxuKT0+e3ZhciByPW4oNTYzOSk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuRGF0ZS5ub3coKX19LDk3MjI6KHQsZSxuKT0+e3ZhciByPW4oNTk3MCksaT1uKDkwMjEpKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3t9OnIodCxlKX0pKTt0LmV4cG9ydHM9aX0sOTYwMToodCxlLG4pPT57dmFyIHI9bigzNzEpLGk9big5MTUyKSxhPW4oNTQwMyksbz1uKDMyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQpP3Iobyh0KSk6aSh0KX19LDYwMjY6KHQsZSxuKT0+e3ZhciByPW4oNzQ0NSkoKTt0LmV4cG9ydHM9cn0sNDA2MToodCxlLG4pPT57dmFyIHI9bigyNjYzKSxpPW4oOTg4MSksYT1uKDcyMDYpLG89bigxMDcpLHM9bigxNDY5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBjPXModCk/cjpvLHU9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBjKHQsYShlLDQpLG4sdSxpKX19LDQyMzg6KHQsZSxuKT0+e3ZhciByPW4oMjgwKSxpPW4oNDE2MCksYT1uKDg2MTIpLG89big3MDM3KSxzPW4oODAxNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoYSh0KSlyZXR1cm4gbyh0KT9zKHQpOnQubGVuZ3RoO3ZhciBlPWkodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lP3Quc2l6ZTpyKHQpLmxlbmd0aH19LDk3MzQ6KHQsZSxuKT0+e3ZhciByPW4oMTA3OCksaT1uKDk1NTYpLGE9big1OTc2KSxvPW4oNjYxMikscz1hKChmdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJuW107dmFyIG49ZS5sZW5ndGg7cmV0dXJuIG4+MSYmbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJm8oZVswXSxlWzFdLGVbMl0pJiYoZT1bZVswXV0pLGkodCxyKGUsMSksW10pfSkpO3QuZXhwb3J0cz1zfSw0Nzk6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybltdfX0sNTA2Mjp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSw4NjAxOih0LGUsbik9Pnt2YXIgcj1uKDQ4NDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD9JbmZpbml0eT09PSh0PXIodCkpfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9fSw1NTQ6KHQsZSxuKT0+e3ZhciByPW4oODYwMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfX0sNDg0MToodCxlLG4pPT57dmFyIHI9big3NTYxKSxpPW4oMzIxOCksYT1uKDM0NDgpLG89L15bLStdMHhbMC05YS1mXSskL2kscz0vXjBiWzAxXSskL2ksYz0vXjBvWzAtN10rJC9pLHU9cGFyc2VJbnQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihhKHQpKXJldHVybiBOYU47aWYoaSh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9aShlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9cih0KTt2YXIgbj1zLnRlc3QodCk7cmV0dXJuIG58fGMudGVzdCh0KT91KHQuc2xpY2UoMiksbj8yOjgpOm8udGVzdCh0KT9OYU46K3R9fSwzNjc4Oih0LGUsbik9Pnt2YXIgcj1uKDgzNjMpLGk9bigxNzA0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxpKHQpKX19LDk4MzM6KHQsZSxuKT0+e3ZhciByPW4oNTMxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6cih0KX19LDg3MTg6KHQsZSxuKT0+e3ZhciByPW4oNzQxMiksaT1uKDMxMTgpLGE9big3ODE2KSxvPW4oNzIwNikscz1uKDU5MjQpLGM9bigxNDY5KSx1PW4oNDE0NCksbD1uKDM1NjApLGg9bigzMjE4KSxmPW4oNjcxOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZD1jKHQpLHA9ZHx8dSh0KXx8Zih0KTtpZihlPW8oZSw0KSxudWxsPT1uKXt2YXIgeT10JiZ0LmNvbnN0cnVjdG9yO249cD9kP25ldyB5OltdOmgodCkmJmwoeSk/aShzKHQpKTp7fX1yZXR1cm4ocD9yOmEpKHQsKGZ1bmN0aW9uKHQscixpKXtyZXR1cm4gZShuLHQscixpKX0pKSxufX0sMzM4NjoodCxlLG4pPT57dmFyIHI9bigxMDc4KSxpPW4oNTk3NiksYT1uKDU2NTIpLG89big5MjQ2KSxzPWkoKGZ1bmN0aW9uKHQpe3JldHVybiBhKHIodCwxLG8sITApKX0pKTt0LmV4cG9ydHM9c30sMzk1NToodCxlLG4pPT57dmFyIHI9big5ODMzKSxpPTA7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSsraTtyZXR1cm4gcih0KStlfX0sMjYyODoodCxlLG4pPT57dmFyIHI9big3NDE1KSxpPW4oMzY3NCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOnIodCxpKHQpKX19LDcyODc6KHQsZSxuKT0+e3ZhciByPW4oNDg2NSksaT1uKDE3NTcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBpKHR8fFtdLGV8fFtdLHIpfX0sOTIzNDooKT0+e30sMTc0ODoodCxlLG4pPT57dmFyIHI9eyIuL2xvY2FsZSI6OTIzNCwiLi9sb2NhbGUuanMiOjkyMzR9O2Z1bmN0aW9uIGkodCl7dmFyIGU9YSh0KTtyZXR1cm4gbihlKX1mdW5jdGlvbiBhKHQpe2lmKCFuLm8ocix0KSl7dmFyIGU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdCsiJyIpO3Rocm93IGUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZX1yZXR1cm4gclt0XX1pLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMocil9LGkucmVzb2x2ZT1hLHQuZXhwb3J0cz1pLGkuaWQ9MTc0OH0sMTk0MTpmdW5jdGlvbih0LGUsbil7KHQ9bi5ubWQodCkpLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUscjtmdW5jdGlvbiBpKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheXx8IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10JiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBzKHQpe3JldHVybiB2b2lkIDA9PT10fWZ1bmN0aW9uIGModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fHwiW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZXx8IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGwodCxlKXt2YXIgbixyPVtdO2ZvcihuPTA7bjx0Lmxlbmd0aDsrK24pci5wdXNoKGUodFtuXSxuKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciBuIGluIGUpaChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gaChlLCJ0b1N0cmluZyIpJiYodC50b1N0cmluZz1lLnRvU3RyaW5nKSxoKGUsInZhbHVlT2YiKSYmKHQudmFsdWVPZj1lLnZhbHVlT2YpLHR9ZnVuY3Rpb24gZCh0LGUsbixyKXtyZXR1cm4gYmUodCxlLG4sciwhMCkudXRjKCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbD09dC5fcGYmJih0Ll9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZE1vbnRoOm51bGwsaW52YWxpZEZvcm1hdDohMSx1c2VySW52YWxpZGF0ZWQ6ITEsaXNvOiExLHBhcnNlZERhdGVQYXJ0czpbXSxtZXJpZGllbTpudWxsLHJmYzI4MjI6ITEsd2Vla2RheU1pc21hdGNoOiExfSksdC5fcGZ9ZnVuY3Rpb24geSh0KXtpZihudWxsPT10Ll9pc1ZhbGlkKXt2YXIgZT1wKHQpLG49ci5jYWxsKGUucGFyc2VkRGF0ZVBhcnRzLChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxpPSFpc05hTih0Ll9kLmdldFRpbWUoKSkmJmUub3ZlcmZsb3c8MCYmIWUuZW1wdHkmJiFlLmludmFsaWRNb250aCYmIWUuaW52YWxpZFdlZWtkYXkmJiFlLndlZWtkYXlNaXNtYXRjaCYmIWUubnVsbElucHV0JiYhZS5pbnZhbGlkRm9ybWF0JiYhZS51c2VySW52YWxpZGF0ZWQmJighZS5tZXJpZGllbXx8ZS5tZXJpZGllbSYmbik7aWYodC5fc3RyaWN0JiYoaT1pJiYwPT09ZS5jaGFyc0xlZnRPdmVyJiYwPT09ZS51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT1lLmJpZ0hvdXIpLG51bGwhPU9iamVjdC5pc0Zyb3plbiYmT2JqZWN0LmlzRnJvemVuKHQpKXJldHVybiBpO3QuX2lzVmFsaWQ9aX1yZXR1cm4gdC5faXNWYWxpZH1mdW5jdGlvbiBnKHQpe3ZhciBlPWQoTmFOKTtyZXR1cm4gbnVsbCE9dD9mKHAoZSksdCk6cChlKS51c2VySW52YWxpZGF0ZWQ9ITAsZX1yPUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3QodGhpcyksbj1lLmxlbmd0aD4+PjAscj0wO3I8bjtyKyspaWYociBpbiBlJiZ0LmNhbGwodGhpcyxlW3JdLHIsZSkpcmV0dXJuITA7cmV0dXJuITF9O3ZhciBtPWkubW9tZW50UHJvcGVydGllcz1bXTtmdW5jdGlvbiB2KHQsZSl7dmFyIG4scixpO2lmKHMoZS5faXNBTW9tZW50T2JqZWN0KXx8KHQuX2lzQU1vbWVudE9iamVjdD1lLl9pc0FNb21lbnRPYmplY3QpLHMoZS5faSl8fCh0Ll9pPWUuX2kpLHMoZS5fZil8fCh0Ll9mPWUuX2YpLHMoZS5fbCl8fCh0Ll9sPWUuX2wpLHMoZS5fc3RyaWN0KXx8KHQuX3N0cmljdD1lLl9zdHJpY3QpLHMoZS5fdHptKXx8KHQuX3R6bT1lLl90em0pLHMoZS5faXNVVEMpfHwodC5faXNVVEM9ZS5faXNVVEMpLHMoZS5fb2Zmc2V0KXx8KHQuX29mZnNldD1lLl9vZmZzZXQpLHMoZS5fcGYpfHwodC5fcGY9cChlKSkscyhlLl9sb2NhbGUpfHwodC5fbG9jYWxlPWUuX2xvY2FsZSksMDxtLmxlbmd0aClmb3Iobj0wO248bS5sZW5ndGg7bisrKXMoaT1lW3I9bVtuXV0pfHwodFtyXT1pKTtyZXR1cm4gdH12YXIgYj0hMTtmdW5jdGlvbiBfKHQpe3YodGhpcyx0KSx0aGlzLl9kPW5ldyBEYXRlKG51bGwhPXQuX2Q/dC5fZC5nZXRUaW1lKCk6TmFOKSx0aGlzLmlzVmFsaWQoKXx8KHRoaXMuX2Q9bmV3IERhdGUoTmFOKSksITE9PT1iJiYoYj0hMCxpLnVwZGF0ZU9mZnNldCh0aGlzKSxiPSExKX1mdW5jdGlvbiB4KHQpe3JldHVybiB0IGluc3RhbmNlb2YgX3x8bnVsbCE9dCYmbnVsbCE9dC5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIHcodCl7cmV0dXJuIHQ8MD9NYXRoLmNlaWwodCl8fDA6TWF0aC5mbG9vcih0KX1mdW5jdGlvbiBrKHQpe3ZhciBlPSt0LG49MDtyZXR1cm4gMCE9PWUmJmlzRmluaXRlKGUpJiYobj13KGUpKSxufWZ1bmN0aW9uIFQodCxlLG4pe3ZhciByLGk9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLGE9TWF0aC5hYnModC5sZW5ndGgtZS5sZW5ndGgpLG89MDtmb3Iocj0wO3I8aTtyKyspKG4mJnRbcl0hPT1lW3JdfHwhbiYmayh0W3JdKSE9PWsoZVtyXSkpJiZvKys7cmV0dXJuIG8rYX1mdW5jdGlvbiBFKHQpeyExPT09aS5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrdCl9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuPSEwO3JldHVybiBmKChmdW5jdGlvbigpe2lmKG51bGwhPWkuZGVwcmVjYXRpb25IYW5kbGVyJiZpLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLHQpLG4pe2Zvcih2YXIgcixhPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXtpZihyPSIiLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW29dKXtmb3IodmFyIHMgaW4gcis9IlxuWyIrbysiXSAiLGFyZ3VtZW50c1swXSlyKz1zKyI6ICIrYXJndW1lbnRzWzBdW3NdKyIsICI7cj1yLnNsaWNlKDAsLTIpfWVsc2Ugcj1hcmd1bWVudHNbb107YS5wdXNoKHIpfUUodCsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSkuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFjayksbj0hMX1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxlKX12YXIgUyxBPXt9O2Z1bmN0aW9uIE0odCxlKXtudWxsIT1pLmRlcHJlY2F0aW9uSGFuZGxlciYmaS5kZXByZWNhdGlvbkhhbmRsZXIodCxlKSxBW3RdfHwoRShlKSxBW3RdPSEwKX1mdW5jdGlvbiBOKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gRCh0LGUpe3ZhciBuLHI9Zih7fSx0KTtmb3IobiBpbiBlKWgoZSxuKSYmKG8odFtuXSkmJm8oZVtuXSk/KHJbbl09e30sZihyW25dLHRbbl0pLGYocltuXSxlW25dKSk6bnVsbCE9ZVtuXT9yW25dPWVbbl06ZGVsZXRlIHJbbl0pO2ZvcihuIGluIHQpaCh0LG4pJiYhaChlLG4pJiZvKHRbbl0pJiYocltuXT1mKHt9LHJbbl0pKTtyZXR1cm4gcn1mdW5jdGlvbiBPKHQpe251bGwhPXQmJnRoaXMuc2V0KHQpfWkuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPSExLGkuZGVwcmVjYXRpb25IYW5kbGVyPW51bGwsUz1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2ZvcihlIGluIHQpaCh0LGUpJiZuLnB1c2goZSk7cmV0dXJuIG59O3ZhciBCPXt9O2Z1bmN0aW9uIEwodCxlKXt2YXIgbj10LnRvTG93ZXJDYXNlKCk7QltuXT1CW24rInMiXT1CW2VdPXR9ZnVuY3Rpb24gSSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/Qlt0XXx8Qlt0LnRvTG93ZXJDYXNlKCldOnZvaWQgMH1mdW5jdGlvbiBSKHQpe3ZhciBlLG4scj17fTtmb3IobiBpbiB0KWgodCxuKSYmKGU9SShuKSkmJihyW2VdPXRbbl0pO3JldHVybiByfXZhciBGPXt9O2Z1bmN0aW9uIFAodCxlKXtGW3RdPWV9ZnVuY3Rpb24gaih0LGUsbil7dmFyIHI9IiIrTWF0aC5hYnModCksaT1lLXIubGVuZ3RoO3JldHVybigwPD10P24/IisiOiIiOiItIikrTWF0aC5wb3coMTAsTWF0aC5tYXgoMCxpKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrcn12YXIgWT0vKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyx6PS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFU9e30scT17fTtmdW5jdGlvbiBIKHQsZSxuLHIpe3ZhciBpPXI7InN0cmluZyI9PXR5cGVvZiByJiYoaT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3JdKCl9KSx0JiYocVt0XT1pKSxlJiYocVtlWzBdXT1mdW5jdGlvbigpe3JldHVybiBqKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGVbMV0sZVsyXSl9KSxuJiYocVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQpfSl9ZnVuY3Rpb24gJCh0LGUpe3JldHVybiB0LmlzVmFsaWQoKT8oZT1XKGUsdC5sb2NhbGVEYXRhKCkpLFVbZV09VVtlXXx8ZnVuY3Rpb24odCl7dmFyIGUsbixyLGk9dC5tYXRjaChZKTtmb3IoZT0wLG49aS5sZW5ndGg7ZTxuO2UrKylxW2lbZV1dP2lbZV09cVtpW2VdXTppW2VdPShyPWlbZV0pLm1hdGNoKC9cW1tcc1xTXS8pP3IucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTpyLnJlcGxhY2UoL1xcL2csIiIpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixhPSIiO2ZvcihyPTA7cjxuO3IrKylhKz1OKGlbcl0pP2lbcl0uY2FsbChlLHQpOmlbcl07cmV0dXJuIGF9fShlKSxVW2VdKHQpKTp0LmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIFcodCxlKXt2YXIgbj01O2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUubG9uZ0RhdGVGb3JtYXQodCl8fHR9Zm9yKHoubGFzdEluZGV4PTA7MDw9biYmei50ZXN0KHQpOyl0PXQucmVwbGFjZSh6LHIpLHoubGFzdEluZGV4PTAsbi09MTtyZXR1cm4gdH12YXIgVj0vXGQvLEc9L1xkXGQvLFg9L1xkezN9LyxaPS9cZHs0fS8sUT0vWystXT9cZHs2fS8sSz0vXGRcZD8vLEo9L1xkXGRcZFxkPy8sdHQ9L1xkXGRcZFxkXGRcZD8vLGV0PS9cZHsxLDN9LyxudD0vXGR7MSw0fS8scnQ9L1srLV0/XGR7MSw2fS8saXQ9L1xkKy8sYXQ9L1srLV0/XGQrLyxvdD0vWnxbKy1dXGRcZDo/XGRcZC9naSxzdD0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpLGN0PS9bMC05XXswLDI1Nn1bJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGMDdcdUZGMTAtXHVGRkVGXXsxLDI1Nn18W1x1MDYwMC1cdTA2RkZcL117MSwyNTZ9KFxzKj9bXHUwNjAwLVx1MDZGRl17MSwyNTZ9KXsxLDJ9L2ksdXQ9e307ZnVuY3Rpb24gbHQodCxlLG4pe3V0W3RdPU4oZSk/ZTpmdW5jdGlvbih0LHIpe3JldHVybiB0JiZuP246ZX19ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gaCh1dCx0KT91dFt0XShlLl9zdHJpY3QsZS5fbG9jYWxlKTpuZXcgUmVnRXhwKGZ0KHQucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csKGZ1bmN0aW9uKHQsZSxuLHIsaSl7cmV0dXJuIGV8fG58fHJ8fGl9KSkpKX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfXZhciBkdD17fTtmdW5jdGlvbiBwdCh0LGUpe3ZhciBuLHI9ZTtmb3IoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLGMoZSkmJihyPWZ1bmN0aW9uKHQsbil7bltlXT1rKHQpfSksbj0wO248dC5sZW5ndGg7bisrKWR0W3Rbbl1dPXJ9ZnVuY3Rpb24geXQodCxlKXtwdCh0LChmdW5jdGlvbih0LG4scixpKXtyLl93PXIuX3d8fHt9LGUodCxyLl93LHIsaSl9KSl9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIG10KHQpPzM2NjozNjV9ZnVuY3Rpb24gbXQodCl7cmV0dXJuIHQlND09MCYmdCUxMDAhPTB8fHQlNDAwPT0wfUgoIlkiLDAsMCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLnllYXIoKTtyZXR1cm4gdDw9OTk5OT8iIit0OiIrIit0fSkpLEgoMCxbIllZIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLnllYXIoKSUxMDB9KSksSCgwLFsiWVlZWSIsNF0sMCwieWVhciIpLEgoMCxbIllZWVlZIiw1XSwwLCJ5ZWFyIiksSCgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksTCgieWVhciIsInkiKSxQKCJ5ZWFyIiwxKSxsdCgiWSIsYXQpLGx0KCJZWSIsSyxHKSxsdCgiWVlZWSIsbnQsWiksbHQoIllZWVlZIixydCxRKSxsdCgiWVlZWVlZIixydCxRKSxwdChbIllZWVlZIiwiWVlZWVlZIl0sMCkscHQoIllZWVkiLChmdW5jdGlvbih0LGUpe2VbMF09Mj09PXQubGVuZ3RoP2kucGFyc2VUd29EaWdpdFllYXIodCk6ayh0KX0pKSxwdCgiWVkiLChmdW5jdGlvbih0LGUpe2VbMF09aS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pKSxwdCgiWSIsKGZ1bmN0aW9uKHQsZSl7ZVswXT1wYXJzZUludCh0LDEwKX0pKSxpLnBhcnNlVHdvRGlnaXRZZWFyPWZ1bmN0aW9uKHQpe3JldHVybiBrKHQpKyg2ODxrKHQpPzE5MDA6MmUzKX07dmFyIHZ0LGJ0PV90KCJGdWxsWWVhciIsITApO2Z1bmN0aW9uIF90KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uPyh3dCh0aGlzLHQsbiksaS51cGRhdGVPZmZzZXQodGhpcyxlKSx0aGlzKTp4dCh0aGlzLHQpfX1mdW5jdGlvbiB4dCh0LGUpe3JldHVybiB0LmlzVmFsaWQoKT90Ll9kWyJnZXQiKyh0Ll9pc1VUQz8iVVRDIjoiIikrZV0oKTpOYU59ZnVuY3Rpb24gd3QodCxlLG4pe3QuaXNWYWxpZCgpJiYhaXNOYU4obikmJigiRnVsbFllYXIiPT09ZSYmbXQodC55ZWFyKCkpJiYxPT09dC5tb250aCgpJiYyOT09PXQuZGF0ZSgpP3QuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXShuLHQubW9udGgoKSxrdChuLHQubW9udGgoKSkpOnQuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXShuKSl9ZnVuY3Rpb24ga3QodCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpcmV0dXJuIE5hTjt2YXIgbj0oZSUxMisxMiklMTI7cmV0dXJuIHQrPShlLW4pLzEyLDE9PT1uP210KHQpPzI5OjI4OjMxLW4lNyUyfXZ0PUFycmF5LnByb3RvdHlwZS5pbmRleE9mP0FycmF5LnByb3RvdHlwZS5pbmRleE9mOmZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPTA7ZTx0aGlzLmxlbmd0aDsrK2UpaWYodGhpc1tlXT09PXQpcmV0dXJuIGU7cmV0dXJuLTF9LEgoIk0iLFsiTU0iLDJdLCJNbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSkpLEgoIk1NTSIsMCwwLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx0KX0pKSxIKCJNTU1NIiwwLDAsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcyx0KX0pKSxMKCJtb250aCIsIk0iKSxQKCJtb250aCIsOCksbHQoIk0iLEspLGx0KCJNTSIsSyxHKSxsdCgiTU1NIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5tb250aHNTaG9ydFJlZ2V4KHQpfSkpLGx0KCJNTU1NIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5tb250aHNSZWdleCh0KX0pKSxwdChbIk0iLCJNTSJdLChmdW5jdGlvbih0LGUpe2VbMV09ayh0KS0xfSkpLHB0KFsiTU1NIiwiTU1NTSJdLChmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1uLl9sb2NhbGUubW9udGhzUGFyc2UodCxyLG4uX3N0cmljdCk7bnVsbCE9aT9lWzFdPWk6cChuKS5pbnZhbGlkTW9udGg9dH0pKTt2YXIgVHQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/LyxFdD0iSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxDdD0iSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIik7ZnVuY3Rpb24gU3QodCxlKXt2YXIgbjtpZighdC5pc1ZhbGlkKCkpcmV0dXJuIHQ7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlmKC9eXGQrJC8udGVzdChlKSllPWsoZSk7ZWxzZSBpZighYyhlPXQubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKGUpKSlyZXR1cm4gdDtyZXR1cm4gbj1NYXRoLm1pbih0LmRhdGUoKSxrdCh0LnllYXIoKSxlKSksdC5fZFsic2V0IisodC5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKGUsbiksdH1mdW5jdGlvbiBBdCh0KXtyZXR1cm4gbnVsbCE9dD8oU3QodGhpcyx0KSxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTp4dCh0aGlzLCJNb250aCIpfXZhciBNdD1jdCxOdD1jdDtmdW5jdGlvbiBEdCgpe2Z1bmN0aW9uIHQodCxlKXtyZXR1cm4gZS5sZW5ndGgtdC5sZW5ndGh9dmFyIGUsbixyPVtdLGk9W10sYT1bXTtmb3IoZT0wO2U8MTI7ZSsrKW49ZChbMmUzLGVdKSxyLnB1c2godGhpcy5tb250aHNTaG9ydChuLCIiKSksaS5wdXNoKHRoaXMubW9udGhzKG4sIiIpKSxhLnB1c2godGhpcy5tb250aHMobiwiIikpLGEucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG4sIiIpKTtmb3Ioci5zb3J0KHQpLGkuc29ydCh0KSxhLnNvcnQodCksZT0wO2U8MTI7ZSsrKXJbZV09ZnQocltlXSksaVtlXT1mdChpW2VdKTtmb3IoZT0wO2U8MjQ7ZSsrKWFbZV09ZnQoYVtlXSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK2Euam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9dGhpcy5fbW9udGhzUmVnZXgsdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2kuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Iuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIE90KHQpe3ZhciBlO2lmKHQ8MTAwJiYwPD10KXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO25bMF09dCs0MDAsZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLG4pKSxpc0Zpbml0ZShlLmdldFVUQ0Z1bGxZZWFyKCkpJiZlLnNldFVUQ0Z1bGxZZWFyKHQpfWVsc2UgZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpO3JldHVybiBlfWZ1bmN0aW9uIEJ0KHQsZSxuKXt2YXIgcj03K2UtbjtyZXR1cm4tKDcrT3QodCwwLHIpLmdldFVUQ0RheSgpLWUpJTcrci0xfWZ1bmN0aW9uIEx0KHQsZSxuLHIsaSl7dmFyIGEsbyxzPTErNyooZS0xKSsoNytuLXIpJTcrQnQodCxyLGkpO3JldHVybiBvPXM8PTA/Z3QoYT10LTEpK3M6cz5ndCh0KT8oYT10KzEscy1ndCh0KSk6KGE9dCxzKSx7eWVhcjphLGRheU9mWWVhcjpvfX1mdW5jdGlvbiBJdCh0LGUsbil7dmFyIHIsaSxhPUJ0KHQueWVhcigpLGUsbiksbz1NYXRoLmZsb29yKCh0LmRheU9mWWVhcigpLWEtMSkvNykrMTtyZXR1cm4gbzwxP3I9bytSdChpPXQueWVhcigpLTEsZSxuKTpvPlJ0KHQueWVhcigpLGUsbik/KHI9by1SdCh0LnllYXIoKSxlLG4pLGk9dC55ZWFyKCkrMSk6KGk9dC55ZWFyKCkscj1vKSx7d2VlazpyLHllYXI6aX19ZnVuY3Rpb24gUnQodCxlLG4pe3ZhciByPUJ0KHQsZSxuKSxpPUJ0KHQrMSxlLG4pO3JldHVybihndCh0KS1yK2kpLzd9ZnVuY3Rpb24gRnQodCxlKXtyZXR1cm4gdC5zbGljZShlLDcpLmNvbmNhdCh0LnNsaWNlKDAsZSkpfUgoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxIKCJXIixbIldXIiwyXSwiV28iLCJpc29XZWVrIiksTCgid2VlayIsInciKSxMKCJpc29XZWVrIiwiVyIpLFAoIndlZWsiLDUpLFAoImlzb1dlZWsiLDUpLGx0KCJ3IixLKSxsdCgid3ciLEssRyksbHQoIlciLEspLGx0KCJXVyIsSyxHKSx5dChbInciLCJ3dyIsIlciLCJXVyJdLChmdW5jdGlvbih0LGUsbixyKXtlW3Iuc3Vic3RyKDAsMSldPWsodCl9KSksSCgiZCIsMCwiZG8iLCJkYXkiKSxIKCJkZCIsMCwwLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyx0KX0pKSxIKCJkZGQiLDAsMCwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyx0KX0pKSxIKCJkZGRkIiwwLDAsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLHQpfSkpLEgoImUiLDAsMCwid2Vla2RheSIpLEgoIkUiLDAsMCwiaXNvV2Vla2RheSIpLEwoImRheSIsImQiKSxMKCJ3ZWVrZGF5IiwiZSIpLEwoImlzb1dlZWtkYXkiLCJFIiksUCgiZGF5IiwxMSksUCgid2Vla2RheSIsMTEpLFAoImlzb1dlZWtkYXkiLDExKSxsdCgiZCIsSyksbHQoImUiLEspLGx0KCJFIixLKSxsdCgiZGQiLChmdW5jdGlvbih0LGUpe3JldHVybiBlLndlZWtkYXlzTWluUmVnZXgodCl9KSksbHQoImRkZCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUud2Vla2RheXNTaG9ydFJlZ2V4KHQpfSkpLGx0KCJkZGRkIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS53ZWVrZGF5c1JlZ2V4KHQpfSkpLHl0KFsiZGQiLCJkZGQiLCJkZGRkIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPW4uX2xvY2FsZS53ZWVrZGF5c1BhcnNlKHQscixuLl9zdHJpY3QpO251bGwhPWk/ZS5kPWk6cChuKS5pbnZhbGlkV2Vla2RheT10fSkpLHl0KFsiZCIsImUiLCJFIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe2Vbcl09ayh0KX0pKTt2YXIgUHQ9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLGp0PSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksWXQ9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLHp0PWN0LFV0PWN0LHF0PWN0O2Z1bmN0aW9uIEh0KCl7ZnVuY3Rpb24gdCh0LGUpe3JldHVybiBlLmxlbmd0aC10Lmxlbmd0aH12YXIgZSxuLHIsaSxhLG89W10scz1bXSxjPVtdLHU9W107Zm9yKGU9MDtlPDc7ZSsrKW49ZChbMmUzLDFdKS5kYXkoZSkscj10aGlzLndlZWtkYXlzTWluKG4sIiIpLGk9dGhpcy53ZWVrZGF5c1Nob3J0KG4sIiIpLGE9dGhpcy53ZWVrZGF5cyhuLCIiKSxvLnB1c2gocikscy5wdXNoKGkpLGMucHVzaChhKSx1LnB1c2gociksdS5wdXNoKGkpLHUucHVzaChhKTtmb3Ioby5zb3J0KHQpLHMuc29ydCh0KSxjLnNvcnQodCksdS5zb3J0KHQpLGU9MDtlPDc7ZSsrKXNbZV09ZnQoc1tlXSksY1tlXT1mdChjW2VdKSx1W2VdPWZ0KHVbZV0pO3RoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Uuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitjLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Muam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK28uam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uICR0KCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9ZnVuY3Rpb24gV3QodCxlKXtIKHQsMCwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksZSl9KSl9ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gZS5fbWVyaWRpZW1QYXJzZX1IKCJIIixbIkhIIiwyXSwwLCJob3VyIiksSCgiaCIsWyJoaCIsMl0sMCwkdCksSCgiayIsWyJrayIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH0pKSxIKCJobW0iLDAsMCwoZnVuY3Rpb24oKXtyZXR1cm4iIiskdC5hcHBseSh0aGlzKStqKHRoaXMubWludXRlcygpLDIpfSkpLEgoImhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrJHQuYXBwbHkodGhpcykraih0aGlzLm1pbnV0ZXMoKSwyKStqKHRoaXMuc2Vjb25kcygpLDIpfSkpLEgoIkhtbSIsMCwwLChmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStqKHRoaXMubWludXRlcygpLDIpfSkpLEgoIkhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5ob3VycygpK2oodGhpcy5taW51dGVzKCksMikraih0aGlzLnNlY29uZHMoKSwyKX0pKSxXdCgiYSIsITApLFd0KCJBIiwhMSksTCgiaG91ciIsImgiKSxQKCJob3VyIiwxMyksbHQoImEiLFZ0KSxsdCgiQSIsVnQpLGx0KCJIIixLKSxsdCgiaCIsSyksbHQoImsiLEspLGx0KCJISCIsSyxHKSxsdCgiaGgiLEssRyksbHQoImtrIixLLEcpLGx0KCJobW0iLEopLGx0KCJobW1zcyIsdHQpLGx0KCJIbW0iLEopLGx0KCJIbW1zcyIsdHQpLHB0KFsiSCIsIkhIIl0sMykscHQoWyJrIiwia2siXSwoZnVuY3Rpb24odCxlLG4pe3ZhciByPWsodCk7ZVszXT0yND09PXI/MDpyfSkpLHB0KFsiYSIsIkEiXSwoZnVuY3Rpb24odCxlLG4pe24uX2lzUG09bi5fbG9jYWxlLmlzUE0odCksbi5fbWVyaWRpZW09dH0pKSxwdChbImgiLCJoaCJdLChmdW5jdGlvbih0LGUsbil7ZVszXT1rKHQpLHAobikuYmlnSG91cj0hMH0pKSxwdCgiaG1tIiwoZnVuY3Rpb24odCxlLG4pe3ZhciByPXQubGVuZ3RoLTI7ZVszXT1rKHQuc3Vic3RyKDAscikpLGVbNF09ayh0LnN1YnN0cihyKSkscChuKS5iaWdIb3VyPSEwfSkpLHB0KCJobW1zcyIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10Lmxlbmd0aC00LGk9dC5sZW5ndGgtMjtlWzNdPWsodC5zdWJzdHIoMCxyKSksZVs0XT1rKHQuc3Vic3RyKHIsMikpLGVbNV09ayh0LnN1YnN0cihpKSkscChuKS5iaWdIb3VyPSEwfSkpLHB0KCJIbW0iLChmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5sZW5ndGgtMjtlWzNdPWsodC5zdWJzdHIoMCxyKSksZVs0XT1rKHQuc3Vic3RyKHIpKX0pKSxwdCgiSG1tc3MiLChmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5sZW5ndGgtNCxpPXQubGVuZ3RoLTI7ZVszXT1rKHQuc3Vic3RyKDAscikpLGVbNF09ayh0LnN1YnN0cihyLDIpKSxlWzVdPWsodC5zdWJzdHIoaSkpfSkpO3ZhciBHdCxYdD1fdCgiSG91cnMiLCEwKSxadD17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sbW9udGhzOkV0LG1vbnRoc1Nob3J0OkN0LHdlZWs6e2RvdzowLGRveTo2fSx3ZWVrZGF5czpQdCx3ZWVrZGF5c01pbjpZdCx3ZWVrZGF5c1Nob3J0Omp0LG1lcmlkaWVtUGFyc2U6L1thcF1cLj9tP1wuPy9pfSxRdD17fSxLdD17fTtmdW5jdGlvbiBKdCh0KXtyZXR1cm4gdD90LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTp0fWZ1bmN0aW9uIHRlKGUpe3ZhciByPW51bGw7aWYoIVF0W2VdJiZ0JiZ0LmV4cG9ydHMpdHJ5e3I9R3QuX2FiYnIsbigxNzQ4KSgiLi8iK2UpLGVlKHIpfWNhdGNoKGUpe31yZXR1cm4gUXRbZV19ZnVuY3Rpb24gZWUodCxlKXt2YXIgbjtyZXR1cm4gdCYmKChuPXMoZSk/cmUodCk6bmUodCxlKSk/R3Q9bjoidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2NhbGUgIit0KyIgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PyIpKSxHdC5fYWJicn1mdW5jdGlvbiBuZSh0LGUpe2lmKG51bGw9PT1lKXJldHVybiBkZWxldGUgUXRbdF0sbnVsbDt2YXIgbixyPVp0O2lmKGUuYWJicj10LG51bGwhPVF0W3RdKU0oImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIikscj1RdFt0XS5fY29uZmlnO2Vsc2UgaWYobnVsbCE9ZS5wYXJlbnRMb2NhbGUpaWYobnVsbCE9UXRbZS5wYXJlbnRMb2NhbGVdKXI9UXRbZS5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0obj10ZShlLnBhcmVudExvY2FsZSkpKXJldHVybiBLdFtlLnBhcmVudExvY2FsZV18fChLdFtlLnBhcmVudExvY2FsZV09W10pLEt0W2UucGFyZW50TG9jYWxlXS5wdXNoKHtuYW1lOnQsY29uZmlnOmV9KSxudWxsO3I9bi5fY29uZmlnfXJldHVybiBRdFt0XT1uZXcgTyhEKHIsZSkpLEt0W3RdJiZLdFt0XS5mb3JFYWNoKChmdW5jdGlvbih0KXtuZSh0Lm5hbWUsdC5jb25maWcpfSkpLGVlKHQpLFF0W3RdfWZ1bmN0aW9uIHJlKHQpe3ZhciBlO2lmKHQmJnQuX2xvY2FsZSYmdC5fbG9jYWxlLl9hYmJyJiYodD10Ll9sb2NhbGUuX2FiYnIpLCF0KXJldHVybiBHdDtpZighYSh0KSl7aWYoZT10ZSh0KSlyZXR1cm4gZTt0PVt0XX1yZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scixpLGE9MDthPHQubGVuZ3RoOyl7Zm9yKGU9KGk9SnQodFthXSkuc3BsaXQoIi0iKSkubGVuZ3RoLG49KG49SnQodFthKzFdKSk/bi5zcGxpdCgiLSIpOm51bGw7MDxlOyl7aWYocj10ZShpLnNsaWNlKDAsZSkuam9pbigiLSIpKSlyZXR1cm4gcjtpZihuJiZuLmxlbmd0aD49ZSYmVChpLG4sITApPj1lLTEpYnJlYWs7ZS0tfWErK31yZXR1cm4gR3R9KHQpfWZ1bmN0aW9uIGllKHQpe3ZhciBlLG49dC5fYTtyZXR1cm4gbiYmLTI9PT1wKHQpLm92ZXJmbG93JiYoZT1uWzFdPDB8fDExPG5bMV0/MTpuWzJdPDF8fG5bMl0+a3QoblswXSxuWzFdKT8yOm5bM108MHx8MjQ8blszXXx8MjQ9PT1uWzNdJiYoMCE9PW5bNF18fDAhPT1uWzVdfHwwIT09bls2XSk/MzpuWzRdPDB8fDU5PG5bNF0/NDpuWzVdPDB8fDU5PG5bNV0/NTpuWzZdPDB8fDk5OTxuWzZdPzY6LTEscCh0KS5fb3ZlcmZsb3dEYXlPZlllYXImJihlPDB8fDI8ZSkmJihlPTIpLHAodCkuX292ZXJmbG93V2Vla3MmJi0xPT09ZSYmKGU9NykscCh0KS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PWUmJihlPTgpLHAodCkub3ZlcmZsb3c9ZSksdH1mdW5jdGlvbiBhZSh0LGUsbil7cmV0dXJuIG51bGwhPXQ/dDpudWxsIT1lP2U6bn1mdW5jdGlvbiBvZSh0KXt2YXIgZSxuLHIsYSxvLHM9W107aWYoIXQuX2Qpe3ZhciBjLHU7Zm9yKGM9dCx1PW5ldyBEYXRlKGkubm93KCkpLHI9Yy5fdXNlVVRDP1t1LmdldFVUQ0Z1bGxZZWFyKCksdS5nZXRVVENNb250aCgpLHUuZ2V0VVRDRGF0ZSgpXTpbdS5nZXRGdWxsWWVhcigpLHUuZ2V0TW9udGgoKSx1LmdldERhdGUoKV0sdC5fdyYmbnVsbD09dC5fYVsyXSYmbnVsbD09dC5fYVsxXSYmZnVuY3Rpb24odCl7dmFyIGUsbixyLGksYSxvLHMsYztpZihudWxsIT0oZT10Ll93KS5HR3x8bnVsbCE9ZS5XfHxudWxsIT1lLkUpYT0xLG89NCxuPWFlKGUuR0csdC5fYVswXSxJdChfZSgpLDEsNCkueWVhcikscj1hZShlLlcsMSksKChpPWFlKGUuRSwxKSk8MXx8NzxpKSYmKGM9ITApO2Vsc2V7YT10Ll9sb2NhbGUuX3dlZWsuZG93LG89dC5fbG9jYWxlLl93ZWVrLmRveTt2YXIgdT1JdChfZSgpLGEsbyk7bj1hZShlLmdnLHQuX2FbMF0sdS55ZWFyKSxyPWFlKGUudyx1LndlZWspLG51bGwhPWUuZD8oKGk9ZS5kKTwwfHw2PGkpJiYoYz0hMCk6bnVsbCE9ZS5lPyhpPWUuZSthLChlLmU8MHx8NjxlLmUpJiYoYz0hMCkpOmk9YX1yPDF8fHI+UnQobixhLG8pP3AodCkuX292ZXJmbG93V2Vla3M9ITA6bnVsbCE9Yz9wKHQpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KHM9THQobixyLGksYSxvKSx0Ll9hWzBdPXMueWVhcix0Ll9kYXlPZlllYXI9cy5kYXlPZlllYXIpfSh0KSxudWxsIT10Ll9kYXlPZlllYXImJihvPWFlKHQuX2FbMF0sclswXSksKHQuX2RheU9mWWVhcj5ndChvKXx8MD09PXQuX2RheU9mWWVhcikmJihwKHQpLl9vdmVyZmxvd0RheU9mWWVhcj0hMCksbj1PdChvLDAsdC5fZGF5T2ZZZWFyKSx0Ll9hWzFdPW4uZ2V0VVRDTW9udGgoKSx0Ll9hWzJdPW4uZ2V0VVRDRGF0ZSgpKSxlPTA7ZTwzJiZudWxsPT10Ll9hW2VdOysrZSl0Ll9hW2VdPXNbZV09cltlXTtmb3IoO2U8NztlKyspdC5fYVtlXT1zW2VdPW51bGw9PXQuX2FbZV0/Mj09PWU/MTowOnQuX2FbZV07MjQ9PT10Ll9hWzNdJiYwPT09dC5fYVs0XSYmMD09PXQuX2FbNV0mJjA9PT10Ll9hWzZdJiYodC5fbmV4dERheT0hMCx0Ll9hWzNdPTApLHQuX2Q9KHQuX3VzZVVUQz9PdDpmdW5jdGlvbih0LGUsbixyLGksYSxvKXt2YXIgcztyZXR1cm4gdDwxMDAmJjA8PXQ/KHM9bmV3IERhdGUodCs0MDAsZSxuLHIsaSxhLG8pLGlzRmluaXRlKHMuZ2V0RnVsbFllYXIoKSkmJnMuc2V0RnVsbFllYXIodCkpOnM9bmV3IERhdGUodCxlLG4scixpLGEsbyksc30pLmFwcGx5KG51bGwscyksYT10Ll91c2VVVEM/dC5fZC5nZXRVVENEYXkoKTp0Ll9kLmdldERheSgpLG51bGwhPXQuX3R6bSYmdC5fZC5zZXRVVENNaW51dGVzKHQuX2QuZ2V0VVRDTWludXRlcygpLXQuX3R6bSksdC5fbmV4dERheSYmKHQuX2FbM109MjQpLHQuX3cmJnZvaWQgMCE9PXQuX3cuZCYmdC5fdy5kIT09YSYmKHAodCkud2Vla2RheU1pc21hdGNoPSEwKX19dmFyIHNlPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLGNlPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyx1ZT0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/LyxsZT1bWyJZWVlZWVktTU0tREQiLC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0vXSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1XXGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dXSxoZT1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxmZT0vXlwvP0RhdGVcKChcLT9cZCspL2k7ZnVuY3Rpb24gZGUodCl7dmFyIGUsbixyLGksYSxvLHM9dC5faSxjPXNlLmV4ZWMocyl8fGNlLmV4ZWMocyk7aWYoYyl7Zm9yKHAodCkuaXNvPSEwLGU9MCxuPWxlLmxlbmd0aDtlPG47ZSsrKWlmKGxlW2VdWzFdLmV4ZWMoY1sxXSkpe2k9bGVbZV1bMF0scj0hMSE9PWxlW2VdWzJdO2JyZWFrfWlmKG51bGw9PWkpcmV0dXJuIHZvaWQodC5faXNWYWxpZD0hMSk7aWYoY1szXSl7Zm9yKGU9MCxuPWhlLmxlbmd0aDtlPG47ZSsrKWlmKGhlW2VdWzFdLmV4ZWMoY1szXSkpe2E9KGNbMl18fCIgIikraGVbZV1bMF07YnJlYWt9aWYobnVsbD09YSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKX1pZighciYmbnVsbCE9YSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKTtpZihjWzRdKXtpZighdWUuZXhlYyhjWzRdKSlyZXR1cm4gdm9pZCh0Ll9pc1ZhbGlkPSExKTtvPSJaIn10Ll9mPWkrKGF8fCIiKSsob3x8IiIpLG1lKHQpfWVsc2UgdC5faXNWYWxpZD0hMX12YXIgcGU9L14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XHMpPyhcZHsxLDJ9KVxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxzKFxkezIsNH0pXHMoXGRcZCk6KFxkXGQpKD86OihcZFxkKSk/XHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cZHs0fSkpJC87dmFyIHllPXtVVDowLEdNVDowLEVEVDotMjQwLEVTVDotMzAwLENEVDotMzAwLENTVDotMzYwLE1EVDotMzYwLE1TVDotNDIwLFBEVDotNDIwLFBTVDotNDgwfTtmdW5jdGlvbiBnZSh0KXt2YXIgZSxuLHIsaT1wZS5leGVjKHQuX2kucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxzXHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIikpO2lmKGkpe3ZhciBhPWZ1bmN0aW9uKHQsZSxuLHIsaSxhKXt2YXIgbz1bZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7cmV0dXJuIGU8PTQ5PzJlMytlOmU8PTk5OT8xOTAwK2U6ZX0odCksQ3QuaW5kZXhPZihlKSxwYXJzZUludChuLDEwKSxwYXJzZUludChyLDEwKSxwYXJzZUludChpLDEwKV07cmV0dXJuIGEmJm8ucHVzaChwYXJzZUludChhLDEwKSksb30oaVs0XSxpWzNdLGlbMl0saVs1XSxpWzZdLGlbN10pO2lmKG49YSxyPXQsKGU9aVsxXSkmJmp0LmluZGV4T2YoZSkhPT1uZXcgRGF0ZShuWzBdLG5bMV0sblsyXSkuZ2V0RGF5KCkmJihwKHIpLndlZWtkYXlNaXNtYXRjaD0hMCwhKHIuX2lzVmFsaWQ9ITEpKSlyZXR1cm47dC5fYT1hLHQuX3R6bT1mdW5jdGlvbih0LGUsbil7aWYodClyZXR1cm4geWVbdF07aWYoZSlyZXR1cm4gMDt2YXIgcj1wYXJzZUludChuLDEwKSxpPXIlMTAwO3JldHVybihyLWkpLzEwMCo2MCtpfShpWzhdLGlbOV0saVsxMF0pLHQuX2Q9T3QuYXBwbHkobnVsbCx0Ll9hKSx0Ll9kLnNldFVUQ01pbnV0ZXModC5fZC5nZXRVVENNaW51dGVzKCktdC5fdHptKSxwKHQpLnJmYzI4MjI9ITB9ZWxzZSB0Ll9pc1ZhbGlkPSExfWZ1bmN0aW9uIG1lKHQpe2lmKHQuX2YhPT1pLklTT184NjAxKWlmKHQuX2YhPT1pLlJGQ18yODIyKXt0Ll9hPVtdLHAodCkuZW1wdHk9ITA7dmFyIGUsbixyLGEsbyxzLGMsdSxsPSIiK3QuX2ksZj1sLmxlbmd0aCxkPTA7Zm9yKHI9Vyh0Ll9mLHQuX2xvY2FsZSkubWF0Y2goWSl8fFtdLGU9MDtlPHIubGVuZ3RoO2UrKylhPXJbZV0sKG49KGwubWF0Y2goaHQoYSx0KSl8fFtdKVswXSkmJigwPChvPWwuc3Vic3RyKDAsbC5pbmRleE9mKG4pKSkubGVuZ3RoJiZwKHQpLnVudXNlZElucHV0LnB1c2gobyksbD1sLnNsaWNlKGwuaW5kZXhPZihuKStuLmxlbmd0aCksZCs9bi5sZW5ndGgpLHFbYV0/KG4/cCh0KS5lbXB0eT0hMTpwKHQpLnVudXNlZFRva2Vucy5wdXNoKGEpLHM9YSx1PXQsbnVsbCE9KGM9bikmJmgoZHQscykmJmR0W3NdKGMsdS5fYSx1LHMpKTp0Ll9zdHJpY3QmJiFuJiZwKHQpLnVudXNlZFRva2Vucy5wdXNoKGEpO3AodCkuY2hhcnNMZWZ0T3Zlcj1mLWQsMDxsLmxlbmd0aCYmcCh0KS51bnVzZWRJbnB1dC5wdXNoKGwpLHQuX2FbM108PTEyJiYhMD09PXAodCkuYmlnSG91ciYmMDx0Ll9hWzNdJiYocCh0KS5iaWdIb3VyPXZvaWQgMCkscCh0KS5wYXJzZWREYXRlUGFydHM9dC5fYS5zbGljZSgwKSxwKHQpLm1lcmlkaWVtPXQuX21lcmlkaWVtLHQuX2FbM109ZnVuY3Rpb24odCxlLG4pe3ZhciByO3JldHVybiBudWxsPT1uP2U6bnVsbCE9dC5tZXJpZGllbUhvdXI/dC5tZXJpZGllbUhvdXIoZSxuKToobnVsbCE9dC5pc1BNJiYoKHI9dC5pc1BNKG4pKSYmZTwxMiYmKGUrPTEyKSxyfHwxMiE9PWV8fChlPTApKSxlKX0odC5fbG9jYWxlLHQuX2FbM10sdC5fbWVyaWRpZW0pLG9lKHQpLGllKHQpfWVsc2UgZ2UodCk7ZWxzZSBkZSh0KX1mdW5jdGlvbiB2ZSh0KXt2YXIgZSxuLHIsaCxkPXQuX2ksbT10Ll9mO3JldHVybiB0Ll9sb2NhbGU9dC5fbG9jYWxlfHxyZSh0Ll9sKSxudWxsPT09ZHx8dm9pZCAwPT09bSYmIiI9PT1kP2coe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIGQmJih0Ll9pPWQ9dC5fbG9jYWxlLnByZXBhcnNlKGQpKSx4KGQpP25ldyBfKGllKGQpKToodShkKT90Ll9kPWQ6YShtKT9mdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxhO2lmKDA9PT10Ll9mLmxlbmd0aClyZXR1cm4gcCh0KS5pbnZhbGlkRm9ybWF0PSEwLHQuX2Q9bmV3IERhdGUoTmFOKTtmb3IoaT0wO2k8dC5fZi5sZW5ndGg7aSsrKWE9MCxlPXYoe30sdCksbnVsbCE9dC5fdXNlVVRDJiYoZS5fdXNlVVRDPXQuX3VzZVVUQyksZS5fZj10Ll9mW2ldLG1lKGUpLHkoZSkmJihhKz1wKGUpLmNoYXJzTGVmdE92ZXIsYSs9MTAqcChlKS51bnVzZWRUb2tlbnMubGVuZ3RoLHAoZSkuc2NvcmU9YSwobnVsbD09cnx8YTxyKSYmKHI9YSxuPWUpKTtmKHQsbnx8ZSl9KHQpOm0/bWUodCk6cyhuPShlPXQpLl9pKT9lLl9kPW5ldyBEYXRlKGkubm93KCkpOnUobik/ZS5fZD1uZXcgRGF0ZShuLnZhbHVlT2YoKSk6InN0cmluZyI9PXR5cGVvZiBuPyhyPWUsbnVsbD09PShoPWZlLmV4ZWMoci5faSkpPyhkZShyKSwhMT09PXIuX2lzVmFsaWQmJihkZWxldGUgci5faXNWYWxpZCxnZShyKSwhMT09PXIuX2lzVmFsaWQmJihkZWxldGUgci5faXNWYWxpZCxpLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHIpKSkpOnIuX2Q9bmV3IERhdGUoK2hbMV0pKTphKG4pPyhlLl9hPWwobi5zbGljZSgwKSwoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfSkpLG9lKGUpKTpvKG4pP2Z1bmN0aW9uKHQpe2lmKCF0Ll9kKXt2YXIgZT1SKHQuX2kpO3QuX2E9bChbZS55ZWFyLGUubW9udGgsZS5kYXl8fGUuZGF0ZSxlLmhvdXIsZS5taW51dGUsZS5zZWNvbmQsZS5taWxsaXNlY29uZF0sKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZwYXJzZUludCh0LDEwKX0pKSxvZSh0KX19KGUpOmMobik/ZS5fZD1uZXcgRGF0ZShuKTppLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGUpLHkodCl8fCh0Ll9kPW51bGwpLHQpKX1mdW5jdGlvbiBiZSh0LGUsbixyLGkpe3ZhciBzLGM9e307cmV0dXJuITAhPT1uJiYhMSE9PW58fChyPW4sbj12b2lkIDApLChvKHQpJiZmdW5jdGlvbih0KXtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gMD09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmxlbmd0aDt2YXIgZTtmb3IoZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuITE7cmV0dXJuITB9KHQpfHxhKHQpJiYwPT09dC5sZW5ndGgpJiYodD12b2lkIDApLGMuX2lzQU1vbWVudE9iamVjdD0hMCxjLl91c2VVVEM9Yy5faXNVVEM9aSxjLl9sPW4sYy5faT10LGMuX2Y9ZSxjLl9zdHJpY3Q9ciwocz1uZXcgXyhpZSh2ZShjKSkpKS5fbmV4dERheSYmKHMuYWRkKDEsImQiKSxzLl9uZXh0RGF5PXZvaWQgMCksc31mdW5jdGlvbiBfZSh0LGUsbixyKXtyZXR1cm4gYmUodCxlLG4sciwhMSl9aS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1DKCJ2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSBkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uIiwoZnVuY3Rpb24odCl7dC5fZD1uZXcgRGF0ZSh0Ll9pKyh0Ll91c2VVVEM/IiBVVEMiOiIiKSl9KSksaS5JU09fODYwMT1mdW5jdGlvbigpe30saS5SRkNfMjgyMj1mdW5jdGlvbigpe307dmFyIHhlPUMoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIiwoZnVuY3Rpb24oKXt2YXIgdD1fZS5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZ0LmlzVmFsaWQoKT90PHRoaXM/dGhpczp0OmcoKX0pKSx3ZT1DKCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsKGZ1bmN0aW9uKCl7dmFyIHQ9X2UuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCk/dGhpczx0P3RoaXM6dDpnKCl9KSk7ZnVuY3Rpb24ga2UodCxlKXt2YXIgbixyO2lmKDE9PT1lLmxlbmd0aCYmYShlWzBdKSYmKGU9ZVswXSksIWUubGVuZ3RoKXJldHVybiBfZSgpO2ZvcihuPWVbMF0scj0xO3I8ZS5sZW5ndGg7KytyKWVbcl0uaXNWYWxpZCgpJiYhZVtyXVt0XShuKXx8KG49ZVtyXSk7cmV0dXJuIG59dmFyIFRlPVsieWVhciIsInF1YXJ0ZXIiLCJtb250aCIsIndlZWsiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiXTtmdW5jdGlvbiBFZSh0KXt2YXIgZT1SKHQpLG49ZS55ZWFyfHwwLHI9ZS5xdWFydGVyfHwwLGk9ZS5tb250aHx8MCxhPWUud2Vla3x8ZS5pc29XZWVrfHwwLG89ZS5kYXl8fDAscz1lLmhvdXJ8fDAsYz1lLm1pbnV0ZXx8MCx1PWUuc2Vjb25kfHwwLGw9ZS5taWxsaXNlY29uZHx8MDt0aGlzLl9pc1ZhbGlkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KWlmKC0xPT09dnQuY2FsbChUZSxlKXx8bnVsbCE9dFtlXSYmaXNOYU4odFtlXSkpcmV0dXJuITE7Zm9yKHZhciBuPSExLHI9MDtyPFRlLmxlbmd0aDsrK3IpaWYodFtUZVtyXV0pe2lmKG4pcmV0dXJuITE7cGFyc2VGbG9hdCh0W1RlW3JdXSkhPT1rKHRbVGVbcl1dKSYmKG49ITApfXJldHVybiEwfShlKSx0aGlzLl9taWxsaXNlY29uZHM9K2wrMWUzKnUrNmU0KmMrMWUzKnMqNjAqNjAsdGhpcy5fZGF5cz0rbys3KmEsdGhpcy5fbW9udGhzPStpKzMqcisxMipuLHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPXJlKCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFZX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4gdDwwPy0xKk1hdGgucm91bmQoLTEqdCk6TWF0aC5yb3VuZCh0KX1mdW5jdGlvbiBBZSh0LGUpe0godCwwLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy51dGNPZmZzZXQoKSxuPSIrIjtyZXR1cm4gdDwwJiYodD0tdCxuPSItIiksbitqKH5+KHQvNjApLDIpK2Uraih+fnQlNjAsMil9KSl9QWUoIloiLCI6IiksQWUoIlpaIiwiIiksbHQoIloiLHN0KSxsdCgiWloiLHN0KSxwdChbIloiLCJaWiJdLChmdW5jdGlvbih0LGUsbil7bi5fdXNlVVRDPSEwLG4uX3R6bT1OZShzdCx0KX0pKTt2YXIgTWU9LyhbXCtcLV18XGRcZCkvZ2k7ZnVuY3Rpb24gTmUodCxlKXt2YXIgbj0oZXx8IiIpLm1hdGNoKHQpO2lmKG51bGw9PT1uKXJldHVybiBudWxsO3ZhciByPSgobltuLmxlbmd0aC0xXXx8W10pKyIiKS5tYXRjaChNZSl8fFsiLSIsMCwwXSxpPTYwKnJbMV0rayhyWzJdKTtyZXR1cm4gMD09PWk/MDoiKyI9PT1yWzBdP2k6LWl9ZnVuY3Rpb24gRGUodCxlKXt2YXIgbixyO3JldHVybiBlLl9pc1VUQz8obj1lLmNsb25lKCkscj0oeCh0KXx8dSh0KT90LnZhbHVlT2YoKTpfZSh0KS52YWx1ZU9mKCkpLW4udmFsdWVPZigpLG4uX2Quc2V0VGltZShuLl9kLnZhbHVlT2YoKStyKSxpLnVwZGF0ZU9mZnNldChuLCExKSxuKTpfZSh0KS5sb2NhbCgpfWZ1bmN0aW9uIE9lKHQpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0Ll9kLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfWZ1bmN0aW9uIEJlKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmdGhpcy5faXNVVEMmJjA9PT10aGlzLl9vZmZzZXR9aS51cGRhdGVPZmZzZXQ9ZnVuY3Rpb24oKXt9O3ZhciBMZT0vXihcLXxcKyk/KD86KFxkKilbLiBdKT8oXGQrKVw6KFxkKykoPzpcOihcZCspKFwuXGQqKT8pPyQvLEllPS9eKC18XCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztmdW5jdGlvbiBSZSh0LGUpe3ZhciBuLHIsaSxhPXQsbz1udWxsO3JldHVybiBDZSh0KT9hPXttczp0Ll9taWxsaXNlY29uZHMsZDp0Ll9kYXlzLE06dC5fbW9udGhzfTpjKHQpPyhhPXt9LGU/YVtlXT10OmEubWlsbGlzZWNvbmRzPXQpOihvPUxlLmV4ZWModCkpPyhuPSItIj09PW9bMV0/LTE6MSxhPXt5OjAsZDprKG9bMl0pKm4saDprKG9bM10pKm4sbTprKG9bNF0pKm4sczprKG9bNV0pKm4sbXM6ayhTZSgxZTMqb1s2XSkpKm59KToobz1JZS5leGVjKHQpKT8obj0iLSI9PT1vWzFdPy0xOjEsYT17eTpGZShvWzJdLG4pLE06RmUob1szXSxuKSx3OkZlKG9bNF0sbiksZDpGZShvWzVdLG4pLGg6RmUob1s2XSxuKSxtOkZlKG9bN10sbiksczpGZShvWzhdLG4pfSk6bnVsbD09YT9hPXt9OiJvYmplY3QiPT10eXBlb2YgYSYmKCJmcm9tImluIGF8fCJ0byJpbiBhKSYmKGk9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gdC5pc1ZhbGlkKCkmJmUuaXNWYWxpZCgpPyhlPURlKGUsdCksdC5pc0JlZm9yZShlKT9uPVBlKHQsZSk6KChuPVBlKGUsdCkpLm1pbGxpc2Vjb25kcz0tbi5taWxsaXNlY29uZHMsbi5tb250aHM9LW4ubW9udGhzKSxuKTp7bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9fShfZShhLmZyb20pLF9lKGEudG8pKSwoYT17fSkubXM9aS5taWxsaXNlY29uZHMsYS5NPWkubW9udGhzKSxyPW5ldyBFZShhKSxDZSh0KSYmaCh0LCJfbG9jYWxlIikmJihyLl9sb2NhbGU9dC5fbG9jYWxlKSxyfWZ1bmN0aW9uIEZlKHQsZSl7dmFyIG49dCYmcGFyc2VGbG9hdCh0LnJlcGxhY2UoIiwiLCIuIikpO3JldHVybihpc05hTihuKT8wOm4pKmV9ZnVuY3Rpb24gUGUodCxlKXt2YXIgbj17fTtyZXR1cm4gbi5tb250aHM9ZS5tb250aCgpLXQubW9udGgoKSsxMiooZS55ZWFyKCktdC55ZWFyKCkpLHQuY2xvbmUoKS5hZGQobi5tb250aHMsIk0iKS5pc0FmdGVyKGUpJiYtLW4ubW9udGhzLG4ubWlsbGlzZWNvbmRzPStlLSt0LmNsb25lKCkuYWRkKG4ubW9udGhzLCJNIiksbn1mdW5jdGlvbiBqZSh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBpO3JldHVybiBudWxsPT09cnx8aXNOYU4oK3IpfHwoTShlLCJtb21lbnQoKS4iK2UrIihwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4iK2UrIihudW1iZXIsIHBlcmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4iKSxpPW4sbj1yLHI9aSksWWUodGhpcyxSZShuPSJzdHJpbmciPT10eXBlb2Ygbj8rbjpuLHIpLHQpLHRoaXN9fWZ1bmN0aW9uIFllKHQsZSxuLHIpe3ZhciBhPWUuX21pbGxpc2Vjb25kcyxvPVNlKGUuX2RheXMpLHM9U2UoZS5fbW9udGhzKTt0LmlzVmFsaWQoKSYmKHI9bnVsbD09cnx8cixzJiZTdCh0LHh0KHQsIk1vbnRoIikrcypuKSxvJiZ3dCh0LCJEYXRlIix4dCh0LCJEYXRlIikrbypuKSxhJiZ0Ll9kLnNldFRpbWUodC5fZC52YWx1ZU9mKCkrYSpuKSxyJiZpLnVwZGF0ZU9mZnNldCh0LG98fHMpKX1SZS5mbj1FZS5wcm90b3R5cGUsUmUuaW52YWxpZD1mdW5jdGlvbigpe3JldHVybiBSZShOYU4pfTt2YXIgemU9amUoMSwiYWRkIiksVWU9amUoLTEsInN1YnRyYWN0Iik7ZnVuY3Rpb24gcWUodCxlKXt2YXIgbj0xMiooZS55ZWFyKCktdC55ZWFyKCkpKyhlLm1vbnRoKCktdC5tb250aCgpKSxyPXQuY2xvbmUoKS5hZGQobiwibW9udGhzIik7cmV0dXJuLShuKyhlLXI8MD8oZS1yKS8oci10LmNsb25lKCkuYWRkKG4tMSwibW9udGhzIikpOihlLXIpLyh0LmNsb25lKCkuYWRkKG4rMSwibW9udGhzIiktcikpKXx8MH1mdW5jdGlvbiBIZSh0KXt2YXIgZTtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9sb2NhbGUuX2FiYnI6KG51bGwhPShlPXJlKHQpKSYmKHRoaXMuX2xvY2FsZT1lKSx0aGlzKX1pLmRlZmF1bHRGb3JtYXQ9IllZWVktTU0tRERUSEg6bW06c3NaIixpLmRlZmF1bHRGb3JtYXRVdGM9IllZWVktTU0tRERUSEg6bW06c3NbWl0iO3ZhciAkZT1DKCJtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLiIsKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKHQpfSkpO2Z1bmN0aW9uIFdlKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12YXIgVmU9MTI2MjI3ODA4ZTU7ZnVuY3Rpb24gR2UodCxlKXtyZXR1cm4odCVlK2UpJWV9ZnVuY3Rpb24gWGUodCxlLG4pe3JldHVybiB0PDEwMCYmMDw9dD9uZXcgRGF0ZSh0KzQwMCxlLG4pLVZlOm5ldyBEYXRlKHQsZSxuKS52YWx1ZU9mKCl9ZnVuY3Rpb24gWmUodCxlLG4pe3JldHVybiB0PDEwMCYmMDw9dD9EYXRlLlVUQyh0KzQwMCxlLG4pLVZlOkRhdGUuVVRDKHQsZSxuKX1mdW5jdGlvbiBRZSh0LGUpe0goMCxbdCx0Lmxlbmd0aF0sMCxlKX1mdW5jdGlvbiBLZSh0LGUsbixyLGkpe3ZhciBhO3JldHVybiBudWxsPT10P0l0KHRoaXMscixpKS55ZWFyOigoYT1SdCh0LHIsaSkpPGUmJihlPWEpLGZ1bmN0aW9uKHQsZSxuLHIsaSl7dmFyIGE9THQodCxlLG4scixpKSxvPU90KGEueWVhciwwLGEuZGF5T2ZZZWFyKTtyZXR1cm4gdGhpcy55ZWFyKG8uZ2V0VVRDRnVsbFllYXIoKSksdGhpcy5tb250aChvLmdldFVUQ01vbnRoKCkpLHRoaXMuZGF0ZShvLmdldFVUQ0RhdGUoKSksdGhpc30uY2FsbCh0aGlzLHQsZSxuLHIsaSkpfUgoMCxbImdnIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLndlZWtZZWFyKCklMTAwfSkpLEgoMCxbIkdHIiwyXSwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzb1dlZWtZZWFyKCklMTAwfSkpLFFlKCJnZ2dnIiwid2Vla1llYXIiKSxRZSgiZ2dnZ2ciLCJ3ZWVrWWVhciIpLFFlKCJHR0dHIiwiaXNvV2Vla1llYXIiKSxRZSgiR0dHR0ciLCJpc29XZWVrWWVhciIpLEwoIndlZWtZZWFyIiwiZ2ciKSxMKCJpc29XZWVrWWVhciIsIkdHIiksUCgid2Vla1llYXIiLDEpLFAoImlzb1dlZWtZZWFyIiwxKSxsdCgiRyIsYXQpLGx0KCJnIixhdCksbHQoIkdHIixLLEcpLGx0KCJnZyIsSyxHKSxsdCgiR0dHRyIsbnQsWiksbHQoImdnZ2ciLG50LFopLGx0KCJHR0dHRyIscnQsUSksbHQoImdnZ2dnIixydCxRKSx5dChbImdnZ2ciLCJnZ2dnZyIsIkdHR0ciLCJHR0dHRyJdLChmdW5jdGlvbih0LGUsbixyKXtlW3Iuc3Vic3RyKDAsMildPWsodCl9KSkseXQoWyJnZyIsIkdHIl0sKGZ1bmN0aW9uKHQsZSxuLHIpe2Vbcl09aS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pKSxIKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSxMKCJxdWFydGVyIiwiUSIpLFAoInF1YXJ0ZXIiLDcpLGx0KCJRIixWKSxwdCgiUSIsKGZ1bmN0aW9uKHQsZSl7ZVsxXT0zKihrKHQpLTEpfSkpLEgoIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSxMKCJkYXRlIiwiRCIpLFAoImRhdGUiLDkpLGx0KCJEIixLKSxsdCgiREQiLEssRyksbHQoIkRvIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9lLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlfHxlLl9vcmRpbmFsUGFyc2U6ZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnR9KSkscHQoWyJEIiwiREQiXSwyKSxwdCgiRG8iLChmdW5jdGlvbih0LGUpe2VbMl09ayh0Lm1hdGNoKEspWzBdKX0pKTt2YXIgSmU9X3QoIkRhdGUiLCEwKTtIKCJEREQiLFsiRERERCIsM10sIkRERG8iLCJkYXlPZlllYXIiKSxMKCJkYXlPZlllYXIiLCJEREQiKSxQKCJkYXlPZlllYXIiLDQpLGx0KCJEREQiLGV0KSxsdCgiRERERCIsWCkscHQoWyJEREQiLCJEREREIl0sKGZ1bmN0aW9uKHQsZSxuKXtuLl9kYXlPZlllYXI9ayh0KX0pKSxIKCJtIixbIm1tIiwyXSwwLCJtaW51dGUiKSxMKCJtaW51dGUiLCJtIiksUCgibWludXRlIiwxNCksbHQoIm0iLEspLGx0KCJtbSIsSyxHKSxwdChbIm0iLCJtbSJdLDQpO3ZhciB0bj1fdCgiTWludXRlcyIsITEpO0goInMiLFsic3MiLDJdLDAsInNlY29uZCIpLEwoInNlY29uZCIsInMiKSxQKCJzZWNvbmQiLDE1KSxsdCgicyIsSyksbHQoInNzIixLLEcpLHB0KFsicyIsInNzIl0sNSk7dmFyIGVuLG5uPV90KCJTZWNvbmRzIiwhMSk7Zm9yKEgoIlMiLDAsMCwoZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pKSxIKDAsWyJTUyIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSkpLEgoMCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSxIKDAsWyJTU1NTIiw0XSwwLChmdW5jdGlvbigpe3JldHVybiAxMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksSCgwLFsiU1NTU1MiLDVdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDEwMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksSCgwLFsiU1NTU1NTIiw2XSwwLChmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSkpLEgoMCxbIlNTU1NTU1MiLDddLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlNCp0aGlzLm1pbGxpc2Vjb25kKCl9KSksSCgwLFsiU1NTU1NTU1MiLDhdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlNSp0aGlzLm1pbGxpc2Vjb25kKCl9KSksSCgwLFsiU1NTU1NTU1NTIiw5XSwwLChmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSkpLEwoIm1pbGxpc2Vjb25kIiwibXMiKSxQKCJtaWxsaXNlY29uZCIsMTYpLGx0KCJTIixldCxWKSxsdCgiU1MiLGV0LEcpLGx0KCJTU1MiLGV0LFgpLGVuPSJTU1NTIjtlbi5sZW5ndGg8PTk7ZW4rPSJTIilsdChlbixpdCk7ZnVuY3Rpb24gcm4odCxlKXtlWzZdPWsoMWUzKigiMC4iK3QpKX1mb3IoZW49IlMiO2VuLmxlbmd0aDw9OTtlbis9IlMiKXB0KGVuLHJuKTt2YXIgYW49X3QoIk1pbGxpc2Vjb25kcyIsITEpO0goInoiLDAsMCwiem9uZUFiYnIiKSxIKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciBvbj1fLnByb3RvdHlwZTtmdW5jdGlvbiBzbih0KXtyZXR1cm4gdH1vbi5hZGQ9emUsb24uY2FsZW5kYXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10fHxfZSgpLHI9RGUobix0aGlzKS5zdGFydE9mKCJkYXkiKSxhPWkuY2FsZW5kYXJGb3JtYXQodGhpcyxyKXx8InNhbWVFbHNlIixvPWUmJihOKGVbYV0pP2VbYV0uY2FsbCh0aGlzLG4pOmVbYV0pO3JldHVybiB0aGlzLmZvcm1hdChvfHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihhLHRoaXMsX2UobikpKX0sb24uY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8odGhpcyl9LG9uLmRpZmY9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtpZighKHI9RGUodCx0aGlzKSkuaXNWYWxpZCgpKXJldHVybiBOYU47c3dpdGNoKGk9NmU0KihyLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpLGU9SShlKSl7Y2FzZSJ5ZWFyIjphPXFlKHRoaXMscikvMTI7YnJlYWs7Y2FzZSJtb250aCI6YT1xZSh0aGlzLHIpO2JyZWFrO2Nhc2UicXVhcnRlciI6YT1xZSh0aGlzLHIpLzM7YnJlYWs7Y2FzZSJzZWNvbmQiOmE9KHRoaXMtcikvMWUzO2JyZWFrO2Nhc2UibWludXRlIjphPSh0aGlzLXIpLzZlNDticmVhaztjYXNlImhvdXIiOmE9KHRoaXMtcikvMzZlNTticmVhaztjYXNlImRheSI6YT0odGhpcy1yLWkpLzg2NGU1O2JyZWFrO2Nhc2Uid2VlayI6YT0odGhpcy1yLWkpLzYwNDhlNTticmVhaztkZWZhdWx0OmE9dGhpcy1yfXJldHVybiBuP2E6dyhhKX0sb24uZW5kT2Y9ZnVuY3Rpb24odCl7dmFyIGU7aWYodm9pZCAwPT09KHQ9SSh0KSl8fCJtaWxsaXNlY29uZCI9PT10fHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5faXNVVEM/WmU6WGU7c3dpdGNoKHQpe2Nhc2UieWVhciI6ZT1uKHRoaXMueWVhcigpKzEsMCwxKS0xO2JyZWFrO2Nhc2UicXVhcnRlciI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1vbnRoKCklMyszLDEpLTE7YnJlYWs7Y2FzZSJtb250aCI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSsxLDEpLTE7YnJlYWs7Y2FzZSJ3ZWVrIjplPW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKzcpLTE7YnJlYWs7Y2FzZSJpc29XZWVrIjplPW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSs3KS0xO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkrMSktMTticmVhaztjYXNlImhvdXIiOmU9dGhpcy5fZC52YWx1ZU9mKCksZSs9MzZlNS1HZShlKyh0aGlzLl9pc1VUQz8wOjZlNCp0aGlzLnV0Y09mZnNldCgpKSwzNmU1KS0xO2JyZWFrO2Nhc2UibWludXRlIjplPXRoaXMuX2QudmFsdWVPZigpLGUrPTZlNC1HZShlLDZlNCktMTticmVhaztjYXNlInNlY29uZCI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlKz0xZTMtR2UoZSwxZTMpLTF9cmV0dXJuIHRoaXMuX2Quc2V0VGltZShlKSxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSxvbi5mb3JtYXQ9ZnVuY3Rpb24odCl7dHx8KHQ9dGhpcy5pc1V0YygpP2kuZGVmYXVsdEZvcm1hdFV0YzppLmRlZmF1bHRGb3JtYXQpO3ZhciBlPSQodGhpcyx0KTtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChlKX0sb24uZnJvbT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmlzVmFsaWQoKSYmKHgodCkmJnQuaXNWYWxpZCgpfHxfZSh0KS5pc1ZhbGlkKCkpP1JlKHt0bzp0aGlzLGZyb206dH0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghZSk6dGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX0sb24uZnJvbU5vdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mcm9tKF9lKCksdCl9LG9uLnRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoeCh0KSYmdC5pc1ZhbGlkKCl8fF9lKHQpLmlzVmFsaWQoKSk/UmUoe2Zyb206dGhpcyx0bzp0fSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxvbi50b05vdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50byhfZSgpLHQpfSxvbi5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIE4odGhpc1t0PUkodCldKT90aGlzW3RdKCk6dGhpc30sb24uaW52YWxpZEF0PWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcykub3ZlcmZsb3d9LG9uLmlzQWZ0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj14KHQpP3Q6X2UodCk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFuLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KGU9SShlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk+bi52YWx1ZU9mKCk6bi52YWx1ZU9mKCk8dGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkudmFsdWVPZigpKX0sb24uaXNCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj14KHQpP3Q6X2UodCk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFuLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KGU9SShlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk8bi52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKGUpLnZhbHVlT2YoKTxuLnZhbHVlT2YoKSl9LG9uLmlzQmV0d2Vlbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT14KHQpP3Q6X2UodCksYT14KGUpP2U6X2UoZSk7cmV0dXJuISEodGhpcy5pc1ZhbGlkKCkmJmkuaXNWYWxpZCgpJiZhLmlzVmFsaWQoKSkmJigiKCI9PT0ocj1yfHwiKCkiKVswXT90aGlzLmlzQWZ0ZXIoaSxuKTohdGhpcy5pc0JlZm9yZShpLG4pKSYmKCIpIj09PXJbMV0/dGhpcy5pc0JlZm9yZShhLG4pOiF0aGlzLmlzQWZ0ZXIoYSxuKSl9LG9uLmlzU2FtZT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9eCh0KT90Ol9lKHQpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhci5pc1ZhbGlkKCkpJiYoIm1pbGxpc2Vjb25kIj09PShlPUkoZSl8fCJtaWxsaXNlY29uZCIpP3RoaXMudmFsdWVPZigpPT09ci52YWx1ZU9mKCk6KG49ci52YWx1ZU9mKCksdGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkudmFsdWVPZigpPD1uJiZuPD10aGlzLmNsb25lKCkuZW5kT2YoZSkudmFsdWVPZigpKSl9LG9uLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pc1NhbWUodCxlKXx8dGhpcy5pc0FmdGVyKHQsZSl9LG9uLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNTYW1lKHQsZSl8fHRoaXMuaXNCZWZvcmUodCxlKX0sb24uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB5KHRoaXMpfSxvbi5sYW5nPSRlLG9uLmxvY2FsZT1IZSxvbi5sb2NhbGVEYXRhPVdlLG9uLm1heD13ZSxvbi5taW49eGUsb24ucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uKCl7cmV0dXJuIGYoe30scCh0aGlzKSl9LG9uLnNldD1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIG49ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHt1bml0Om4scHJpb3JpdHk6RltuXX0pO3JldHVybiBlLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucHJpb3JpdHktZS5wcmlvcml0eX0pKSxlfSh0PVIodCkpLHI9MDtyPG4ubGVuZ3RoO3IrKyl0aGlzW25bcl0udW5pdF0odFtuW3JdLnVuaXRdKTtlbHNlIGlmKE4odGhpc1t0PUkodCldKSlyZXR1cm4gdGhpc1t0XShlKTtyZXR1cm4gdGhpc30sb24uc3RhcnRPZj1mdW5jdGlvbih0KXt2YXIgZTtpZih2b2lkIDA9PT0odD1JKHQpKXx8Im1pbGxpc2Vjb25kIj09PXR8fCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl9pc1VUQz9aZTpYZTtzd2l0Y2godCl7Y2FzZSJ5ZWFyIjplPW4odGhpcy55ZWFyKCksMCwxKTticmVhaztjYXNlInF1YXJ0ZXIiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSwxKTticmVhaztjYXNlIndlZWsiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkpO2JyZWFrO2Nhc2UiaXNvV2VlayI6ZT1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOmU9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkpO2JyZWFrO2Nhc2UiaG91ciI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlLT1HZShlKyh0aGlzLl9pc1VUQz8wOjZlNCp0aGlzLnV0Y09mZnNldCgpKSwzNmU1KTticmVhaztjYXNlIm1pbnV0ZSI6ZT10aGlzLl9kLnZhbHVlT2YoKSxlLT1HZShlLDZlNCk7YnJlYWs7Y2FzZSJzZWNvbmQiOmU9dGhpcy5fZC52YWx1ZU9mKCksZS09R2UoZSwxZTMpfXJldHVybiB0aGlzLl9kLnNldFRpbWUoZSksaS51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpc30sb24uc3VidHJhY3Q9VWUsb24udG9BcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuW3QueWVhcigpLHQubW9udGgoKSx0LmRhdGUoKSx0LmhvdXIoKSx0Lm1pbnV0ZSgpLHQuc2Vjb25kKCksdC5taWxsaXNlY29uZCgpXX0sb24udG9PYmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybnt5ZWFyczp0LnllYXIoKSxtb250aHM6dC5tb250aCgpLGRhdGU6dC5kYXRlKCksaG91cnM6dC5ob3VycygpLG1pbnV0ZXM6dC5taW51dGVzKCksc2Vjb25kczp0LnNlY29uZHMoKSxtaWxsaXNlY29uZHM6dC5taWxsaXNlY29uZHMoKX19LG9uLnRvRGF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LG9uLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbDt2YXIgZT0hMCE9PXQsbj1lP3RoaXMuY2xvbmUoKS51dGMoKTp0aGlzO3JldHVybiBuLnllYXIoKTwwfHw5OTk5PG4ueWVhcigpPyQobixlPyJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iOiJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIik6TihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyk/ZT90aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk6bmV3IERhdGUodGhpcy52YWx1ZU9mKCkrNjAqdGhpcy51dGNPZmZzZXQoKSoxZTMpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgiWiIsJChuLCJaIikpOiQobixlPyJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1oiKX0sb24uaW5zcGVjdD1mdW5jdGlvbigpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgdD0ibW9tZW50IixlPSIiO3RoaXMuaXNMb2NhbCgpfHwodD0wPT09dGhpcy51dGNPZmZzZXQoKT8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLGU9IloiKTt2YXIgbj0iWyIrdCsnKCJdJyxyPTA8PXRoaXMueWVhcigpJiZ0aGlzLnllYXIoKTw9OTk5OT8iWVlZWSI6IllZWVlZWSIsaT1lKydbIildJztyZXR1cm4gdGhpcy5mb3JtYXQobityKyItTU0tRERbVF1ISDptbTpzcy5TU1MiK2kpfSxvbi50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LG9uLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfSxvbi51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sb24udmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kLnZhbHVlT2YoKS02ZTQqKHRoaXMuX29mZnNldHx8MCl9LG9uLmNyZWF0aW9uRGF0YT1mdW5jdGlvbigpe3JldHVybntpbnB1dDp0aGlzLl9pLGZvcm1hdDp0aGlzLl9mLGxvY2FsZTp0aGlzLl9sb2NhbGUsaXNVVEM6dGhpcy5faXNVVEMsc3RyaWN0OnRoaXMuX3N0cmljdH19LG9uLnllYXI9YnQsb24uaXNMZWFwWWVhcj1mdW5jdGlvbigpe3JldHVybiBtdCh0aGlzLnllYXIoKSl9LG9uLndlZWtZZWFyPWZ1bmN0aW9uKHQpe3JldHVybiBLZS5jYWxsKHRoaXMsdCx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KX0sb24uaXNvV2Vla1llYXI9ZnVuY3Rpb24odCl7cmV0dXJuIEtlLmNhbGwodGhpcyx0LHRoaXMuaXNvV2VlaygpLHRoaXMuaXNvV2Vla2RheSgpLDEsNCl9LG9uLnF1YXJ0ZXI9b24ucXVhcnRlcnM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/TWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKih0LTEpK3RoaXMubW9udGgoKSUzKX0sb24ubW9udGg9QXQsb24uZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4ga3QodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sb24ud2Vlaz1vbi53ZWVrcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfSxvbi5pc29XZWVrPW9uLmlzb1dlZWtzPWZ1bmN0aW9uKHQpe3ZhciBlPUl0KHRoaXMsMSw0KS53ZWVrO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfSxvbi53ZWVrc0luWWVhcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO3JldHVybiBSdCh0aGlzLnllYXIoKSx0LmRvdyx0LmRveSl9LG9uLmlzb1dlZWtzSW5ZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIFJ0KHRoaXMueWVhcigpLDEsNCl9LG9uLmRhdGU9SmUsb24uZGF5PW9uLmRheXM9ZnVuY3Rpb24odCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT10P3RoaXM6TmFOO3ZhciBlLG4scj10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPXQ/KGU9dCxuPXRoaXMubG9jYWxlRGF0YSgpLHQ9InN0cmluZyIhPXR5cGVvZiBlP2U6aXNOYU4oZSk/Im51bWJlciI9PXR5cGVvZihlPW4ud2Vla2RheXNQYXJzZShlKSk/ZTpudWxsOnBhcnNlSW50KGUsMTApLHRoaXMuYWRkKHQtciwiZCIpKTpyfSxvbi53ZWVrZGF5PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjt2YXIgZT0odGhpcy5kYXkoKSs3LXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09dD9lOnRoaXMuYWRkKHQtZSwiZCIpfSxvbi5pc29XZWVrZGF5PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjtpZihudWxsPT10KXJldHVybiB0aGlzLmRheSgpfHw3O3ZhciBlLG4scj0oZT10LG49dGhpcy5sb2NhbGVEYXRhKCksInN0cmluZyI9PXR5cGVvZiBlP24ud2Vla2RheXNQYXJzZShlKSU3fHw3OmlzTmFOKGUpP251bGw6ZSk7cmV0dXJuIHRoaXMuZGF5KHRoaXMuZGF5KCklNz9yOnItNyl9LG9uLmRheU9mWWVhcj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IiktdGhpcy5jbG9uZSgpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJuIG51bGw9PXQ/ZTp0aGlzLmFkZCh0LWUsImQiKX0sb24uaG91cj1vbi5ob3Vycz1YdCxvbi5taW51dGU9b24ubWludXRlcz10bixvbi5zZWNvbmQ9b24uc2Vjb25kcz1ubixvbi5taWxsaXNlY29uZD1vbi5taWxsaXNlY29uZHM9YW4sb24udXRjT2Zmc2V0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixhPXRoaXMuX29mZnNldHx8MDtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPXQ/dGhpczpOYU47aWYobnVsbD09dClyZXR1cm4gdGhpcy5faXNVVEM/YTpPZSh0aGlzKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKG51bGw9PT0odD1OZShzdCx0KSkpcmV0dXJuIHRoaXN9ZWxzZSBNYXRoLmFicyh0KTwxNiYmIW4mJih0Kj02MCk7cmV0dXJuIXRoaXMuX2lzVVRDJiZlJiYocj1PZSh0aGlzKSksdGhpcy5fb2Zmc2V0PXQsdGhpcy5faXNVVEM9ITAsbnVsbCE9ciYmdGhpcy5hZGQociwibSIpLGEhPT10JiYoIWV8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/WWUodGhpcyxSZSh0LWEsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxpLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfSxvbi51dGM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsdCl9LG9uLmxvY2FsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsdCksdGhpcy5faXNVVEM9ITEsdCYmdGhpcy5zdWJ0cmFjdChPZSh0aGlzKSwibSIpKSx0aGlzfSxvbi5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIHQ9TmUob3QsdGhpcy5faSk7bnVsbCE9dD90aGlzLnV0Y09mZnNldCh0KTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30sb24uaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKHQ9dD9fZSh0KS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLXQpJTYwPT0wKX0sb24uaXNEU1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfSxvbi5pc0xvY2FsPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmIXRoaXMuX2lzVVRDfSxvbi5pc1V0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDfSxvbi5pc1V0Yz1CZSxvbi5pc1VUQz1CZSxvbi56b25lQWJicj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn0sb24uem9uZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0sb24uZGF0ZXM9QygiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLEplKSxvbi5tb250aHM9QygibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixBdCksb24ueWVhcnM9QygieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIsYnQpLG9uLnpvbmU9QygibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10Pygic3RyaW5nIiE9dHlwZW9mIHQmJih0PS10KSx0aGlzLnV0Y09mZnNldCh0LGUpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfSkpLG9uLmlzRFNUU2hpZnRlZD1DKCJpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIiwoZnVuY3Rpb24oKXtpZighcyh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIHQ9e307aWYodih0LHRoaXMpLCh0PXZlKHQpKS5fYSl7dmFyIGU9dC5faXNVVEM/ZCh0Ll9hKTpfZSh0Ll9hKTt0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJjA8VCh0Ll9hLGUudG9BcnJheSgpKX1lbHNlIHRoaXMuX2lzRFNUU2hpZnRlZD0hMTtyZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkfSkpO3ZhciBjbj1PLnByb3RvdHlwZTtmdW5jdGlvbiB1bih0LGUsbixyKXt2YXIgaT1yZSgpLGE9ZCgpLnNldChyLGUpO3JldHVybiBpW25dKGEsdCl9ZnVuY3Rpb24gbG4odCxlLG4pe2lmKGModCkmJihlPXQsdD12b2lkIDApLHQ9dHx8IiIsbnVsbCE9ZSlyZXR1cm4gdW4odCxlLG4sIm1vbnRoIik7dmFyIHIsaT1bXTtmb3Iocj0wO3I8MTI7cisrKWlbcl09dW4odCxyLG4sIm1vbnRoIik7cmV0dXJuIGl9ZnVuY3Rpb24gaG4odCxlLG4scil7ImJvb2xlYW4iPT10eXBlb2YgdD9jKGUpJiYobj1lLGU9dm9pZCAwKTooZT10LHQ9ITEsYyhuPWUpJiYobj1lLGU9dm9pZCAwKSksZT1lfHwiIjt2YXIgaSxhPXJlKCksbz10P2EuX3dlZWsuZG93OjA7aWYobnVsbCE9bilyZXR1cm4gdW4oZSwobitvKSU3LHIsImRheSIpO3ZhciBzPVtdO2ZvcihpPTA7aTw3O2krKylzW2ldPXVuKGUsKGkrbyklNyxyLCJkYXkiKTtyZXR1cm4gc31jbi5jYWxlbmRhcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5fY2FsZW5kYXJbdF18fHRoaXMuX2NhbGVuZGFyLnNhbWVFbHNlO3JldHVybiBOKHIpP3IuY2FsbChlLG4pOnJ9LGNuLmxvbmdEYXRlRm9ybWF0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xvbmdEYXRlRm9ybWF0W3RdLG49dGhpcy5fbG9uZ0RhdGVGb3JtYXRbdC50b1VwcGVyQ2FzZSgpXTtyZXR1cm4gZXx8IW4/ZToodGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF09bi5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSl9KSksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF0pfSxjbi5pbnZhbGlkRGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnZhbGlkRGF0ZX0sY24ub3JkaW5hbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCIlZCIsdCl9LGNuLnByZXBhcnNlPXNuLGNuLnBvc3Rmb3JtYXQ9c24sY24ucmVsYXRpdmVUaW1lPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPXRoaXMuX3JlbGF0aXZlVGltZVtuXTtyZXR1cm4gTihpKT9pKHQsZSxuLHIpOmkucmVwbGFjZSgvJWQvaSx0KX0sY24ucGFzdEZ1dHVyZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3JlbGF0aXZlVGltZVswPHQ/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4gTihuKT9uKGUpOm4ucmVwbGFjZSgvJXMvaSxlKX0sY24uc2V0PWZ1bmN0aW9uKHQpe3ZhciBlLG47Zm9yKG4gaW4gdClOKGU9dFtuXSk/dGhpc1tuXT1lOnRoaXNbIl8iK25dPWU7dGhpcy5fY29uZmlnPXQsdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ9bmV3IFJlZ0V4cCgodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2V8fHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpKyJ8IisvXGR7MSwyfS8uc291cmNlKX0sY24ubW9udGhzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/YSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoc1t0Lm1vbnRoKCldOnRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0fHxUdCkudGVzdChlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW3QubW9udGgoKV06YSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoczp0aGlzLl9tb250aHMuc3RhbmRhbG9uZX0sY24ubW9udGhzU2hvcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9hKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFt0Lm1vbnRoKCldOnRoaXMuX21vbnRoc1Nob3J0W1R0LnRlc3QoZSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVt0Lm1vbnRoKCldOmEodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0LnN0YW5kYWxvbmV9LGNuLm1vbnRoc1BhcnNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLGE7aWYodGhpcy5fbW9udGhzUGFyc2VFeGFjdClyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPXQudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fbW9udGhzUGFyc2UpZm9yKHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdLHI9MDtyPDEyOysrcilhPWQoWzJlMyxyXSksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtyXT10aGlzLm1vbnRoc1Nob3J0KGEsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fbG9uZ01vbnRoc1BhcnNlW3JdPXRoaXMubW9udGhzKGEsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuIG4/Ik1NTSI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLG8pKT9pOm51bGw6LTEhPT0oaT12dC5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxvKSk/aTpudWxsOiJNTU0iPT09ZT8tMSE9PShpPXZ0LmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsbykpP2k6bnVsbH0uY2FsbCh0aGlzLHQsZSxuKTtmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSkscj0wO3I8MTI7cisrKXtpZihpPWQoWzJlMyxyXSksbiYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtyXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhpLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KGksIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksbnx8dGhpcy5fbW9udGhzUGFyc2Vbcl18fChhPSJeIit0aGlzLm1vbnRocyhpLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoaSwiIiksdGhpcy5fbW9udGhzUGFyc2Vbcl09bmV3IFJlZ0V4cChhLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxuJiYiTU1NTSI9PT1lJiZ0aGlzLl9sb25nTW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZihuJiYiTU1NIj09PWUmJnRoaXMuX3Nob3J0TW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZighbiYmdGhpcy5fbW9udGhzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcn19LGNuLm1vbnRoc1JlZ2V4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhoKHRoaXMsIl9tb250aHNSZWdleCIpfHxEdC5jYWxsKHRoaXMpLHQ/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpOihoKHRoaXMsIl9tb250aHNSZWdleCIpfHwodGhpcy5fbW9udGhzUmVnZXg9TnQpLHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4JiZ0P3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KX0sY24ubW9udGhzU2hvcnRSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oaCh0aGlzLCJfbW9udGhzUmVnZXgiKXx8RHQuY2FsbCh0aGlzKSx0P3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdleCk6KGgodGhpcywiX21vbnRoc1Nob3J0UmVnZXgiKXx8KHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9TXQpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgmJnQ/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KX0sY24ud2Vlaz1mdW5jdGlvbih0KXtyZXR1cm4gSXQodCx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla30sY24uZmlyc3REYXlPZlllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3l9LGNuLmZpcnN0RGF5T2ZXZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG93fSxjbi53ZWVrZGF5cz1mdW5jdGlvbih0LGUpe3ZhciBuPWEodGhpcy5fd2Vla2RheXMpP3RoaXMuX3dlZWtkYXlzOnRoaXMuX3dlZWtkYXlzW3QmJiEwIT09dCYmdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdO3JldHVybiEwPT09dD9GdChuLHRoaXMuX3dlZWsuZG93KTp0P25bdC5kYXkoKV06bn0sY24ud2Vla2RheXNNaW49ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10P0Z0KHRoaXMuX3dlZWtkYXlzTWluLHRoaXMuX3dlZWsuZG93KTp0P3RoaXMuX3dlZWtkYXlzTWluW3QuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufSxjbi53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dD9GdCh0aGlzLl93ZWVrZGF5c1Nob3J0LHRoaXMuX3dlZWsuZG93KTp0P3RoaXMuX3dlZWtkYXlzU2hvcnRbdC5kYXkoKV06dGhpcy5fd2Vla2RheXNTaG9ydH0sY24ud2Vla2RheXNQYXJzZT1mdW5jdGlvbih0LGUsbil7dmFyIHIsaSxhO2lmKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdClyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxvPXQudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSxyPTA7cjw3OysrcilhPWQoWzJlMywxXSkuZGF5KHIpLHRoaXMuX21pbldlZWtkYXlzUGFyc2Vbcl09dGhpcy53ZWVrZGF5c01pbihhLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtyXT10aGlzLndlZWtkYXlzU2hvcnQoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW3JdPXRoaXMud2Vla2RheXMoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gbj8iZGRkZCI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKT9pOm51bGw6ImRkZCI9PT1lPy0xIT09KGk9dnQuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxvKSk/aTpudWxsOiJkZGRkIj09PWU/LTEhPT0oaT12dC5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsbykpfHwtMSE9PShpPXZ0LmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDoiZGRkIj09PWU/LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsbykpP2k6bnVsbDotMSE9PShpPXZ0LmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxvKSl8fC0xIT09KGk9dnQuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLG8pKXx8LTEhPT0oaT12dC5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxvKSk/aTpudWxsfS5jYWxsKHRoaXMsdCxlLG4pO2Zvcih0aGlzLl93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9mdWxsV2Vla2RheXNQYXJzZT1bXSkscj0wO3I8NztyKyspe2lmKGk9ZChbMmUzLDFdKS5kYXkociksbiYmIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW3JdJiYodGhpcy5fZnVsbFdlZWtkYXlzUGFyc2Vbcl09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5cyhpLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzU2hvcnQoaSwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlW3JdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNNaW4oaSwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtyXXx8KGE9Il4iK3RoaXMud2Vla2RheXMoaSwiIikrInxeIit0aGlzLndlZWtkYXlzU2hvcnQoaSwiIikrInxeIit0aGlzLndlZWtkYXlzTWluKGksIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2Vbcl09bmV3IFJlZ0V4cChhLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxuJiYiZGRkZCI9PT1lJiZ0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtyXS50ZXN0KHQpKXJldHVybiByO2lmKG4mJiJkZGQiPT09ZSYmdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3JdLnRlc3QodCkpcmV0dXJuIHI7aWYobiYmImRkIj09PWUmJnRoaXMuX21pbldlZWtkYXlzUGFyc2Vbcl0udGVzdCh0KSlyZXR1cm4gcjtpZighbiYmdGhpcy5fd2Vla2RheXNQYXJzZVtyXS50ZXN0KHQpKXJldHVybiByfX0sY24ud2Vla2RheXNSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fEh0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpOihoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1JlZ2V4PXp0KSx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4JiZ0P3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCl9LGNuLndlZWtkYXlzU2hvcnRSZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fEh0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KTooaCh0aGlzLCJfd2Vla2RheXNTaG9ydFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9VXQpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX0sY24ud2Vla2RheXNNaW5SZWdleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fEh0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpOihoKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c01pblJlZ2V4PXF0KSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4JiZ0P3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9LGNuLmlzUE09ZnVuY3Rpb24odCl7cmV0dXJuInAiPT09KHQrIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfSxjbi5tZXJpZGllbT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIDExPHQ/bj8icG0iOiJQTSI6bj8iYW0iOiJBTSJ9LGVlKCJlbiIse2RheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBlPXQlMTA7cmV0dXJuIHQrKDE9PT1rKHQlMTAwLzEwKT8idGgiOjE9PT1lPyJzdCI6Mj09PWU/Im5kIjozPT09ZT8icmQiOiJ0aCIpfX0pLGkubGFuZz1DKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsZWUpLGkubGFuZ0RhdGE9QygibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIscmUpO3ZhciBmbj1NYXRoLmFicztmdW5jdGlvbiBkbih0LGUsbixyKXt2YXIgaT1SZShlLG4pO3JldHVybiB0Ll9taWxsaXNlY29uZHMrPXIqaS5fbWlsbGlzZWNvbmRzLHQuX2RheXMrPXIqaS5fZGF5cyx0Ll9tb250aHMrPXIqaS5fbW9udGhzLHQuX2J1YmJsZSgpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiB0PDA/TWF0aC5mbG9vcih0KTpNYXRoLmNlaWwodCl9ZnVuY3Rpb24geW4odCl7cmV0dXJuIDQ4MDAqdC8xNDYwOTd9ZnVuY3Rpb24gZ24odCl7cmV0dXJuIDE0NjA5Nyp0LzQ4MDB9ZnVuY3Rpb24gbW4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXModCl9fXZhciB2bj1tbigibXMiKSxibj1tbigicyIpLF9uPW1uKCJtIikseG49bW4oImgiKSx3bj1tbigiZCIpLGtuPW1uKCJ3IiksVG49bW4oIk0iKSxFbj1tbigiUSIpLENuPW1uKCJ5Iik7ZnVuY3Rpb24gU24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX2RhdGFbdF06TmFOfX12YXIgQW49U24oIm1pbGxpc2Vjb25kcyIpLE1uPVNuKCJzZWNvbmRzIiksTm49U24oIm1pbnV0ZXMiKSxEbj1TbigiaG91cnMiKSxPbj1TbigiZGF5cyIpLEJuPVNuKCJtb250aHMiKSxMbj1TbigieWVhcnMiKSxJbj1NYXRoLnJvdW5kLFJuPXtzczo0NCxzOjQ1LG06NDUsaDoyMixkOjI2LE06MTF9LEZuPU1hdGguYWJzO2Z1bmN0aW9uIFBuKHQpe3JldHVybigwPHQpLSh0PDApfHwrdH1mdW5jdGlvbiBqbigpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgdCxlLG49Rm4odGhpcy5fbWlsbGlzZWNvbmRzKS8xZTMscj1Gbih0aGlzLl9kYXlzKSxpPUZuKHRoaXMuX21vbnRocyk7ZT13KCh0PXcobi82MCkpLzYwKSxuJT02MCx0JT02MDt2YXIgYT13KGkvMTIpLG89aSU9MTIscz1yLGM9ZSx1PXQsbD1uP24udG9GaXhlZCgzKS5yZXBsYWNlKC9cLj8wKyQvLCIiKToiIixoPXRoaXMuYXNTZWNvbmRzKCk7aWYoIWgpcmV0dXJuIlAwRCI7dmFyIGY9aDwwPyItIjoiIixkPVBuKHRoaXMuX21vbnRocykhPT1QbihoKT8iLSI6IiIscD1Qbih0aGlzLl9kYXlzKSE9PVBuKGgpPyItIjoiIix5PVBuKHRoaXMuX21pbGxpc2Vjb25kcykhPT1QbihoKT8iLSI6IiI7cmV0dXJuIGYrIlAiKyhhP2QrYSsiWSI6IiIpKyhvP2QrbysiTSI6IiIpKyhzP3ArcysiRCI6IiIpKyhjfHx1fHxsPyJUIjoiIikrKGM/eStjKyJIIjoiIikrKHU/eSt1KyJNIjoiIikrKGw/eStsKyJTIjoiIil9dmFyIFluPUVlLnByb3RvdHlwZTtyZXR1cm4gWW4uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZhbGlkfSxZbi5hYnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9Zm4odGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPWZuKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1mbih0aGlzLl9tb250aHMpLHQubWlsbGlzZWNvbmRzPWZuKHQubWlsbGlzZWNvbmRzKSx0LnNlY29uZHM9Zm4odC5zZWNvbmRzKSx0Lm1pbnV0ZXM9Zm4odC5taW51dGVzKSx0LmhvdXJzPWZuKHQuaG91cnMpLHQubW9udGhzPWZuKHQubW9udGhzKSx0LnllYXJzPWZuKHQueWVhcnMpLHRoaXN9LFluLmFkZD1mdW5jdGlvbih0LGUpe3JldHVybiBkbih0aGlzLHQsZSwxKX0sWW4uc3VidHJhY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZG4odGhpcyx0LGUsLTEpfSxZbi5hcz1mdW5jdGlvbih0KXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjt2YXIgZSxuLHI9dGhpcy5fbWlsbGlzZWNvbmRzO2lmKCJtb250aCI9PT0odD1JKHQpKXx8InF1YXJ0ZXIiPT09dHx8InllYXIiPT09dClzd2l0Y2goZT10aGlzLl9kYXlzK3IvODY0ZTUsbj10aGlzLl9tb250aHMreW4oZSksdCl7Y2FzZSJtb250aCI6cmV0dXJuIG47Y2FzZSJxdWFydGVyIjpyZXR1cm4gbi8zO2Nhc2UieWVhciI6cmV0dXJuIG4vMTJ9ZWxzZSBzd2l0Y2goZT10aGlzLl9kYXlzK01hdGgucm91bmQoZ24odGhpcy5fbW9udGhzKSksdCl7Y2FzZSJ3ZWVrIjpyZXR1cm4gZS83K3IvNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gZStyLzg2NGU1O2Nhc2UiaG91ciI6cmV0dXJuIDI0KmUrci8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCplK3IvNmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqZStyLzFlMztjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gTWF0aC5mbG9vcig4NjRlNSplKStyO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHVuaXQgIit0KX19LFluLmFzTWlsbGlzZWNvbmRzPXZuLFluLmFzU2Vjb25kcz1ibixZbi5hc01pbnV0ZXM9X24sWW4uYXNIb3Vycz14bixZbi5hc0RheXM9d24sWW4uYXNXZWVrcz1rbixZbi5hc01vbnRocz1UbixZbi5hc1F1YXJ0ZXJzPUVuLFluLmFzWWVhcnM9Q24sWW4udmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLl9taWxsaXNlY29uZHMrODY0ZTUqdGhpcy5fZGF5cyt0aGlzLl9tb250aHMlMTIqMjU5MmU2KzMxNTM2ZTYqayh0aGlzLl9tb250aHMvMTIpOk5hTn0sWW4uX2J1YmJsZT1mdW5jdGlvbigpe3ZhciB0LGUsbixyLGksYT10aGlzLl9taWxsaXNlY29uZHMsbz10aGlzLl9kYXlzLHM9dGhpcy5fbW9udGhzLGM9dGhpcy5fZGF0YTtyZXR1cm4gMDw9YSYmMDw9byYmMDw9c3x8YTw9MCYmbzw9MCYmczw9MHx8KGErPTg2NGU1KnBuKGduKHMpK28pLHM9bz0wKSxjLm1pbGxpc2Vjb25kcz1hJTFlMyx0PXcoYS8xZTMpLGMuc2Vjb25kcz10JTYwLGU9dyh0LzYwKSxjLm1pbnV0ZXM9ZSU2MCxuPXcoZS82MCksYy5ob3Vycz1uJTI0LHMrPWk9dyh5bihvKz13KG4vMjQpKSksby09cG4oZ24oaSkpLHI9dyhzLzEyKSxzJT0xMixjLmRheXM9byxjLm1vbnRocz1zLGMueWVhcnM9cix0aGlzfSxZbi5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBSZSh0aGlzKX0sWW4uZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0PUkodCksdGhpcy5pc1ZhbGlkKCk/dGhpc1t0KyJzIl0oKTpOYU59LFluLm1pbGxpc2Vjb25kcz1BbixZbi5zZWNvbmRzPU1uLFluLm1pbnV0ZXM9Tm4sWW4uaG91cnM9RG4sWW4uZGF5cz1PbixZbi53ZWVrcz1mdW5jdGlvbigpe3JldHVybiB3KHRoaXMuZGF5cygpLzcpfSxZbi5tb250aHM9Qm4sWW4ueWVhcnM9TG4sWW4uaHVtYW5pemU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBlLG4scixpLGEsbyxzLGMsdSxsLGg9dGhpcy5sb2NhbGVEYXRhKCksZj0oZT0hdCxuPWgscj1SZSh0aGlzKS5hYnMoKSxpPUluKHIuYXMoInMiKSksYT1JbihyLmFzKCJtIikpLG89SW4oci5hcygiaCIpKSxzPUluKHIuYXMoImQiKSksYz1JbihyLmFzKCJNIikpLHU9SW4oci5hcygieSIpKSwobD1pPD1Sbi5zcyYmWyJzIixpXXx8aTxSbi5zJiZbInNzIixpXXx8YTw9MSYmWyJtIl18fGE8Um4ubSYmWyJtbSIsYV18fG88PTEmJlsiaCJdfHxvPFJuLmgmJlsiaGgiLG9dfHxzPD0xJiZbImQiXXx8czxSbi5kJiZbImRkIixzXXx8Yzw9MSYmWyJNIl18fGM8Um4uTSYmWyJNTSIsY118fHU8PTEmJlsieSJdfHxbInl5Iix1XSlbMl09ZSxsWzNdPTA8K3RoaXMsbFs0XT1uLGZ1bmN0aW9uKHQsZSxuLHIsaSl7cmV0dXJuIGkucmVsYXRpdmVUaW1lKGV8fDEsISFuLHQscil9LmFwcGx5KG51bGwsbCkpO3JldHVybiB0JiYoZj1oLnBhc3RGdXR1cmUoK3RoaXMsZikpLGgucG9zdGZvcm1hdChmKX0sWW4udG9JU09TdHJpbmc9am4sWW4udG9TdHJpbmc9am4sWW4udG9KU09OPWpuLFluLmxvY2FsZT1IZSxZbi5sb2NhbGVEYXRhPVdlLFluLnRvSXNvU3RyaW5nPUMoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIixqbiksWW4ubGFuZz0kZSxIKCJYIiwwLDAsInVuaXgiKSxIKCJ4IiwwLDAsInZhbHVlT2YiKSxsdCgieCIsYXQpLGx0KCJYIiwvWystXT9cZCsoXC5cZHsxLDN9KT8vKSxwdCgiWCIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KHQsMTApKX0pKSxwdCgieCIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9kPW5ldyBEYXRlKGsodCkpfSkpLGkudmVyc2lvbj0iMi4yNC4wIixlPV9lLGkuZm49b24saS5taW49ZnVuY3Rpb24oKXtyZXR1cm4ga2UoImlzQmVmb3JlIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGkubWF4PWZ1bmN0aW9uKCl7cmV0dXJuIGtlKCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGkubm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93KCk6K25ldyBEYXRlfSxpLnV0Yz1kLGkudW5peD1mdW5jdGlvbih0KXtyZXR1cm4gX2UoMWUzKnQpfSxpLm1vbnRocz1mdW5jdGlvbih0LGUpe3JldHVybiBsbih0LGUsIm1vbnRocyIpfSxpLmlzRGF0ZT11LGkubG9jYWxlPWVlLGkuaW52YWxpZD1nLGkuZHVyYXRpb249UmUsaS5pc01vbWVudD14LGkud2Vla2RheXM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBobih0LGUsbiwid2Vla2RheXMiKX0saS5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gX2UuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfSxpLmxvY2FsZURhdGE9cmUsaS5pc0R1cmF0aW9uPUNlLGkubW9udGhzU2hvcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbG4odCxlLCJtb250aHNTaG9ydCIpfSxpLndlZWtkYXlzTWluPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaG4odCxlLG4sIndlZWtkYXlzTWluIil9LGkuZGVmaW5lTG9jYWxlPW5lLGkudXBkYXRlTG9jYWxlPWZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9ZSl7dmFyIG4scixpPVp0O251bGwhPShyPXRlKHQpKSYmKGk9ci5fY29uZmlnKSwobj1uZXcgTyhlPUQoaSxlKSkpLnBhcmVudExvY2FsZT1RdFt0XSxRdFt0XT1uLGVlKHQpfWVsc2UgbnVsbCE9UXRbdF0mJihudWxsIT1RdFt0XS5wYXJlbnRMb2NhbGU/UXRbdF09UXRbdF0ucGFyZW50TG9jYWxlOm51bGwhPVF0W3RdJiZkZWxldGUgUXRbdF0pO3JldHVybiBRdFt0XX0saS5sb2NhbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFMoUXQpfSxpLndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBobih0LGUsbiwid2Vla2RheXNTaG9ydCIpfSxpLm5vcm1hbGl6ZVVuaXRzPUksaS5yZWxhdGl2ZVRpbWVSb3VuZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9JbjoiZnVuY3Rpb24iPT10eXBlb2YgdCYmKEluPXQsITApfSxpLnJlbGF0aXZlVGltZVRocmVzaG9sZD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDAhPT1Sblt0XSYmKHZvaWQgMD09PWU/Um5bdF06KFJuW3RdPWUsInMiPT09dCYmKFJuLnNzPWUtMSksITApKX0saS5jYWxlbmRhckZvcm1hdD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZGlmZihlLCJkYXlzIiwhMCk7cmV0dXJuIG48LTY/InNhbWVFbHNlIjpuPC0xPyJsYXN0V2VlayI6bjwwPyJsYXN0RGF5IjpuPDE/InNhbWVEYXkiOm48Mj8ibmV4dERheSI6bjw3PyJuZXh0V2VlayI6InNhbWVFbHNlIn0saS5wcm90b3R5cGU9b24saS5IVE1MNV9GTVQ9e0RBVEVUSU1FX0xPQ0FMOiJZWVlZLU1NLUREVEhIOm1tIixEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiJZWVlZLU1NLUREVEhIOm1tOnNzIixEQVRFVElNRV9MT0NBTF9NUzoiWVlZWS1NTS1ERFRISDptbTpzcy5TU1MiLERBVEU6IllZWVktTU0tREQiLFRJTUU6IkhIOm1tIixUSU1FX1NFQ09ORFM6IkhIOm1tOnNzIixUSU1FX01TOiJISDptbTpzcy5TU1MiLFdFRUs6IkdHR0ctW1ddV1ciLE1PTlRIOiJZWVlZLU1NIn0saX0oKX0sNjQ3MDp0PT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIlBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSl9ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbixyPSIiLGk9MCxhPS0xLG89MCxzPTA7czw9dC5sZW5ndGg7KytzKXtpZihzPHQubGVuZ3RoKW49dC5jaGFyQ29kZUF0KHMpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihhPT09cy0xfHwxPT09byk7ZWxzZSBpZihhIT09cy0xJiYyPT09byl7aWYoci5sZW5ndGg8Mnx8MiE9PWl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSlpZihyLmxlbmd0aD4yKXt2YXIgYz1yLmxhc3RJbmRleE9mKCIvIik7aWYoYyE9PXIubGVuZ3RoLTEpey0xPT09Yz8ocj0iIixpPTApOmk9KHI9ci5zbGljZSgwLGMpKS5sZW5ndGgtMS1yLmxhc3RJbmRleE9mKCIvIiksYT1zLG89MDtjb250aW51ZX19ZWxzZSBpZigyPT09ci5sZW5ndGh8fDE9PT1yLmxlbmd0aCl7cj0iIixpPTAsYT1zLG89MDtjb250aW51ZX1lJiYoci5sZW5ndGg+MD9yKz0iLy4uIjpyPSIuLiIsaT0yKX1lbHNlIHIubGVuZ3RoPjA/cis9Ii8iK3Quc2xpY2UoYSsxLHMpOnI9dC5zbGljZShhKzEscyksaT1zLWEtMTthPXMsbz0wfWVsc2UgNDY9PT1uJiYtMSE9PW8/KytvOm89LTF9cmV0dXJuIHJ9dmFyIHI9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQscj0iIixpPSExLGE9YXJndW1lbnRzLmxlbmd0aC0xO2E+PS0xJiYhaTthLS0pe3ZhciBvO2E+PTA/bz1hcmd1bWVudHNbYV06KHZvaWQgMD09PXQmJih0PXByb2Nlc3MuY3dkKCkpLG89dCksZShvKSwwIT09by5sZW5ndGgmJihyPW8rIi8iK3IsaT00Nz09PW8uY2hhckNvZGVBdCgwKSl9cmV0dXJuIHI9bihyLCFpKSxpP3IubGVuZ3RoPjA/Ii8iK3I6Ii8iOnIubGVuZ3RoPjA/cjoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbih0KXtpZihlKHQpLDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7dmFyIHI9NDc9PT10LmNoYXJDb2RlQXQoMCksaT00Nz09PXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKTtyZXR1cm4gMCE9PSh0PW4odCwhcikpLmxlbmd0aHx8cnx8KHQ9Ii4iKSx0Lmxlbmd0aD4wJiZpJiYodCs9Ii8iKSxyPyIvIit0OnR9LGlzQWJzb2x1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIGUodCksdC5sZW5ndGg+MCYmNDc9PT10LmNoYXJDb2RlQXQoMCl9LGpvaW46ZnVuY3Rpb24oKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciB0LG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKXt2YXIgaT1hcmd1bWVudHNbbl07ZShpKSxpLmxlbmd0aD4wJiYodm9pZCAwPT09dD90PWk6dCs9Ii8iK2kpfXJldHVybiB2b2lkIDA9PT10PyIuIjpyLm5vcm1hbGl6ZSh0KX0scmVsYXRpdmU6ZnVuY3Rpb24odCxuKXtpZihlKHQpLGUobiksdD09PW4pcmV0dXJuIiI7aWYoKHQ9ci5yZXNvbHZlKHQpKT09PShuPXIucmVzb2x2ZShuKSkpcmV0dXJuIiI7Zm9yKHZhciBpPTE7aTx0Lmxlbmd0aCYmNDc9PT10LmNoYXJDb2RlQXQoaSk7KytpKTtmb3IodmFyIGE9dC5sZW5ndGgsbz1hLWkscz0xO3M8bi5sZW5ndGgmJjQ3PT09bi5jaGFyQ29kZUF0KHMpOysrcyk7Zm9yKHZhciBjPW4ubGVuZ3RoLXMsdT1vPGM/bzpjLGw9LTEsaD0wO2g8PXU7KytoKXtpZihoPT09dSl7aWYoYz51KXtpZig0Nz09PW4uY2hhckNvZGVBdChzK2gpKXJldHVybiBuLnNsaWNlKHMraCsxKTtpZigwPT09aClyZXR1cm4gbi5zbGljZShzK2gpfWVsc2Ugbz51JiYoNDc9PT10LmNoYXJDb2RlQXQoaStoKT9sPWg6MD09PWgmJihsPTApKTticmVha312YXIgZj10LmNoYXJDb2RlQXQoaStoKTtpZihmIT09bi5jaGFyQ29kZUF0KHMraCkpYnJlYWs7NDc9PT1mJiYobD1oKX12YXIgZD0iIjtmb3IoaD1pK2wrMTtoPD1hOysraCloIT09YSYmNDchPT10LmNoYXJDb2RlQXQoaCl8fCgwPT09ZC5sZW5ndGg/ZCs9Ii4uIjpkKz0iLy4uIik7cmV0dXJuIGQubGVuZ3RoPjA/ZCtuLnNsaWNlKHMrbCk6KHMrPWwsNDc9PT1uLmNoYXJDb2RlQXQocykmJisrcyxuLnNsaWNlKHMpKX0sX21ha2VMb25nOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxkaXJuYW1lOmZ1bmN0aW9uKHQpe2lmKGUodCksMD09PXQubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIG49dC5jaGFyQ29kZUF0KDApLHI9NDc9PT1uLGk9LTEsYT0hMCxvPXQubGVuZ3RoLTE7bz49MTstLW8paWYoNDc9PT0obj10LmNoYXJDb2RlQXQobykpKXtpZighYSl7aT1vO2JyZWFrfX1lbHNlIGE9ITE7cmV0dXJuLTE9PT1pP3I/Ii8iOiIuIjpyJiYxPT09aT8iLy8iOnQuc2xpY2UoMCxpKX0sYmFzZW5hbWU6ZnVuY3Rpb24odCxuKXtpZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcignImV4dCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO2UodCk7dmFyIHIsaT0wLGE9LTEsbz0hMDtpZih2b2lkIDAhPT1uJiZuLmxlbmd0aD4wJiZuLmxlbmd0aDw9dC5sZW5ndGgpe2lmKG4ubGVuZ3RoPT09dC5sZW5ndGgmJm49PT10KXJldHVybiIiO3ZhciBzPW4ubGVuZ3RoLTEsYz0tMTtmb3Iocj10Lmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgdT10LmNoYXJDb2RlQXQocik7aWYoNDc9PT11KXtpZighbyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PWMmJihvPSExLGM9cisxKSxzPj0wJiYodT09PW4uY2hhckNvZGVBdChzKT8tMT09LS1zJiYoYT1yKToocz0tMSxhPWMpKX1yZXR1cm4gaT09PWE/YT1jOi0xPT09YSYmKGE9dC5sZW5ndGgpLHQuc2xpY2UoaSxhKX1mb3Iocj10Lmxlbmd0aC0xO3I+PTA7LS1yKWlmKDQ3PT09dC5jaGFyQ29kZUF0KHIpKXtpZighbyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cisxKTtyZXR1cm4tMT09PWE/IiI6dC5zbGljZShpLGEpfSxleHRuYW1lOmZ1bmN0aW9uKHQpe2UodCk7Zm9yKHZhciBuPS0xLHI9MCxpPS0xLGE9ITAsbz0wLHM9dC5sZW5ndGgtMTtzPj0wOy0tcyl7dmFyIGM9dC5jaGFyQ29kZUF0KHMpO2lmKDQ3IT09YyktMT09PWkmJihhPSExLGk9cysxKSw0Nj09PWM/LTE9PT1uP249czoxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSk7ZWxzZSBpZighYSl7cj1zKzE7YnJlYWt9fXJldHVybi0xPT09bnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJm49PT1pLTEmJm49PT1yKzE/IiI6dC5zbGljZShuLGkpfSxmb3JtYXQ6ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInBhdGhPYmplY3QiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5kaXJ8fGUucm9vdCxyPWUuYmFzZXx8KGUubmFtZXx8IiIpKyhlLmV4dHx8IiIpO3JldHVybiBuP249PT1lLnJvb3Q/bityOm4rIi8iK3I6cn0oMCx0KX0scGFyc2U6ZnVuY3Rpb24odCl7ZSh0KTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PXQubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9dC5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxjPS0xLHU9ITAsbD10Lmxlbmd0aC0xLGg9MDtsPj1yOy0tbClpZig0NyE9PShpPXQuY2hhckNvZGVBdChsKSkpLTE9PT1jJiYodT0hMSxjPWwrMSksNDY9PT1pPy0xPT09bz9vPWw6MSE9PWgmJihoPTEpOi0xIT09byYmKGg9LTEpO2Vsc2UgaWYoIXUpe3M9bCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1jfHwwPT09aHx8MT09PWgmJm89PT1jLTEmJm89PT1zKzE/LTEhPT1jJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT90LnNsaWNlKDEsYyk6dC5zbGljZShzLGMpKTooMD09PXMmJmE/KG4ubmFtZT10LnNsaWNlKDEsbyksbi5iYXNlPXQuc2xpY2UoMSxjKSk6KG4ubmFtZT10LnNsaWNlKHMsbyksbi5iYXNlPXQuc2xpY2UocyxjKSksbi5leHQ9dC5zbGljZShvLGMpKSxzPjA/bi5kaXI9dC5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLHQuZXhwb3J0cz1yfSw4MjE4OigpPT57fSw4MDA5OigpPT57fSw1MzU0OigpPT57fSw2ODc4OigpPT57fSw4MTgzOigpPT57fSwxNDI4OigpPT57fSw0NTUxOigpPT57fSw4ODAwOigpPT57fSwxOTkzOigpPT57fSwzMDY5OigpPT57fSw5MTQzOigpPT57fX0sZT17fTtmdW5jdGlvbiBuKHIpe3ZhciBpPWVbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPWVbcl09e2lkOnIsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiB0W3JdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLG4pLGEubG9hZGVkPSEwLGEuZXhwb3J0c31uLmM9ZSxuLm49dD0+e3ZhciBlPXQmJnQuX19lc01vZHVsZT8oKT0+dC5kZWZhdWx0OigpPT50O3JldHVybiBuLmQoZSx7YTplfSksZX0sbi5kPSh0LGUpPT57Zm9yKHZhciByIGluIGUpbi5vKGUscikmJiFuLm8odCxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscix7ZW51bWVyYWJsZTohMCxnZXQ6ZVtyXX0pfSxuLmc9ZnVuY3Rpb24oKXtpZigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaCh0KXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxuLm89KHQsZSk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpLG4ucj10PT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbi5ubWQ9dD0+KHQucGF0aHM9W10sdC5jaGlsZHJlbnx8KHQuY2hpbGRyZW49W10pLHQpO3ZhciByPW4obi5zPTc0NTgpO3JldHVybiByLmRlZmF1bHR9KSgpfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1tZXJtYWlkLm1pbi5qcy5tYXA=`; \ No newline at end of file diff --git a/packages/renderer/assets/highlight.js/atom-one-dark-reasonable.css b/packages/renderer/assets/highlight.js/atom-one-dark-reasonable.css index 9296216eb..a38738d96 100644 --- a/packages/renderer/assets/highlight.js/atom-one-dark-reasonable.css +++ b/packages/renderer/assets/highlight.js/atom-one-dark-reasonable.css @@ -1 +1,74 @@ -pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-keyword,.hljs-operator,.hljs-pattern-match{color:#f92672}.hljs-function,.hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-function .hljs-params{color:#a6e22e}.hljs-function .hljs-params .hljs-typing{color:#fd971f}.hljs-module-access .hljs-module{color:#7e57c2}.hljs-constructor{color:#e2b93d}.hljs-constructor .hljs-string{color:#9ccc65}.hljs-comment,.hljs-quote{color:#b18eb1;font-style:italic}.hljs-doctag,.hljs-formula{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} \ No newline at end of file +/* + +Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage + +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +*/ +.hljs { + color: #abb2bf; + background: #282c34; +} +.hljs-keyword, .hljs-operator { + color: #F92672; +} +.hljs-pattern-match { + color: #F92672; +} +.hljs-pattern-match .hljs-constructor { + color: #61aeee; +} +.hljs-function { + color: #61aeee; +} +.hljs-function .hljs-params { + color: #A6E22E; +} +.hljs-function .hljs-params .hljs-typing { + color: #FD971F; +} +.hljs-module-access .hljs-module { + color: #7e57c2; +} +.hljs-constructor { + color: #e2b93d; +} +.hljs-constructor .hljs-string { + color: #9CCC65; +} +.hljs-comment, .hljs-quote { + color: #b18eb1; + font-style: italic; +} +.hljs-doctag, .hljs-formula { + color: #c678dd; +} +.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { + color: #e06c75; +} +.hljs-literal { + color: #56b6c2; +} +.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta .hljs-string { + color: #98c379; +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #e6c07b; +} +.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { + color: #d19a66; +} +.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { + color: #61aeee; +} +.hljs-emphasis { + font-style: italic; +} +.hljs-strong { + font-weight: bold; +} +.hljs-link { + text-decoration: underline; +} diff --git a/packages/renderer/assets/highlight.js/atom-one-light.css b/packages/renderer/assets/highlight.js/atom-one-light.css index df0268a94..4ae2c63f8 100644 --- a/packages/renderer/assets/highlight.js/atom-one-light.css +++ b/packages/renderer/assets/highlight.js/atom-one-light.css @@ -1 +1,94 @@ -pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} \ No newline at end of file +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #50a14f; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/packages/renderer/assets/katex/fonts/KaTeX_AMS-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_AMS-Regular.woff2 index e0a9e4d06..0acaaff03 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_AMS-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_AMS-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Bold.woff2 index 9fffa809f..f390922ec 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Bold.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Bold.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Regular.woff2 index 1be84ba9f..75344a1f9 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Caligraphic-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Bold.woff2 index 78249c2a3..395f28bea 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Bold.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Bold.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Regular.woff2 index a074dfb74..735f6948d 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Fraktur-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Main-Bold.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Main-Bold.woff2 index a57328e1c..ab2ad21da 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Main-Bold.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Main-Bold.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Main-BoldItalic.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Main-BoldItalic.woff2 index 429768e26..5931794de 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Main-BoldItalic.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Main-BoldItalic.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Main-Italic.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Main-Italic.woff2 index a732e3e32..b50920e13 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Main-Italic.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Main-Italic.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Main-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Main-Regular.woff2 index 8275bd684..eb24a7ba2 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Main-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Main-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Math-BoldItalic.woff2 index 86d6a7d93..29657023a 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Math-BoldItalic.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Math-BoldItalic.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Math-Italic.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Math-Italic.woff2 index 12a6443e7..215c143fd 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Math-Italic.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Math-Italic.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Bold.woff2 index d7ba3b8d1..cfaa3bda5 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Bold.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Bold.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Italic.woff2 index 04a65b7d4..349c06dc6 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Italic.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Italic.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Regular.woff2 index 1f43ffea0..a90eea85f 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_SansSerif-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Script-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Script-Regular.woff2 index a7383c7c6..b3048fc11 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Script-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Script-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Size1-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Size1-Regular.woff2 index 25c3f1634..c5a8462fb 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Size1-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Size1-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Size2-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Size2-Regular.woff2 index 620a8c698..e1bccfe24 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Size2-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Size2-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Size3-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Size3-Regular.woff2 index 76d0dd0df..249a28662 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Size3-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Size3-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Size4-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Size4-Regular.woff2 index 5e78b5baf..680c13085 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Size4-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Size4-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/packages/renderer/assets/katex/fonts/KaTeX_Typewriter-Regular.woff2 index efa222d55..771f1af70 100644 Binary files a/packages/renderer/assets/katex/fonts/KaTeX_Typewriter-Regular.woff2 and b/packages/renderer/assets/katex/fonts/KaTeX_Typewriter-Regular.woff2 differ diff --git a/packages/renderer/assets/katex/katex.css b/packages/renderer/assets/katex/katex.css index 394bdceb7..f7ebca1f9 100644 --- a/packages/renderer/assets/katex/katex.css +++ b/packages/renderer/assets/katex/katex.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.13.3"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-box-align:baseline;align-items:baseline;display:-webkit-inline-box;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-inline-box;display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-content;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:-webkit-calc(50% + .3em);right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:-webkit-calc(50% + .3em);left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} +@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.13.24"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/packages/renderer/assets/mermaid/mermaid.min.js b/packages/renderer/assets/mermaid/mermaid.min.js index 0e73e1384..d861f27f0 100644 --- a/packages/renderer/assets/mermaid/mermaid.min.js +++ b/packages/renderer/assets/mermaid/mermaid.min.js @@ -1,3 +1,3 @@ /*! For license information please see mermaid.min.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={5051:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,6],n=[1,7],r=[1,8],i=[1,9],a=[1,12],o=[1,11],s=[1,15,24],c=[1,19],u=[1,31],l=[1,34],h=[1,32],f=[1,33],d=[1,35],p=[1,36],y=[1,37],g=[1,38],m=[1,41],v=[1,42],b=[1,43],_=[1,44],x=[15,24],w=[1,56],k=[1,57],T=[1,58],E=[1,59],C=[1,60],S=[1,61],A=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],M=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],N=[7,8,9,10,15,18,22,24],D=[47,77,78,79,80],O=[47,54,55,77,78,79,80],B=[47,50,51,52,53,77,78,79,80],L=[15,24,31],I=[1,93],R={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,CLASS_DIAGRAM:22,statements:23,EOF:24,statement:25,className:26,alphaNumToken:27,classLiteralName:28,GENERICTYPE:29,relationStatement:30,LABEL:31,classStatement:32,methodStatement:33,annotationStatement:34,clickStatement:35,cssClassStatement:36,CLASS:37,STYLE_SEPARATOR:38,STRUCT_START:39,members:40,STRUCT_STOP:41,ANNOTATION_START:42,ANNOTATION_END:43,MEMBER:44,SEPARATOR:45,relation:46,STR:47,relationType:48,lineType:49,AGGREGATION:50,EXTENSION:51,COMPOSITION:52,DEPENDENCY:53,LINE:54,DOTTED_LINE:55,CALLBACK:56,LINK:57,LINK_TARGET:58,CLICK:59,CALLBACK_NAME:60,CALLBACK_ARGS:61,HREF:62,CSSCLASS:63,commentToken:64,textToken:65,graphCodeTokens:66,textNoTagsToken:67,TAGSTART:68,TAGEND:69,"==":70,"--":71,PCT:72,DEFAULT:73,SPACE:74,MINUS:75,keywords:76,UNICODE_TEXT:77,NUM:78,ALPHA:79,BQUOTE_STR:80,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"CLASS_DIAGRAM",24:"EOF",29:"GENERICTYPE",31:"LABEL",37:"CLASS",38:"STYLE_SEPARATOR",39:"STRUCT_START",41:"STRUCT_STOP",42:"ANNOTATION_START",43:"ANNOTATION_END",44:"MEMBER",45:"SEPARATOR",47:"STR",50:"AGGREGATION",51:"EXTENSION",52:"COMPOSITION",53:"DEPENDENCY",54:"LINE",55:"DOTTED_LINE",56:"CALLBACK",57:"LINK",58:"LINK_TARGET",59:"CLICK",60:"CALLBACK_NAME",61:"CALLBACK_ARGS",62:"HREF",63:"CSSCLASS",66:"graphCodeTokens",68:"TAGSTART",69:"TAGEND",70:"==",71:"--",72:"PCT",73:"DEFAULT",74:"SPACE",75:"MINUS",76:"keywords",77:"UNICODE_TEXT",78:"NUM",79:"ALPHA",80:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:r.setDirection("TB");break;case 5:r.setDirection("BT");break;case 6:r.setDirection("RL");break;case 7:r.setDirection("LR");break;case 11:r.parseDirective("%%{","open_directive");break;case 12:r.parseDirective(a[s],"type_directive");break;case 13:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 14:r.parseDirective("}%%","close_directive","class");break;case 19:case 20:this.$=a[s];break;case 21:this.$=a[s-1]+a[s];break;case 22:case 23:this.$=a[s-1]+"~"+a[s];break;case 24:r.addRelation(a[s]);break;case 25:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 33:r.addClass(a[s]);break;case 34:r.addClass(a[s-2]),r.setCssClass(a[s-2],a[s]);break;case 35:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 36:r.addClass(a[s-5]),r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 37:r.addAnnotation(a[s],a[s-2]);break;case 38:this.$=[a[s]];break;case 39:a[s].push(a[s-1]),this.$=a[s];break;case 40:break;case 41:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 42:case 43:break;case 44:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 45:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 46:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 47:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 48:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 49:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 50:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 51:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 52:this.$=r.relationType.AGGREGATION;break;case 53:this.$=r.relationType.EXTENSION;break;case 54:this.$=r.relationType.COMPOSITION;break;case 55:this.$=r.relationType.DEPENDENCY;break;case 56:this.$=r.lineType.LINE;break;case 57:this.$=r.lineType.DOTTED_LINE;break;case 58:case 64:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 59:case 65:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 60:case 68:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 61:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 62:case 70:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 63:case 71:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 66:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 67:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 69:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 72:r.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:e,8:n,9:r,10:i,11:5,12:10,18:a,22:o},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:e,8:n,9:r,10:i,11:5,12:10,18:a,22:o},{1:[2,8]},t(s,[2,4]),t(s,[2,5]),t(s,[2,6]),t(s,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:c},t([16,21],[2,12]),{5:29,6:28,7:e,8:n,9:r,10:i,12:10,18:a,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:u,42:l,44:h,45:f,56:d,57:p,59:y,63:g,77:m,78:v,79:b,80:_},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},t(x,[2,24],{31:[1,50]}),t(x,[2,26]),t(x,[2,27]),t(x,[2,28]),t(x,[2,29]),t(x,[2,30]),t(x,[2,31]),t(x,[2,32]),t(x,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:w,51:k,52:T,53:E,54:C,55:S}),{26:62,27:39,28:40,77:m,78:v,79:b,80:_},t(x,[2,42]),t(x,[2,43]),{27:63,77:m,78:v,79:b},{26:64,27:39,28:40,77:m,78:v,79:b,80:_},{26:65,27:39,28:40,77:m,78:v,79:b,80:_},{26:66,27:39,28:40,77:m,78:v,79:b,80:_},{47:[1,67]},t(A,[2,19],{27:39,28:40,26:68,29:[1,69],77:m,78:v,79:b,80:_}),t(A,[2,20],{29:[1,70]}),t(M,[2,86]),t(M,[2,87]),t(M,[2,88]),t([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),t(N,[2,9]),{14:71,21:c},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:e,8:n,9:r,10:i,12:10,18:a,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:u,42:l,44:h,45:f,56:d,57:p,59:y,63:g,77:m,78:v,79:b,80:_},t(x,[2,25]),{26:73,27:39,28:40,47:[1,74],77:m,78:v,79:b,80:_},{46:75,48:54,49:55,50:w,51:k,52:T,53:E,54:C,55:S},t(x,[2,41]),{49:76,54:C,55:S},t(D,[2,51],{48:77,50:w,51:k,52:T,53:E}),t(O,[2,52]),t(O,[2,53]),t(O,[2,54]),t(O,[2,55]),t(B,[2,56]),t(B,[2,57]),t(x,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:m,78:v,79:b},t(A,[2,21]),t(A,[2,22]),t(A,[2,23]),{15:[1,86]},{24:[2,18]},t(L,[2,44]),{26:87,27:39,28:40,77:m,78:v,79:b,80:_},{26:88,27:39,28:40,47:[1,89],77:m,78:v,79:b,80:_},t(D,[2,50],{48:90,50:w,51:k,52:T,53:E}),t(D,[2,49]),{27:91,77:m,78:v,79:b},{40:92,44:I},{26:94,27:39,28:40,77:m,78:v,79:b,80:_},t(x,[2,58],{47:[1,95]}),t(x,[2,60],{47:[1,97],58:[1,96]}),t(x,[2,64],{47:[1,98],61:[1,99]}),t(x,[2,68],{47:[1,101],58:[1,100]}),t(x,[2,72]),t(N,[2,10]),t(L,[2,46]),t(L,[2,45]),{26:102,27:39,28:40,77:m,78:v,79:b,80:_},t(D,[2,48]),t(x,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:I},t(x,[2,37]),t(x,[2,59]),t(x,[2,61]),t(x,[2,62],{58:[1,106]}),t(x,[2,65]),t(x,[2,66],{47:[1,107]}),t(x,[2,69]),t(x,[2,70],{58:[1,108]}),t(L,[2,47]),{40:109,44:I},t(x,[2,35]),{41:[2,39]},t(x,[2,63]),t(x,[2,67]),t(x,[2,71]),{41:[1,110]},t(x,[2,36])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},F={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:case 10:break;case 11:return 15;case 12:break;case 13:case 14:return 22;case 15:return this.begin("struct"),39;case 16:return"EOF_IN_STRUCT";case 17:return"OPEN_IN_STRUCT";case 18:return this.popState(),41;case 19:break;case 20:return"MEMBER";case 21:return 37;case 22:return 63;case 23:return 56;case 24:return 57;case 25:return 59;case 26:return 42;case 27:return 43;case 28:this.begin("generic");break;case 29:this.popState();break;case 30:return"GENERICTYPE";case 31:this.begin("string");break;case 32:this.popState();break;case 33:return"STR";case 34:this.begin("bqstring");break;case 35:this.popState();break;case 36:return"BQUOTE_STR";case 37:this.begin("href");break;case 38:this.popState();break;case 39:return 62;case 40:this.begin("callback_name");break;case 41:this.popState();break;case 42:this.popState(),this.begin("callback_args");break;case 43:return 60;case 44:this.popState();break;case 45:return 61;case 46:case 47:case 48:case 49:return 58;case 50:case 51:return 51;case 52:case 53:return 53;case 54:return 52;case 55:return 50;case 56:return 54;case 57:return 55;case 58:return 31;case 59:return 38;case 60:return 75;case 61:return"DOT";case 62:return"PLUS";case 63:return 72;case 64:case 65:return"EQUALS";case 66:return 79;case 67:return"PUNCTUATION";case 68:return 78;case 69:return 77;case 70:return 74;case 71:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[44,45],inclusive:!1},callback_name:{rules:[41,42,43],inclusive:!1},href:{rules:[38,39],inclusive:!1},struct:{rules:[16,17,18,19,20],inclusive:!1},generic:{rules:[29,30],inclusive:!1},bqstring:{rules:[35,36],inclusive:!1},string:{rules:[32,33],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],inclusive:!0}}};function P(){this.yy={}}return R.lexer=F,P.prototype=R,R.Parser=P,new P}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8218).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},4701:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,23,40],i=[1,17],a=[1,20],o=[1,25],s=[1,26],c=[1,27],u=[1,28],l=[1,37],h=[23,37,38],f=[4,6,9,11,23,40],d=[33,34,35,36],p=[22,29],y={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,attributeKeyType:27,COMMENT:28,ATTRIBUTE_WORD:29,ATTRIBUTE_KEY:30,cardinality:31,relType:32,ZERO_OR_ONE:33,ZERO_OR_MORE:34,ONE_OR_MORE:35,ONLY_ONE:36,NON_IDENTIFYING:37,IDENTIFYING:38,WORD:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",28:"COMMENT",29:"ATTRIBUTE_WORD",30:"ATTRIBUTE_KEY",33:"ZERO_OR_ONE",34:"ZERO_OR_MORE",35:"ONE_OR_MORE",36:"ONLY_ONE",37:"NON_IDENTIFYING",38:"IDENTIFYING",39:"WORD",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[18,3],[31,1],[31,1],[31,1],[31,1],[32,1],[32,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 12:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]);break;case 14:r.addEntity(a[s-2]);break;case 15:r.addEntity(a[s]);break;case 16:this.$=a[s];break;case 17:this.$=[a[s]];break;case 18:a[s].push(a[s-1]),this.$=a[s];break;case 19:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 20:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeKeyType:a[s]};break;case 21:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeComment:a[s]};break;case 22:this.$={attributeType:a[s-3],attributeName:a[s-2],attributeKeyType:a[s-1],attributeComment:a[s]};break;case 23:case 24:case 25:this.$=a[s];break;case 26:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 27:this.$=r.Cardinality.ZERO_OR_ONE;break;case 28:this.$=r.Cardinality.ZERO_OR_MORE;break;case 29:this.$=r.Cardinality.ONE_OR_MORE;break;case 30:this.$=r.Cardinality.ONLY_ONE;break;case 31:this.$=r.Identification.NON_IDENTIFYING;break;case 32:this.$=r.Identification.IDENTIFYING;break;case 33:this.$=a[s].replace(/"/g,"");break;case 34:this.$=a[s];break;case 35:r.parseDirective("%%{","open_directive");break;case 36:r.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 38:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,40:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,40:n},{13:8,41:[1,9]},{41:[2,35]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,40:n},{1:[2,2]},{14:18,15:[1,19],43:a},t([15,43],[2,36]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:15,10:21,12:4,17:16,23:i,40:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,15],{18:22,31:24,20:[1,23],33:o,34:s,35:c,36:u}),t([6,9,11,15,20,23,33,34,35,36,40],[2,16]),{11:[1,29]},{16:30,42:[1,31]},{11:[2,38]},t(r,[2,5]),{17:32,23:i},{21:33,22:[1,34],24:35,25:36,29:l},{32:38,37:[1,39],38:[1,40]},t(h,[2,27]),t(h,[2,28]),t(h,[2,29]),t(h,[2,30]),t(f,[2,9]),{14:41,43:a},{43:[2,37]},{15:[1,42]},{22:[1,43]},t(r,[2,14]),{21:44,22:[2,17],24:35,25:36,29:l},{26:45,29:[1,46]},{29:[2,23]},{31:47,33:o,34:s,35:c,36:u},t(d,[2,31]),t(d,[2,32]),{11:[1,48]},{19:49,23:[1,51],39:[1,50]},t(r,[2,13]),{22:[2,18]},t(p,[2,19],{27:52,28:[1,53],30:[1,54]}),t([22,28,29,30],[2,24]),{23:[2,26]},t(f,[2,10]),t(r,[2,12]),t(r,[2,33]),t(r,[2,34]),t(p,[2,20],{28:[1,55]}),t(p,[2,21]),t([22,28,29],[2,25]),t(p,[2,22])],defaultActions:{5:[2,35],7:[2,2],20:[2,38],31:[2,37],37:[2,23],44:[2,18],47:[2,26]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},g={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:case 6:break;case 7:return 11;case 8:break;case 9:return 9;case 10:return 39;case 11:return 4;case 12:return this.begin("block"),20;case 13:break;case 14:return 30;case 15:return 29;case 16:return 28;case 17:break;case 18:return this.popState(),22;case 19:return e.yytext[0];case 20:return 33;case 21:return 34;case 22:return 35;case 23:return 36;case 24:return 33;case 25:return 34;case 26:return 35;case 27:return 37;case 28:return 38;case 29:case 30:return 37;case 31:return 23;case 32:return e.yytext[0];case 33:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17,18,19],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0}}};function m(){this.yy={}}return y.lexer=g,m.prototype=y,y.Parser=m,new m}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8009).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},7805:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,9],n=[1,7],r=[1,6],i=[1,8],a=[1,20,21,22,23,38,47,59,60,79,80,81,82,83,84,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],o=[2,10],s=[1,20],c=[1,21],u=[1,22],l=[1,23],h=[1,30],f=[1,59],d=[1,45],p=[1,49],y=[1,33],g=[1,34],m=[1,35],v=[1,36],b=[1,37],_=[1,53],x=[1,48],w=[1,50],k=[1,52],T=[1,56],E=[1,57],C=[1,38],S=[1,39],A=[1,40],M=[1,41],N=[1,58],D=[1,47],O=[1,51],B=[1,54],L=[1,55],I=[1,46],R=[1,62],F=[1,67],P=[1,20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],j=[1,71],Y=[1,70],z=[1,72],U=[20,21,23,74,75],q=[1,93],$=[1,98],H=[1,101],W=[1,102],V=[1,95],G=[1,100],X=[1,103],Z=[1,96],Q=[1,108],K=[1,107],J=[1,97],tt=[1,99],et=[1,104],nt=[1,105],rt=[1,106],it=[1,109],at=[20,21,22,23,74,75],ot=[20,21,22,23,48,74,75],st=[20,21,22,23,40,47,48,50,52,54,56,58,59,60,62,64,66,67,69,74,75,84,98,99,102,104,105,115,116,117,118,119,120],ct=[20,21,23],ut=[20,21,23,47,59,60,74,75,84,98,99,102,104,105,115,116,117,118,119,120],lt=[1,12,20,21,22,23,24,38,42,47,59,60,79,80,81,82,83,84,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],ht=[47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],ft=[1,142],dt=[1,150],pt=[1,151],yt=[1,152],gt=[1,153],mt=[1,137],vt=[1,138],bt=[1,134],_t=[1,145],xt=[1,146],wt=[1,147],kt=[1,148],Tt=[1,149],Et=[1,154],Ct=[1,155],St=[1,140],At=[1,143],Mt=[1,139],Nt=[1,136],Dt=[20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],Ot=[1,158],Bt=[20,21,22,23,26,47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],Lt=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,60,61,63,65,66,68,70,74,75,79,80,81,82,83,84,85,88,98,99,102,104,105,106,107,115,116,117,118,119,120],It=[12,21,22,24],Rt=[22,99],Ft=[1,241],Pt=[1,236],jt=[1,237],Yt=[1,245],zt=[1,242],Ut=[1,239],qt=[1,238],$t=[1,240],Ht=[1,243],Wt=[1,244],Vt=[1,246],Gt=[1,264],Xt=[20,21,23,99],Zt=[20,21,22,23,59,60,79,95,98,99,102,103,104,105,106],Qt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,link:44,node:45,vertex:46,AMP:47,STYLE_SEPARATOR:48,idString:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,ALPHA:59,COLON:60,PIPE:61,CYLINDERSTART:62,CYLINDEREND:63,DIAMOND_START:64,DIAMOND_STOP:65,TAGEND:66,TRAPSTART:67,TRAPEND:68,INVTRAPSTART:69,INVTRAPEND:70,linkStatement:71,arrowText:72,TESTSTR:73,START_LINK:74,LINK:75,textToken:76,STR:77,keywords:78,STYLE:79,LINKSTYLE:80,CLASSDEF:81,CLASS:82,CLICK:83,DOWN:84,UP:85,textNoTags:86,textNoTagsToken:87,DEFAULT:88,stylesOpt:89,alphaNum:90,CALLBACKNAME:91,CALLBACKARGS:92,HREF:93,LINK_TARGET:94,HEX:95,numList:96,INTERPOLATE:97,NUM:98,COMMA:99,style:100,styleComponent:101,MINUS:102,UNIT:103,BRKT:104,DOT:105,PCT:106,TAGSTART:107,alphaNumToken:108,idStringToken:109,alphaNumStatement:110,direction_tb:111,direction_bt:112,direction_rl:113,direction_lr:114,PUNCTUATION:115,UNICODE_TEXT:116,PLUS:117,EQUALS:118,MULT:119,UNDERSCORE:120,graphCodeTokens:121,ARROW_CROSS:122,ARROW_POINT:123,ARROW_CIRCLE:124,ARROW_OPEN:125,QUOTE:126,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",47:"AMP",48:"STYLE_SEPARATOR",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"ALPHA",60:"COLON",61:"PIPE",62:"CYLINDERSTART",63:"CYLINDEREND",64:"DIAMOND_START",65:"DIAMOND_STOP",66:"TAGEND",67:"TRAPSTART",68:"TRAPEND",69:"INVTRAPSTART",70:"INVTRAPEND",73:"TESTSTR",74:"START_LINK",75:"LINK",77:"STR",79:"STYLE",80:"LINKSTYLE",81:"CLASSDEF",82:"CLASS",83:"CLICK",84:"DOWN",85:"UP",88:"DEFAULT",91:"CALLBACKNAME",92:"CALLBACKARGS",93:"HREF",94:"LINK_TARGET",95:"HEX",97:"INTERPOLATE",98:"NUM",99:"COMMA",102:"MINUS",103:"UNIT",104:"BRKT",105:"DOT",106:"PCT",107:"TAGSTART",111:"direction_tb",112:"direction_bt",113:"direction_rl",114:"direction_lr",115:"PUNCTUATION",116:"UNICODE_TEXT",117:"PLUS",118:"EQUALS",119:"MULT",120:"UNDERSCORE",122:"ARROW_CROSS",123:"ARROW_POINT",124:"ARROW_CIRCLE",125:"ARROW_OPEN",126:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[71,1],[72,3],[39,1],[39,2],[39,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[86,1],[86,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[96,1],[96,3],[89,1],[89,3],[100,1],[100,2],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[87,1],[87,1],[87,1],[87,1],[49,1],[49,2],[90,1],[90,2],[110,1],[110,1],[110,1],[110,1],[43,1],[43,1],[43,1],[43,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.parseDirective("%%{","open_directive");break;case 6:r.parseDirective(a[s],"type_directive");break;case 7:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 8:r.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:a[s]!==[]&&a[s-1].push(a[s]),this.$=a[s-1];break;case 12:case 78:case 80:case 92:case 148:case 150:case 151:this.$=a[s];break;case 19:r.setDirection("TB"),this.$="TB";break;case 20:r.setDirection(a[s-1]),this.$=a[s-1];break;case 35:this.$=a[s-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=r.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 42:this.$=r.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 43:this.$=r.addSubGraph(void 0,a[s-1],void 0);break;case 48:r.addLink(a[s-2].stmt,a[s],a[s-1]),this.$={stmt:a[s],nodes:a[s].concat(a[s-2].nodes)};break;case 49:r.addLink(a[s-3].stmt,a[s-1],a[s-2]),this.$={stmt:a[s-1],nodes:a[s-1].concat(a[s-3].nodes)};break;case 50:this.$={stmt:a[s-1],nodes:a[s-1]};break;case 51:this.$={stmt:a[s],nodes:a[s]};break;case 52:this.$=[a[s]];break;case 53:this.$=a[s-4].concat(a[s]);break;case 54:this.$=[a[s-2]],r.setClass(a[s-2],a[s]);break;case 55:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"square");break;case 56:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"circle");break;case 57:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"ellipse");break;case 58:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"stadium");break;case 59:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"subroutine");break;case 60:this.$=a[s-7],r.addVertex(a[s-7],a[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[s-5],a[s-3]]]));break;case 61:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"cylinder");break;case 62:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"round");break;case 63:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"diamond");break;case 64:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"hexagon");break;case 65:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"odd");break;case 66:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"trapezoid");break;case 67:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 68:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_right");break;case 69:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_left");break;case 70:this.$=a[s],r.addVertex(a[s]);break;case 71:a[s-1].text=a[s],this.$=a[s-1];break;case 72:case 73:a[s-2].text=a[s-1],this.$=a[s-2];break;case 74:this.$=a[s];break;case 75:var c=r.destructLink(a[s],a[s-2]);this.$={type:c.type,stroke:c.stroke,length:c.length,text:a[s-1]};break;case 76:c=r.destructLink(a[s]),this.$={type:c.type,stroke:c.stroke,length:c.length};break;case 77:this.$=a[s-1];break;case 79:case 93:case 149:this.$=a[s-1]+""+a[s];break;case 94:case 95:this.$=a[s-4],r.addClass(a[s-2],a[s]);break;case 96:this.$=a[s-4],r.setClass(a[s-2],a[s]);break;case 97:case 105:this.$=a[s-1],r.setClickEvent(a[s-1],a[s]);break;case 98:case 106:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2]),r.setTooltip(a[s-3],a[s]);break;case 99:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 100:this.$=a[s-4],r.setClickEvent(a[s-4],a[s-3],a[s-2]),r.setTooltip(a[s-4],a[s]);break;case 101:case 107:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 102:case 108:this.$=a[s-3],r.setLink(a[s-3],a[s-2]),r.setTooltip(a[s-3],a[s]);break;case 103:case 109:this.$=a[s-3],r.setLink(a[s-3],a[s-2],a[s]);break;case 104:case 110:this.$=a[s-5],r.setLink(a[s-5],a[s-4],a[s]),r.setTooltip(a[s-5],a[s-2]);break;case 111:this.$=a[s-4],r.addVertex(a[s-2],void 0,void 0,a[s]);break;case 112:case 114:this.$=a[s-4],r.updateLink(a[s-2],a[s]);break;case 113:this.$=a[s-4],r.updateLink([a[s-2]],a[s]);break;case 115:this.$=a[s-8],r.updateLinkInterpolate([a[s-6]],a[s-2]),r.updateLink([a[s-6]],a[s]);break;case 116:this.$=a[s-8],r.updateLinkInterpolate(a[s-6],a[s-2]),r.updateLink(a[s-6],a[s]);break;case 117:this.$=a[s-6],r.updateLinkInterpolate([a[s-4]],a[s]);break;case 118:this.$=a[s-6],r.updateLinkInterpolate(a[s-4],a[s]);break;case 119:case 121:this.$=[a[s]];break;case 120:case 122:a[s-2].push(a[s]),this.$=a[s-2];break;case 124:this.$=a[s-1]+a[s];break;case 146:this.$=a[s];break;case 147:this.$=a[s-1]+""+a[s];break;case 152:this.$="v";break;case 153:this.$="-";break;case 154:this.$={stmt:"dir",value:"TB"};break;case 155:this.$={stmt:"dir",value:"BT"};break;case 156:this.$={stmt:"dir",value:"RL"};break;case 157:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:r,24:i},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:r,24:i},t(a,o,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:r,24:i},{16:15,21:n,22:r,24:i},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,43:31,45:32,46:42,47:f,49:43,59:d,60:p,79:y,80:g,81:m,82:v,83:b,84:_,98:x,99:w,102:k,104:T,105:E,109:44,111:C,112:S,113:A,114:M,115:N,116:D,117:O,118:B,119:L,120:I},{8:60,10:[1,61],15:R},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,64],21:[1,65],22:F,27:63,30:66},t(P,[2,11]),t(P,[2,12]),t(P,[2,13]),t(P,[2,14]),t(P,[2,15]),t(P,[2,16]),{9:68,20:j,21:Y,23:z,44:69,71:73,74:[1,74],75:[1,75]},{9:76,20:j,21:Y,23:z},{9:77,20:j,21:Y,23:z},{9:78,20:j,21:Y,23:z},{9:79,20:j,21:Y,23:z},{9:80,20:j,21:Y,23:z},{9:82,20:j,21:Y,22:[1,81],23:z},t(P,[2,44]),t(U,[2,51],{30:83,22:F}),{22:[1,84]},{22:[1,85]},{22:[1,86]},{22:[1,87]},{26:q,47:$,59:H,60:W,77:[1,91],84:V,90:90,91:[1,88],93:[1,89],98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(P,[2,154]),t(P,[2,155]),t(P,[2,156]),t(P,[2,157]),t(at,[2,52],{48:[1,110]}),t(ot,[2,70],{109:122,40:[1,111],47:f,50:[1,112],52:[1,113],54:[1,114],56:[1,115],58:[1,116],59:d,60:p,62:[1,117],64:[1,118],66:[1,119],67:[1,120],69:[1,121],84:_,98:x,99:w,102:k,104:T,105:E,115:N,116:D,117:O,118:B,119:L,120:I}),t(st,[2,146]),t(st,[2,171]),t(st,[2,172]),t(st,[2,173]),t(st,[2,174]),t(st,[2,175]),t(st,[2,176]),t(st,[2,177]),t(st,[2,178]),t(st,[2,179]),t(st,[2,180]),t(st,[2,181]),t(st,[2,182]),t(st,[2,183]),t(st,[2,184]),t(st,[2,185]),{9:123,20:j,21:Y,23:z},{11:124,14:[1,125]},t(ct,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,126]},t(ut,[2,34],{30:127,22:F}),t(P,[2,35]),{45:128,46:42,47:f,49:43,59:d,60:p,84:_,98:x,99:w,102:k,104:T,105:E,109:44,115:N,116:D,117:O,118:B,119:L,120:I},t(lt,[2,45]),t(lt,[2,46]),t(lt,[2,47]),t(ht,[2,74],{72:129,61:[1,131],73:[1,130]}),{22:ft,24:dt,26:pt,38:yt,39:132,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t([47,59,60,61,73,84,98,99,102,104,105,115,116,117,118,119,120],[2,76]),t(P,[2,36]),t(P,[2,37]),t(P,[2,38]),t(P,[2,39]),t(P,[2,40]),{22:ft,24:dt,26:pt,38:yt,39:156,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(Dt,o,{17:157}),t(U,[2,50],{47:Ot}),{26:q,47:$,59:H,60:W,84:V,90:159,95:[1,160],98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},{88:[1,161],96:162,98:[1,163]},{26:q,47:$,59:H,60:W,84:V,88:[1,164],90:165,98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},{26:q,47:$,59:H,60:W,84:V,90:166,98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ct,[2,97],{22:[1,167],92:[1,168]}),t(ct,[2,101],{22:[1,169]}),t(ct,[2,105],{108:94,110:171,22:[1,170],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,115:J,116:tt,117:et,118:nt,119:rt,120:it}),t(ct,[2,107],{22:[1,172]}),t(Bt,[2,148]),t(Bt,[2,150]),t(Bt,[2,151]),t(Bt,[2,152]),t(Bt,[2,153]),t(Lt,[2,158]),t(Lt,[2,159]),t(Lt,[2,160]),t(Lt,[2,161]),t(Lt,[2,162]),t(Lt,[2,163]),t(Lt,[2,164]),t(Lt,[2,165]),t(Lt,[2,166]),t(Lt,[2,167]),t(Lt,[2,168]),t(Lt,[2,169]),t(Lt,[2,170]),{47:f,49:173,59:d,60:p,84:_,98:x,99:w,102:k,104:T,105:E,109:44,115:N,116:D,117:O,118:B,119:L,120:I},{22:ft,24:dt,26:pt,38:yt,39:174,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:176,42:gt,47:$,50:[1,175],59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:177,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:178,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:179,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{59:[1,180]},{22:ft,24:dt,26:pt,38:yt,39:181,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:182,42:gt,47:$,59:H,60:W,64:[1,183],66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:184,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:185,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:186,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(st,[2,147]),t(It,[2,3]),{8:187,15:R},{15:[2,7]},t(a,[2,28]),t(ut,[2,33]),t(U,[2,48],{30:188,22:F}),t(ht,[2,71],{22:[1,189]}),{22:[1,190]},{22:ft,24:dt,26:pt,38:yt,39:191,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,66:mt,74:vt,75:[1,192],76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(Lt,[2,78]),t(Lt,[2,80]),t(Lt,[2,136]),t(Lt,[2,137]),t(Lt,[2,138]),t(Lt,[2,139]),t(Lt,[2,140]),t(Lt,[2,141]),t(Lt,[2,142]),t(Lt,[2,143]),t(Lt,[2,144]),t(Lt,[2,145]),t(Lt,[2,81]),t(Lt,[2,82]),t(Lt,[2,83]),t(Lt,[2,84]),t(Lt,[2,85]),t(Lt,[2,86]),t(Lt,[2,87]),t(Lt,[2,88]),t(Lt,[2,89]),t(Lt,[2,90]),t(Lt,[2,91]),{9:195,20:j,21:Y,22:ft,23:z,24:dt,26:pt,38:yt,40:[1,194],42:gt,47:$,59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,196],43:31,45:32,46:42,47:f,49:43,59:d,60:p,79:y,80:g,81:m,82:v,83:b,84:_,98:x,99:w,102:k,104:T,105:E,109:44,111:C,112:S,113:A,114:M,115:N,116:D,117:O,118:B,119:L,120:I},{22:F,30:197},{22:[1,198],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,108:94,110:171,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:[1,199]},{22:[1,200]},{22:[1,201],99:[1,202]},t(Rt,[2,119]),{22:[1,203]},{22:[1,204],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,108:94,110:171,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:[1,205],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,108:94,110:171,115:J,116:tt,117:et,118:nt,119:rt,120:it},{77:[1,206]},t(ct,[2,99],{22:[1,207]}),{77:[1,208],94:[1,209]},{77:[1,210]},t(Bt,[2,149]),{77:[1,211],94:[1,212]},t(at,[2,54],{109:122,47:f,59:d,60:p,84:_,98:x,99:w,102:k,104:T,105:E,115:N,116:D,117:O,118:B,119:L,120:I}),{22:ft,24:dt,26:pt,38:yt,41:[1,213],42:gt,47:$,59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:214,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,51:[1,215],59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,53:[1,216],59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,55:[1,217],59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,57:[1,218],59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{60:[1,219]},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,63:[1,220],66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,65:[1,221],66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,39:222,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,41:[1,223],42:gt,47:$,59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,66:mt,68:[1,224],70:[1,225],74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,66:mt,68:[1,227],70:[1,226],74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{9:228,20:j,21:Y,23:z},t(U,[2,49],{47:Ot}),t(ht,[2,73]),t(ht,[2,72]),{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,61:[1,229],66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ht,[2,75]),t(Lt,[2,79]),{22:ft,24:dt,26:pt,38:yt,39:230,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(Dt,o,{17:231}),t(P,[2,43]),{46:232,47:f,49:43,59:d,60:p,84:_,98:x,99:w,102:k,104:T,105:E,109:44,115:N,116:D,117:O,118:B,119:L,120:I},{22:Ft,59:Pt,60:jt,79:Yt,89:233,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{22:Ft,59:Pt,60:jt,79:Yt,89:247,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{22:Ft,59:Pt,60:jt,79:Yt,89:248,95:zt,97:[1,249],98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{22:Ft,59:Pt,60:jt,79:Yt,89:250,95:zt,97:[1,251],98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{98:[1,252]},{22:Ft,59:Pt,60:jt,79:Yt,89:253,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{22:Ft,59:Pt,60:jt,79:Yt,89:254,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{26:q,47:$,59:H,60:W,84:V,90:255,98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ct,[2,98]),{77:[1,256]},t(ct,[2,102],{22:[1,257]}),t(ct,[2,103]),t(ct,[2,106]),t(ct,[2,108],{22:[1,258]}),t(ct,[2,109]),t(ot,[2,55]),{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,51:[1,259],59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ot,[2,62]),t(ot,[2,57]),t(ot,[2,58]),t(ot,[2,59]),{59:[1,260]},t(ot,[2,61]),t(ot,[2,63]),{22:ft,24:dt,26:pt,38:yt,42:gt,47:$,59:H,60:W,65:[1,261],66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ot,[2,65]),t(ot,[2,66]),t(ot,[2,68]),t(ot,[2,67]),t(ot,[2,69]),t(It,[2,4]),t([22,47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],[2,77]),{22:ft,24:dt,26:pt,38:yt,41:[1,262],42:gt,47:$,59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,263],43:31,45:32,46:42,47:f,49:43,59:d,60:p,79:y,80:g,81:m,82:v,83:b,84:_,98:x,99:w,102:k,104:T,105:E,109:44,111:C,112:S,113:A,114:M,115:N,116:D,117:O,118:B,119:L,120:I},t(at,[2,53]),t(ct,[2,111],{99:Gt}),t(Xt,[2,121],{101:265,22:Ft,59:Pt,60:jt,79:Yt,95:zt,98:Ut,102:qt,103:$t,104:Ht,105:Wt,106:Vt}),t(Zt,[2,123]),t(Zt,[2,125]),t(Zt,[2,126]),t(Zt,[2,127]),t(Zt,[2,128]),t(Zt,[2,129]),t(Zt,[2,130]),t(Zt,[2,131]),t(Zt,[2,132]),t(Zt,[2,133]),t(Zt,[2,134]),t(Zt,[2,135]),t(ct,[2,112],{99:Gt}),t(ct,[2,113],{99:Gt}),{22:[1,266]},t(ct,[2,114],{99:Gt}),{22:[1,267]},t(Rt,[2,120]),t(ct,[2,94],{99:Gt}),t(ct,[2,95],{99:Gt}),t(ct,[2,96],{108:94,110:171,26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,115:J,116:tt,117:et,118:nt,119:rt,120:it}),t(ct,[2,100]),{94:[1,268]},{94:[1,269]},{51:[1,270]},{61:[1,271]},{65:[1,272]},{9:273,20:j,21:Y,23:z},t(P,[2,42]),{22:Ft,59:Pt,60:jt,79:Yt,95:zt,98:Ut,100:274,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},t(Zt,[2,124]),{26:q,47:$,59:H,60:W,84:V,90:275,98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},{26:q,47:$,59:H,60:W,84:V,90:276,98:G,99:X,102:Z,104:Q,105:K,108:94,110:92,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ct,[2,104]),t(ct,[2,110]),t(ot,[2,56]),{22:ft,24:dt,26:pt,38:yt,39:277,42:gt,47:$,59:H,60:W,66:mt,74:vt,76:133,77:bt,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},t(ot,[2,64]),t(Dt,o,{17:278}),t(Xt,[2,122],{101:265,22:Ft,59:Pt,60:jt,79:Yt,95:zt,98:Ut,102:qt,103:$t,104:Ht,105:Wt,106:Vt}),t(ct,[2,117],{108:94,110:171,22:[1,279],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,115:J,116:tt,117:et,118:nt,119:rt,120:it}),t(ct,[2,118],{108:94,110:171,22:[1,280],26:q,47:$,59:H,60:W,84:V,98:G,99:X,102:Z,104:Q,105:K,115:J,116:tt,117:et,118:nt,119:rt,120:it}),{22:ft,24:dt,26:pt,38:yt,41:[1,281],42:gt,47:$,59:H,60:W,66:mt,74:vt,76:193,78:144,79:_t,80:xt,81:wt,82:kt,83:Tt,84:Et,85:Ct,87:135,88:St,98:G,99:X,102:At,104:Q,105:K,106:Mt,107:Nt,108:141,115:J,116:tt,117:et,118:nt,119:rt,120:it},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,282],43:31,45:32,46:42,47:f,49:43,59:d,60:p,79:y,80:g,81:m,82:v,83:b,84:_,98:x,99:w,102:k,104:T,105:E,109:44,111:C,112:S,113:A,114:M,115:N,116:D,117:O,118:B,119:L,120:I},{22:Ft,59:Pt,60:jt,79:Yt,89:283,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},{22:Ft,59:Pt,60:jt,79:Yt,89:284,95:zt,98:Ut,100:234,101:235,102:qt,103:$t,104:Ht,105:Wt,106:Vt},t(ot,[2,60]),t(P,[2,41]),t(ct,[2,115],{99:Gt}),t(ct,[2,116],{99:Gt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],125:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},Kt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:this.popState();break;case 9:return"STR";case 10:return 79;case 11:return 88;case 12:return 80;case 13:return 97;case 14:return 81;case 15:return 82;case 16:this.begin("href");break;case 17:this.popState();break;case 18:return 93;case 19:this.begin("callbackname");break;case 20:this.popState();break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 91;case 23:this.popState();break;case 24:return 92;case 25:this.begin("click");break;case 26:this.popState();break;case 27:return 83;case 28:case 29:return t.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 94;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 111;case 48:return 112;case 49:return 113;case 50:return 114;case 51:return 98;case 52:return 104;case 53:return 48;case 54:return 60;case 55:return 47;case 56:return 20;case 57:return 99;case 58:return 119;case 59:case 60:case 61:return 75;case 62:case 63:case 64:return 74;case 65:return 52;case 66:return 53;case 67:return 54;case 68:return 55;case 69:return 56;case 70:return 57;case 71:return 58;case 72:return 62;case 73:return 63;case 74:return 102;case 75:return 105;case 76:return 120;case 77:return 117;case 78:return 106;case 79:case 80:return 118;case 81:return 107;case 82:return 66;case 83:return 85;case 84:return"SEP";case 85:return 84;case 86:return 59;case 87:return 68;case 88:return 67;case 89:return 70;case 90:return 69;case 91:return 115;case 92:return 116;case 93:return 61;case 94:return 50;case 95:return 51;case 96:return 40;case 97:return 41;case 98:return 64;case 99:return 65;case 100:return 126;case 101:return 21;case 102:return 22;case 103:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],inclusive:!0}}};function Jt(){this.yy={}}return Qt.lexer=Kt,Jt.prototype=Qt,Qt.Parser=Jt,new Jt}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(5354).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},2055:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,23],d=[1,25],p=[1,27],y=[1,30],g=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],m={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,excludes:16,includes:17,todayMarker:18,title:19,section:20,clickStatement:21,taskTxt:22,taskData:23,openDirective:24,typeDirective:25,closeDirective:26,":":27,argDirective:28,click:29,callbackname:30,callbackargs:31,href:32,clickStatementDebug:33,open_directive:34,type_directive:35,arg_directive:36,close_directive:37,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"excludes",17:"includes",18:"todayMarker",19:"title",20:"section",22:"taskTxt",23:"taskData",27:":",29:"click",30:"callbackname",31:"callbackargs",32:"href",34:"open_directive",35:"type_directive",36:"arg_directive",37:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 9:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:r.TopAxis(),this.$=a[s].substr(8);break;case 12:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 13:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 14:r.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 15:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 16:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 17:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 19:r.addTask(a[s-1],a[s]),this.$="task";break;case 23:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 24:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 25:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 26:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 27:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 28:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 29:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 30:case 36:this.$=a[s-1]+" "+a[s];break;case 31:case 32:case 34:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 33:case 35:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 37:r.parseDirective("%%{","open_directive");break;case 38:r.parseDirective(a[s],"type_directive");break;case 39:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 40:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,24:4,34:n},{1:[3]},{3:6,4:2,5:e,24:4,34:n},t(r,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:24,22:d,24:4,29:p,34:n},{26:28,27:[1,29],37:y},t([27,37],[2,38]),t(r,[2,8],{1:[2,2]}),t(r,[2,4]),{4:26,10:31,12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:24,22:d,24:4,29:p,34:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),t(r,[2,17]),t(r,[2,18]),{23:[1,32]},t(r,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},t(r,[2,5]),t(r,[2,19]),t(r,[2,23],{31:[1,38],32:[1,39]}),t(r,[2,29],{30:[1,40]}),t(g,[2,21]),{26:41,37:y},{37:[2,39]},t(r,[2,24],{32:[1,42]}),t(r,[2,25]),t(r,[2,27],{31:[1,43]}),{11:[1,44]},t(r,[2,26]),t(r,[2,28]),t(g,[2,22])],defaultActions:{5:[2,37],6:[2,1],30:[2,40],37:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},v={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),34;case 1:return this.begin("type_directive"),35;case 2:return this.popState(),this.begin("arg_directive"),27;case 3:return this.popState(),this.popState(),37;case 4:return 36;case 5:case 6:case 7:break;case 8:return 11;case 9:case 10:case 11:break;case 12:this.begin("href");break;case 13:this.popState();break;case 14:return 32;case 15:this.begin("callbackname");break;case 16:this.popState();break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 30;case 19:this.popState();break;case 20:return 31;case 21:this.begin("click");break;case 22:this.popState();break;case 23:return 29;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 17;case 30:return 16;case 31:return 18;case 32:return"date";case 33:return 19;case 34:return 20;case 35:return 22;case 36:return 23;case 37:return 27;case 38:return 7;case 39:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],inclusive:!0}}};function b(){this.yy={}}return m.lexer=v,b.prototype=m,m.Parser=b,new b}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(6878).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},8454:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},c={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function u(){this.yy={}}return s.lexer=c,u.prototype=s,s.Parser=u,new u}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8183).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},4645:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){switch(a.length,i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(1428).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},5963:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,5],r=[1,6],i=[1,7],a=[1,9],o=[1,11,13,20,21,22,23],s=[2,5],c=[1,6,11,13,20,21,22,23],u=[20,21,22],l=[2,8],h=[1,18],f=[1,19],d=[1,24],p=[6,20,21,22,23],y={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,openDirective:15,typeDirective:16,closeDirective:17,":":18,argDirective:19,NEWLINE:20,";":21,EOF:22,open_directive:23,type_directive:24,arg_directive:25,close_directive:26,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",18:":",20:"NEWLINE",21:";",22:"EOF",23:"open_directive",24:"type_directive",25:"arg_directive",26:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:r.setShowData(!0);break;case 7:this.$=a[s-1];break;case 9:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 10:this.$=a[s].trim(),r.setTitle(this.$);break;case 17:r.parseDirective("%%{","open_directive");break;case 18:r.parseDirective(a[s],"type_directive");break;case 19:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 20:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,15:8,20:n,21:r,22:i,23:a},{1:[3]},{3:10,4:2,5:3,6:e,15:8,20:n,21:r,22:i,23:a},{3:11,4:2,5:3,6:e,15:8,20:n,21:r,22:i,23:a},t(o,s,{7:12,8:[1,13]}),t(c,[2,14]),t(c,[2,15]),t(c,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},t(u,l,{15:8,9:16,10:17,5:20,1:[2,3],11:h,13:f,23:a}),t(o,s,{7:21}),{17:22,18:[1,23],26:d},t([18,26],[2,18]),t(o,[2,6]),{4:25,20:n,21:r,22:i},{12:[1,26]},{14:[1,27]},t(u,[2,11]),t(u,l,{15:8,9:16,10:17,5:20,1:[2,4],11:h,13:f,23:a}),t(p,[2,12]),{19:28,25:[1,29]},t(p,[2,20]),t(o,[2,7]),t(u,[2,9]),t(u,[2,10]),{17:30,26:d},{26:[2,19]},t(p,[2,13])],defaultActions:{9:[2,17],10:[2,1],11:[2,2],29:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},g={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),23;case 1:return this.begin("type_directive"),24;case 2:return this.popState(),this.begin("arg_directive"),18;case 3:return this.popState(),this.popState(),26;case 4:return 25;case 5:case 6:break;case 7:return 20;case 8:case 9:break;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return 8;case 17:return"value";case 18:return 22}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17,18],inclusive:!0}}};function m(){this.yy={}}return y.lexer=g,m.prototype=y,y.Parser=m,new m}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(4551).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6463:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[1,17],i=[2,10],a=[1,21],o=[1,22],s=[1,23],c=[1,24],u=[1,25],l=[1,26],h=[1,19],f=[1,27],d=[1,28],p=[1,31],y=[66,67],g=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],m=[5,6,8,14,35,36,37,38,39,40,48,66,67],v=[1,51],b=[1,52],_=[1,53],x=[1,54],w=[1,55],k=[1,56],T=[1,57],E=[57,58],C=[1,69],S=[1,65],A=[1,66],M=[1,67],N=[1,68],D=[1,70],O=[1,74],B=[1,75],L=[1,72],I=[1,73],R=[5,8,14,35,36,37,38,39,40,48,66,67],F={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,open_directive:14,type_directive:15,arg_directive:16,close_directive:17,requirementDef:18,elementDef:19,relationshipDef:20,requirementType:21,requirementName:22,STRUCT_START:23,requirementBody:24,ID:25,COLONSEP:26,id:27,TEXT:28,text:29,RISK:30,riskLevel:31,VERIFYMTHD:32,verifyType:33,STRUCT_STOP:34,REQUIREMENT:35,FUNCTIONAL_REQUIREMENT:36,INTERFACE_REQUIREMENT:37,PERFORMANCE_REQUIREMENT:38,PHYSICAL_REQUIREMENT:39,DESIGN_CONSTRAINT:40,LOW_RISK:41,MED_RISK:42,HIGH_RISK:43,VERIFY_ANALYSIS:44,VERIFY_DEMONSTRATION:45,VERIFY_INSPECTION:46,VERIFY_TEST:47,ELEMENT:48,elementName:49,elementBody:50,TYPE:51,type:52,DOCREF:53,ref:54,END_ARROW_L:55,relationship:56,LINE:57,END_ARROW_R:58,CONTAINS:59,COPIES:60,DERIVES:61,SATISFIES:62,VERIFIES:63,REFINES:64,TRACES:65,unqString:66,qString:67,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"open_directive",15:"type_directive",16:"arg_directive",17:"close_directive",23:"STRUCT_START",25:"ID",26:"COLONSEP",28:"TEXT",30:"RISK",32:"VERIFYMTHD",34:"STRUCT_STOP",35:"REQUIREMENT",36:"FUNCTIONAL_REQUIREMENT",37:"INTERFACE_REQUIREMENT",38:"PERFORMANCE_REQUIREMENT",39:"PHYSICAL_REQUIREMENT",40:"DESIGN_CONSTRAINT",41:"LOW_RISK",42:"MED_RISK",43:"HIGH_RISK",44:"VERIFY_ANALYSIS",45:"VERIFY_DEMONSTRATION",46:"VERIFY_INSPECTION",47:"VERIFY_TEST",48:"ELEMENT",51:"TYPE",53:"DOCREF",55:"END_ARROW_L",57:"LINE",58:"END_ARROW_R",59:"CONTAINS",60:"COPIES",61:"DERIVES",62:"SATISFIES",63:"VERIFIES",64:"REFINES",65:"TRACES",66:"unqString",67:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:r.parseDirective("%%{","open_directive");break;case 7:r.parseDirective(a[s],"type_directive");break;case 8:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 9:r.parseDirective("}%%","close_directive","pie");break;case 10:this.$=[];break;case 16:r.addRequirement(a[s-3],a[s-4]);break;case 17:r.setNewReqId(a[s-2]);break;case 18:r.setNewReqText(a[s-2]);break;case 19:r.setNewReqRisk(a[s-2]);break;case 20:r.setNewReqVerifyMethod(a[s-2]);break;case 23:this.$=r.RequirementType.REQUIREMENT;break;case 24:this.$=r.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 25:this.$=r.RequirementType.INTERFACE_REQUIREMENT;break;case 26:this.$=r.RequirementType.PERFORMANCE_REQUIREMENT;break;case 27:this.$=r.RequirementType.PHYSICAL_REQUIREMENT;break;case 28:this.$=r.RequirementType.DESIGN_CONSTRAINT;break;case 29:this.$=r.RiskLevel.LOW_RISK;break;case 30:this.$=r.RiskLevel.MED_RISK;break;case 31:this.$=r.RiskLevel.HIGH_RISK;break;case 32:this.$=r.VerifyType.VERIFY_ANALYSIS;break;case 33:this.$=r.VerifyType.VERIFY_DEMONSTRATION;break;case 34:this.$=r.VerifyType.VERIFY_INSPECTION;break;case 35:this.$=r.VerifyType.VERIFY_TEST;break;case 36:r.addElement(a[s-3]);break;case 37:r.setNewElementType(a[s-2]);break;case 38:r.setNewElementDocRef(a[s-2]);break;case 41:r.addRelationship(a[s-2],a[s],a[s-4]);break;case 42:r.addRelationship(a[s-2],a[s-4],a[s]);break;case 43:this.$=r.Relationships.CONTAINS;break;case 44:this.$=r.Relationships.COPIES;break;case 45:this.$=r.Relationships.DERIVES;break;case 46:this.$=r.Relationships.SATISFIES;break;case 47:this.$=r.Relationships.VERIFIES;break;case 48:this.$=r.Relationships.REFINES;break;case 49:this.$=r.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n},{1:[3]},{3:7,4:2,5:[1,6],6:e,9:4,14:n},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:e,9:4,14:n},{1:[2,2]},{4:16,5:r,7:12,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{11:29,12:[1,30],17:p},t([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:r,7:33,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{4:16,5:r,7:34,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{4:16,5:r,7:35,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{4:16,5:r,7:36,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{4:16,5:r,7:37,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:o,37:s,38:c,39:u,40:l,48:h,66:f,67:d},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},t(y,[2,23]),t(y,[2,24]),t(y,[2,25]),t(y,[2,26]),t(y,[2,27]),t(y,[2,28]),t(g,[2,52]),t(g,[2,53]),t(m,[2,4]),{13:46,16:[1,47]},t(m,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:v,60:b,61:_,62:x,63:w,64:k,65:T},{56:58,59:v,60:b,61:_,62:x,63:w,64:k,65:T},{11:59,17:p},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},t(E,[2,43]),t(E,[2,44]),t(E,[2,45]),t(E,[2,46]),t(E,[2,47]),t(E,[2,48]),t(E,[2,49]),{58:[1,63]},t(m,[2,5]),{5:C,24:64,25:S,28:A,30:M,32:N,34:D},{5:O,34:B,50:71,51:L,53:I},{27:76,66:f,67:d},{27:77,66:f,67:d},t(R,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:C,24:82,25:S,28:A,30:M,32:N,34:D},t(R,[2,22]),t(R,[2,36]),{26:[1,83]},{26:[1,84]},{5:O,34:B,50:85,51:L,53:I},t(R,[2,40]),t(R,[2,41]),t(R,[2,42]),{27:86,66:f,67:d},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},t(R,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},t(R,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:C,24:111,25:S,28:A,30:M,32:N,34:D},{5:C,24:112,25:S,28:A,30:M,32:N,34:D},{5:C,24:113,25:S,28:A,30:M,32:N,34:D},{5:C,24:114,25:S,28:A,30:M,32:N,34:D},{5:O,34:B,50:115,51:L,53:I},{5:O,34:B,50:116,51:L,53:I},t(R,[2,17]),t(R,[2,18]),t(R,[2,19]),t(R,[2,20]),t(R,[2,37]),t(R,[2,38])],defaultActions:{5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},P={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),14;case 1:return this.begin("type_directive"),15;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),17;case 4:return 16;case 5:return 5;case 6:case 7:case 8:break;case 9:return 8;case 10:return 6;case 11:return 23;case 12:return 34;case 13:return 26;case 14:return 25;case 15:return 28;case 16:return 30;case 17:return 32;case 18:return 35;case 19:return 36;case 20:return 37;case 21:return 38;case 22:return 39;case 23:return 40;case 24:return 41;case 25:return 42;case 26:return 43;case 27:return 44;case 28:return 45;case 29:return 46;case 30:return 47;case 31:return 48;case 32:return 59;case 33:return 60;case 34:return 61;case 35:return 62;case 36:return 63;case 37:return 64;case 38:return 65;case 39:return 51;case 40:return 53;case 41:return 55;case 42:return 58;case 43:return 57;case 44:this.begin("string");break;case 45:this.popState();break;case 46:return"qString";case 47:return e.yytext=e.yytext.trim(),66}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[45,46],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],inclusive:!0}}};function j(){this.yy={}}return F.lexer=P,j.prototype=F,F.Parser=j,new j}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8800).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9923:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,18],u=[1,19],l=[1,21],h=[1,22],f=[1,23],d=[1,29],p=[1,30],y=[1,31],g=[1,32],m=[1,33],v=[1,34],b=[1,37],_=[1,38],x=[1,39],w=[1,40],k=[1,41],T=[1,42],E=[1,45],C=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],S=[1,58],A=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],M=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],N=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],D=[55,56,57],O=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],B={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,":":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,participant_actor:20,signal:21,autonumber:22,activate:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,text2:31,loop:32,end:33,rect:34,opt:35,alt:36,else_sections:37,par:38,par_sections:39,and:40,else:41,note:42,placement:43,over:44,actor_pair:45,links:46,link:47,properties:48,details:49,spaceList:50,",":51,left_of:52,right_of:53,signaltype:54,"+":55,"-":56,ACTOR:57,SOLID_OPEN_ARROW:58,DOTTED_OPEN_ARROW:59,SOLID_ARROW:60,DOTTED_ARROW:61,SOLID_CROSS:62,DOTTED_CROSS:63,SOLID_POINT:64,DOTTED_POINT:65,TXT:66,open_directive:67,type_directive:68,arg_directive:69,close_directive:70,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",20:"participant_actor",22:"autonumber",23:"activate",24:"deactivate",30:"title",32:"loop",33:"end",34:"rect",35:"opt",36:"alt",38:"par",40:"and",41:"else",42:"note",44:"over",46:"links",47:"link",48:"properties",49:"details",51:",",52:"left_of",53:"right_of",55:"+",56:"-",57:"ACTOR",58:"SOLID_OPEN_ARROW",59:"DOTTED_OPEN_ARROW",60:"SOLID_ARROW",61:"DOTTED_ARROW",62:"SOLID_CROSS",63:"DOTTED_CROSS",64:"SOLID_POINT",65:"DOTTED_POINT",66:"TXT",67:"open_directive",68:"type_directive",69:"arg_directive",70:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.apply(a[s]),a[s];case 5:this.$=[];break;case 6:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:this.$=a[s];break;case 9:this.$=[];break;case 12:a[s-3].type="addParticipant",a[s-3].description=r.parseMessage(a[s-1]),this.$=a[s-3];break;case 13:a[s-1].type="addParticipant",this.$=a[s-1];break;case 14:a[s-3].type="addActor",a[s-3].description=r.parseMessage(a[s-1]),this.$=a[s-3];break;case 15:a[s-1].type="addActor",this.$=a[s-1];break;case 17:r.enableSequenceNumbers();break;case 18:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 19:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 25:this.$=[{type:"setTitle",text:a[s-1]}];break;case 26:a[s-1].unshift({type:"loopStart",loopText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 27:a[s-1].unshift({type:"rectStart",color:r.parseMessage(a[s-2]),signalType:r.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:r.parseMessage(a[s-2]),signalType:r.LINETYPE.RECT_END}),this.$=a[s-1];break;case 28:a[s-1].unshift({type:"optStart",optText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.OPT_END}),this.$=a[s-1];break;case 29:a[s-1].unshift({type:"altStart",altText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[s-1];break;case 30:a[s-1].unshift({type:"parStart",parText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[s-1];break;case 33:this.$=a[s-3].concat([{type:"and",parText:r.parseMessage(a[s-1]),signalType:r.LINETYPE.PAR_AND},a[s]]);break;case 35:this.$=a[s-3].concat([{type:"else",altText:r.parseMessage(a[s-1]),signalType:r.LINETYPE.ALT_ELSE},a[s]]);break;case 36:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 37:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 38:this.$=[a[s-1],{type:"addLinks",actor:a[s-1].actor,text:a[s]}];break;case 39:this.$=[a[s-1],{type:"addALink",actor:a[s-1].actor,text:a[s]}];break;case 40:this.$=[a[s-1],{type:"addProperties",actor:a[s-1].actor,text:a[s]}];break;case 41:this.$=[a[s-1],{type:"addDetails",actor:a[s-1].actor,text:a[s]}];break;case 44:this.$=[a[s-2],a[s]];break;case 45:this.$=a[s];break;case 46:this.$=r.PLACEMENT.LEFTOF;break;case 47:this.$=r.PLACEMENT.RIGHTOF;break;case 48:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 49:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 50:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 51:this.$={type:"addParticipant",actor:a[s]};break;case 52:this.$=r.LINETYPE.SOLID_OPEN;break;case 53:this.$=r.LINETYPE.DOTTED_OPEN;break;case 54:this.$=r.LINETYPE.SOLID;break;case 55:this.$=r.LINETYPE.DOTTED;break;case 56:this.$=r.LINETYPE.SOLID_CROSS;break;case 57:this.$=r.LINETYPE.DOTTED_CROSS;break;case 58:this.$=r.LINETYPE.SOLID_POINT;break;case 59:this.$=r.LINETYPE.DOTTED_POINT;break;case 60:this.$=r.parseMessage(a[s].trim().substring(1));break;case 61:r.parseDirective("%%{","open_directive");break;case 62:r.parseDirective(a[s],"type_directive");break;case 63:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 64:r.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:r,11:6,67:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,11:6,67:i},{3:9,4:e,5:n,6:4,7:r,11:6,67:i},{3:10,4:e,5:n,6:4,7:r,11:6,67:i},t([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],a,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,34:y,35:g,36:m,38:v,42:b,46:_,47:x,48:w,49:k,57:T,67:i},{13:43,14:[1,44],70:E},t([14,70],[2,62]),t(C,[2,6]),{6:35,10:46,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,34:y,35:g,36:m,38:v,42:b,46:_,47:x,48:w,49:k,57:T,67:i},t(C,[2,8]),t(C,[2,9]),{17:47,57:T},{17:48,57:T},{5:[1,49]},t(C,[2,17]),{17:50,57:T},{17:51,57:T},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:S},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},t(C,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:T},{17:78,57:T},{17:79,57:T},{17:80,57:T},t([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},t(C,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},t(C,[2,16]),{5:[1,88]},{5:[1,89]},t(C,[2,20]),t(C,[2,21]),t(C,[2,22]),t(C,[2,23]),t(C,[2,24]),{5:[1,90]},{5:[2,60]},t(A,a,{8:91}),t(A,a,{8:92}),t(A,a,{8:93}),t(M,a,{37:94,8:95}),t(N,a,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:T},t(D,[2,52]),t(D,[2,53]),t(D,[2,54]),t(D,[2,55]),t(D,[2,56]),t(D,[2,57]),t(D,[2,58]),t(D,[2,59]),{17:101,57:T},{17:103,45:102,57:T},{57:[2,46]},{57:[2,47]},{31:104,66:S},{31:105,66:S},{31:106,66:S},{31:107,66:S},t(O,[2,10]),{13:108,70:E},{70:[2,63]},{19:[1,109]},t(C,[2,13]),{19:[1,110]},t(C,[2,15]),t(C,[2,18]),t(C,[2,19]),t(C,[2,25]),{4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,33:[1,111],34:y,35:g,36:m,38:v,42:b,46:_,47:x,48:w,49:k,57:T,67:i},{4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,33:[1,112],34:y,35:g,36:m,38:v,42:b,46:_,47:x,48:w,49:k,57:T,67:i},{4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,33:[1,113],34:y,35:g,36:m,38:v,42:b,46:_,47:x,48:w,49:k,57:T,67:i},{33:[1,114]},{4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,33:[2,34],34:y,35:g,36:m,38:v,41:[1,115],42:b,46:_,47:x,48:w,49:k,57:T,67:i},{33:[1,116]},{4:o,5:s,6:35,9:14,10:16,11:6,16:c,17:36,20:u,21:20,22:l,23:h,24:f,25:24,26:25,27:26,28:27,29:28,30:d,32:p,33:[2,32],34:y,35:g,36:m,38:v,40:[1,117],42:b,46:_,47:x,48:w,49:k,57:T,67:i},{17:118,57:T},{17:119,57:T},{31:120,66:S},{31:121,66:S},{31:122,66:S},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},t(C,[2,26]),t(C,[2,27]),t(C,[2,28]),t(C,[2,29]),{19:[1,127]},t(C,[2,30]),{19:[1,128]},{31:129,66:S},{31:130,66:S},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:T},t(O,[2,11]),t(C,[2,12]),t(C,[2,14]),t(M,a,{8:95,37:132}),t(N,a,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],defaultActions:{7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},L={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),67;case 1:return this.begin("type_directive"),68;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),70;case 4:return 69;case 5:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return this.begin("ID"),20;case 13:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),57;case 14:return this.popState(),this.popState(),this.begin("LINE"),18;case 15:return this.popState(),this.popState(),5;case 16:return this.begin("LINE"),32;case 17:return this.begin("LINE"),34;case 18:return this.begin("LINE"),35;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),38;case 22:return this.begin("LINE"),40;case 23:return this.popState(),19;case 24:return 33;case 25:return 52;case 26:return 53;case 27:return 46;case 28:return 47;case 29:return 48;case 30:return 49;case 31:return 44;case 32:return 42;case 33:return this.begin("ID"),23;case 34:return this.begin("ID"),24;case 35:return 30;case 36:return 7;case 37:return 22;case 38:return 51;case 39:return 5;case 40:return e.yytext=e.yytext.trim(),57;case 41:return 60;case 42:return 61;case 43:return 58;case 44:return 59;case 45:return 62;case 46:return 63;case 47:return 64;case 48:return 65;case 49:return 66;case 50:return 55;case 51:return 56;case 52:return 5;case 53:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,13],inclusive:!1},ALIAS:{rules:[7,8,14,15],inclusive:!1},LINE:{rules:[7,8,23],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function I(){this.yy={}}return B.lexer=L,I.prototype=B,B.Parser=I,new I}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(1993).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},5537:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,30],d=[1,23],p=[1,24],y=[1,25],g=[1,26],m=[1,27],v=[1,32],b=[1,33],_=[1,34],x=[1,35],w=[1,31],k=[1,38],T=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],E=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],C=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],S=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],A={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CHOICE:25,CONCURRENT:26,note:27,notePosition:28,NOTE_TEXT:29,direction:30,openDirective:31,typeDirective:32,closeDirective:33,":":34,argDirective:35,direction_tb:36,direction_bt:37,direction_rl:38,direction_lr:39,eol:40,";":41,EDGE_STATE:42,left_of:43,right_of:44,open_directive:45,type_directive:46,arg_directive:47,close_directive:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CHOICE",26:"CONCURRENT",27:"note",29:"NOTE_TEXT",34:":",36:"direction_tb",37:"direction_bt",38:"direction_rl",39:"direction_lr",41:";",42:"EDGE_STATE",43:"left_of",44:"right_of",45:"open_directive",46:"type_directive",47:"arg_directive",48:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:this.$=a[s];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 18:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 20:this.$={stmt:"state",id:a[s],type:"fork"};break;case 21:this.$={stmt:"state",id:a[s],type:"join"};break;case 22:this.$={stmt:"state",id:a[s],type:"choice"};break;case 23:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 24:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:r.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 31:r.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 32:r.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 33:r.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 36:case 37:this.$=a[s];break;case 40:r.parseDirective("%%{","open_directive");break;case 41:r.parseDirective(a[s],"type_directive");break;case 42:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 43:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:r,31:6,45:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,31:6,45:i},{3:9,4:e,5:n,6:4,7:r,31:6,45:i},{3:10,4:e,5:n,6:4,7:r,31:6,45:i},t([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],a,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:y,26:g,27:m,30:29,31:6,36:v,37:b,38:_,39:x,42:w,45:i},{33:36,34:[1,37],48:k},t([34,48],[2,41]),t(T,[2,6]),{6:28,10:39,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:y,26:g,27:m,30:29,31:6,36:v,37:b,38:_,39:x,42:w,45:i},t(T,[2,8]),t(T,[2,9]),t(T,[2,10],{12:[1,40],13:[1,41]}),t(T,[2,14]),{16:[1,42]},t(T,[2,16],{18:[1,43]}),{21:[1,44]},t(T,[2,20]),t(T,[2,21]),t(T,[2,22]),t(T,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},t(T,[2,26]),t(T,[2,27]),t(E,[2,36]),t(E,[2,37]),t(T,[2,30]),t(T,[2,31]),t(T,[2,32]),t(T,[2,33]),t(C,[2,28]),{35:49,47:[1,50]},t(C,[2,43]),t(T,[2,7]),t(T,[2,11]),{11:51,22:f,42:w},t(T,[2,15]),t(S,a,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:k},{48:[2,42]},t(T,[2,12],{12:[1,57]}),{4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,58],20:h,22:f,23:d,24:p,25:y,26:g,27:m,30:29,31:6,36:v,37:b,38:_,39:x,42:w,45:i},t(T,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},t(C,[2,29]),t(T,[2,13]),t(T,[2,17]),t(S,a,{8:62}),t(T,[2,24]),t(T,[2,25]),{4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,63],20:h,22:f,23:d,24:p,25:y,26:g,27:m,30:29,31:6,36:v,37:b,38:_,39:x,42:w,45:i},t(T,[2,19])],defaultActions:{7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},M={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 36;case 1:return 37;case 2:return 38;case 3:return 39;case 4:return this.begin("open_directive"),45;case 5:return this.begin("type_directive"),46;case 6:return this.popState(),this.begin("arg_directive"),34;case 7:return this.popState(),this.popState(),48;case 8:return 47;case 9:case 10:break;case 11:return 5;case 12:case 13:case 14:case 15:break;case 16:return this.pushState("SCALE"),15;case 17:return 16;case 18:this.popState();break;case 19:this.pushState("STATE");break;case 20:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 21:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 22:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),25;case 23:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 24:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 25:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),25;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:this.begin("STATE_STRING");break;case 31:return this.popState(),this.pushState("STATE_ID"),"AS";case 32:return this.popState(),"ID";case 33:this.popState();break;case 34:return"STATE_DESCR";case 35:return 17;case 36:this.popState();break;case 37:return this.popState(),this.pushState("struct"),18;case 38:return this.popState(),19;case 39:break;case 40:return this.begin("NOTE"),27;case 41:return this.popState(),this.pushState("NOTE_ID"),43;case 42:return this.popState(),this.pushState("NOTE_ID"),44;case 43:this.popState(),this.pushState("FLOATING_NOTE");break;case 44:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 45:break;case 46:return"NOTE_TEXT";case 47:return this.popState(),"ID";case 48:return this.popState(),this.pushState("NOTE_TEXT"),22;case 49:return this.popState(),e.yytext=e.yytext.substr(2).trim(),29;case 50:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),29;case 51:case 52:return 7;case 53:return 14;case 54:return 42;case 55:return 22;case 56:return e.yytext=e.yytext.trim(),12;case 57:return 13;case 58:return 26;case 59:return 5;case 60:return"INVALID"}},rules:[/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[13,14],inclusive:!1},close_directive:{rules:[13,14],inclusive:!1},arg_directive:{rules:[7,8,13,14],inclusive:!1},type_directive:{rules:[6,7,13,14],inclusive:!1},open_directive:{rules:[5,13,14],inclusive:!1},struct:{rules:[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],inclusive:!1},FLOATING_NOTE_ID:{rules:[47],inclusive:!1},FLOATING_NOTE:{rules:[44,45,46],inclusive:!1},NOTE_TEXT:{rules:[49,50],inclusive:!1},NOTE_ID:{rules:[48],inclusive:!1},NOTE:{rules:[41,42,43],inclusive:!1},SCALE:{rules:[17,18],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[32],inclusive:!1},STATE_STRING:{rules:[33,34],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[13,14,20,21,22,23,24,25,30,31,35,36,37],inclusive:!1},ID:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],inclusive:!0}}};function N(){this.yy={}}return A.lexer=M,N.prototype=A,A.Parser=N,new N}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(3069).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6741:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],o=[1,17],s=[1,21],c=[4,6,9,11,17,18,19,21],u={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 11:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 13:r.addTask(a[s-1],a[s]),this.$="task";break;case 15:r.parseDirective("%%{","open_directive");break;case 16:r.parseDirective(a[s],"type_directive");break;case 17:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 18:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:o,21:n},{1:[2,2]},{14:19,15:[1,20],24:s},t([15,24],[2,16]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:o,21:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,12]),{20:[1,23]},t(r,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(r,[2,5]),t(r,[2,13]),t(c,[2,9]),{14:27,24:s},{24:[2,17]},{11:[1,28]},t(c,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,E,C,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(E in A=[],o[w])this.terminals_[E]&&E>h&&A.push("'"+this.terminals_[E]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[k[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return T;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:break;case 7:return 11;case 8:case 9:break;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function h(){this.yy={}}return u.lexer=l,h.prototype=u,u.Parser=h,new h}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(9143).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9609:t=>{"use strict";var e=/^(%20|\s)*(javascript|data)/im,n=/[^\x20-\x7E]/gim,r=/^([^:]+):/gm,i=[".","/"];t.exports={sanitizeUrl:function(t){if(!t)return"about:blank";var a,o,s=t.replace(n,"").trim();return function(t){return i.indexOf(t[0])>-1}(s)?s:(o=s.match(r))?(a=o[0],e.test(a)?"about:blank":s):"about:blank"}}},3841:t=>{t.exports=function(t,e){return t.intersect(e)}},7458:(t,e,n)=>{"use strict";n.d(e,{default:()=>cC});var r=n(1941),i=n.n(r),a={debug:1,info:2,warn:3,error:4,fatal:5},o={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==a[t]&&(t=a[t])),o.trace=function(){},o.debug=function(){},o.info=function(){},o.warn=function(){},o.error=function(){},o.fatal=function(){},t<=a.fatal&&(o.fatal=console.error?console.error.bind(console,c("FATAL"),"color: orange"):console.log.bind(console,"",c("FATAL"))),t<=a.error&&(o.error=console.error?console.error.bind(console,c("ERROR"),"color: orange"):console.log.bind(console,"",c("ERROR"))),t<=a.warn&&(o.warn=console.warn?console.warn.bind(console,c("WARN"),"color: orange"):console.log.bind(console,"",c("WARN"))),t<=a.info&&(o.info=console.info?console.info.bind(console,c("INFO"),"color: lightblue"):console.log.bind(console,"",c("INFO"))),t<=a.debug&&(o.debug=console.debug?console.debug.bind(console,c("DEBUG"),"color: lightgreen"):console.log.bind(console,"",c("DEBUG")))},c=function(t){var e=i()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")};function u(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n=i)&&(n=i)}return n}function l(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function h(t){return t}var f=1e-6;function d(t){return"translate("+t+",0)"}function p(t){return"translate(0,"+t+")"}function y(t){return e=>+t(e)}function g(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function m(){return!this.__axis}function v(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,u=1===t||4===t?-1:1,l=4===t||2===t?"x":"y",v=1===t||3===t?d:p;function b(d){var p=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,b=null==i?e.tickFormat?e.tickFormat.apply(e,n):h:i,_=Math.max(a,0)+s,x=e.range(),w=+x[0]+c,k=+x[x.length-1]+c,T=(e.bandwidth?g:y)(e.copy(),c),E=d.selection?d.selection():d,C=E.selectAll(".domain").data([null]),S=E.selectAll(".tick").data(p,e).order(),A=S.exit(),M=S.enter().append("g").attr("class","tick"),N=S.select("line"),D=S.select("text");C=C.merge(C.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(M),N=N.merge(M.append("line").attr("stroke","currentColor").attr(l+"2",u*a)),D=D.merge(M.append("text").attr("fill","currentColor").attr(l,u*_).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),d!==E&&(C=C.transition(d),S=S.transition(d),N=N.transition(d),D=D.transition(d),A=A.transition(d).attr("opacity",f).attr("transform",(function(t){return isFinite(t=T(t))?v(t+c):this.getAttribute("transform")})),M.attr("opacity",f).attr("transform",(function(t){var e=this.parentNode.__axis;return v((e&&isFinite(e=e(t))?e:T(t))+c)}))),A.remove(),C.attr("d",4===t||2===t?o?"M"+u*o+","+w+"H"+c+"V"+k+"H"+u*o:"M"+c+","+w+"V"+k:o?"M"+w+","+u*o+"V"+c+"H"+k+"V"+u*o:"M"+w+","+c+"H"+k),S.attr("opacity",1).attr("transform",(function(t){return v(T(t)+c)})),N.attr(l+"2",u*a),D.attr(l,u*_).text(b),E.filter(m).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),E.each((function(){this.__axis=T}))}return b.scale=function(t){return arguments.length?(e=t,b):e},b.ticks=function(){return n=Array.from(arguments),b},b.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),b):n.slice()},b.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),b):r&&r.slice()},b.tickFormat=function(t){return arguments.length?(i=t,b):i},b.tickSize=function(t){return arguments.length?(a=o=+t,b):a},b.tickSizeInner=function(t){return arguments.length?(a=+t,b):a},b.tickSizeOuter=function(t){return arguments.length?(o=+t,b):o},b.tickPadding=function(t){return arguments.length?(s=+t,b):s},b.offset=function(t){return arguments.length?(c=+t,b):c},b}function b(){}function _(t){return null==t?b:function(){return this.querySelector(t)}}function x(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function w(){return[]}function k(t){return null==t?w:function(){return this.querySelectorAll(t)}}function T(t){return function(){return this.matches(t)}}function E(t){return function(e){return e.matches(t)}}var C=Array.prototype.find;function S(){return this.firstElementChild}var A=Array.prototype.filter;function M(){return Array.from(this.children)}function N(t){return new Array(t.length)}function D(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function O(t){return function(){return t}}function B(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;se?1:t>=e?0:NaN}D.prototype={constructor:D,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var P="http://www.w3.org/1999/xhtml";const j={svg:"http://www.w3.org/2000/svg",xhtml:P,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Y(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),j.hasOwnProperty(e)?{space:j[e],local:t}:t}function z(t){return function(){this.removeAttribute(t)}}function U(t){return function(){this.removeAttributeNS(t.space,t.local)}}function q(t,e){return function(){this.setAttribute(t,e)}}function $(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function H(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function W(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function V(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function G(t){return function(){this.style.removeProperty(t)}}function X(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Z(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Q(t,e){return t.style.getPropertyValue(e)||V(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function J(t,e){return function(){this[t]=e}}function tt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function et(t){return t.trim().split(/^|\s+/)}function nt(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=et(t.getAttribute("class")||"")}function it(t,e){for(var n=nt(t),r=-1,i=e.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Et(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Nt=[null];function Dt(t,e){this._groups=t,this._parents=e}function Ot(){return new Dt([[document.documentElement]],Nt)}Dt.prototype=Ot.prototype={constructor:Dt,select:function(t){"function"!=typeof t&&(t=_(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i=x&&(x=_+1);!(b=g[x])&&++x=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=F);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?G:"function"==typeof e?Z:X)(t,e,null==n?"":n)):Q(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?tt:J)(t,e)):this.node()[t]},classed:function(t,e){var n=et(t+"");if(arguments.length<2){for(var r=nt(this.node()),i=-1,a=n.length;++i{}};function It(){for(var t,e=0,n=arguments.length,r={};e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Pt(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--qt}()}finally{qt=0,function(){for(var t,e,n=zt,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:zt=e);Ut=t,re(r)}(),Vt=0}}function ne(){var t=Xt.now(),e=t-Wt;e>1e3&&(Gt-=e,Wt=t)}function re(t){qt||($t&&($t=clearTimeout($t)),t-Vt>24?(t<1/0&&($t=setTimeout(ee,t-Xt.now()-Gt)),Ht&&(Ht=clearInterval(Ht))):(Ht||(Wt=Xt.now(),Ht=setInterval(ne,1e3)),qt=1,Zt(ee)))}function ie(t,e,n){var r=new Jt;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Jt.prototype=te.prototype={constructor:Jt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Qt():+n)+(null==e?0:+e),this._next||Ut===this||(Ut?Ut._next=this:zt=this,Ut=this),this._call=t,this._time=n,re()},stop:function(){this._call&&(this._call=null,this._time=1/0,re())}};var ae=Yt("start","end","cancel","interrupt"),oe=[];function se(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return ie(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function ue(t,e){var n=le(t,e);if(n.state>3)throw new Error("too late; already running");return n}function le(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function he(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var fe,de=180/Math.PI,pe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ye(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:he(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:he(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:he(t,n)},{i:s-2,x:he(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Ue(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Ue(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=De.exec(t))?new He(e[1],e[2],e[3],1):(e=Oe.exec(t))?new He(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Be.exec(t))?Ue(e[1],e[2],e[3],e[4]):(e=Le.exec(t))?Ue(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ie.exec(t))?Xe(e[1],e[2]/100,e[3]/100,1):(e=Re.exec(t))?Xe(e[1],e[2]/100,e[3]/100,e[4]):Fe.hasOwnProperty(t)?ze(Fe[t]):"transparent"===t?new He(NaN,NaN,NaN,0):null}function ze(t){return new He(t>>16&255,t>>8&255,255&t,1)}function Ue(t,e,n,r){return r<=0&&(t=e=n=NaN),new He(t,e,n,r)}function qe(t){return t instanceof Te||(t=Ye(t)),t?new He((t=t.rgb()).r,t.g,t.b,t.opacity):new He}function $e(t,e,n,r){return 1===arguments.length?qe(t):new He(t,e,n,null==r?1:r)}function He(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function We(){return"#"+Ge(this.r)+Ge(this.g)+Ge(this.b)}function Ve(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Ge(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Xe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Qe(t,e,n,r)}function Ze(t){if(t instanceof Qe)return new Qe(t.h,t.s,t.l,t.opacity);if(t instanceof Te||(t=Ye(t)),!t)return new Qe;if(t instanceof Qe)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new Qe(o,s,c,t.opacity)}function Qe(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ke(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Je(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}we(Te,Ye,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Pe,formatHex:Pe,formatHsl:function(){return Ze(this).formatHsl()},formatRgb:je,toString:je}),we(He,$e,ke(Te,{brighter:function(t){return t=null==t?Ce:Math.pow(Ce,t),new He(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Ee:Math.pow(Ee,t),new He(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:We,formatHex:We,formatRgb:Ve,toString:Ve})),we(Qe,(function(t,e,n,r){return 1===arguments.length?Ze(t):new Qe(t,e,n,null==r?1:r)}),ke(Te,{brighter:function(t){return t=null==t?Ce:Math.pow(Ce,t),new Qe(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Ee:Math.pow(Ee,t),new Qe(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new He(Ke(t>=240?t-240:t+120,i,r),Ke(t,i,r),Ke(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const tn=t=>()=>t;function en(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):tn(isNaN(t)?e:t)}const nn=function t(e){var n=function(t){return 1==(t=+t)?en:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=$e(t)).r,(e=$e(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=en(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function rn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=ra&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:he(n,r)})),a=on.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?ce:ue;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var En=Bt.prototype.constructor;function Cn(t){return function(){this.style.removeProperty(t)}}function Sn(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function An(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Sn(t,a,n)),r}return a._value=e,a}function Mn(t){return function(e){this.textContent=t.call(this,e)}}function Nn(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Mn(r)),e}return r._value=t,r}var Dn=0;function On(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Bn(){return++Dn}var Ln=Bt.prototype;On.prototype=function(t){return Bt().transition(t)}.prototype={constructor:On,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=_(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},Bt.prototype.transition=function(t){var e,n;t instanceof On?(e=t._id,t=t._name):(e=Bn(),(n=In).time=Qt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?sr(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?sr(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Zn.exec(t))?new lr(e[1],e[2],e[3],1):(e=Qn.exec(t))?new lr(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Kn.exec(t))?sr(e[1],e[2],e[3],e[4]):(e=Jn.exec(t))?sr(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=tr.exec(t))?pr(e[1],e[2]/100,e[3]/100,1):(e=er.exec(t))?pr(e[1],e[2]/100,e[3]/100,e[4]):nr.hasOwnProperty(t)?or(nr[t]):"transparent"===t?new lr(NaN,NaN,NaN,0):null}function or(t){return new lr(t>>16&255,t>>8&255,255&t,1)}function sr(t,e,n,r){return r<=0&&(t=e=n=NaN),new lr(t,e,n,r)}function cr(t){return t instanceof qn||(t=ar(t)),t?new lr((t=t.rgb()).r,t.g,t.b,t.opacity):new lr}function ur(t,e,n,r){return 1===arguments.length?cr(t):new lr(t,e,n,null==r?1:r)}function lr(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function hr(){return"#"+dr(this.r)+dr(this.g)+dr(this.b)}function fr(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function dr(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function pr(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new gr(t,e,n,r)}function yr(t){if(t instanceof gr)return new gr(t.h,t.s,t.l,t.opacity);if(t instanceof qn||(t=ar(t)),!t)return new gr;if(t instanceof gr)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new gr(o,s,c,t.opacity)}function gr(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function mr(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}zn(qn,ar,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:rr,formatHex:rr,formatHsl:function(){return yr(this).formatHsl()},formatRgb:ir,toString:ir}),zn(lr,ur,Un(qn,{brighter:function(t){return t=null==t?Hn:Math.pow(Hn,t),new lr(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?$n:Math.pow($n,t),new lr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:hr,formatHex:hr,formatRgb:fr,toString:fr})),zn(gr,(function(t,e,n,r){return 1===arguments.length?yr(t):new gr(t,e,n,null==r?1:r)}),Un(qn,{brighter:function(t){return t=null==t?Hn:Math.pow(Hn,t),new gr(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?$n:Math.pow($n,t),new gr(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new lr(mr(t>=240?t-240:t+120,i,r),mr(t,i,r),mr(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const vr=Math.PI/180,br=180/Math.PI,_r=.96422,xr=.82521,wr=4/29,kr=6/29,Tr=3*kr*kr;function Er(t){if(t instanceof Cr)return new Cr(t.l,t.a,t.b,t.opacity);if(t instanceof Br)return Lr(t);t instanceof lr||(t=cr(t));var e,n,r=Nr(t.r),i=Nr(t.g),a=Nr(t.b),o=Sr((.2225045*r+.7168786*i+.0606169*a)/1);return r===i&&i===a?e=n=o:(e=Sr((.4360747*r+.3850649*i+.1430804*a)/_r),n=Sr((.0139322*r+.0971045*i+.7141733*a)/xr)),new Cr(116*o-16,500*(e-o),200*(o-n),t.opacity)}function Cr(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function Sr(t){return t>.008856451679035631?Math.pow(t,1/3):t/Tr+wr}function Ar(t){return t>kr?t*t*t:Tr*(t-wr)}function Mr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Nr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dr(t){if(t instanceof Br)return new Br(t.h,t.c,t.l,t.opacity);if(t instanceof Cr||(t=Er(t)),0===t.a&&0===t.b)return new Br(NaN,0()=>t;function Rr(t,e){return function(n){return t+n*e}}function Fr(t,e){var n=e-t;return n?Rr(t,n):Ir(isNaN(t)?e:t)}function Pr(t){return function(e,n){var r=t((e=Or(e)).h,(n=Or(n)).h),i=Fr(e.c,n.c),a=Fr(e.l,n.l),o=Fr(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}const jr=Pr((function(t,e){var n=e-t;return n?Rr(t,n>180||n<-180?n-360*Math.round(n/360):n):Ir(isNaN(t)?e:t)}));Pr(Fr);var Yr=Math.sqrt(50),zr=Math.sqrt(10),Ur=Math.sqrt(2);function qr(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=Yr?10:a>=zr?5:a>=Ur?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Yr?10:a>=zr?5:a>=Ur?2:1)}function $r(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=Yr?i*=10:a>=zr?i*=5:a>=Ur&&(i*=2),ee?1:t>=e?0:NaN}function Wr(t){let e=t,n=t;function r(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[a],e)<0?r=a+1:i=a}return r}return 1===t.length&&(e=(e,n)=>t(e)-n,n=function(t){return(e,n)=>Hr(t(e),n)}(t)),{left:r,center:function(t,n,i,a){null==i&&(i=0),null==a&&(a=t.length);const o=r(t,n,i,a-1);return o>i&&e(t[o-1],n)>-e(t[o],n)?o-1:o},right:function(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[a],e)>0?i=a:r=a+1}return r}}}const Vr=Wr(Hr),Gr=Vr.right,Xr=(Vr.left,Wr((function(t){return null===t?NaN:+t})).center,Gr);function Zr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Qr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Kr(){}var Jr=.7,ti=1.4285714285714286,ei="\\s*([+-]?\\d+)\\s*",ni="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ri="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",ii=/^#([0-9a-f]{3,8})$/,ai=new RegExp("^rgb\\("+[ei,ei,ei]+"\\)$"),oi=new RegExp("^rgb\\("+[ri,ri,ri]+"\\)$"),si=new RegExp("^rgba\\("+[ei,ei,ei,ni]+"\\)$"),ci=new RegExp("^rgba\\("+[ri,ri,ri,ni]+"\\)$"),ui=new RegExp("^hsl\\("+[ni,ri,ri]+"\\)$"),li=new RegExp("^hsla\\("+[ni,ri,ri,ni]+"\\)$"),hi={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function fi(){return this.rgb().formatHex()}function di(){return this.rgb().formatRgb()}function pi(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=ii.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?yi(e):3===n?new bi(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?gi(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?gi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ai.exec(t))?new bi(e[1],e[2],e[3],1):(e=oi.exec(t))?new bi(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=si.exec(t))?gi(e[1],e[2],e[3],e[4]):(e=ci.exec(t))?gi(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ui.exec(t))?ki(e[1],e[2]/100,e[3]/100,1):(e=li.exec(t))?ki(e[1],e[2]/100,e[3]/100,e[4]):hi.hasOwnProperty(t)?yi(hi[t]):"transparent"===t?new bi(NaN,NaN,NaN,0):null}function yi(t){return new bi(t>>16&255,t>>8&255,255&t,1)}function gi(t,e,n,r){return r<=0&&(t=e=n=NaN),new bi(t,e,n,r)}function mi(t){return t instanceof Kr||(t=pi(t)),t?new bi((t=t.rgb()).r,t.g,t.b,t.opacity):new bi}function vi(t,e,n,r){return 1===arguments.length?mi(t):new bi(t,e,n,null==r?1:r)}function bi(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function _i(){return"#"+wi(this.r)+wi(this.g)+wi(this.b)}function xi(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wi(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function ki(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ei(t,e,n,r)}function Ti(t){if(t instanceof Ei)return new Ei(t.h,t.s,t.l,t.opacity);if(t instanceof Kr||(t=pi(t)),!t)return new Ei;if(t instanceof Ei)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new Ei(o,s,c,t.opacity)}function Ei(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ci(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Si(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Zr(Kr,pi,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:fi,formatHex:fi,formatHsl:function(){return Ti(this).formatHsl()},formatRgb:di,toString:di}),Zr(bi,vi,Qr(Kr,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new bi(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Jr:Math.pow(Jr,t),new bi(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_i,formatHex:_i,formatRgb:xi,toString:xi})),Zr(Ei,(function(t,e,n,r){return 1===arguments.length?Ti(t):new Ei(t,e,n,null==r?1:r)}),Qr(Kr,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new Ei(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Jr:Math.pow(Jr,t),new Ei(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new bi(Ci(t>=240?t-240:t+120,i,r),Ci(t,i,r),Ci(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ai=t=>()=>t;function Mi(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):Ai(isNaN(t)?e:t)}const Ni=function t(e){var n=function(t){return 1==(t=+t)?Mi:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Ai(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=vi(t)).r,(e=vi(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=Mi(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function Di(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=ra&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:Li(n,r)})),a=Fi.lastIndex;return ae&&(n=t,t=e,e=n),u=function(n){return Math.max(t,Math.min(e,n))}),r=c>2?Vi:Wi,i=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),Li)))(n)))},h.domain=function(t){return arguments.length?(o=Array.from(t,Ui),l()):o.slice()},h.range=function(t){return arguments.length?(s=Array.from(t),l()):s.slice()},h.rangeRound=function(t){return s=Array.from(t),c=zi,l()},h.clamp=function(t){return arguments.length?(u=!!t||$i,l()):u!==$i},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}()($i,$i)}function Zi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Qi,Ki=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ji(t){if(!(e=Ki.exec(t)))throw new Error("invalid format: "+t);var e;return new ta({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function ta(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ea(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function na(t){return(t=ea(Math.abs(t)))?t[1]:NaN}function ra(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Ji.prototype=ta.prototype,ta.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ia={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ra(100*t,e),r:ra,s:function(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Qi=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+ea(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function aa(t){return t}var oa,sa,ca,ua=Array.prototype.map,la=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ha(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var r,i,a,o,s=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((r=e0){let n=Math.round(t/o),r=Math.round(e/o);for(n*oe&&--r,a=new Array(i=r-n+1);++se&&--r,a=new Array(i=r-n+1);++s0;){if((i=qr(c,u,n))===r)return a[o]=c,a[s]=u,e(a);if(i>0)c=Math.floor(c/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,u=Math.floor(u*i)/i}r=i}return t},t}function fa(){var t=Xi();return t.copy=function(){return Gi(t,fa())},Zi.apply(t,arguments),ha(t)}oa=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?aa:(e=ua.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?aa:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ua.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Ji(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,y=t.comma,g=t.precision,m=t.trim,v=t.type;"n"===v?(y=!0,v="g"):ia[v]||(void 0===g&&(g=12),m=!0,v="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?a:/[%p]/.test(v)?c:"",x=ia[v],w=/[defgprs%]/.test(v);function k(t){var i,a,c,f=b,k=_;if("c"===v)k=x(t)+k,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==h&&(T=!1),f=(T?"("===h?h:u:"-"===h||"("===h?"":h)+f,k=("s"===v?la[8+Qi/3]:"")+k+(T&&"("===h?")":""),w)for(i=-1,a=t.length;++i(c=t.charCodeAt(i))||c>57){k=(46===c?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}y&&!d&&(t=r(t,1/0));var E=f.length+t.length+k.length,C=E>1)+f+t+k+C.slice(E);break;default:t=C+f+t+k}return s(t)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:h,formatPrefix:function(t,e){var n=h(((t=Ji(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(na(e)/3))),i=Math.pow(10,-r),a=la[8+r/3];return function(t){return n(i*t)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),sa=oa.format,ca=oa.formatPrefix;class da extends Map{constructor(t,e=ya){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(pa(this,t))}has(t){return super.has(pa(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}(this,t))}}function pa({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ya(t){return null!==t&&"object"==typeof t?t.valueOf():t}Set;const ga=Symbol("implicit");function ma(){var t=new da,e=[],n=[],r=ga;function i(i){let a=t.get(i);if(void 0===a){if(r!==ga)return r;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new da;for(const r of n)t.has(r)||t.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return ma(e,n).unknown(r)},Zi.apply(i,arguments),i}const va=1e3,ba=6e4,_a=36e5,xa=864e5,wa=6048e5,ka=31536e6;var Ta=new Date,Ea=new Date;function Ca(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Ta.setTime(+e),Ea.setTime(+r),t(Ta),t(Ea),Math.floor(n(Ta,Ea))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Sa=Ca((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Sa.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ca((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Sa:null};const Aa=Sa;Sa.range;var Ma=Ca((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*va)}),(function(t,e){return(e-t)/va}),(function(t){return t.getUTCSeconds()}));const Na=Ma;Ma.range;var Da=Ca((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*va)}),(function(t,e){t.setTime(+t+e*ba)}),(function(t,e){return(e-t)/ba}),(function(t){return t.getMinutes()}));const Oa=Da;Da.range;var Ba=Ca((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*va-t.getMinutes()*ba)}),(function(t,e){t.setTime(+t+e*_a)}),(function(t,e){return(e-t)/_a}),(function(t){return t.getHours()}));const La=Ba;Ba.range;var Ia=Ca((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ba)/xa),(t=>t.getDate()-1));const Ra=Ia;function Fa(t){return Ca((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ba)/wa}))}Ia.range;var Pa=Fa(0),ja=Fa(1),Ya=Fa(2),za=Fa(3),Ua=Fa(4),qa=Fa(5),$a=Fa(6),Ha=(Pa.range,ja.range,Ya.range,za.range,Ua.range,qa.range,$a.range,Ca((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})));const Wa=Ha;Ha.range;var Va=Ca((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Va.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ca((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Ga=Va;Va.range;var Xa=Ca((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*ba)}),(function(t,e){return(e-t)/ba}),(function(t){return t.getUTCMinutes()}));const Za=Xa;Xa.range;var Qa=Ca((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*_a)}),(function(t,e){return(e-t)/_a}),(function(t){return t.getUTCHours()}));const Ka=Qa;Qa.range;var Ja=Ca((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/xa}),(function(t){return t.getUTCDate()-1}));const to=Ja;function eo(t){return Ca((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/wa}))}Ja.range;var no=eo(0),ro=eo(1),io=eo(2),ao=eo(3),oo=eo(4),so=eo(5),co=eo(6),uo=(no.range,ro.range,io.range,ao.range,oo.range,so.range,co.range,Ca((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})));const lo=uo;uo.range;var ho=Ca((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));ho.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ca((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const fo=ho;function po(t,e,n,r,i,a){const o=[[Na,1,va],[Na,5,5e3],[Na,15,15e3],[Na,30,3e4],[a,1,ba],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,_a],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,xa],[r,2,1728e5],[n,1,wa],[e,1,2592e6],[e,3,7776e6],[t,1,ka]];function s(e,n,r){const i=Math.abs(n-e)/r,a=Wr((([,,t])=>t)).right(o,i);if(a===o.length)return t.every($r(e/ka,n/ka,r));if(0===a)return Aa.every(Math.max($r(e,n,r),1));const[s,c]=o[i/o[a-1][2][t.toLowerCase(),e])))}function Oo(t,e,n){var r=Eo.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Bo(t,e,n){var r=Eo.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Lo(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Io(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Ro(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Fo(t,e,n){var r=Eo.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Po(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function jo(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Yo(t,e,n){var r=Eo.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function zo(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Uo(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function qo(t,e,n){var r=Eo.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function $o(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ho(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Wo(t,e,n){var r=Eo.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Vo(t,e,n){var r=Eo.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Go(t,e,n){var r=Eo.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xo(t,e,n){var r=Co.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Zo(t,e,n){var r=Eo.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Qo(t,e,n){var r=Eo.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Ko(t,e){return Ao(t.getDate(),e,2)}function Jo(t,e){return Ao(t.getHours(),e,2)}function ts(t,e){return Ao(t.getHours()%12||12,e,2)}function es(t,e){return Ao(1+Ra.count(Ga(t),t),e,3)}function ns(t,e){return Ao(t.getMilliseconds(),e,3)}function rs(t,e){return ns(t,e)+"000"}function is(t,e){return Ao(t.getMonth()+1,e,2)}function as(t,e){return Ao(t.getMinutes(),e,2)}function os(t,e){return Ao(t.getSeconds(),e,2)}function ss(t){var e=t.getDay();return 0===e?7:e}function cs(t,e){return Ao(Pa.count(Ga(t)-1,t),e,2)}function us(t){var e=t.getDay();return e>=4||0===e?Ua(t):Ua.ceil(t)}function ls(t,e){return t=us(t),Ao(Ua.count(Ga(t),t)+(4===Ga(t).getDay()),e,2)}function hs(t){return t.getDay()}function fs(t,e){return Ao(ja.count(Ga(t)-1,t),e,2)}function ds(t,e){return Ao(t.getFullYear()%100,e,2)}function ps(t,e){return Ao((t=us(t)).getFullYear()%100,e,2)}function ys(t,e){return Ao(t.getFullYear()%1e4,e,4)}function gs(t,e){var n=t.getDay();return Ao((t=n>=4||0===n?Ua(t):Ua.ceil(t)).getFullYear()%1e4,e,4)}function ms(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ao(e/60|0,"0",2)+Ao(e%60,"0",2)}function vs(t,e){return Ao(t.getUTCDate(),e,2)}function bs(t,e){return Ao(t.getUTCHours(),e,2)}function _s(t,e){return Ao(t.getUTCHours()%12||12,e,2)}function xs(t,e){return Ao(1+to.count(fo(t),t),e,3)}function ws(t,e){return Ao(t.getUTCMilliseconds(),e,3)}function ks(t,e){return ws(t,e)+"000"}function Ts(t,e){return Ao(t.getUTCMonth()+1,e,2)}function Es(t,e){return Ao(t.getUTCMinutes(),e,2)}function Cs(t,e){return Ao(t.getUTCSeconds(),e,2)}function Ss(t){var e=t.getUTCDay();return 0===e?7:e}function As(t,e){return Ao(no.count(fo(t)-1,t),e,2)}function Ms(t){var e=t.getUTCDay();return e>=4||0===e?oo(t):oo.ceil(t)}function Ns(t,e){return t=Ms(t),Ao(oo.count(fo(t),t)+(4===fo(t).getUTCDay()),e,2)}function Ds(t){return t.getUTCDay()}function Os(t,e){return Ao(ro.count(fo(t)-1,t),e,2)}function Bs(t,e){return Ao(t.getUTCFullYear()%100,e,2)}function Ls(t,e){return Ao((t=Ms(t)).getUTCFullYear()%100,e,2)}function Is(t,e){return Ao(t.getUTCFullYear()%1e4,e,4)}function Rs(t,e){var n=t.getUTCDay();return Ao((t=n>=4||0===n?oo(t):oo.ceil(t)).getUTCFullYear()%1e4,e,4)}function Fs(){return"+0000"}function Ps(){return"%"}function js(t){return+t}function Ys(t){return Math.floor(+t/1e3)}function zs(t){return new Date(t)}function Us(t){return t instanceof Date?+t:+new Date(+t)}function qs(t,e,n,r,i,a,o,s,c,u){var l=Xi(),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),y=u("%I:%M"),g=u("%I %p"),m=u("%a %d"),v=u("%b %d"),b=u("%B"),_=u("%Y");function x(t){return(c(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:js,s:Ys,S:os,u:ss,U:cs,V:ls,w:hs,W:fs,x:null,X:null,y:ds,Y:ys,Z:ms,"%":Ps},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:vs,e:vs,f:ks,g:Ls,G:Rs,H:bs,I:_s,j:xs,L:ws,m:Ts,M:Es,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:js,s:Ys,S:Cs,u:Ss,U:As,V:Ns,w:Ds,W:Os,x:null,X:null,y:Bs,Y:Is,Z:Fs,"%":Ps},x={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return T(t,e,n,r)},d:Uo,e:Uo,f:Go,g:Po,G:Fo,H:$o,I:$o,j:qo,L:Vo,m:zo,M:Ho,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l.get(r[0].toLowerCase()),n+r[0].length):-1},q:Yo,Q:Zo,s:Qo,S:Wo,u:Bo,U:Lo,V:Io,w:Oo,W:Ro,x:function(t,e,r){return T(t,n,e,r)},X:function(t,e,n){return T(t,r,e,n)},y:Po,Y:Fo,Z:jo,"%":Xo};function w(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=_o(xo(a.y,0,1))).getUTCDay(),r=i>4||0===i?ro.ceil(r):ro(r),r=to.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=bo(xo(a.y,0,1))).getDay(),r=i>4||0===i?ja.ceil(r):ja(r),r=Ra.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?_o(xo(a.y,0,1)).getUTCDay():bo(xo(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,_o(a)):bo(a)}}function T(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=x[i in To?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),_.x=w(n,_),_.X=w(r,_),_.c=w(e,_),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),ko=wo.format,wo.parse,wo.utcFormat,wo.utcParse;var Qs=Array.prototype.find;function Ks(){return this.firstElementChild}var Js=Array.prototype.filter;function tc(){return Array.from(this.children)}function ec(t){return new Array(t.length)}function nc(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function rc(t){return function(){return t}}function ic(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;se?1:t>=e?0:NaN}nc.prototype={constructor:nc,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var uc="http://www.w3.org/1999/xhtml";const lc={svg:"http://www.w3.org/2000/svg",xhtml:uc,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function hc(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),lc.hasOwnProperty(e)?{space:lc[e],local:t}:t}function fc(t){return function(){this.removeAttribute(t)}}function dc(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pc(t,e){return function(){this.setAttribute(t,e)}}function yc(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function gc(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function mc(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function vc(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function bc(t){return function(){this.style.removeProperty(t)}}function _c(t,e,n){return function(){this.style.setProperty(t,e,n)}}function xc(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function wc(t,e){return t.style.getPropertyValue(e)||vc(t).getComputedStyle(t,null).getPropertyValue(e)}function kc(t){return function(){delete this[t]}}function Tc(t,e){return function(){this[t]=e}}function Ec(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Cc(t){return t.trim().split(/^|\s+/)}function Sc(t){return t.classList||new Ac(t)}function Ac(t){this._node=t,this._names=Cc(t.getAttribute("class")||"")}function Mc(t,e){for(var n=Sc(t),r=-1,i=e.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Zc(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var eu=[null];function nu(t,e){this._groups=t,this._parents=e}function ru(){return new nu([[document.documentElement]],eu)}nu.prototype=ru.prototype={constructor:nu,select:function(t){"function"!=typeof t&&(t=Hs(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i=x&&(x=_+1);!(b=g[x])&&++x=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=cc);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?bc:"function"==typeof e?xc:_c)(t,e,null==n?"":n)):wc(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?kc:"function"==typeof e?Ec:Tc)(t,e)):this.node()[t]},classed:function(t,e){var n=Cc(t+"");if(arguments.length<2){for(var r=Sc(this.node()),i=-1,a=n.length;++iuu)if(Math.abs(l*s-c*u)>uu&&i){var f=n-a,d=r-o,p=s*s+c*c,y=f*f+d*d,g=Math.sqrt(p),m=Math.sqrt(h),v=i*Math.tan((su-Math.acos((p+h-y)/(2*g*m)))/2),b=v/m,_=v/g;Math.abs(b-1)>uu&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+_*s)+","+(this._y1=e+_*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>uu||Math.abs(this._y1-u)>uu)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%cu+cu),h>lu?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>uu&&(this._+="A"+n+","+n+",0,"+ +(h>=su)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};const du=fu;function pu(t){return function(){return t}}var yu=Math.abs,gu=Math.atan2,mu=Math.cos,vu=Math.max,bu=Math.min,_u=Math.sin,xu=Math.sqrt,wu=1e-12,ku=Math.PI,Tu=ku/2,Eu=2*ku;function Cu(t){return t>1?0:t<-1?ku:Math.acos(t)}function Su(t){return t>=1?Tu:t<=-1?-Tu:Math.asin(t)}function Au(t){return t.innerRadius}function Mu(t){return t.outerRadius}function Nu(t){return t.startAngle}function Du(t){return t.endAngle}function Ou(t){return t&&t.padAngle}function Bu(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*fN*N+D*D&&(T=C,E=S),{cx:T,cy:E,x01:-l,y01:-h,x11:T*(i/x-1),y11:E*(i/x-1)}}function Iu(){var t=Au,e=Mu,n=pu(0),r=null,i=Nu,a=Du,o=Ou,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-Tu,d=a.apply(this,arguments)-Tu,p=yu(d-f),y=d>f;if(s||(s=c=du()),hwu)if(p>Eu-wu)s.moveTo(h*mu(f),h*_u(f)),s.arc(0,0,h,f,d,!y),l>wu&&(s.moveTo(l*mu(d),l*_u(d)),s.arc(0,0,l,d,f,y));else{var g,m,v=f,b=d,_=f,x=d,w=p,k=p,T=o.apply(this,arguments)/2,E=T>wu&&(r?+r.apply(this,arguments):xu(l*l+h*h)),C=bu(yu(h-l)/2,+n.apply(this,arguments)),S=C,A=C;if(E>wu){var M=Su(E/l*_u(T)),N=Su(E/h*_u(T));(w-=2*M)>wu?(_+=M*=y?1:-1,x-=M):(w=0,_=x=(f+d)/2),(k-=2*N)>wu?(v+=N*=y?1:-1,b-=N):(k=0,v=b=(f+d)/2)}var D=h*mu(v),O=h*_u(v),B=l*mu(x),L=l*_u(x);if(C>wu){var I,R=h*mu(b),F=h*_u(b),P=l*mu(_),j=l*_u(_);if(pwu?A>wu?(g=Lu(P,j,D,O,h,A,y),m=Lu(R,F,B,L,h,A,y),s.moveTo(g.cx+g.x01,g.cy+g.y01),Awu&&w>wu?S>wu?(g=Lu(B,L,R,F,l,-S,y),m=Lu(D,O,P,j,l,-S,y),s.lineTo(g.cx+g.x01,g.cy+g.y01),St?1:e>=t?0:NaN}function qu(t){return t}function $u(){}function Hu(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Wu(t){this._context=t}function Vu(t){return new Wu(t)}function Gu(t){this._context=t}function Xu(t){this._context=t}function Zu(t){this._context=t}function Qu(t){return t<0?-1:1}function Ku(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Qu(a)+Qu(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Ju(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function tl(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function el(t){this._context=t}function nl(t){this._context=new rl(t)}function rl(t){this._context=t}function il(t){this._context=t}function al(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var sl=new Date,cl=new Date;function ul(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return sl.setTime(+e),cl.setTime(+r),t(sl),t(cl),Math.floor(n(sl,cl))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}const ll=864e5,hl=6048e5;function fl(t){return ul((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/hl}))}var dl=fl(0),pl=fl(1),yl=fl(2),gl=fl(3),ml=fl(4),vl=fl(5),bl=fl(6),_l=(dl.range,pl.range,yl.range,gl.range,ml.range,vl.range,bl.range,ul((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/ll}),(function(t){return t.getUTCDate()-1})));const xl=_l;function wl(t){return ul((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/hl}))}_l.range;var kl=wl(0),Tl=wl(1),El=wl(2),Cl=wl(3),Sl=wl(4),Al=wl(5),Ml=wl(6),Nl=(kl.range,Tl.range,El.range,Cl.range,Sl.range,Al.range,Ml.range,ul((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/ll),(t=>t.getDate()-1)));const Dl=Nl;Nl.range;var Ol=ul((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Ol.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ul((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Bl=Ol;Ol.range;var Ll=ul((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ll.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ul((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Il=Ll;function Rl(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fl(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Pl(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}Ll.range;var jl,Yl,zl={"-":"",_:" ",0:"0"},Ul=/^\s*\d+/,ql=/^%/,$l=/[\\^$*+?|[\]().{}]/g;function Hl(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a[t.toLowerCase(),e])))}function Xl(t,e,n){var r=Ul.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Zl(t,e,n){var r=Ul.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Ql(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Kl(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Jl(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function th(t,e,n){var r=Ul.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function eh(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function nh(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function rh(t,e,n){var r=Ul.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function ih(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ah(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oh(t,e,n){var r=Ul.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function sh(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function ch(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function uh(t,e,n){var r=Ul.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function lh(t,e,n){var r=Ul.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function hh(t,e,n){var r=Ul.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function fh(t,e,n){var r=ql.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function dh(t,e,n){var r=Ul.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function ph(t,e,n){var r=Ul.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function yh(t,e){return Hl(t.getDate(),e,2)}function gh(t,e){return Hl(t.getHours(),e,2)}function mh(t,e){return Hl(t.getHours()%12||12,e,2)}function vh(t,e){return Hl(1+Dl.count(Bl(t),t),e,3)}function bh(t,e){return Hl(t.getMilliseconds(),e,3)}function _h(t,e){return bh(t,e)+"000"}function xh(t,e){return Hl(t.getMonth()+1,e,2)}function wh(t,e){return Hl(t.getMinutes(),e,2)}function kh(t,e){return Hl(t.getSeconds(),e,2)}function Th(t){var e=t.getDay();return 0===e?7:e}function Eh(t,e){return Hl(kl.count(Bl(t)-1,t),e,2)}function Ch(t){var e=t.getDay();return e>=4||0===e?Sl(t):Sl.ceil(t)}function Sh(t,e){return t=Ch(t),Hl(Sl.count(Bl(t),t)+(4===Bl(t).getDay()),e,2)}function Ah(t){return t.getDay()}function Mh(t,e){return Hl(Tl.count(Bl(t)-1,t),e,2)}function Nh(t,e){return Hl(t.getFullYear()%100,e,2)}function Dh(t,e){return Hl((t=Ch(t)).getFullYear()%100,e,2)}function Oh(t,e){return Hl(t.getFullYear()%1e4,e,4)}function Bh(t,e){var n=t.getDay();return Hl((t=n>=4||0===n?Sl(t):Sl.ceil(t)).getFullYear()%1e4,e,4)}function Lh(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Hl(e/60|0,"0",2)+Hl(e%60,"0",2)}function Ih(t,e){return Hl(t.getUTCDate(),e,2)}function Rh(t,e){return Hl(t.getUTCHours(),e,2)}function Fh(t,e){return Hl(t.getUTCHours()%12||12,e,2)}function Ph(t,e){return Hl(1+xl.count(Il(t),t),e,3)}function jh(t,e){return Hl(t.getUTCMilliseconds(),e,3)}function Yh(t,e){return jh(t,e)+"000"}function zh(t,e){return Hl(t.getUTCMonth()+1,e,2)}function Uh(t,e){return Hl(t.getUTCMinutes(),e,2)}function qh(t,e){return Hl(t.getUTCSeconds(),e,2)}function $h(t){var e=t.getUTCDay();return 0===e?7:e}function Hh(t,e){return Hl(dl.count(Il(t)-1,t),e,2)}function Wh(t){var e=t.getUTCDay();return e>=4||0===e?ml(t):ml.ceil(t)}function Vh(t,e){return t=Wh(t),Hl(ml.count(Il(t),t)+(4===Il(t).getUTCDay()),e,2)}function Gh(t){return t.getUTCDay()}function Xh(t,e){return Hl(pl.count(Il(t)-1,t),e,2)}function Zh(t,e){return Hl(t.getUTCFullYear()%100,e,2)}function Qh(t,e){return Hl((t=Wh(t)).getUTCFullYear()%100,e,2)}function Kh(t,e){return Hl(t.getUTCFullYear()%1e4,e,4)}function Jh(t,e){var n=t.getUTCDay();return Hl((t=n>=4||0===n?ml(t):ml.ceil(t)).getUTCFullYear()%1e4,e,4)}function tf(){return"+0000"}function ef(){return"%"}function nf(t){return+t}function rf(t){return Math.floor(+t/1e3)}jl=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Vl(i),l=Gl(i),h=Vl(a),f=Gl(a),d=Vl(o),p=Gl(o),y=Vl(s),g=Gl(s),m=Vl(c),v=Gl(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:yh,e:yh,f:_h,g:Dh,G:Bh,H:gh,I:mh,j:vh,L:bh,m:xh,M:wh,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nf,s:rf,S:kh,u:Th,U:Eh,V:Sh,w:Ah,W:Mh,x:null,X:null,y:Nh,Y:Oh,Z:Lh,"%":ef},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Ih,e:Ih,f:Yh,g:Qh,G:Jh,H:Rh,I:Fh,j:Ph,L:jh,m:zh,M:Uh,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nf,s:rf,S:qh,u:$h,U:Hh,V:Vh,w:Gh,W:Xh,x:null,X:null,y:Zh,Y:Kh,Z:tf,"%":ef},x={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return T(t,e,n,r)},d:ah,e:ah,f:hh,g:eh,G:th,H:sh,I:sh,j:oh,L:lh,m:ih,M:ch,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l.get(r[0].toLowerCase()),n+r[0].length):-1},q:rh,Q:dh,s:ph,S:uh,u:Zl,U:Ql,V:Kl,w:Xl,W:Jl,x:function(t,e,r){return T(t,n,e,r)},X:function(t,e,n){return T(t,r,e,n)},y:eh,Y:th,Z:nh,"%":fh};function w(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=Fl(Pl(a.y,0,1))).getUTCDay(),r=i>4||0===i?pl.ceil(r):pl(r),r=xl.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Rl(Pl(a.y,0,1))).getDay(),r=i>4||0===i?Tl.ceil(r):Tl(r),r=Dl.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Fl(Pl(a.y,0,1)).getUTCDay():Rl(Pl(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Fl(a)):Rl(a)}}function T(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=x[i in zl?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),_.x=w(n,_),_.X=w(r,_),_.c=w(e,_),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Yl=jl.format,jl.parse,jl.utcFormat,jl.utcParse;var af={value:()=>{}};function of(){for(var t,e=0,n=arguments.length,r={};e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function uf(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--pf}()}finally{pf=0,function(){for(var t,e,n=ff,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ff=e);df=t,Af(r)}(),vf=0}}function Sf(){var t=_f.now(),e=t-mf;e>1e3&&(bf-=e,mf=t)}function Af(t){pf||(yf&&(yf=clearTimeout(yf)),t-vf>24?(t<1/0&&(yf=setTimeout(Cf,t-_f.now()-bf)),gf&&(gf=clearInterval(gf))):(gf||(mf=_f.now(),gf=setInterval(Sf,1e3)),pf=1,xf(Cf)))}function Mf(t,e,n){var r=new Tf;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Tf.prototype=Ef.prototype={constructor:Tf,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?wf():+n)+(null==e?0:+e),this._next||df===this||(df?df._next=this:ff=this,df=this),this._call=t,this._time=n,Af()},stop:function(){this._call&&(this._call=null,this._time=1/0,Af())}};var Nf=hf("start","end","cancel","interrupt"),Df=[];function Of(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Mf(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function Lf(t,e){var n=If(t,e);if(n.state>3)throw new Error("too late; already running");return n}function If(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Rf(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Ff,Pf=180/Math.PI,jf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yf(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Rf(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Rf(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Rf(t,n)},{i:s-2,x:Rf(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=ra&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:Rf(n,r)})),a=Qf.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Bf:Lf;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var gd=iu.prototype.constructor;function md(t){return function(){this.style.removeProperty(t)}}function vd(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function bd(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&vd(t,a,n)),r}return a._value=e,a}function _d(t){return function(e){this.textContent=t.call(this,e)}}function xd(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&_d(r)),e}return r._value=t,r}var wd=0;function kd(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Td(){return++wd}var Ed=iu.prototype;kd.prototype=function(t){return iu().transition(t)}.prototype={constructor:kd,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Hs(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},iu.prototype.transition=function(t){var e,n;t instanceof kd?(e=t._id,t=t._name):(e=Td(),(n=Cd).time=wf(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;ae?1:t>=e?0:NaN}Yd.prototype={constructor:Yd,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Vd="http://www.w3.org/1999/xhtml";const Gd={svg:"http://www.w3.org/2000/svg",xhtml:Vd,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Xd(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Gd.hasOwnProperty(e)?{space:Gd[e],local:t}:t}function Zd(t){return function(){this.removeAttribute(t)}}function Qd(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Kd(t,e){return function(){this.setAttribute(t,e)}}function Jd(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function tp(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function ep(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function np(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function rp(t){return function(){this.style.removeProperty(t)}}function ip(t,e,n){return function(){this.style.setProperty(t,e,n)}}function ap(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function op(t,e){return t.style.getPropertyValue(e)||np(t).getComputedStyle(t,null).getPropertyValue(e)}function sp(t){return function(){delete this[t]}}function cp(t,e){return function(){this[t]=e}}function up(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function lp(t){return t.trim().split(/^|\s+/)}function hp(t){return t.classList||new fp(t)}function fp(t){this._node=t,this._names=lp(t.getAttribute("class")||"")}function dp(t,e){for(var n=hp(t),r=-1,i=e.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Lp(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var jp=[null];function Yp(t,e){this._groups=t,this._parents=e}function zp(){return new Yp([[document.documentElement]],jp)}Yp.prototype=zp.prototype={constructor:Yp,select:function(t){"function"!=typeof t&&(t=Md(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i=x&&(x=_+1);!(b=g[x])&&++x=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Wd);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?rp:"function"==typeof e?ap:ip)(t,e,null==n?"":n)):op(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?sp:"function"==typeof e?up:cp)(t,e)):this.node()[t]},classed:function(t,e){var n=lp(t+"");if(arguments.length<2){for(var r=hp(this.node()),i=-1,a=n.length;++i{}};function $p(){for(var t,e=0,n=arguments.length,r={};e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Vp(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--Kp}()}finally{Kp=0,function(){for(var t,e,n=Zp,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Zp=e);Qp=t,fy(r)}(),ny=0}}function hy(){var t=iy.now(),e=t-ey;e>1e3&&(ry-=e,ey=t)}function fy(t){Kp||(Jp&&(Jp=clearTimeout(Jp)),t-ny>24?(t<1/0&&(Jp=setTimeout(ly,t-iy.now()-ry)),ty&&(ty=clearInterval(ty))):(ty||(ey=iy.now(),ty=setInterval(hy,1e3)),Kp=1,ay(ly)))}function dy(t,e,n){var r=new cy;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}cy.prototype=uy.prototype={constructor:cy,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?oy():+n)+(null==e?0:+e),this._next||Qp===this||(Qp?Qp._next=this:Zp=this,Qp=this),this._call=t,this._time=n,fy()},stop:function(){this._call&&(this._call=null,this._time=1/0,fy())}};var py=Xp("start","end","cancel","interrupt"),yy=[];function gy(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return dy(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function vy(t,e){var n=by(t,e);if(n.state>3)throw new Error("too late; already running");return n}function by(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function _y(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var xy,wy=180/Math.PI,ky={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ty(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_y(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_y(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_y(t,n)},{i:s-2,x:_y(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Qy(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Qy(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Yy.exec(t))?new tg(e[1],e[2],e[3],1):(e=zy.exec(t))?new tg(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Uy.exec(t))?Qy(e[1],e[2],e[3],e[4]):(e=qy.exec(t))?Qy(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=$y.exec(t))?ig(e[1],e[2]/100,e[3]/100,1):(e=Hy.exec(t))?ig(e[1],e[2]/100,e[3]/100,e[4]):Wy.hasOwnProperty(t)?Zy(Wy[t]):"transparent"===t?new tg(NaN,NaN,NaN,0):null}function Zy(t){return new tg(t>>16&255,t>>8&255,255&t,1)}function Qy(t,e,n,r){return r<=0&&(t=e=n=NaN),new tg(t,e,n,r)}function Ky(t){return t instanceof By||(t=Xy(t)),t?new tg((t=t.rgb()).r,t.g,t.b,t.opacity):new tg}function Jy(t,e,n,r){return 1===arguments.length?Ky(t):new tg(t,e,n,null==r?1:r)}function tg(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function eg(){return"#"+rg(this.r)+rg(this.g)+rg(this.b)}function ng(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function rg(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function ig(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new og(t,e,n,r)}function ag(t){if(t instanceof og)return new og(t.h,t.s,t.l,t.opacity);if(t instanceof By||(t=Xy(t)),!t)return new og;if(t instanceof og)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new og(o,s,c,t.opacity)}function og(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function sg(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function cg(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Dy(By,Xy,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Vy,formatHex:Vy,formatHsl:function(){return ag(this).formatHsl()},formatRgb:Gy,toString:Gy}),Dy(tg,Jy,Oy(By,{brighter:function(t){return t=null==t?Iy:Math.pow(Iy,t),new tg(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Ly:Math.pow(Ly,t),new tg(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:eg,formatHex:eg,formatRgb:ng,toString:ng})),Dy(og,(function(t,e,n,r){return 1===arguments.length?ag(t):new og(t,e,n,null==r?1:r)}),Oy(By,{brighter:function(t){return t=null==t?Iy:Math.pow(Iy,t),new og(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Ly:Math.pow(Ly,t),new og(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new tg(sg(t>=240?t-240:t+120,i,r),sg(t,i,r),sg(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const ug=t=>()=>t;function lg(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):ug(isNaN(t)?e:t)}const hg=function t(e){var n=function(t){return 1==(t=+t)?lg:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):ug(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Jy(t)).r,(e=Jy(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=lg(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function fg(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=ra&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:_y(n,r)})),a=pg.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?my:vy;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Bg=Up.prototype.constructor;function Lg(t){return function(){this.style.removeProperty(t)}}function Ig(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Rg(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Ig(t,a,n)),r}return a._value=e,a}function Fg(t){return function(e){this.textContent=t.call(this,e)}}function Pg(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Fg(r)),e}return r._value=t,r}var jg=0;function Yg(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zg(){return++jg}var Ug=Up.prototype;Yg.prototype=function(t){return Up().transition(t)}.prototype={constructor:Yg,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Md(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},Up.prototype.transition=function(t){var e,n;t instanceof Yg?(e=t._id,t=t._name):(e=zg(),(n=qg).time=oy(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a0?Jg(hm,--um):0,sm--,10===lm&&(sm=1,om--),lm}function pm(){return lm=um2||vm(lm)>3?"":" "}function xm(t,e){for(;--e&&pm()&&!(lm<48||lm>102||lm>57&&lm<65||lm>70&&lm<97););return mm(t,gm()+(e<6&&32==ym()&&32==pm()))}function wm(t){for(;pm();)switch(lm){case t:return um;case 34:case 39:return wm(34===t||39===t?t:lm);case 40:41===t&&wm(t);break;case 92:pm()}return um}function km(t,e){for(;pm()&&t+lm!==57&&(t+lm!==84||47!==ym()););return"/*"+mm(e,um-1)+"*"+Zg(47===t?t:pm())}function Tm(t){for(;!vm(ym());)pm();return mm(t,um)}function Em(t){return function(t){return hm="",t}(Cm("",null,null,null,[""],t=function(t){return om=sm=1,cm=em(hm=t),um=0,[]}(t),0,[0],t))}function Cm(t,e,n,r,i,a,o,s,c){for(var u=0,l=0,h=o,f=0,d=0,p=0,y=1,g=1,m=1,v=0,b="",_=i,x=a,w=r,k=b;g;)switch(p=v,v=pm()){case 34:case 39:case 91:case 40:k+=bm(v);break;case 9:case 10:case 13:case 32:k+=_m(p);break;case 92:k+=xm(gm()-1,7);continue;case 47:switch(ym()){case 42:case 47:rm(Am(km(pm(),gm()),e,n),c);break;default:k+="/"}break;case 123*y:s[u++]=em(k)*m;case 125*y:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+l:d>0&&em(k)-h&&rm(d>32?Mm(k+";",r,n,h-1):Mm(Kg(k," ","")+";",r,n,h-2),c);break;case 59:k+=";";default:if(rm(w=Sm(k,e,n,u,l,i,s,b,_=[],x=[],h),a),123===v)if(0===l)Cm(k,e,w,w,_,a,h,s,x);else switch(f){case 100:case 109:case 115:Cm(t,w,w,r&&rm(Sm(t,w,w,0,0,i,s,b,i,_=[],h),x),i,x,h,s,r?_:x);break;default:Cm(k,w,w,w,[""],x,h,s,x)}}u=l=d=0,y=m=1,b=k="",h=o;break;case 58:h=1+em(k),d=p;default:if(y<1)if(123==v)--y;else if(125==v&&0==y++&&125==dm())continue;switch(k+=Zg(v),v*y){case 38:m=l>0?1:(k+="\f",-1);break;case 44:s[u++]=(em(k)-1)*m,m=1;break;case 64:45===ym()&&(k+=bm(pm())),f=ym(),l=em(b=k+=Tm(gm())),v++;break;case 45:45===p&&2==em(k)&&(y=0)}}return a}function Sm(t,e,n,r,i,a,o,s,c,u,l){for(var h=i-1,f=0===i?a:[""],d=nm(f),p=0,y=0,g=0;p0?f[m]+" "+v:Kg(v,/&\f/g,f[m])))&&(c[g++]=b);return fm(t,e,n,0===i?Vg:s,c,u,l)}function Am(t,e,n){return fm(t,e,n,Wg,Zg(lm),tm(t,2,-2),0)}function Mm(t,e,n,r){return fm(t,e,n,Gg,tm(t,0,r),tm(t,r+1,-1),r)}const Nm="8.13.5";var Dm=n(9609),Om=n(7856),Bm=n.n(Om),Lm=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}return(e=(e=(e=(e=e.replace(/script>/gi,"#")).replace(/script>/gi,"#")).replace(/javascript:/gi,"#")).replace(/onerror=/gi,"onerror:")).replace(/