obsidian-dev-utils 46.5.1 → 46.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
package/dist/lib/cjs/Library.cjs
CHANGED
|
@@ -126,7 +126,7 @@ __export(Library_exports, {
|
|
|
126
126
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
127
127
|
});
|
|
128
128
|
module.exports = __toCommonJS(Library_exports);
|
|
129
|
-
const LIBRARY_VERSION = "46.5.
|
|
129
|
+
const LIBRARY_VERSION = "46.5.2";
|
|
130
130
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
131
131
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
132
132
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -231,7 +231,7 @@ async function toCanvasChange(app, file, change) {
|
|
|
231
231
|
isCanvas: true,
|
|
232
232
|
key: `nodes.${String(nodeIndex)}.text.${String(linkIndex)}`,
|
|
233
233
|
nodeIndex,
|
|
234
|
-
type: "
|
|
234
|
+
type: "text"
|
|
235
235
|
}
|
|
236
236
|
};
|
|
237
237
|
}
|
|
@@ -511,4 +511,4 @@ function validateChanges(changes, content, frontmatter, path) {
|
|
|
511
511
|
toCanvasChange,
|
|
512
512
|
toFrontmatterChangeWithOffsets
|
|
513
513
|
});
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9DYW52YXMuZC50cyc7XG5cbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSxcbiAgQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZVxufSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIHBhcnNlTWV0YWRhdGFcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBjaGFuZ2UgaW4gdGhlIHZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogQSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgKi9cbiAgb2xkQ29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0aGF0IGNhdXNlZCB0aGUgY2hhbmdlLlxuICAgKi9cbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2U7XG59XG50eXBlIEFkdmFuY2VkQ2FudmFzQ2hhbmdlID0geyByZWZlcmVuY2U6IEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNGaWxlTm9kZUNoYW5nZSA9IHsgcmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSB9ICYgRmlsZUNoYW5nZTtcbnR5cGUgQ2FudmFzVGV4dE5vZGVDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIENvbnRlbnRDaGFuZ2UgPSB7IHJlZmVyZW5jZTogUmVmZXJlbmNlQ2FjaGUgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIEZyb250bWF0dGVyQ2hhbmdlID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgfSAmIEZpbGVDaGFuZ2U7XG5cbi8qKlxuICogQXBwbGllcyBhIHNlcmllcyBvZiBjb250ZW50IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGNoYW5nZXNQcm92aWRlciAtIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRlbnQgY2hhbmdlcyB0byBhcHBseS5cbiAqIEBwYXJhbSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgLSBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBjb250ZW50KTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKGNoYW5nZXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXIsIGhhc0Zyb250bWF0dGVyRXJyb3IgfSA9IHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkoY29udGVudCwgcGF0aCk7XG5cbiAgaWYgKCF2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlcywgY29udGVudCwgZnJvbnRtYXR0ZXIsIHBhdGgpKSB7XG4gICAgcmV0dXJuIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA/IG51bGwgOiBjb250ZW50O1xuICB9XG5cbiAgY2hhbmdlcyA9IHNvcnRBbmRGaWx0ZXJDaGFuZ2VzKGNoYW5nZXMpO1xuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXJDaGFuZ2VkLCBuZXdDb250ZW50IH0gPSBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGgpO1xuXG4gIGF3YWl0IGFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHMoYWJvcnRTaWduYWwsIGZyb250bWF0dGVyLCBmcm9udG1hdHRlckNoYW5nZWQsIHBhdGgpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIHJldHVybiBidWlsZEZpbmFsQ29udGVudChuZXdDb250ZW50LCBmcm9udG1hdHRlciwgZnJvbnRtYXR0ZXJDaGFuZ2VkKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHByb2Nlc3NPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICogQHBhcmFtIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyAtIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIFtjb250ZW50OiBzdHJpbmddPixcbiAgcHJvY2Vzc09wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge30sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwcm9jZXNzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgaWYgKGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYXBwbHlDYW52YXNDaGFuZ2VzKGFib3J0U2lnbmFsLCBjb250ZW50LCBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSksIGNoYW5nZXNQcm92aWRlciwgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgYXBwbHlDb250ZW50Q2hhbmdlcyhhYm9ydFNpZ25hbCwgY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIsIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyk7XG4gIH0sIHByb2Nlc3NPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkdmFuY2VkQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBBZHZhbmNlZENhbnZhc0NoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGNoYW5nZS5yZWZlcmVuY2UpICYmICdub2RlSWQnIGluIGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0NoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzUmVmZXJlbmNlKGNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNGaWxlTm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNUZXh0Tm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ3RleHQnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50Q2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIENvbnRlbnRDaGFuZ2Uge1xuICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2Uge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNhbnZhcyBkYXRhIGZyb20gdGhlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byBwYXJzZSB0aGUgY2FudmFzIGRhdGEgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgY2FudmFzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNhbnZhc0RhdGEoY29udGVudDogc3RyaW5nKTogQ2FudmFzRGF0YSB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgQ2FudmFzRGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbiB0byBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNvbnZlcnQgdGhlIGNoYW5nZSBmcm9tLlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgY2hhbmdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9DYW52YXNDaGFuZ2UoYXBwOiBBcHAsIGZpbGU6IFRGaWxlLCBjaGFuZ2U6IEFkdmFuY2VkQ2FudmFzQ2hhbmdlKTogUHJvbWlzZTxDYW52YXNDaGFuZ2U+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VDYW52YXNEYXRhKGNvbnRlbnQpO1xuICBjb25zdCBub2RlSW5kZXggPSBjYW52YXNEYXRhLm5vZGVzLmZpbmRJbmRleCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWQpO1xuICBpZiAobm9kZUluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSAke2NoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24ubm9kZUlkfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgJHtjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLm5vZGVJZH0gbm90IGZvdW5kYCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBub2RlLnRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlICR7Y2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWR9IGlzIG5vdCBhIHRleHQgbm9kZWApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShhcHAsIG5vZGUudGV4dCk7XG4gIGNvbnN0IGxpbmtzID0gZ2V0QWxsTGlua3MobWV0YWRhdGEpO1xuICBjb25zdCBsaW5rSW5kZXggPSBsaW5rcy5maW5kSW5kZXgoKGxpbmspID0+IGxpbmsub3JpZ2luYWwgPT09IGNoYW5nZS5yZWZlcmVuY2Uub3JpZ2luYWwpO1xuICBpZiAobGlua0luZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTGluayAke2NoYW5nZS5yZWZlcmVuY2UubGlua30gbm90IGZvdW5kYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5jaGFuZ2UsXG4gICAgcmVmZXJlbmNlOiB7XG4gICAgICAuLi5jaGFuZ2UucmVmZXJlbmNlLFxuICAgICAgaXNDYW52YXM6IHRydWUsXG4gICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS50ZXh0LiR7U3RyaW5nKGxpbmtJbmRleCl9YCxcbiAgICAgIG5vZGVJbmRleCxcbiAgICAgIHR5cGU6ICdmaWxlJ1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGNoYW5nZSB0byBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgZmlsZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRnJvbnRtYXR0ZXJDaGFuZ2UpOiBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzIHtcbiAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlKSkge1xuICAgIHJldHVybiBmaWxlQ2hhbmdlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5maWxlQ2hhbmdlLFxuICAgIHJlZmVyZW5jZTogdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBhcHBseUNhbnZhc0NoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlciwgYWJvcnRTaWduYWwsIGNvbnRlbnQpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2FudmFzRGF0YSA9IHBhcnNlQ2FudmFzRGF0YShjb250ZW50KTtcblxuICBjb25zdCBjYW52YXNUZXh0Q2hhbmdlcyA9IG5ldyBNYXA8bnVtYmVyLCBDYW52YXNUZXh0Tm9kZUNoYW5nZVtdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoIWlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnT25seSBjYW52YXMgY2hhbmdlcyBhcmUgc3VwcG9ydGVkIGZvciBjYW52YXMgZmlsZXMnO1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNoYW5nZSxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgaWYgKG5vZGUuZmlsZSAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgZ2V0TGliRGVidWdnZXIoJ0ZpbGVDaGFuZ2U6YXBwbHlDYW52YXNDaGFuZ2VzJykoJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudDogbm9kZS5maWxlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIG5vZGVJbmRleDogY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBub2RlLmZpbGUgPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbGV0IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IGNhbnZhc1RleHRDaGFuZ2VzLmdldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCk7XG4gICAgICBpZiAoIWNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSkge1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBbXTtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXMuc2V0KGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpO1xuICAgICAgfVxuXG4gICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUucHVzaChjaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW25vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlXSBvZiBjYW52YXNUZXh0Q2hhbmdlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIHRleHQgaXMgbm90IGEgc3RyaW5nJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHJlZmVyZW5jZVRvRmlsZUNoYW5nZShjaGFuZ2UucmVmZXJlbmNlLm9yaWdpbmFsUmVmZXJlbmNlLCBjaGFuZ2UubmV3Q29udGVudCkpO1xuICAgIG5vZGUudGV4dCA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoXG4gICAgICBhYm9ydFNpZ25hbCxcbiAgICAgIG5vZGUudGV4dCxcbiAgICAgIGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgY29udGVudENoYW5nZXMsXG4gICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNhbnZhc0RhdGEsIG51bGwsICdcXHQnKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dChcbiAgY2hhbmdlczogRmlsZUNoYW5nZVtdLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGhhc0Zyb250bWF0dGVyRXJyb3I6IGJvb2xlYW4sXG4gIHBhdGg6IHN0cmluZ1xuKTogeyBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47IG5ld0NvbnRlbnQ6IHN0cmluZyB9IHtcbiAgbGV0IG5ld0NvbnRlbnQgPSAnJztcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBsYXN0Q29udGVudENoYW5nZTogQ29udGVudENoYW5nZSA9IHtcbiAgICBuZXdDb250ZW50OiAnJyxcbiAgICBvbGRDb250ZW50OiAnJyxcbiAgICByZWZlcmVuY2U6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZW5kOiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH0sXG4gICAgICAgIHN0YXJ0OiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAgPSBuZXcgTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPixcbiAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPixcbiAgcGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBba2V5LCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0c10gb2YgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwga2V5KTtcbiAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gYXMgQ29udGVudENoYW5nZSkpO1xuXG4gICAgY29uc3QgbmV3UHJvcGVydHlWYWx1ZSA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoYWJvcnRTaWduYWwsIHByb3BlcnR5VmFsdWUsIGAke3BhdGh9LmZyb250bWF0dGVyLiR7a2V5fS5WSVJUVUFMX0ZJTEUubWRgLCBjb250ZW50Q2hhbmdlcyk7XG4gICAgaWYgKG5ld1Byb3BlcnR5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBrZXksIG5ld1Byb3BlcnR5VmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KFxuICBuZXdDb250ZW50OiBzdHJpbmcsXG4gIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LFxuICBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT5cbik6IHN0cmluZyB7XG4gIGlmIChmcm9udG1hdHRlckNoYW5nZWQuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gc2V0RnJvbnRtYXR0ZXIobmV3Q29udGVudCwgZnJvbnRtYXR0ZXIpO1xuICB9XG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuXG5mdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyU2FmZWx5KGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nKTogeyBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjsgaGFzRnJvbnRtYXR0ZXJFcnJvcjogYm9vbGVhbiB9IHtcbiAgbGV0IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+ID0ge307XG4gIGxldCBoYXNGcm9udG1hdHRlckVycm9yID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgaGFzRnJvbnRtYXR0ZXJFcnJvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4geyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9O1xufVxuXG5mdW5jdGlvbiBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzOiBGaWxlQ2hhbmdlW10pOiBGaWxlQ2hhbmdlW10ge1xuICAvLyBTb3J0IGNoYW5nZXMgYnkgdHlwZSBhbmQgcG9zaXRpb25cbiAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShhKSAmJiBpc0NvbnRlbnRDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgLSBiLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhhKSAmJiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpIHx8IGEucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0IC0gYi5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEucmVmZXJlbmNlLmtleS5sb2NhbGVDb21wYXJlKGIucmVmZXJlbmNlLmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQ29udGVudENoYW5nZShhKSA/IC0xIDogMTtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgYW5kIG5vLW9wIGNoYW5nZXNcbiAgcmV0dXJuIGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdLCBjb250ZW50OiBzdHJpbmcsIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgIGNvbnN0IGVuZE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uZW5kLm9mZnNldDtcbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZW5kT2Zmc2V0LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoY2hhbmdlKSkge1xuICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIoJ1Byb3BlcnR5IHZhbHVlIGlzIG5vdCBhIHN0cmluZycsIHtcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwcm9wZXJ0eVZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBwcm9wZXJ0eVZhbHVlLnNsaWNlKGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQsIGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgZnJvbnRtYXR0ZXJLZXk6IGNoYW5nZS5yZWZlcmVuY2Uua2V5LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlQSw2QkFHTztBQWNQLG1CQUErQjtBQUMvQixtQkFBMkI7QUFDM0IseUJBSU87QUFDUCwyQkFBNkI7QUFDN0Isd0JBR087QUFDUCx5QkFHTztBQUNQLDZDQUdPO0FBQ1AsMkJBR087QUFDUCx1QkFHTztBQUNQLG1CQUF3QjtBQXVDeEIsZUFBc0Isb0JBQ3BCLGFBQ0EsU0FDQSxNQUNBLGlCQUNBLDhCQUE4QixNQUNOO0FBQ3hCLGNBQVksZUFBZTtBQUMzQixNQUFJLFVB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
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9DYW52YXMuZC50cyc7XG5cbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSxcbiAgQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZVxufSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIHBhcnNlTWV0YWRhdGFcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBjaGFuZ2UgaW4gdGhlIHZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogQSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgKi9cbiAgb2xkQ29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0aGF0IGNhdXNlZCB0aGUgY2hhbmdlLlxuICAgKi9cbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2U7XG59XG50eXBlIEFkdmFuY2VkQ2FudmFzQ2hhbmdlID0geyByZWZlcmVuY2U6IEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNGaWxlTm9kZUNoYW5nZSA9IHsgcmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSB9ICYgRmlsZUNoYW5nZTtcbnR5cGUgQ2FudmFzVGV4dE5vZGVDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIENvbnRlbnRDaGFuZ2UgPSB7IHJlZmVyZW5jZTogUmVmZXJlbmNlQ2FjaGUgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIEZyb250bWF0dGVyQ2hhbmdlID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgfSAmIEZpbGVDaGFuZ2U7XG5cbi8qKlxuICogQXBwbGllcyBhIHNlcmllcyBvZiBjb250ZW50IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGNoYW5nZXNQcm92aWRlciAtIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRlbnQgY2hhbmdlcyB0byBhcHBseS5cbiAqIEBwYXJhbSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgLSBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBjb250ZW50KTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKGNoYW5nZXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXIsIGhhc0Zyb250bWF0dGVyRXJyb3IgfSA9IHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkoY29udGVudCwgcGF0aCk7XG5cbiAgaWYgKCF2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlcywgY29udGVudCwgZnJvbnRtYXR0ZXIsIHBhdGgpKSB7XG4gICAgcmV0dXJuIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA/IG51bGwgOiBjb250ZW50O1xuICB9XG5cbiAgY2hhbmdlcyA9IHNvcnRBbmRGaWx0ZXJDaGFuZ2VzKGNoYW5nZXMpO1xuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXJDaGFuZ2VkLCBuZXdDb250ZW50IH0gPSBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGgpO1xuXG4gIGF3YWl0IGFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHMoYWJvcnRTaWduYWwsIGZyb250bWF0dGVyLCBmcm9udG1hdHRlckNoYW5nZWQsIHBhdGgpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIHJldHVybiBidWlsZEZpbmFsQ29udGVudChuZXdDb250ZW50LCBmcm9udG1hdHRlciwgZnJvbnRtYXR0ZXJDaGFuZ2VkKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHByb2Nlc3NPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICogQHBhcmFtIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyAtIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIFtjb250ZW50OiBzdHJpbmddPixcbiAgcHJvY2Vzc09wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge30sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwcm9jZXNzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgaWYgKGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYXBwbHlDYW52YXNDaGFuZ2VzKGFib3J0U2lnbmFsLCBjb250ZW50LCBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSksIGNoYW5nZXNQcm92aWRlciwgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgYXBwbHlDb250ZW50Q2hhbmdlcyhhYm9ydFNpZ25hbCwgY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIsIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyk7XG4gIH0sIHByb2Nlc3NPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkdmFuY2VkQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBBZHZhbmNlZENhbnZhc0NoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGNoYW5nZS5yZWZlcmVuY2UpICYmICdub2RlSWQnIGluIGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0NoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzUmVmZXJlbmNlKGNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNGaWxlTm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNUZXh0Tm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ3RleHQnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50Q2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIENvbnRlbnRDaGFuZ2Uge1xuICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2Uge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNhbnZhcyBkYXRhIGZyb20gdGhlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byBwYXJzZSB0aGUgY2FudmFzIGRhdGEgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgY2FudmFzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNhbnZhc0RhdGEoY29udGVudDogc3RyaW5nKTogQ2FudmFzRGF0YSB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgQ2FudmFzRGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbiB0byBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNvbnZlcnQgdGhlIGNoYW5nZSBmcm9tLlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgY2hhbmdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9DYW52YXNDaGFuZ2UoYXBwOiBBcHAsIGZpbGU6IFRGaWxlLCBjaGFuZ2U6IEFkdmFuY2VkQ2FudmFzQ2hhbmdlKTogUHJvbWlzZTxDYW52YXNDaGFuZ2U+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VDYW52YXNEYXRhKGNvbnRlbnQpO1xuICBjb25zdCBub2RlSW5kZXggPSBjYW52YXNEYXRhLm5vZGVzLmZpbmRJbmRleCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWQpO1xuICBpZiAobm9kZUluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSAke2NoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24ubm9kZUlkfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgJHtjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLm5vZGVJZH0gbm90IGZvdW5kYCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBub2RlLnRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlICR7Y2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWR9IGlzIG5vdCBhIHRleHQgbm9kZWApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShhcHAsIG5vZGUudGV4dCk7XG4gIGNvbnN0IGxpbmtzID0gZ2V0QWxsTGlua3MobWV0YWRhdGEpO1xuICBjb25zdCBsaW5rSW5kZXggPSBsaW5rcy5maW5kSW5kZXgoKGxpbmspID0+IGxpbmsub3JpZ2luYWwgPT09IGNoYW5nZS5yZWZlcmVuY2Uub3JpZ2luYWwpO1xuICBpZiAobGlua0luZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTGluayAke2NoYW5nZS5yZWZlcmVuY2UubGlua30gbm90IGZvdW5kYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5jaGFuZ2UsXG4gICAgcmVmZXJlbmNlOiB7XG4gICAgICAuLi5jaGFuZ2UucmVmZXJlbmNlLFxuICAgICAgaXNDYW52YXM6IHRydWUsXG4gICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS50ZXh0LiR7U3RyaW5nKGxpbmtJbmRleCl9YCxcbiAgICAgIG5vZGVJbmRleCxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGNoYW5nZSB0byBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgZmlsZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRnJvbnRtYXR0ZXJDaGFuZ2UpOiBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzIHtcbiAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlKSkge1xuICAgIHJldHVybiBmaWxlQ2hhbmdlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5maWxlQ2hhbmdlLFxuICAgIHJlZmVyZW5jZTogdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBhcHBseUNhbnZhc0NoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlciwgYWJvcnRTaWduYWwsIGNvbnRlbnQpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2FudmFzRGF0YSA9IHBhcnNlQ2FudmFzRGF0YShjb250ZW50KTtcblxuICBjb25zdCBjYW52YXNUZXh0Q2hhbmdlcyA9IG5ldyBNYXA8bnVtYmVyLCBDYW52YXNUZXh0Tm9kZUNoYW5nZVtdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoIWlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnT25seSBjYW52YXMgY2hhbmdlcyBhcmUgc3VwcG9ydGVkIGZvciBjYW52YXMgZmlsZXMnO1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNoYW5nZSxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgaWYgKG5vZGUuZmlsZSAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgZ2V0TGliRGVidWdnZXIoJ0ZpbGVDaGFuZ2U6YXBwbHlDYW52YXNDaGFuZ2VzJykoJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudDogbm9kZS5maWxlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIG5vZGVJbmRleDogY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBub2RlLmZpbGUgPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbGV0IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IGNhbnZhc1RleHRDaGFuZ2VzLmdldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCk7XG4gICAgICBpZiAoIWNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSkge1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBbXTtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXMuc2V0KGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpO1xuICAgICAgfVxuXG4gICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUucHVzaChjaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW25vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlXSBvZiBjYW52YXNUZXh0Q2hhbmdlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIHRleHQgaXMgbm90IGEgc3RyaW5nJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHJlZmVyZW5jZVRvRmlsZUNoYW5nZShjaGFuZ2UucmVmZXJlbmNlLm9yaWdpbmFsUmVmZXJlbmNlLCBjaGFuZ2UubmV3Q29udGVudCkpO1xuICAgIG5vZGUudGV4dCA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoXG4gICAgICBhYm9ydFNpZ25hbCxcbiAgICAgIG5vZGUudGV4dCxcbiAgICAgIGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgY29udGVudENoYW5nZXMsXG4gICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNhbnZhc0RhdGEsIG51bGwsICdcXHQnKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dChcbiAgY2hhbmdlczogRmlsZUNoYW5nZVtdLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGhhc0Zyb250bWF0dGVyRXJyb3I6IGJvb2xlYW4sXG4gIHBhdGg6IHN0cmluZ1xuKTogeyBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47IG5ld0NvbnRlbnQ6IHN0cmluZyB9IHtcbiAgbGV0IG5ld0NvbnRlbnQgPSAnJztcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBsYXN0Q29udGVudENoYW5nZTogQ29udGVudENoYW5nZSA9IHtcbiAgICBuZXdDb250ZW50OiAnJyxcbiAgICBvbGRDb250ZW50OiAnJyxcbiAgICByZWZlcmVuY2U6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZW5kOiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH0sXG4gICAgICAgIHN0YXJ0OiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAgPSBuZXcgTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPixcbiAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPixcbiAgcGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBba2V5LCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0c10gb2YgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwga2V5KTtcbiAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gYXMgQ29udGVudENoYW5nZSkpO1xuXG4gICAgY29uc3QgbmV3UHJvcGVydHlWYWx1ZSA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoYWJvcnRTaWduYWwsIHByb3BlcnR5VmFsdWUsIGAke3BhdGh9LmZyb250bWF0dGVyLiR7a2V5fS5WSVJUVUFMX0ZJTEUubWRgLCBjb250ZW50Q2hhbmdlcyk7XG4gICAgaWYgKG5ld1Byb3BlcnR5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBrZXksIG5ld1Byb3BlcnR5VmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KFxuICBuZXdDb250ZW50OiBzdHJpbmcsXG4gIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LFxuICBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT5cbik6IHN0cmluZyB7XG4gIGlmIChmcm9udG1hdHRlckNoYW5nZWQuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gc2V0RnJvbnRtYXR0ZXIobmV3Q29udGVudCwgZnJvbnRtYXR0ZXIpO1xuICB9XG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuXG5mdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyU2FmZWx5KGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nKTogeyBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjsgaGFzRnJvbnRtYXR0ZXJFcnJvcjogYm9vbGVhbiB9IHtcbiAgbGV0IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+ID0ge307XG4gIGxldCBoYXNGcm9udG1hdHRlckVycm9yID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgaGFzRnJvbnRtYXR0ZXJFcnJvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4geyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9O1xufVxuXG5mdW5jdGlvbiBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzOiBGaWxlQ2hhbmdlW10pOiBGaWxlQ2hhbmdlW10ge1xuICAvLyBTb3J0IGNoYW5nZXMgYnkgdHlwZSBhbmQgcG9zaXRpb25cbiAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShhKSAmJiBpc0NvbnRlbnRDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgLSBiLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhhKSAmJiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpIHx8IGEucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0IC0gYi5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEucmVmZXJlbmNlLmtleS5sb2NhbGVDb21wYXJlKGIucmVmZXJlbmNlLmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQ29udGVudENoYW5nZShhKSA/IC0xIDogMTtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgYW5kIG5vLW9wIGNoYW5nZXNcbiAgcmV0dXJuIGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdLCBjb250ZW50OiBzdHJpbmcsIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgIGNvbnN0IGVuZE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uZW5kLm9mZnNldDtcbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZW5kT2Zmc2V0LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoY2hhbmdlKSkge1xuICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIoJ1Byb3BlcnR5IHZhbHVlIGlzIG5vdCBhIHN0cmluZycsIHtcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwcm9wZXJ0eVZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBwcm9wZXJ0eVZhbHVlLnNsaWNlKGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQsIGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgZnJvbnRtYXR0ZXJLZXk6IGNoYW5nZS5yZWZlcmVuY2Uua2V5LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlQSw2QkFHTztBQWNQLG1CQUErQjtBQUMvQixtQkFBMkI7QUFDM0IseUJBSU87QUFDUCwyQkFBNkI7QUFDN0Isd0JBR087QUFDUCx5QkFHTztBQUNQLDZDQUdPO0FBQ1AsMkJBR087QUFDUCx1QkFHTztBQUNQLG1CQUF3QjtBQXVDeEIsZUFBc0Isb0JBQ3BCLGFBQ0EsU0FDQSxNQUNBLGlCQUNBLDhCQUE4QixNQUNOO0FBQ3hCLGNBQVksZUFBZTtBQUMzQixNQUFJLFVBQVUsVUFBTSxtQ0FBYSxpQkFBaUIsYUFBYSxPQUFPO0FBQ3RFLGNBQVksZUFBZTtBQUMzQixNQUFJLFlBQVksTUFBTTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sRUFBRSxhQUFhLG9CQUFvQixJQUFJLHVCQUF1QixTQUFTLElBQUk7QUFFakYsTUFBSSxDQUFDLGdCQUFnQixTQUFTLFNBQVMsYUFBYSxJQUFJLEdBQUc7QUFDekQsV0FBTyw4QkFBOEIsT0FBTztBQUFBLEVBQzlDO0FBRUEsWUFBVSxxQkFBcUIsT0FBTztBQUV0QyxRQUFNLEVBQUUsb0JBQW9CLFdBQVcsSUFBSSwwQkFBMEIsU0FBUyxTQUFTLHFCQUFxQixJQUFJO0FBRWhILFFBQU0sbUNBQW1DLGFBQWEsYUFBYSxvQkFBb0IsSUFBSTtBQUMzRixjQUFZLGVBQWU7QUFFM0IsU0FBTyxrQkFBa0IsWUFBWSxhQUFhLGtCQUFrQjtBQUN0RTtBQWFBLGVBQXNCLGlCQUNwQixLQUNBLFlBQ0EsaUJBQ0EsaUJBQWlDLENBQUMsR0FDbEMsOEJBQThCLE1BQ2Y7QUFDZixZQUFNLHNCQUFRLEtBQUssWUFBWSxPQUFPLGFBQWEsWUFBWTtBQUM3RCxZQUFJLGdDQUFhLEtBQUssVUFBVSxHQUFHO0FBQ2pDLGFBQU8sTUFBTSxtQkFBbUIsYUFBYSxhQUFTLDJCQUFRLEtBQUssVUFBVSxHQUFHLGlCQUFpQiwyQkFBMkI7QUFBQSxJQUM5SDtBQUVBLFdBQU8sTUFBTSxvQkFBb0IsYUFBYSxhQUFTLDJCQUFRLEtBQUssVUFBVSxHQUFHLGlCQUFpQiwyQkFBMkI7QUFBQSxFQUMvSCxHQUFHLGNBQWM7QUFDbkI7QUFRTyxTQUFTLHVCQUF1QixRQUFvRDtBQUN6RixhQUFPLHlDQUFpQixPQUFPLFNBQVMsS0FBSyxZQUFZLE9BQU8sVUFBVTtBQUM1RTtBQVFPLFNBQVMsZUFBZSxRQUE0QztBQUN6RSxhQUFPLG9DQUFrQixPQUFPLFNBQVM7QUFDM0M7QUFRTyxTQUFTLHVCQUF1QixRQUFvRDtBQUN6RixTQUFPLGVBQWUsTUFBTSxLQUFLLE9BQU8sVUFBVSxTQUFTO0FBQzdEO0FBUU8sU0FBUyx1QkFBdUIsUUFBb0Q7QUFDekYsU0FBTyxlQUFlLE1BQU0sS0FBSyxPQUFPLFVBQVUsU0FBUztBQUM3RDtBQVFPLFNBQVMsZ0JBQWdCLFlBQXFEO0FBQ25GLGFBQU8seUNBQWlCLFdBQVcsU0FBUztBQUM5QztBQVFPLFNBQVMsb0JBQW9CLFlBQXlEO0FBQzNGLGFBQU8sK0NBQXVCLFdBQVcsU0FBUztBQUNwRDtBQVFPLFNBQVMsK0JBQStCLFlBQW9FO0FBQ2pILGFBQU8sMEVBQWtDLFdBQVcsU0FBUztBQUMvRDtBQVFPLFNBQVMsZ0JBQWdCLFNBQTZCO0FBQzNELE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxLQUFLLE1BQU0sT0FBTztBQUFBLEVBQzdCLFFBQVE7QUFDTixhQUFTO0FBQUEsRUFDWDtBQUVBLE1BQUksV0FBVyxRQUFRLE9BQU8sV0FBVyxVQUFVO0FBQ2pELGFBQVMsQ0FBQztBQUFBLEVBQ1o7QUFFQSxTQUFPO0FBQ1Q7QUFVQSxlQUFzQixlQUFlLEtBQVUsTUFBYSxRQUFxRDtBQUMvRyxRQUFNLFVBQVUsTUFBTSxJQUFJLE1BQU0sV0FBVyxJQUFJO0FBQy9DLFFBQU0sYUFBYSxnQkFBZ0IsT0FBTztBQUMxQyxRQUFNLFlBQVksV0FBVyxNQUFNLFVBQVUsQ0FBQ0EsVUFBU0EsTUFBSyxPQUFPLE9BQU8sVUFBVSxTQUFTLE1BQU07QUFDbkcsTUFBSSxjQUFjLElBQUk7QUFDcEIsVUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLFVBQVUsU0FBUyxNQUFNLFlBQVk7QUFBQSxFQUN0RTtBQUNBLFFBQU0sT0FBTyxXQUFXLE1BQU0sU0FBUztBQUN2QyxNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxVQUFVLFNBQVMsTUFBTSxZQUFZO0FBQUEsRUFDdEU7QUFDQSxNQUFJLE9BQU8sS0FBSyxTQUFTLFVBQVU7QUFDakMsVUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLFVBQVUsU0FBUyxNQUFNLHFCQUFxQjtBQUFBLEVBQy9FO0FBQ0EsUUFBTSxXQUFXLFVBQU0sb0NBQWMsS0FBSyxLQUFLLElBQUk7QUFDbkQsUUFBTSxZQUFRLGtDQUFZLFFBQVE7QUFDbEMsUUFBTSxZQUFZLE1BQU0sVUFBVSxDQUFDLFNBQVMsS0FBSyxhQUFhLE9BQU8sVUFBVSxRQUFRO0FBQ3ZGLE1BQUksY0FBYyxJQUFJO0FBQ3BCLFVBQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxVQUFVLElBQUksWUFBWTtBQUFBLEVBQzNEO0FBQ0EsU0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLElBQ0gsV0FBVztBQUFBLE1BQ1QsR0FBRyxPQUFPO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixLQUFLLFNBQVMsT0FBTyxTQUFTLENBQUMsU0FBUyxPQUFPLFNBQVMsQ0FBQztBQUFBLE1BQ3pEO0FBQUEsTUFDQSxNQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFDRjtBQVFPLFNBQVMsK0JBQStCLFlBQTZEO0FBQzFHLE1BQUksK0JBQStCLFVBQVUsR0FBRztBQUM5QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU87QUFBQSxJQUNMLEdBQUc7QUFBQSxJQUNILGVBQVcsMEVBQWtDLFdBQVcsU0FBUztBQUFBLEVBQ25FO0FBQ0Y7QUFFQSxlQUFlLG1CQUNiLGFBQ0EsU0FDQSxNQUNBLGlCQUNBLDhCQUE4QixNQUNOO0FBQ3hCLFFBQU0sVUFBVSxVQUFNLG1DQUFhLGlCQUFpQixhQUFhLE9BQU87QUFDeEUsY0FBWSxlQUFlO0FBQzNCLE1BQUksWUFBWSxNQUFNO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxhQUFhLGdCQUFnQixPQUFPO0FBRTFDLFFBQU0sb0JBQW9CLG9CQUFJLElBQW9DO0FBRWxFLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFFBQUksQ0FBQyxlQUFlLE1BQU0sR0FBRztBQUMzQixZQUFNLFVBQVU7QUFDaEIsY0FBUSxNQUFNLFNBQVM7QUFBQSxRQUNyQjtBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFDRCxZQUFNLElBQUksTUFBTSxPQUFPO0FBQUEsSUFDekI7QUFFQSxVQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sVUFBVSxTQUFTO0FBQ3hELFFBQUksQ0FBQyxNQUFNO0FBQ1QsWUFBTSxVQUFVO0FBQ2hCLGNBQVEsTUFBTSxTQUFTO0FBQUEsUUFDckIsV0FBVyxPQUFPLFVBQVU7QUFBQSxRQUM1QjtBQUFBLE1BQ0YsQ0FBQztBQUNELFlBQU0sSUFBSSxNQUFNLE9BQU87QUFBQSxJQUN6QjtBQUVBLFFBQUksdUJBQXVCLE1BQU0sR0FBRztBQUNsQyxVQUFJLEtBQUssU0FBUyxPQUFPLFlBQVk7QUFDbkMseUNBQWUsK0JBQStCLEVBQUUsb0JBQW9CO0FBQUEsVUFDbEUsZUFBZSxLQUFLO0FBQUEsVUFDcEIsaUJBQWlCLE9BQU87QUFBQSxVQUN4QixXQUFXLE9BQU8sVUFBVTtBQUFBLFVBQzVCO0FBQUEsVUFDQSxNQUFNO0FBQUEsUUFDUixDQUFDO0FBRUQsZUFBTztBQUFBLE1BQ1Q7QUFDQSxXQUFLLE9BQU8sT0FBTztBQUFBLElBQ3JCLFdBQVcsdUJBQXVCLE1BQU0sR0FBRztBQUN6QyxVQUFJLDJCQUEyQixrQkFBa0IsSUFBSSxPQUFPLFVBQVUsU0FBUztBQUMvRSxVQUFJLENBQUMsMEJBQTBCO0FBQzdCLG1DQUEyQixDQUFDO0FBQzVCLDBCQUFrQixJQUFJLE9BQU8sVUFBVSxXQUFXLHdCQUF3QjtBQUFBLE1BQzVFO0FBRUEsK0JBQXlCLEtBQUssTUFBTTtBQUFBLElBQ3RDO0FBQUEsRUFDRjtBQUVBLGFBQVcsQ0FBQyxXQUFXLHdCQUF3QixLQUFLLGtCQUFrQixRQUFRLEdBQUc7QUFDL0UsVUFBTSxPQUFPLFdBQVcsTUFBTSxTQUFTO0FBQ3ZDLFFBQUksQ0FBQyxNQUFNO0FBQ1QsWUFBTSxVQUFVO0FBQ2hCLGNBQVEsTUFBTSxTQUFTO0FBQUEsUUFDckI7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBRUQsWUFBTSxJQUFJLE1BQU0sT0FBTztBQUFBLElBQ3pCO0FBRUEsUUFBSSxPQUFPLEtBQUssU0FBUyxVQUFVO0FBQ2pDLFlBQU0sVUFBVTtBQUNoQixjQUFRLE1BQU0sU0FBUztBQUFBLFFBQ3JCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUVELFlBQU0sSUFBSSxNQUFNLE9BQU87QUFBQSxJQUN6QjtBQUVBLFVBQU0saUJBQWlCLHlCQUF5QixJQUFJLENBQUMsZUFBVyx3Q0FBc0IsT0FBTyxVQUFVLG1CQUFtQixPQUFPLFVBQVUsQ0FBQztBQUM1SSxTQUFLLE9BQU8sTUFBTTtBQUFBLE1BQ2hCO0FBQUEsTUFDQSxLQUFLO0FBQUEsTUFDTCxHQUFHLElBQUksUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUFBLE1BQ2hDO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTyxLQUFLLFVBQVUsWUFBWSxNQUFNLEdBQUk7QUFDOUM7QUFFQSxTQUFTLDBCQUNQLFNBQ0EsU0FDQSxxQkFDQSxNQUN5RjtBQUN6RixNQUFJLGFBQWE7QUFDakIsTUFBSSxZQUFZO0FBQ2hCLE1BQUksb0JBQW1DO0FBQUEsSUFDckMsWUFBWTtBQUFBLElBQ1osWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLFFBQ1IsS0FBSyxFQUFFLEtBQUssR0FBRyxNQUFNLEdBQUcsUUFBUSxFQUFFO0FBQUEsUUFDbEMsT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEdBQUcsUUFBUSxFQUFFO0FBQUEsTUFDdEM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFFBQU0sa0NBQWtDLG9CQUFJLElBQTRDO0FBRXhGLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFFBQUksZ0JBQWdCLE1BQU0sR0FBRztBQUMzQixVQUFJLGFBQWEsT0FBTyxVQUFVLFNBQVMsTUFBTSxRQUFRO0FBQ3ZELHNCQUFjLFFBQVEsTUFBTSxXQUFXLE9BQU8sVUFBVSxTQUFTLE1BQU0sTUFBTTtBQUM3RSxzQkFBYyxPQUFPO0FBQ3JCLG9CQUFZLE9BQU8sVUFBVSxTQUFTLElBQUk7QUFDMUMsNEJBQW9CO0FBQUEsTUFDdEIsT0FBTztBQUNMLGNBQU0seUJBQXlCLE9BQU8sVUFBVSxTQUFTLE1BQU0sU0FBUyxrQkFBa0IsVUFBVSxTQUFTLE1BQU07QUFDbkgsY0FBTSx1QkFBdUIsT0FBTyxVQUFVLFNBQVMsSUFBSSxTQUFTLGtCQUFrQixVQUFVLFNBQVMsTUFBTTtBQUMvRyxjQUFNLHFCQUFxQixrQkFBa0IsV0FBVyxNQUFNLHdCQUF3QixvQkFBb0I7QUFDMUcsWUFBSSx1QkFBdUIsT0FBTyxZQUFZO0FBQzVDLGdCQUFNLFVBQVU7QUFDaEIsa0JBQVEsTUFBTSxTQUFTLEVBQUUsUUFBUSxrQkFBa0IsQ0FBQztBQUNwRCxnQkFBTSxJQUFJLE1BQU0sT0FBTztBQUFBLFFBQ3pCO0FBQ0EscUJBQWEsV0FBVyxNQUFNLEdBQUcsV0FBVyxTQUFTLGtCQUFrQixXQUFXLE1BQU0sSUFDcEYsa0JBQWtCLFdBQVcsTUFBTSxHQUFHLHNCQUFzQixJQUM1RCxPQUFPLGFBQ1Asa0JBQWtCLFdBQVcsTUFBTSxvQkFBb0I7QUFBQSxNQUM3RDtBQUFBLElBQ0YsV0FBVyxvQkFBb0IsTUFBTSxHQUFHO0FBQ3RDLFVBQUkscUJBQXFCO0FBQ3ZCLGdCQUFRLE1BQU0sc0NBQXNDLElBQUksd0NBQXdDLEVBQUUsT0FBTyxDQUFDO0FBQUEsTUFDNUcsT0FBTztBQUNMLFlBQUksZ0NBQWdDLGdDQUFnQyxJQUFJLE9BQU8sVUFBVSxHQUFHO0FBQzVGLFlBQUksQ0FBQywrQkFBK0I7QUFDbEMsMENBQWdDLENBQUM7QUFDakMsMENBQWdDLElBQUksT0FBTyxVQUFVLEtBQUssNkJBQTZCO0FBQUEsUUFDekY7QUFDQSxzQ0FBOEIsS0FBSywrQkFBK0IsTUFBTSxDQUFDO0FBQUEsTUFDM0U7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLGdCQUFjLFFBQVEsTUFBTSxTQUFTO0FBRXJDLFNBQU8sRUFBRSxvQkFBb0IsaUNBQWlDLFdBQVc7QUFDM0U7QUFFQSxlQUFlLG1DQUNiLGFBQ0EsYUFDQSxpQ0FDQSxNQUNlO0FBQ2YsYUFBVyxDQUFDLEtBQUssNkJBQTZCLEtBQUssZ0NBQWdDLFFBQVEsR0FBRztBQUM1RixVQUFNLG9CQUFnQiwyQ0FBdUIsYUFBYSxHQUFHO0FBQzdELFFBQUksT0FBTyxrQkFBa0IsVUFBVTtBQUNyQztBQUFBLElBQ0Y7QUFFQSxVQUFNLGlCQUFrQyw4QkFBOEIsSUFBSSxDQUFDLFlBQVk7QUFBQSxNQUNyRixZQUFZLE9BQU87QUFBQSxNQUNuQixZQUFZLE9BQU87QUFBQSxNQUNuQixXQUFXO0FBQUEsUUFDVCxNQUFNO0FBQUEsUUFDTixVQUFVO0FBQUEsUUFDVixVQUFVO0FBQUEsVUFDUixLQUFLO0FBQUEsWUFDSCxLQUFLLE9BQU8sVUFBVTtBQUFBLFlBQ3RCLE1BQU07QUFBQSxZQUNOLFFBQVEsT0FBTyxVQUFVO0FBQUEsVUFDM0I7QUFBQSxVQUNBLE9BQU87QUFBQSxZQUNMLEtBQUssT0FBTyxVQUFVO0FBQUEsWUFDdEIsTUFBTTtBQUFBLFlBQ04sUUFBUSxPQUFPLFVBQVU7QUFBQSxVQUMzQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRixFQUFtQjtBQUVuQixVQUFNLG1CQUFtQixNQUFNLG9CQUFvQixhQUFhLGVBQWUsR0FBRyxJQUFJLGdCQUFnQixHQUFHLG9CQUFvQixjQUFjO0FBQzNJLFFBQUkscUJBQXFCLE1BQU07QUFDN0I7QUFBQSxJQUNGO0FBRUEsbURBQXVCLGFBQWEsS0FBSyxnQkFBZ0I7QUFBQSxFQUMzRDtBQUNGO0FBRUEsU0FBUyxrQkFDUCxZQUNBLGFBQ0Esb0JBQ1E7QUFDUixNQUFJLG1CQUFtQixPQUFPLEdBQUc7QUFDL0IsZUFBTyxtQ0FBZSxZQUFZLFdBQVc7QUFBQSxFQUMvQztBQUNBLFNBQU87QUFDVDtBQUVBLFNBQVMsdUJBQXVCLFNBQWlCLE1BQTJGO0FBQzFJLE1BQUksY0FBNEMsQ0FBQztBQUNqRCxNQUFJLHNCQUFzQjtBQUUxQixNQUFJO0FBQ0Ysc0JBQWMscUNBQWlCLE9BQU87QUFBQSxFQUN4QyxTQUFTLE9BQU87QUFDZCxpQ0FBVyxJQUFJLE1BQU0saUNBQWlDLElBQUksSUFBSSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDL0UsMEJBQXNCO0FBQUEsRUFDeEI7QUFFQSxTQUFPLEVBQUUsYUFBYSxvQkFBb0I7QUFDNUM7QUFFQSxTQUFTLHFCQUFxQixTQUFxQztBQUVqRSxVQUFRLEtBQUssQ0FBQyxHQUFHLE1BQU07QUFDckIsUUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLEdBQUc7QUFDNUMsYUFBTyxFQUFFLFVBQVUsU0FBUyxNQUFNLFNBQVMsRUFBRSxVQUFVLFNBQVMsTUFBTTtBQUFBLElBQ3hFO0FBRUEsUUFBSSwrQkFBK0IsQ0FBQyxLQUFLLCtCQUErQixDQUFDLEdBQUc7QUFDMUUsYUFBTyxFQUFFLFVBQVUsSUFBSSxjQUFjLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxVQUFVLGNBQWMsRUFBRSxVQUFVO0FBQUEsSUFDakc7QUFFQSxRQUFJLG9CQUFvQixDQUFDLEtBQUssb0JBQW9CLENBQUMsR0FBRztBQUNwRCxhQUFPLEVBQUUsVUFBVSxJQUFJLGNBQWMsRUFBRSxVQUFVLEdBQUc7QUFBQSxJQUN0RDtBQUVBLFdBQU8sZ0JBQWdCLENBQUMsSUFBSSxLQUFLO0FBQUEsRUFDbkMsQ0FBQztBQUdELFNBQU8sUUFBUSxPQUFPLENBQUMsUUFBUSxVQUFVO0FBQ3ZDLFFBQUksT0FBTyxlQUFlLE9BQU8sWUFBWTtBQUMzQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksVUFBVSxHQUFHO0FBQ2YsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLEtBQUMsOEJBQVUsUUFBUSxRQUFRLFFBQVEsQ0FBQyxDQUFDO0FBQUEsRUFDOUMsQ0FBQztBQUNIO0FBRUEsU0FBUyxnQkFBZ0IsU0FBdUIsU0FBaUIsYUFBMkMsTUFBdUI7QUFDakksUUFBTSw4QkFBMEIsNkJBQWUsNEJBQTRCO0FBQzNFLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFFBQUksZ0JBQWdCLE1BQU0sR0FBRztBQUMzQixZQUFNLGNBQWMsT0FBTyxVQUFVLFNBQVMsTUFBTTtBQUNwRCxZQUFNLFlBQVksT0FBTyxVQUFVLFNBQVMsSUFBSTtBQUNoRCxZQUFNLGdCQUFnQixRQUFRLE1BQU0sYUFBYSxTQUFTO0FBQzFELFVBQUksa0JBQWtCLE9BQU8sWUFBWTtBQUN2QyxnQ0FBd0Isb0JBQW9CO0FBQUEsVUFDMUM7QUFBQSxVQUNBO0FBQUEsVUFDQSxpQkFBaUIsT0FBTztBQUFBLFVBQ3hCO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUVELGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRixXQUFXLCtCQUErQixNQUFNLEdBQUc7QUFDakQsWUFBTSxvQkFBZ0IsMkNBQXVCLGFBQWEsT0FBTyxVQUFVLEdBQUc7QUFDOUUsVUFBSSxPQUFPLGtCQUFrQixVQUFVO0FBQ3JDLGdDQUF3QixrQ0FBa0M7QUFBQSxVQUN4RCxnQkFBZ0IsT0FBTyxVQUFVO0FBQUEsVUFDakM7QUFBQSxVQUNBO0FBQUEsUUFDRixDQUFDO0FBQ0QsZUFBTztBQUFBLE1BQ1Q7QUFFQSxZQUFNLGdCQUFnQixjQUFjLE1BQU0sT0FBTyxVQUFVLGFBQWEsT0FBTyxVQUFVLFNBQVM7QUFDbEcsVUFBSSxrQkFBa0IsT0FBTyxZQUFZO0FBQ3ZDLGdDQUF3QixvQkFBb0I7QUFBQSxVQUMxQztBQUFBLFVBQ0EsaUJBQWlCLE9BQU87QUFBQSxVQUN4QixnQkFBZ0IsT0FBTyxVQUFVO0FBQUEsVUFDakM7QUFBQSxVQUNBLGFBQWEsT0FBTyxVQUFVO0FBQUEsUUFDaEMsQ0FBQztBQUVELGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRixXQUFXLG9CQUFvQixNQUFNLEdBQUc7QUFDdEMsWUFBTSxvQkFBZ0IsMkNBQXVCLGFBQWEsT0FBTyxVQUFVLEdBQUc7QUFDOUUsVUFBSSxrQkFBa0IsT0FBTyxZQUFZO0FBQ3ZDLGdDQUF3QixvQkFBb0I7QUFBQSxVQUMxQztBQUFBLFVBQ0EsaUJBQWlCLE9BQU87QUFBQSxVQUN4QixnQkFBZ0IsT0FBTyxVQUFVO0FBQUEsVUFDakM7QUFBQSxRQUNGLENBQUM7QUFFRCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJub2RlIl0KfQo=
|
package/dist/lib/esm/Library.mjs
CHANGED
|
@@ -19,7 +19,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
19
19
|
globalThis.process = browserProcess;
|
|
20
20
|
})();
|
|
21
21
|
|
|
22
|
-
const LIBRARY_VERSION = "46.5.
|
|
22
|
+
const LIBRARY_VERSION = "46.5.2";
|
|
23
23
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
24
24
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
25
25
|
export {
|
|
@@ -137,7 +137,7 @@ async function toCanvasChange(app, file, change) {
|
|
|
137
137
|
isCanvas: true,
|
|
138
138
|
key: `nodes.${String(nodeIndex)}.text.${String(linkIndex)}`,
|
|
139
139
|
nodeIndex,
|
|
140
|
-
type: "
|
|
140
|
+
type: "text"
|
|
141
141
|
}
|
|
142
142
|
};
|
|
143
143
|
}
|
|
@@ -416,4 +416,4 @@ export {
|
|
|
416
416
|
toCanvasChange,
|
|
417
417
|
toFrontmatterChangeWithOffsets
|
|
418
418
|
};
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9DYW52YXMuZC50cyc7XG5cbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSxcbiAgQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZVxufSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIHBhcnNlTWV0YWRhdGFcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBjaGFuZ2UgaW4gdGhlIHZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogQSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgKi9cbiAgb2xkQ29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0aGF0IGNhdXNlZCB0aGUgY2hhbmdlLlxuICAgKi9cbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2U7XG59XG50eXBlIEFkdmFuY2VkQ2FudmFzQ2hhbmdlID0geyByZWZlcmVuY2U6IEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNGaWxlTm9kZUNoYW5nZSA9IHsgcmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSB9ICYgRmlsZUNoYW5nZTtcbnR5cGUgQ2FudmFzVGV4dE5vZGVDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIENvbnRlbnRDaGFuZ2UgPSB7IHJlZmVyZW5jZTogUmVmZXJlbmNlQ2FjaGUgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIEZyb250bWF0dGVyQ2hhbmdlID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgfSAmIEZpbGVDaGFuZ2U7XG5cbi8qKlxuICogQXBwbGllcyBhIHNlcmllcyBvZiBjb250ZW50IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGNoYW5nZXNQcm92aWRlciAtIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRlbnQgY2hhbmdlcyB0byBhcHBseS5cbiAqIEBwYXJhbSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgLSBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBjb250ZW50KTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKGNoYW5nZXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXIsIGhhc0Zyb250bWF0dGVyRXJyb3IgfSA9IHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkoY29udGVudCwgcGF0aCk7XG5cbiAgaWYgKCF2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlcywgY29udGVudCwgZnJvbnRtYXR0ZXIsIHBhdGgpKSB7XG4gICAgcmV0dXJuIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA/IG51bGwgOiBjb250ZW50O1xuICB9XG5cbiAgY2hhbmdlcyA9IHNvcnRBbmRGaWx0ZXJDaGFuZ2VzKGNoYW5nZXMpO1xuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXJDaGFuZ2VkLCBuZXdDb250ZW50IH0gPSBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGgpO1xuXG4gIGF3YWl0IGFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHMoYWJvcnRTaWduYWwsIGZyb250bWF0dGVyLCBmcm9udG1hdHRlckNoYW5nZWQsIHBhdGgpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIHJldHVybiBidWlsZEZpbmFsQ29udGVudChuZXdDb250ZW50LCBmcm9udG1hdHRlciwgZnJvbnRtYXR0ZXJDaGFuZ2VkKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHByb2Nlc3NPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICogQHBhcmFtIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyAtIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIFtjb250ZW50OiBzdHJpbmddPixcbiAgcHJvY2Vzc09wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge30sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwcm9jZXNzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgaWYgKGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYXBwbHlDYW52YXNDaGFuZ2VzKGFib3J0U2lnbmFsLCBjb250ZW50LCBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSksIGNoYW5nZXNQcm92aWRlciwgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgYXBwbHlDb250ZW50Q2hhbmdlcyhhYm9ydFNpZ25hbCwgY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIsIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyk7XG4gIH0sIHByb2Nlc3NPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkdmFuY2VkQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBBZHZhbmNlZENhbnZhc0NoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGNoYW5nZS5yZWZlcmVuY2UpICYmICdub2RlSWQnIGluIGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0NoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzUmVmZXJlbmNlKGNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNGaWxlTm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNUZXh0Tm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ3RleHQnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50Q2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIENvbnRlbnRDaGFuZ2Uge1xuICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2Uge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNhbnZhcyBkYXRhIGZyb20gdGhlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byBwYXJzZSB0aGUgY2FudmFzIGRhdGEgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgY2FudmFzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNhbnZhc0RhdGEoY29udGVudDogc3RyaW5nKTogQ2FudmFzRGF0YSB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgQ2FudmFzRGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbiB0byBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNvbnZlcnQgdGhlIGNoYW5nZSBmcm9tLlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgY2hhbmdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9DYW52YXNDaGFuZ2UoYXBwOiBBcHAsIGZpbGU6IFRGaWxlLCBjaGFuZ2U6IEFkdmFuY2VkQ2FudmFzQ2hhbmdlKTogUHJvbWlzZTxDYW52YXNDaGFuZ2U+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VDYW52YXNEYXRhKGNvbnRlbnQpO1xuICBjb25zdCBub2RlSW5kZXggPSBjYW52YXNEYXRhLm5vZGVzLmZpbmRJbmRleCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWQpO1xuICBpZiAobm9kZUluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSAke2NoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24ubm9kZUlkfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgJHtjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLm5vZGVJZH0gbm90IGZvdW5kYCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBub2RlLnRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlICR7Y2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWR9IGlzIG5vdCBhIHRleHQgbm9kZWApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShhcHAsIG5vZGUudGV4dCk7XG4gIGNvbnN0IGxpbmtzID0gZ2V0QWxsTGlua3MobWV0YWRhdGEpO1xuICBjb25zdCBsaW5rSW5kZXggPSBsaW5rcy5maW5kSW5kZXgoKGxpbmspID0+IGxpbmsub3JpZ2luYWwgPT09IGNoYW5nZS5yZWZlcmVuY2Uub3JpZ2luYWwpO1xuICBpZiAobGlua0luZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTGluayAke2NoYW5nZS5yZWZlcmVuY2UubGlua30gbm90IGZvdW5kYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5jaGFuZ2UsXG4gICAgcmVmZXJlbmNlOiB7XG4gICAgICAuLi5jaGFuZ2UucmVmZXJlbmNlLFxuICAgICAgaXNDYW52YXM6IHRydWUsXG4gICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS50ZXh0LiR7U3RyaW5nKGxpbmtJbmRleCl9YCxcbiAgICAgIG5vZGVJbmRleCxcbiAgICAgIHR5cGU6ICdmaWxlJ1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGNoYW5nZSB0byBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgZmlsZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRnJvbnRtYXR0ZXJDaGFuZ2UpOiBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzIHtcbiAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlKSkge1xuICAgIHJldHVybiBmaWxlQ2hhbmdlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5maWxlQ2hhbmdlLFxuICAgIHJlZmVyZW5jZTogdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBhcHBseUNhbnZhc0NoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlciwgYWJvcnRTaWduYWwsIGNvbnRlbnQpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2FudmFzRGF0YSA9IHBhcnNlQ2FudmFzRGF0YShjb250ZW50KTtcblxuICBjb25zdCBjYW52YXNUZXh0Q2hhbmdlcyA9IG5ldyBNYXA8bnVtYmVyLCBDYW52YXNUZXh0Tm9kZUNoYW5nZVtdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoIWlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnT25seSBjYW52YXMgY2hhbmdlcyBhcmUgc3VwcG9ydGVkIGZvciBjYW52YXMgZmlsZXMnO1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNoYW5nZSxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgaWYgKG5vZGUuZmlsZSAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgZ2V0TGliRGVidWdnZXIoJ0ZpbGVDaGFuZ2U6YXBwbHlDYW52YXNDaGFuZ2VzJykoJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudDogbm9kZS5maWxlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIG5vZGVJbmRleDogY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBub2RlLmZpbGUgPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbGV0IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IGNhbnZhc1RleHRDaGFuZ2VzLmdldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCk7XG4gICAgICBpZiAoIWNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSkge1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBbXTtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXMuc2V0KGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpO1xuICAgICAgfVxuXG4gICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUucHVzaChjaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW25vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlXSBvZiBjYW52YXNUZXh0Q2hhbmdlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIHRleHQgaXMgbm90IGEgc3RyaW5nJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHJlZmVyZW5jZVRvRmlsZUNoYW5nZShjaGFuZ2UucmVmZXJlbmNlLm9yaWdpbmFsUmVmZXJlbmNlLCBjaGFuZ2UubmV3Q29udGVudCkpO1xuICAgIG5vZGUudGV4dCA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoXG4gICAgICBhYm9ydFNpZ25hbCxcbiAgICAgIG5vZGUudGV4dCxcbiAgICAgIGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgY29udGVudENoYW5nZXMsXG4gICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNhbnZhc0RhdGEsIG51bGwsICdcXHQnKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dChcbiAgY2hhbmdlczogRmlsZUNoYW5nZVtdLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGhhc0Zyb250bWF0dGVyRXJyb3I6IGJvb2xlYW4sXG4gIHBhdGg6IHN0cmluZ1xuKTogeyBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47IG5ld0NvbnRlbnQ6IHN0cmluZyB9IHtcbiAgbGV0IG5ld0NvbnRlbnQgPSAnJztcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBsYXN0Q29udGVudENoYW5nZTogQ29udGVudENoYW5nZSA9IHtcbiAgICBuZXdDb250ZW50OiAnJyxcbiAgICBvbGRDb250ZW50OiAnJyxcbiAgICByZWZlcmVuY2U6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZW5kOiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH0sXG4gICAgICAgIHN0YXJ0OiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAgPSBuZXcgTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPixcbiAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPixcbiAgcGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBba2V5LCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0c10gb2YgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwga2V5KTtcbiAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gYXMgQ29udGVudENoYW5nZSkpO1xuXG4gICAgY29uc3QgbmV3UHJvcGVydHlWYWx1ZSA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoYWJvcnRTaWduYWwsIHByb3BlcnR5VmFsdWUsIGAke3BhdGh9LmZyb250bWF0dGVyLiR7a2V5fS5WSVJUVUFMX0ZJTEUubWRgLCBjb250ZW50Q2hhbmdlcyk7XG4gICAgaWYgKG5ld1Byb3BlcnR5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBrZXksIG5ld1Byb3BlcnR5VmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KFxuICBuZXdDb250ZW50OiBzdHJpbmcsXG4gIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LFxuICBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT5cbik6IHN0cmluZyB7XG4gIGlmIChmcm9udG1hdHRlckNoYW5nZWQuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gc2V0RnJvbnRtYXR0ZXIobmV3Q29udGVudCwgZnJvbnRtYXR0ZXIpO1xuICB9XG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuXG5mdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyU2FmZWx5KGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nKTogeyBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjsgaGFzRnJvbnRtYXR0ZXJFcnJvcjogYm9vbGVhbiB9IHtcbiAgbGV0IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+ID0ge307XG4gIGxldCBoYXNGcm9udG1hdHRlckVycm9yID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgaGFzRnJvbnRtYXR0ZXJFcnJvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4geyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9O1xufVxuXG5mdW5jdGlvbiBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzOiBGaWxlQ2hhbmdlW10pOiBGaWxlQ2hhbmdlW10ge1xuICAvLyBTb3J0IGNoYW5nZXMgYnkgdHlwZSBhbmQgcG9zaXRpb25cbiAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShhKSAmJiBpc0NvbnRlbnRDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgLSBiLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhhKSAmJiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpIHx8IGEucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0IC0gYi5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEucmVmZXJlbmNlLmtleS5sb2NhbGVDb21wYXJlKGIucmVmZXJlbmNlLmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQ29udGVudENoYW5nZShhKSA/IC0xIDogMTtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgYW5kIG5vLW9wIGNoYW5nZXNcbiAgcmV0dXJuIGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdLCBjb250ZW50OiBzdHJpbmcsIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgIGNvbnN0IGVuZE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uZW5kLm9mZnNldDtcbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZW5kT2Zmc2V0LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoY2hhbmdlKSkge1xuICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIoJ1Byb3BlcnR5IHZhbHVlIGlzIG5vdCBhIHN0cmluZycsIHtcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwcm9wZXJ0eVZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBwcm9wZXJ0eVZhbHVlLnNsaWNlKGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQsIGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgZnJvbnRtYXR0ZXJLZXk6IGNoYW5nZS5yZWZlcmVuY2Uua2V5LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWNQLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUF1Q3hCLGVBQXNCLG9CQUNwQixhQUNBLFNBQ0EsTUFDQSxpQkFDQSw4QkFBOEIsTUFDTjtBQUN4QixjQUFZLGVB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
|
|
419
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9DYW52YXMuZC50cyc7XG5cbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSxcbiAgQ2FudmFzUmVmZXJlbmNlLFxuICBDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZVxufSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIHBhcnNlTWV0YWRhdGFcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBjaGFuZ2UgaW4gdGhlIHZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogQSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgKi9cbiAgb2xkQ29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0aGF0IGNhdXNlZCB0aGUgY2hhbmdlLlxuICAgKi9cbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2U7XG59XG50eXBlIEFkdmFuY2VkQ2FudmFzQ2hhbmdlID0geyByZWZlcmVuY2U6IEFkdmFuY2VkQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzUmVmZXJlbmNlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBDYW52YXNGaWxlTm9kZUNoYW5nZSA9IHsgcmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSB9ICYgRmlsZUNoYW5nZTtcbnR5cGUgQ2FudmFzVGV4dE5vZGVDaGFuZ2UgPSB7IHJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIENvbnRlbnRDaGFuZ2UgPSB7IHJlZmVyZW5jZTogUmVmZXJlbmNlQ2FjaGUgfSAmIEZpbGVDaGFuZ2U7XG50eXBlIEZyb250bWF0dGVyQ2hhbmdlID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlIH0gJiBGaWxlQ2hhbmdlO1xudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0geyByZWZlcmVuY2U6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgfSAmIEZpbGVDaGFuZ2U7XG5cbi8qKlxuICogQXBwbGllcyBhIHNlcmllcyBvZiBjb250ZW50IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGNoYW5nZXNQcm92aWRlciAtIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRlbnQgY2hhbmdlcyB0byBhcHBseS5cbiAqIEBwYXJhbSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgLSBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBjb250ZW50KTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKGNoYW5nZXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXIsIGhhc0Zyb250bWF0dGVyRXJyb3IgfSA9IHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkoY29udGVudCwgcGF0aCk7XG5cbiAgaWYgKCF2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlcywgY29udGVudCwgZnJvbnRtYXR0ZXIsIHBhdGgpKSB7XG4gICAgcmV0dXJuIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA/IG51bGwgOiBjb250ZW50O1xuICB9XG5cbiAgY2hhbmdlcyA9IHNvcnRBbmRGaWx0ZXJDaGFuZ2VzKGNoYW5nZXMpO1xuXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXJDaGFuZ2VkLCBuZXdDb250ZW50IH0gPSBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGgpO1xuXG4gIGF3YWl0IGFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHMoYWJvcnRTaWduYWwsIGZyb250bWF0dGVyLCBmcm9udG1hdHRlckNoYW5nZWQsIHBhdGgpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIHJldHVybiBidWlsZEZpbmFsQ29udGVudChuZXdDb250ZW50LCBmcm9udG1hdHRlciwgZnJvbnRtYXR0ZXJDaGFuZ2VkKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHByb2Nlc3NPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICogQHBhcmFtIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyAtIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIFtjb250ZW50OiBzdHJpbmddPixcbiAgcHJvY2Vzc09wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge30sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwcm9jZXNzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgaWYgKGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYXBwbHlDYW52YXNDaGFuZ2VzKGFib3J0U2lnbmFsLCBjb250ZW50LCBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSksIGNoYW5nZXNQcm92aWRlciwgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgYXBwbHlDb250ZW50Q2hhbmdlcyhhYm9ydFNpZ25hbCwgY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIsIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyk7XG4gIH0sIHByb2Nlc3NPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkdmFuY2VkQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBBZHZhbmNlZENhbnZhc0NoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGNoYW5nZS5yZWZlcmVuY2UpICYmICdub2RlSWQnIGluIGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0NoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzUmVmZXJlbmNlKGNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNGaWxlTm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNUZXh0Tm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS5yZWZlcmVuY2UudHlwZSA9PT0gJ3RleHQnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50Q2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIENvbnRlbnRDaGFuZ2Uge1xuICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2Uge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZShmaWxlQ2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2Ugd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNhbnZhcyBkYXRhIGZyb20gdGhlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byBwYXJzZSB0aGUgY2FudmFzIGRhdGEgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgY2FudmFzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNhbnZhc0RhdGEoY29udGVudDogc3RyaW5nKTogQ2FudmFzRGF0YSB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgQ2FudmFzRGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNoYW5nZSBmcm9tIGBBZHZhbmNlZCBDYW52YXNgIHBsdWdpbiB0byBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNvbnZlcnQgdGhlIGNoYW5nZSBmcm9tLlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBjaGFuZ2UgZnJvbSBgQWR2YW5jZWQgQ2FudmFzYCBwbHVnaW4gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgY2hhbmdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9DYW52YXNDaGFuZ2UoYXBwOiBBcHAsIGZpbGU6IFRGaWxlLCBjaGFuZ2U6IEFkdmFuY2VkQ2FudmFzQ2hhbmdlKTogUHJvbWlzZTxDYW52YXNDaGFuZ2U+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VDYW52YXNEYXRhKGNvbnRlbnQpO1xuICBjb25zdCBub2RlSW5kZXggPSBjYW52YXNEYXRhLm5vZGVzLmZpbmRJbmRleCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWQpO1xuICBpZiAobm9kZUluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSAke2NoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24ubm9kZUlkfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgJHtjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLm5vZGVJZH0gbm90IGZvdW5kYCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBub2RlLnRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlICR7Y2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5ub2RlSWR9IGlzIG5vdCBhIHRleHQgbm9kZWApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcGFyc2VNZXRhZGF0YShhcHAsIG5vZGUudGV4dCk7XG4gIGNvbnN0IGxpbmtzID0gZ2V0QWxsTGlua3MobWV0YWRhdGEpO1xuICBjb25zdCBsaW5rSW5kZXggPSBsaW5rcy5maW5kSW5kZXgoKGxpbmspID0+IGxpbmsub3JpZ2luYWwgPT09IGNoYW5nZS5yZWZlcmVuY2Uub3JpZ2luYWwpO1xuICBpZiAobGlua0luZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTGluayAke2NoYW5nZS5yZWZlcmVuY2UubGlua30gbm90IGZvdW5kYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5jaGFuZ2UsXG4gICAgcmVmZXJlbmNlOiB7XG4gICAgICAuLi5jaGFuZ2UucmVmZXJlbmNlLFxuICAgICAgaXNDYW52YXM6IHRydWUsXG4gICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS50ZXh0LiR7U3RyaW5nKGxpbmtJbmRleCl9YCxcbiAgICAgIG5vZGVJbmRleCxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGNoYW5nZSB0byBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgZmlsZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRnJvbnRtYXR0ZXJDaGFuZ2UpOiBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzIHtcbiAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlKSkge1xuICAgIHJldHVybiBmaWxlQ2hhbmdlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5maWxlQ2hhbmdlLFxuICAgIHJlZmVyZW5jZTogdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UucmVmZXJlbmNlKVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBhcHBseUNhbnZhc0NoYW5nZXMoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgY29udGVudDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBbY29udGVudDogc3RyaW5nXT4sXG4gIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlciwgYWJvcnRTaWduYWwsIGNvbnRlbnQpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2FudmFzRGF0YSA9IHBhcnNlQ2FudmFzRGF0YShjb250ZW50KTtcblxuICBjb25zdCBjYW52YXNUZXh0Q2hhbmdlcyA9IG5ldyBNYXA8bnVtYmVyLCBDYW52YXNUZXh0Tm9kZUNoYW5nZVtdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoIWlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnT25seSBjYW52YXMgY2hhbmdlcyBhcmUgc3VwcG9ydGVkIGZvciBjYW52YXMgZmlsZXMnO1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNoYW5nZSxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgaWYgKG5vZGUuZmlsZSAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgZ2V0TGliRGVidWdnZXIoJ0ZpbGVDaGFuZ2U6YXBwbHlDYW52YXNDaGFuZ2VzJykoJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudDogbm9kZS5maWxlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIG5vZGVJbmRleDogY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBub2RlLmZpbGUgPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbGV0IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IGNhbnZhc1RleHRDaGFuZ2VzLmdldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCk7XG4gICAgICBpZiAoIWNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSkge1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBbXTtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXMuc2V0KGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpO1xuICAgICAgfVxuXG4gICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUucHVzaChjaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW25vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlXSBvZiBjYW52YXNUZXh0Q2hhbmdlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIHRleHQgaXMgbm90IGEgc3RyaW5nJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHJlZmVyZW5jZVRvRmlsZUNoYW5nZShjaGFuZ2UucmVmZXJlbmNlLm9yaWdpbmFsUmVmZXJlbmNlLCBjaGFuZ2UubmV3Q29udGVudCkpO1xuICAgIG5vZGUudGV4dCA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoXG4gICAgICBhYm9ydFNpZ25hbCxcbiAgICAgIG5vZGUudGV4dCxcbiAgICAgIGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgY29udGVudENoYW5nZXMsXG4gICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNhbnZhc0RhdGEsIG51bGwsICdcXHQnKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dChcbiAgY2hhbmdlczogRmlsZUNoYW5nZVtdLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGhhc0Zyb250bWF0dGVyRXJyb3I6IGJvb2xlYW4sXG4gIHBhdGg6IHN0cmluZ1xuKTogeyBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47IG5ld0NvbnRlbnQ6IHN0cmluZyB9IHtcbiAgbGV0IG5ld0NvbnRlbnQgPSAnJztcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBsYXN0Q29udGVudENoYW5nZTogQ29udGVudENoYW5nZSA9IHtcbiAgICBuZXdDb250ZW50OiAnJyxcbiAgICBvbGRDb250ZW50OiAnJyxcbiAgICByZWZlcmVuY2U6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZW5kOiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH0sXG4gICAgICAgIHN0YXJ0OiB7IGNvbDogMCwgbGluZTogMCwgb2Zmc2V0OiAwIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAgPSBuZXcgTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPixcbiAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogTWFwPHN0cmluZywgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1tdPixcbiAgcGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBba2V5LCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0c10gb2YgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwga2V5KTtcbiAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gYXMgQ29udGVudENoYW5nZSkpO1xuXG4gICAgY29uc3QgbmV3UHJvcGVydHlWYWx1ZSA9IGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoYWJvcnRTaWduYWwsIHByb3BlcnR5VmFsdWUsIGAke3BhdGh9LmZyb250bWF0dGVyLiR7a2V5fS5WSVJUVUFMX0ZJTEUubWRgLCBjb250ZW50Q2hhbmdlcyk7XG4gICAgaWYgKG5ld1Byb3BlcnR5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBrZXksIG5ld1Byb3BlcnR5VmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KFxuICBuZXdDb250ZW50OiBzdHJpbmcsXG4gIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LFxuICBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT5cbik6IHN0cmluZyB7XG4gIGlmIChmcm9udG1hdHRlckNoYW5nZWQuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gc2V0RnJvbnRtYXR0ZXIobmV3Q29udGVudCwgZnJvbnRtYXR0ZXIpO1xuICB9XG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuXG5mdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyU2FmZWx5KGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nKTogeyBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjsgaGFzRnJvbnRtYXR0ZXJFcnJvcjogYm9vbGVhbiB9IHtcbiAgbGV0IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+ID0ge307XG4gIGxldCBoYXNGcm9udG1hdHRlckVycm9yID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgaGFzRnJvbnRtYXR0ZXJFcnJvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4geyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9O1xufVxuXG5mdW5jdGlvbiBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzOiBGaWxlQ2hhbmdlW10pOiBGaWxlQ2hhbmdlW10ge1xuICAvLyBTb3J0IGNoYW5nZXMgYnkgdHlwZSBhbmQgcG9zaXRpb25cbiAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShhKSAmJiBpc0NvbnRlbnRDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgLSBiLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhhKSAmJiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpIHx8IGEucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0IC0gYi5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEucmVmZXJlbmNlLmtleS5sb2NhbGVDb21wYXJlKGIucmVmZXJlbmNlLmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQ29udGVudENoYW5nZShhKSA/IC0xIDogMTtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgYW5kIG5vLW9wIGNoYW5nZXNcbiAgcmV0dXJuIGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdLCBjb250ZW50OiBzdHJpbmcsIGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgIGNvbnN0IGVuZE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uZW5kLm9mZnNldDtcbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZW5kT2Zmc2V0LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoY2hhbmdlKSkge1xuICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsaWRhdGVDaGFuZ2VzRGVidWdnZXIoJ1Byb3BlcnR5IHZhbHVlIGlzIG5vdCBhIHN0cmluZycsIHtcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwcm9wZXJ0eVZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBwcm9wZXJ0eVZhbHVlLnNsaWNlKGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXQsIGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgZnJvbnRtYXR0ZXJLZXk6IGNoYW5nZS5yZWZlcmVuY2Uua2V5LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2Uuc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWNQLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUF1Q3hCLGVBQXNCLG9CQUNwQixhQUNBLFNBQ0EsTUFDQSxpQkFDQSw4QkFBOEIsTUFDTjtBQUN4QixjQUFZLGVB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
|