@rooted/elements 1.0.0-alpha.4 → 1.0.0-alpha.6

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.
@@ -82,16 +82,46 @@ type FunctionKeys<T> = {
82
82
  type OnHandlerKeys<T> = {
83
83
  [P in keyof T]: P extends `on${string}` ? P : never;
84
84
  }[keyof T];
85
- type SanitizedHtmlProperties<TElement extends HTMLElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList'>;
85
+ /** A subset of CSSStyleDeclaration containing only the individual CSS style properties. */
86
+ type InlineStyle = {
87
+ [K in keyof CSSStyleDeclaration as CSSStyleDeclaration[K] extends string ? K extends 'cssText' ? never : K : never]?: string;
88
+ };
89
+
90
+ type SanitizedHtmlProperties<TElement extends HTMLElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList' | 'style'>;
86
91
  type HtmlElementPropertiesMapped<TElement extends HTMLElement> = Partial<SanitizedHtmlProperties<TElement>> & {
92
+ [key: string]: unknown;
87
93
  children?: Array<Node | string> | Node | string;
88
94
  classes?: CssClasses;
95
+ style?: InlineStyle;
89
96
  aria?: Aria;
90
97
  on?: ElementOnHandlers<TElement>;
91
98
  };
92
99
  type HtmlElementProperties<KElement extends keyof HTMLElementTagNameMap> = HtmlElementPropertiesMapped<HTMLElementTagNameMap[KElement]>;
93
- type ElementCreator = (key: string) => HTMLElement;
94
- type ElementFactory = ReturnType<typeof createElementFactory>;
95
- declare function createElementFactory(constructElement: ElementCreator, signal: AbortSignal): <KElement extends keyof HTMLElementTagNameMap>(tag: KElement, properties?: NoInfer<HtmlElementProperties<KElement>>) => HTMLElementTagNameMap[KElement];
96
100
 
97
- export { type Aria, type CssClass, type CssClasses, type ElementCreator, type ElementFactory, createElementFactory, cssClass };
101
+ type SvgTagName = 'svg' | `svg:${Exclude<keyof SVGElementTagNameMap, 'svg'>}`;
102
+ type SvgTagElement<T extends SvgTagName> = T extends 'svg' ? SVGSVGElement : T extends `svg:${infer K extends keyof SVGElementTagNameMap}` ? SVGElementTagNameMap[K] : never;
103
+ type SanitizedSvgProperties<TElement extends SVGElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList' | 'style'>;
104
+ type SvgElementPropertiesMapped<TElement extends SVGElement> = Partial<SanitizedSvgProperties<TElement>> & {
105
+ [key: string]: unknown;
106
+ classes?: CssClasses;
107
+ style?: InlineStyle;
108
+ children?: Array<Node | string> | Node | string;
109
+ aria?: Aria;
110
+ on?: ElementOnHandlers<TElement>;
111
+ };
112
+ type SvgElementProperties<K extends SvgTagName> = SvgElementPropertiesMapped<SvgTagElement<K> & SVGElement>;
113
+
114
+ type ElementCreator = (key: string, ns?: string) => Element;
115
+ /**
116
+ * The overloaded function type returned by {@link createElementFactory}.
117
+ * Accepts HTML or SVG tag names and returns the matching element type.
118
+ */
119
+ interface ElementCreatorFunction {
120
+ (tag: 'svg', properties?: SvgElementProperties<'svg'>): SVGSVGElement;
121
+ <K extends Exclude<SvgTagName, 'svg'>>(tag: K, properties?: SvgElementProperties<K>): SvgTagElement<K>;
122
+ <K extends keyof HTMLElementTagNameMap>(tag: K, properties?: NoInfer<HtmlElementProperties<K>>): HTMLElementTagNameMap[K];
123
+ }
124
+ type ElementFactory = ElementCreatorFunction;
125
+ declare function createElementFactory(constructElement: ElementCreator, signal: AbortSignal): ElementCreatorFunction;
126
+
127
+ export { type Aria, type CssClass, type CssClasses, type ElementCreator, type ElementCreatorFunction, type ElementFactory, type HtmlElementProperties, type SvgElementProperties, type SvgTagElement, type SvgTagName, createElementFactory, cssClass };
package/dist/elements.mjs CHANGED
@@ -66,31 +66,67 @@ function buildClassList(classes) {
66
66
  if (Array.isArray(classes)) return { className: classes.filter(Boolean).join(" ") };
67
67
  return { className: String(classes) };
68
68
  }
69
+ function isWritableDomProperty(element, key) {
70
+ let proto = element;
71
+ while (proto) {
72
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
73
+ if (desc) return !!(desc.writable || desc.set);
74
+ proto = Object.getPrototypeOf(proto);
75
+ }
76
+ return false;
77
+ }
69
78
  function createElementFactory(constructElement, signal) {
70
79
  function createElement(tag, properties) {
71
- const { aria, children, classes, on, ...assignableProperties } = properties ?? {};
72
- const definedProperties = Object.fromEntries(
73
- Object.entries(assignableProperties).filter(([, v]) => v !== void 0 && v !== null)
74
- );
75
- const newElement = Object.assign(
76
- constructElement(tag),
77
- definedProperties,
78
- buildClassList(classes)
79
- );
80
- buildAriaProperties(aria, newElement);
81
- buildOnHandlers(on, newElement, signal);
82
- if (Array.isArray(children)) {
83
- for (const child of children) {
84
- newElement.append(child);
80
+ if (tag === "svg" || tag.startsWith("svg:")) {
81
+ const actualTag = tag === "svg" ? "svg" : tag.slice(4);
82
+ const { classes: classes2, children: children2, aria: aria2, on: on2, style: style2, ...attributes } = properties ?? {};
83
+ const newElement2 = constructElement(actualTag, "http://www.w3.org/2000/svg");
84
+ for (const [key, value] of Object.entries(attributes)) {
85
+ if (value === void 0 || value === null) continue;
86
+ if (isWritableDomProperty(newElement2, key)) {
87
+ newElement2[key] = value;
88
+ } else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
89
+ newElement2.setAttribute(key, String(value));
90
+ }
85
91
  }
86
- } else if (children) {
87
- newElement.append(children);
92
+ const { className: className2 } = buildClassList(classes2);
93
+ if (className2) newElement2.setAttribute("class", className2);
94
+ if (style2) Object.assign(newElement2.style, style2);
95
+ buildAriaProperties(aria2, newElement2);
96
+ buildOnHandlers(on2, newElement2, signal);
97
+ appendChildren(newElement2, children2);
98
+ return newElement2;
88
99
  }
100
+ const { aria, children, classes, on, style, ...assignableProperties } = properties ?? {};
101
+ const newElement = constructElement(tag);
102
+ const { className } = buildClassList(classes);
103
+ if (className) newElement.className = className;
104
+ for (const [key, value] of Object.entries(assignableProperties)) {
105
+ if (value === void 0 || value === null) continue;
106
+ if (isWritableDomProperty(newElement, key)) {
107
+ newElement[key] = value;
108
+ } else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
109
+ newElement.setAttribute(key, String(value));
110
+ }
111
+ }
112
+ if (style) Object.assign(newElement.style, style);
113
+ buildAriaProperties(aria, newElement);
114
+ buildOnHandlers(on, newElement, signal);
115
+ appendChildren(newElement, children);
89
116
  return newElement;
90
117
  }
91
- return createElement.bind(void 0);
118
+ return createElement;
119
+ }
120
+ function appendChildren(element, children) {
121
+ if (Array.isArray(children)) {
122
+ for (const child of children) {
123
+ element.append(child);
124
+ }
125
+ } else if (children) {
126
+ element.append(children);
127
+ }
92
128
  }
93
129
 
94
130
  export { createElementFactory, cssClass };
95
131
  //# sourceMappingURL=elements.mjs.map
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUE2Q08sU0FBUyxRQUFBLENBQVMsU0FBQSxFQUFxQixPQUFBLEdBQXNDLElBQUEsRUFBZ0I7QUFDbkcsRUFBQSxJQUFJLFlBQVksSUFBQSxFQUFNO0FBQ3RCLEVBQUEsT0FBTyxTQUFBO0FBQ1I7OztBQ3BCQSxJQUFNLHlCQUFBLEdBQTZFO0FBQUEsRUFDbEYsZ0JBQUEsRUFBa0IsdUJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsZUFBQTtBQUFBLEVBQ1YsV0FBQSxFQUFhLGtCQUFBO0FBQUEsRUFDYixPQUFBLEVBQVMsY0FBQTtBQUFBLEVBQ1QsWUFBQSxFQUFjLG1CQUFBO0FBQUEsRUFDZCxNQUFBLEVBQVEsYUFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLGlCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBR0EsSUFBTSxnQ0FBQSxHQUFvRjtBQUFBLEVBQ3pGLGdCQUFBLEVBQWtCLDZCQUFBO0FBQUEsRUFDbEIsUUFBQSxFQUFVLHNCQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEseUJBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxxQkFBQTtBQUFBLEVBQ1QsWUFBQSxFQUFjLDBCQUFBO0FBQUEsRUFDZCxNQUFBLEVBQVEsb0JBQUE7QUFBQSxFQUNSLFVBQUEsRUFBWSx3QkFBQTtBQUFBLEVBQ1osSUFBQSxFQUFNO0FBQ1AsQ0FBQTtBQUVBLFNBQVMsV0FBQSxDQUFZLE9BQUEsRUFBa0IsR0FBQSxFQUFhLEtBQUEsRUFBc0I7QUFDekUsRUFBQyxPQUFBLENBQStDLEdBQUcsQ0FBQSxHQUFJLEtBQUE7QUFDeEQ7QUFFTyxTQUFTLG1CQUFBLENBQW9CLE1BQXdCLE9BQUEsRUFBd0I7QUFDbkYsRUFBQSxJQUFJLENBQUMsSUFBQSxFQUFNO0FBQ1gsRUFBQSxLQUFBLE1BQVcsQ0FBQyxH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QUFBLENBQW9CLE1BQU0sVUFBVSxDQUFBO0FBQ3BDLElBQUEsZUFBQSxDQUFnQixFQUFBLEVBQUksWUFBWSxNQUFNLENBQUE7QUFFdEMsSUFBQSxJQUFJLEtBQUEsQ0FBTSxPQUFBLENBQVEsUUFBUSxDQUFBLEVBQUc7QUFDNUIsTUFBQSxLQUFBLE1BQVcsU0FBUyxRQUFBLEVBQVU7QUFDN0IsUUFBQSxVQUFBLENBQVcsT0FBTyxLQUFLLENBQUE7QUFBQSxNQUN4QjtBQUFBLElBQ0QsV0FDUyxRQUFBLEVBQVU7QUFDbEIsTUFBQSxVQUFBLENBQVcsT0FBTyxRQUFRLENBQUE7QUFBQSxJQUMzQjtBQUVBLElBQUEsT0FBTyxVQUFBO0FBQUEsRUFDUjtBQUVBLEVBQUEsT0FBTyxhQUFBLENBQWMsS0FBSyxNQUFVLENBQUE7QUFDckMiLCJmaWxlIjoiZWxlbWVudHMubWpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNpbmdsZSBDU1MgY2xhc3MgdmFsdWUuIEZhbHN5IHZhcmlhbnRzIChgdW5kZWZpbmVkYCBhbmQgYG51bGxgKSBhcmVcbiAqIGF1dG9tYXRpY2FsbHkgZmlsdGVyZWQgb3V0IHdoZW4gYnVpbGRpbmcgYSBjbGFzcyBsaXN0LCBzbyBjb25kaXRpb25hbFxuICogY2xhc3NlcyBjYW4gYmUgZXhwcmVzc2VkIHdpdGhvdXQgZXhwbGljaXQgZ3VhcmRzLlxuICovXG5leHBvcnQgdHlwZSBDc3NDbGFzcyA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuLyoqXG4gKiBPbmUgb3IgbW9yZSBDU1MgY2xhc3MgdmFsdWVzIGFjY2VwdGVkIGJ5IHRoZSBgY2xhc3Nlc2AgcHJvcCBvZiBldmVyeSBIVE1MXG4gKiBlbGVtZW50IGNyZWF0ZWQgdmlhIGBjcmVhdGUoKWAgb3IgYGFwcGVuZCgpYC5cbiAqXG4gKiAtIEEgc2luZ2xlIHN0cmluZyBpcyB1c2VkIGFzLWlzLlxuICogLSBBbiBhcnJheSBvZiB7QGxpbmsgQ3NzQ2xhc3N9IHZhbHVlcyBpcyBqb2luZWQgd2l0aCBzcGFjZXMgYWZ0ZXIgZmFsc3lcbiAqICAgZW50cmllcyBhcmUgcmVtb3ZlZC5cbiAqXG4gKiBAc2VlIHtAbGluayBjc3NDbGFzc30gZm9yIGNvbXBvc2luZyBjb25kaXRpb25hbCBjbGFzcyBuYW1lcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ3NzQ2xhc3NlcyA9IEFycmF5PENzc0NsYXNzPiB8IENzc0NsYXNzXG5cbi8qKlxuICogUmV0dXJucyBgY2xhc3NOYW1lYCB3aGVuIGB2aXNpYmxlYCBpcyB0cnV0aHksIG90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAqXG4gKiBEZXNpZ25lZCB0byBjb21wb3NlIGNsZWFubHkgd2l0aCB7QGxpbmsgQ3NzQ2xhc3Nlc306IGZhbHN5IHZhbHVlcyBhcmVcbiAqIGZpbHRlcmVkIG91dCBhdXRvbWF0aWNhbGx5LCBzbyBzdGF0aWMgYW5kIGNvbmRpdGlvbmFsIGNsYXNzZXMgY2FuIGJlIG1peGVkXG4gKiBpbiBhIHNpbmdsZSBhcnJheSB3aXRob3V0IGJyYW5jaGluZy5cbiAqXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIENTUyBjbGFzcyB0byBhcHBseS5cbiAqIEBwYXJhbSB2aXNpYmxlIC0gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSB0aGUgY2xhc3MgaXMgcmV0dXJuZWQ7IGFueSBvdGhlclxuICogICB2YWx1ZSBwcm9kdWNlcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGFwcGVuZCgnYnV0dG9uJywge1xuICogICBjbGFzc2VzOiBbXG4gKiAgICAgJ2J0bicsXG4gKiAgICAgY3NzQ2xhc3MoJ2J0bi0tYWN0aXZlJywgaXNBY3RpdmUpLFxuICogICAgIGNzc0NsYXNzKCdidG4tLWRpc2FibGVkJywgaXNEaXNhYmxlZCksXG4gKiAgIF0sXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IENzc0NsYXNzKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IENzc0NsYXNzLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgPSB0cnVlKTogQ3NzQ2xhc3Mge1xuXHRpZiAodmlzaWJsZSAhPT0gdHJ1ZSkgcmV0dXJuXG5cdHJldHVybiBjbGFzc05hbWVcbn1cbiIsInR5cGUgU3RyaXBBcmlhPFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBhcmlhJHtpbmZlciBSZXN0fWAgPyBVbmNhcGl0YWxpemU8UmVzdD4gOiBTXG5cbnR5cGUgQXJpYVN0cmluZ1Byb3BlcnRpZXMgPSB7XG5cdFtQIGluIGtleW9mIEFSSUFNaXhpbiBhcyBBUklBTWl4aW5bUF0gZXh0ZW5kcyBzdHJpbmcgfCBudWxsID8gU3RyaXBBcmlhPHN0cmluZyAmIFA+IDogbmV2ZXJdPzogc3RyaW5nIHwgbnVsbFxufVxuXG4vLyBQcm9wZXJ0aWVzIHRoYXQgb25seSBleGlzdCBhcyBFbGVtZW50W10gaW4gQVJJQU1peGluIOKAlCBhY2NlcHRzIGEgc3RyaW5nIElEIG9yIGFuIEVsZW1lbnQgZGlyZWN0bHlcbnR5cGUgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcyA9IHtcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCddfSAqL1xuXHRhY3RpdmVEZXNjZW5kYW50Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFDb250cm9sc0VsZW1lbnRzJ119ICovXG5cdGNvbnRyb2xzPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJ119ICovXG5cdGRlc2NyaWJlZEJ5Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFEZXRhaWxzRWxlbWVudHMnXX0gKi9cblx0ZGV0YWlscz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnXX0gKi9cblx0ZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFGbG93VG9FbGVtZW50cyddfSAqL1xuXHRmbG93VG8/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUxhYmVsbGVkQnlFbGVtZW50cyddfSAqL1xuXHRsYWJlbGxlZEJ5Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFPd25zRWxlbWVudHMnXX0gKi9cblx0b3ducz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEFyaWEgPSBBcmlhU3RyaW5nUHJvcGVydGllcyAmIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNcblxuY29uc3QgYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlczogUmVjb3JkPGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMsIHN0cmluZz4gPSB7XG5cdGFjdGl2ZURlc2NlbmRhbnQ6ICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLFxuXHRjb250cm9sczogJ2FyaWEtY29udHJvbHMnLFxuXHRkZXNjcmliZWRCeTogJ2FyaWEtZGVzY3JpYmVkYnknLFxuXHRkZXRhaWxzOiAnYXJpYS1kZXRhaWxzJyxcblx0ZXJyb3JNZXNzYWdlOiAnYXJpYS1lcnJvcm1lc3NhZ2UnLFxuXHRmbG93VG86ICdhcmlhLWZsb3d0bycsXG5cdGxhYmVsbGVkQnk6ICdhcmlhLWxhYmVsbGVkYnknLFxuXHRvd25zOiAnYXJpYS1vd25zJyxcbn1cblxuLy8gYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50IGlzIHNpbmd1bGFyOyB0aGUgcmVzdCB0YWtlIEVsZW1lbnRbXVxuY29uc3QgYXJpYUlkUmVmZXJlbmNlRWxlbWVudFByb3BlcnRpZXM6IFJlY29yZDxrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzLCBzdHJpbmc+ID0ge1xuXHRhY3RpdmVEZXNjZW5kYW50OiAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jyxcblx0Y29udHJvbHM6ICdhcmlhQ29udHJvbHNFbGVtZW50cycsXG5cdGRlc2NyaWJlZEJ5OiAnYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMnLFxuXHRkZXRhaWxzOiAnYXJpYURldGFpbHNFbGVtZW50cycsXG5cdGVycm9yTWVzc2FnZTogJ2FyaWFFcnJvck1lc3NhZ2VFbGVtZW50cycsXG5cdGZsb3dUbzogJ2FyaWFGbG93VG9FbGVtZW50cycsXG5cdGxhYmVsbGVkQnk6ICdhcmlhTGFiZWxsZWRCeUVsZW1lbnRzJyxcblx0b3duczogJ2FyaWFPd25zRWxlbWVudHMnLFxufVxuXG5mdW5jdGlvbiBzZXRQcm9wZXJ0eShlbGVtZW50OiBFbGVtZW50LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0KGVsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWE6IEFyaWEgfCB1bmRlZmluZWQsIGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcblx0aWYgKCFhcmlhKSByZXR1cm5cblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJpYSkpIHtcblx0XHRpZiAoIShrZXkgaW4gYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlcykpIHtcblx0XHRcdGNvbnN0IGRvbUtleSA9IGBhcmlhJHtrZXlbMF0udG9VcHBlckNhc2UoKX0ke2tleS5zbGljZSgxKX1gXG5cdFx0XHRzZXRQcm9wZXJ0eShlbGVtZW50LCBkb21LZXksIHZhbHVlKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdFx0Y29uc3QgaWRsS2V5ID0gYXJpYUlkUmVmZXJlbmNlRWxlbWVudFByb3BlcnRpZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdXG5cdFx0XHRzZXRQcm9wZXJ0eShlbGVtZW50LCBpZGxLZXksIGlkbEtleS5lbmRzV2l0aCgnRWxlbWVudHMnKSA/IFt2YWx1ZV0gOiB2YWx1ZSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdLCB2YWx1ZSlcblx0fVxufVxuIiwiaW1wb3J0IHsgRWxlbWVudE9uSGFuZGxlcnMgfSBmcm9tICdAcm9vdGVkL2V2ZW50cydcblxuaW1wb3J0IHsgdHlwZSBBcmlhLCBidWlsZEFyaWFQcm9wZXJ0aWVzIH0gZnJvbSAnLi9hcmlhLm10cydcbmltcG9ydCB7IENzc0NsYXNzZXMgfSBmcm9tICcuL2NsYXNzZXMubXRzJ1xuXG50eXBlIElmRXF1YWxzPFgsIFksIEEgPSBYLCBCID0gbmV2ZXI+ID0gKDxUPigpID0+IFQgZXh0ZW5kcyBYID8gMSA6IDIpIGV4dGVuZHMgKDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDIpID8gQSA6IEJcbnR5cGUgTm9uV3JpdGFibGVLZXlzPFQ+ID0ge1xuXHRbUCBpbiBrZXlvZiBUXS0/OiBJZkVxdWFsczx7IFtRIGluIFBdOiBUW1BdIH0sIHsgLXJlYWRvbmx5IFtRIGluIFBdOiBUW1BdIH0sIG5ldmVyLCBQPlxufVtrZXlvZiBUXVxudHlwZSBGdW5jdGlvbktleXM8VD4gPSB7XG5cdFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxUW1BdPiBleHRlbmRzICguLi5hcmd1bWVudHNfOiBuZXZlcltdKSA9PiB1bmtub3duID8gUCA6IG5ldmVyXG59W2tleW9mIFRdXG50eXBlIE9uSGFuZGxlcktleXM8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBQIGV4dGVuZHMgYG9uJHtzdHJpbmd9YCA/IFAgOiBuZXZlciB9W2tleW9mIFRdXG5cbnR5cGUgU2FuaXRpemVkSHRtbFByb3BlcnRpZXM8VEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBPbWl0PFxuXHRURWxlbWVudCxcblx0fCBOb25Xcml0YWJsZUtleXM8VEVsZW1lbnQ+XG5cdHwgRnVuY3Rpb25LZXlzPFRFbGVtZW50PlxuXHR8IEV4Y2x1ZGU8a2V5b2YgQVJJQU1peGluLCAncm9sZSc+XG5cdHwgT25IYW5kbGVyS2V5czxURWxlbWVudD5cblx0fCAnY2hpbGRyZW4nIHwgJ2NsYXNzTmFtZScgfCAnY2xhc3NMaXN0J1xuPlxudHlwZSBIdG1sRWxlbWVudFByb3BlcnRpZXNNYXBwZWQ8VEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD5cblx0PSBQYXJ0aWFsPFNhbml0aXplZEh0bWxQcm9wZXJ0aWVzPFRFbGVtZW50Pj5cblx0JiB7XG5cdFx0Y2hpbGRyZW4/OiBBcnJheTxOb2RlIHwgc3RyaW5nPiB8IE5vZGUgfCBzdHJpbmdcblx0XHRjbGFzc2VzPzogQ3NzQ2xhc3Nlc1xuXHRcdGFyaWE/OiBBcmlhXG5cdFx0b24/OiBFbGVtZW50T25IYW5kbGVyczxURWxlbWVudD5cblx0fVxuXG50eXBlIEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudCBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD5cblx0PSBIdG1sRWxlbWVudFByb3BlcnRpZXNNYXBwZWQ8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XT5cblxuZnVuY3Rpb24gYnVpbGRPbkhhbmRsZXJzPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuXHRvbjogRWxlbWVudE9uSGFuZGxlcnM8VEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuXHRlbGVtZW50OiBURWxlbWVudCxcblx0c2lnbmFsOiBBYm9ydFNpZ25hbCxcbik6IHZvaWQge1xuXHRpZiAoIW9uKSByZXR1cm5cblx0Zm9yIChjb25zdCBba2V5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyhvbikpIHtcblx0XHRpZiAoIWhhbmRsZXIpIGNvbnRpbnVlXG5cdFx0ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0a2V5LFxuXG5cdFx0XHRldmVudCA9PiB2b2lkIChoYW5kbGVyIGFzIChldmVudD86IEV2ZW50KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikoZXZlbnQpLFxuXHRcdFx0c2lnbmFsID8geyBzaWduYWwgfSA6IHVuZGVmaW5lZCxcblx0XHQpXG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRDbGFzc0xpc3QoY2xhc3NlczogQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZCkge1xuXHRpZiAoY2xhc3NlcyA9PT0gbnVsbCB8fCBjbGFzc2VzID09PSB1bmRlZmluZWQpIHJldHVybiB7fVxuXHRpZiAoQXJyYXkuaXNBcnJheShjbGFzc2VzKSkgcmV0dXJuIHsgY2xhc3NOYW1lOiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfVxuXG5cdHJldHVybiB7IGNsYXNzTmFtZTogU3RyaW5nKGNsYXNzZXMpIH1cbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudENyZWF0b3IgPSAoa2V5OiBzdHJpbmcpID0+IEhUTUxFbGVtZW50XG5leHBvcnQgdHlwZSBFbGVtZW50RmFjdG9yeSA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUVsZW1lbnRGYWN0b3J5PlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGYWN0b3J5KGNvbnN0cnVjdEVsZW1lbnQ6IEVsZW1lbnRDcmVhdG9yLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IEhUTUwgZWxlbWVudC4gVGhlIGVsZW1lbnQgaXMgKipub3QqKiBhcHBlbmRlZCB0byB0aGVcblx0ICogZG9jdW1lbnQgYXV0b21hdGljYWxseS5cblx0ICpcblx0ICogKipgY2xhc3Nlc2AqKiDigJQgYWNjZXB0cyBhIHNpbmdsZSBjbGFzcyBzdHJpbmcgb3IgYSB7QGxpbmsgQ3NzQ2xhc3Nlc30gYXJyYXk7XG5cdCAqIGZhbHN5IGVudHJpZXMgYXJlIGZpbHRlcmVkIG91dCBhdXRvbWF0aWNhbGx5LlxuXHQgKlxuXHQgKiAqKkRPTSBwcm9wZXJ0eSBuYW1lcyoqIOKAlCBvdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgdmlhIGBPYmplY3QuYXNzaWduYCBhbmRcblx0ICogbXVzdCB1c2UgRE9NIHByb3BlcnR5IG5hbWVzLCBub3QgSFRNTCBhdHRyaWJ1dGUgbmFtZXM6XG5cdCAqIHwgSFRNTCBhdHRyaWJ1dGUgfCBET00gcHJvcGVydHkgfFxuXHQgKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXxcblx0ICogfCBgZm9yYCAgICAgICAgICB8IGBodG1sRm9yYCAgICB8XG5cdCAqIHwgYHJlYWRvbmx5YCAgICAgfCBgcmVhZE9ubHlgICAgfFxuXHQgKlxuXHQgKiAqKkNoaWxkcmVuKiog4oCUIHBhc3MgYSBzaW5nbGUgYE5vZGVgIG9yIGFuIGFycmF5IG9mIGBOb2RlYHMgdmlhIHRoZVxuXHQgKiBgY2hpbGRyZW5gIHByb3BlcnR5OyB0aGV5IGFyZSBhcHBlbmRlZCBpbiBvcmRlci5cblx0ICpcblx0ICogKipFdmVudCBsaXN0ZW5lcnMqKiDigJQgdXNlIHRoZSBgb25gIHByb3Agd2l0aCBhbiBvYmplY3Qgb2YgZXZlbnQgaGFuZGxlcnMuXG5cdCAqIExpc3RlbmVycyBhcmUgYXV0b21hdGljYWxseSByZW1vdmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bm1vdW50cy5cblx0ICpcblx0ICogKipBUklBKiog4oCUIHVzZSB0aGUgYGFyaWFgIHByb3AgZm9yIEFSSUEgYXR0cmlidXRlcy4gQWNjZXB0cyBzdHJpbmcgSURzIG9yXG5cdCAqIGBFbGVtZW50YCByZWZlcmVuY2VzIGZvciBJREwgcmVmbGVjdGlvbiBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiBgYGB0c1xuXHQgKiBjb25zdCBkaXYgPSBjcmVhdGUoJ2RpdicsIHtcblx0ICogICBjbGFzc2VzOiAnY2FyZCcsXG5cdCAqICAgYXJpYTogeyBsYWJlbDogJ0NhcmQnLCBsYWJlbGxlZEJ5OiBoZWFkaW5nRWwgfSxcblx0ICogICBjaGlsZHJlbjogW1xuXHQgKiAgICAgY3JlYXRlKCdoMicsIHsgdGV4dENvbnRlbnQ6ICdUaXRsZScgfSksXG5cdCAqICAgICBjcmVhdGUoJ3AnLCAgeyB0ZXh0Q29udGVudDogJ0JvZHknICB9KSxcblx0ICogICBdLFxuXHQgKiB9KVxuXHQgKiBgYGBcblx0ICovXG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8S0VsZW1lbnQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogS0VsZW1lbnQsIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudD4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XSB7XG5cdFx0Y29uc3QgeyBhcmlhLCBjaGlsZHJlbiwgY2xhc3Nlcywgb24sIC4uLmFzc2lnbmFibGVQcm9wZXJ0aWVzIH0gPSAocHJvcGVydGllcyA/PyB7fSlcblx0XHRjb25zdCBkZWZpbmVkUHJvcGVydGllcyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Rcblx0XHRcdC5lbnRyaWVzKGFzc2lnbmFibGVQcm9wZXJ0aWVzKVxuXHRcdFx0LmZpbHRlcigoWywgdl0pID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKSxcblx0XHQpXG5cdFx0Y29uc3QgbmV3RWxlbWVudCA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHRjb25zdHJ1Y3RFbGVtZW50KHRhZykgYXMgSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XSxcblx0XHRcdGRlZmluZWRQcm9wZXJ0aWVzLFxuXHRcdFx0YnVpbGRDbGFzc0xpc3QoY2xhc3NlcyksXG5cdFx0KVxuXG5cdFx0YnVpbGRBcmlhUHJvcGVydGllcyhhcmlhLCBuZXdFbGVtZW50KVxuXHRcdGJ1aWxkT25IYW5kbGVycyhvbiwgbmV3RWxlbWVudCwgc2lnbmFsKVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG5cdFx0XHRcdG5ld0VsZW1lbnQuYXBwZW5kKGNoaWxkKVxuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdFx0bmV3RWxlbWVudC5hcHBlbmQoY2hpbGRyZW4pXG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ld0VsZW1lbnQgYXMgSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XVxuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQuYmluZCh1bmRlZmluZWQhKVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbImNsYXNzZXMiLCJjaGlsZHJlbiIsImFyaWEiLCJvbiIsInN0eWxlIiwibmV3RWxlbWVudCIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IjtBQTZDTyxTQUFTLFFBQUEsQ0FBUyxTQUFBLEVBQXFCLE9BQUEsR0FBc0MsSUFBQSxFQUFnQjtBQUNuRyxFQUFBLElBQUksWUFBWSxJQUFBLEVBQU07QUFDdEIsRUFBQSxPQUFPLFNBQUE7QUFDUjs7O0FDcEJBLElBQU0seUJBQUEsR0FBNkU7QUFBQSxFQUNsRixnQkFBQSxFQUFrQix1QkFBQTtBQUFBLEVBQ2xCLFFBQUEsRUFBVSxlQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEsa0JBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxjQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsbUJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxhQUFBO0FBQUEsRUFDUixVQUFBLEVBQVksaUJBQUE7QUFBQSxFQUNaLElBQUEsRUFBTTtBQUNQLENBQUE7QUFHQSxJQUFNLGdDQUFBLEdBQW9GO0FBQUEsRUFDekYsZ0JBQUEsRUFBa0IsNkJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsc0JBQUE7QUFBQSxFQUNWLFdBQUEsRUFBYSx5QkFBQTtBQUFBLEVBQ2IsT0FBQSxFQUFTLHFCQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsMEJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxvQkFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLHdCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBRUEsU0FBUyxXQUFBLENBQVksT0FBQSxFQUFrQixHQUFBLEVBQWEsS0FBQSxFQUFzQjtBQUN6RSxFQUFDLE9BQUEsQ0FBK0MsR0FBRyxDQUFBLEdBQUksS0FBQTtBQUN4RDtBQUVPLFNBQVMsbUJBQUEsQ0FBb0IsTUFBd0IsT0FB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QyxDQUFBO0FBQUEsTUFDM0M7QUFBQSxJQUNEO0FBRUEsSUFBQSxJQUFJLEtBQUEsRUFBTyxNQUFBLENBQU8sTUFBQSxDQUFPLFVBQUEsQ0FBVyxPQUFPLEtBQUssQ0FBQTtBQUNoRCxJQUFBLG1CQUFBLENBQW9CLE1BQTBCLFVBQVUsQ0FBQTtBQUN4RCxJQUFBLGVBQUEsQ0FBZ0IsRUFBQSxFQUFrRCxZQUFZLE1BQU0sQ0FBQTtBQUNwRixJQUFBLGNBQUEsQ0FBZSxZQUFZLFFBQTRELENBQUE7QUFFdkYsSUFBQSxPQUFPLFVBQUE7QUFBQSxFQUNSO0FBRUEsRUFBQSxPQUFPLGFBQUE7QUFDUjtBQUVBLFNBQVMsY0FBQSxDQUFlLFNBQWtCLFFBQUEsRUFBa0U7QUFDM0csRUFBQSxJQUFJLEtBQUEsQ0FBTSxPQUFBLENBQVEsUUFBUSxDQUFBLEVBQUc7QUFDNUIsSUFBQSxLQUFBLE1BQVcsU0FBUyxRQUFBLEVBQVU7QUFDN0IsTUFBQSxPQUFBLENBQVEsT0FBTyxLQUFLLENBQUE7QUFBQSxJQUNyQjtBQUFBLEVBQ0QsV0FDUyxRQUFBLEVBQVU7QUFDbEIsSUFBQSxPQUFBLENBQVEsT0FBTyxRQUFRLENBQUE7QUFBQSxFQUN4QjtBQUNEIiwiZmlsZSI6ImVsZW1lbnRzLm1qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzaW5nbGUgQ1NTIGNsYXNzIHZhbHVlLiBGYWxzeSB2YXJpYW50cyAoYHVuZGVmaW5lZGAgYW5kIGBudWxsYCkgYXJlXG4gKiBhdXRvbWF0aWNhbGx5IGZpbHRlcmVkIG91dCB3aGVuIGJ1aWxkaW5nIGEgY2xhc3MgbGlzdCwgc28gY29uZGl0aW9uYWxcbiAqIGNsYXNzZXMgY2FuIGJlIGV4cHJlc3NlZCB3aXRob3V0IGV4cGxpY2l0IGd1YXJkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ3NzQ2xhc3MgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbi8qKlxuICogT25lIG9yIG1vcmUgQ1NTIGNsYXNzIHZhbHVlcyBhY2NlcHRlZCBieSB0aGUgYGNsYXNzZXNgIHByb3Agb2YgZXZlcnkgSFRNTFxuICogZWxlbWVudCBjcmVhdGVkIHZpYSBgY3JlYXRlKClgIG9yIGBhcHBlbmQoKWAuXG4gKlxuICogLSBBIHNpbmdsZSBzdHJpbmcgaXMgdXNlZCBhcy1pcy5cbiAqIC0gQW4gYXJyYXkgb2Yge0BsaW5rIENzc0NsYXNzfSB2YWx1ZXMgaXMgam9pbmVkIHdpdGggc3BhY2VzIGFmdGVyIGZhbHN5XG4gKiAgIGVudHJpZXMgYXJlIHJlbW92ZWQuXG4gKlxuICogQHNlZSB7QGxpbmsgY3NzQ2xhc3N9IGZvciBjb21wb3NpbmcgY29uZGl0aW9uYWwgY2xhc3MgbmFtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIENzc0NsYXNzZXMgPSBBcnJheTxDc3NDbGFzcz4gfCBDc3NDbGFzc1xuXG4vKipcbiAqIFJldHVybnMgYGNsYXNzTmFtZWAgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1dGh5LCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gKlxuICogRGVzaWduZWQgdG8gY29tcG9zZSBjbGVhbmx5IHdpdGgge0BsaW5rIENzc0NsYXNzZXN9OiBmYWxzeSB2YWx1ZXMgYXJlXG4gKiBmaWx0ZXJlZCBvdXQgYXV0b21hdGljYWxseSwgc28gc3RhdGljIGFuZCBjb25kaXRpb25hbCBjbGFzc2VzIGNhbiBiZSBtaXhlZFxuICogaW4gYSBzaW5nbGUgYXJyYXkgd2l0aG91dCBicmFuY2hpbmcuXG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkuXG4gKiBAcGFyYW0gdmlzaWJsZSAtIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgdGhlIGNsYXNzIGlzIHJldHVybmVkOyBhbnkgb3RoZXJcbiAqICAgdmFsdWUgcHJvZHVjZXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBhcHBlbmQoJ2J1dHRvbicsIHtcbiAqICAgY2xhc3NlczogW1xuICogICAgICdidG4nLFxuICogICAgIGNzc0NsYXNzKCdidG4tLWFjdGl2ZScsIGlzQWN0aXZlKSxcbiAqICAgICBjc3NDbGFzcygnYnRuLS1kaXNhYmxlZCcsIGlzRGlzYWJsZWQpLFxuICogICBdLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcyk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogQ3NzQ2xhc3MsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gdHJ1ZSk6IENzc0NsYXNzIHtcblx0aWYgKHZpc2libGUgIT09IHRydWUpIHJldHVyblxuXHRyZXR1cm4gY2xhc3NOYW1lXG59XG4iLCJ0eXBlIFN0cmlwQXJpYTxTIGV4dGVuZHMgc3RyaW5nPiA9IFMgZXh0ZW5kcyBgYXJpYSR7aW5mZXIgUmVzdH1gID8gVW5jYXBpdGFsaXplPFJlc3Q+IDogU1xuXG50eXBlIEFyaWFTdHJpbmdQcm9wZXJ0aWVzID0ge1xuXHRbUCBpbiBrZXlvZiBBUklBTWl4aW4gYXMgQVJJQU1peGluW1BdIGV4dGVuZHMgc3RyaW5nIHwgbnVsbCA/IFN0cmlwQXJpYTxzdHJpbmcgJiBQPiA6IG5ldmVyXT86IHN0cmluZyB8IG51bGxcbn1cblxuLy8gUHJvcGVydGllcyB0aGF0IG9ubHkgZXhpc3QgYXMgRWxlbWVudFtdIGluIEFSSUFNaXhpbiDigJQgYWNjZXB0cyBhIHN0cmluZyBJRCBvciBhbiBFbGVtZW50IGRpcmVjdGx5XG50eXBlIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMgPSB7XG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQnXX0gKi9cblx0YWN0aXZlRGVzY2VuZGFudD86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQ29udHJvbHNFbGVtZW50cyddfSAqL1xuXHRjb250cm9scz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyddfSAqL1xuXHRkZXNjcmliZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGV0YWlsc0VsZW1lbnRzJ119ICovXG5cdGRldGFpbHM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzJ119ICovXG5cdGVycm9yTWVzc2FnZT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRmxvd1RvRWxlbWVudHMnXX0gKi9cblx0Zmxvd1RvPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnXX0gKi9cblx0bGFiZWxsZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhT3duc0VsZW1lbnRzJ119ICovXG5cdG93bnM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBBcmlhID0gQXJpYVN0cmluZ1Byb3BlcnRpZXMgJiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXG5cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXM6IFJlY29yZDxrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzLCBzdHJpbmc+ID0ge1xuXHRhY3RpdmVEZXNjZW5kYW50OiAnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyxcblx0Y29udHJvbHM6ICdhcmlhLWNvbnRyb2xzJyxcblx0ZGVzY3JpYmVkQnk6ICdhcmlhLWRlc2NyaWJlZGJ5Jyxcblx0ZGV0YWlsczogJ2FyaWEtZGV0YWlscycsXG5cdGVycm9yTWVzc2FnZTogJ2FyaWEtZXJyb3JtZXNzYWdlJyxcblx0Zmxvd1RvOiAnYXJpYS1mbG93dG8nLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYS1sYWJlbGxlZGJ5Jyxcblx0b3duczogJ2FyaWEtb3ducycsXG59XG5cbi8vIGFyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCBpcyBzaW5ndWxhcjsgdGhlIHJlc3QgdGFrZSBFbGVtZW50W11cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzOiBSZWNvcmQ8a2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcywgc3RyaW5nPiA9IHtcblx0YWN0aXZlRGVzY2VuZGFudDogJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcsXG5cdGNvbnRyb2xzOiAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuXHRkZXNjcmliZWRCeTogJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcblx0ZGV0YWlsczogJ2FyaWFEZXRhaWxzRWxlbWVudHMnLFxuXHRlcnJvck1lc3NhZ2U6ICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuXHRmbG93VG86ICdhcmlhRmxvd1RvRWxlbWVudHMnLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYUxhYmVsbGVkQnlFbGVtZW50cycsXG5cdG93bnM6ICdhcmlhT3duc0VsZW1lbnRzJyxcbn1cblxuZnVuY3Rpb24gc2V0UHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdChlbGVtZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPSB2YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBcmlhUHJvcGVydGllcyhhcmlhOiBBcmlhIHwgdW5kZWZpbmVkLCBlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG5cdGlmICghYXJpYSkgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyaWEpKSB7XG5cdFx0aWYgKCEoa2V5IGluIGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRjb25zdCBkb21LZXkgPSBgYXJpYSR7a2V5WzBdLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YFxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgZG9tS2V5LCB2YWx1ZSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IGlkbEtleSA9IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXVxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgaWRsS2V5LCBpZGxLZXkuZW5kc1dpdGgoJ0VsZW1lbnRzJykgPyBbdmFsdWVdIDogdmFsdWUpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSwgdmFsdWUpXG5cdH1cbn1cbiIsImltcG9ydCB7IEVsZW1lbnRPbkhhbmRsZXJzIH0gZnJvbSAnQHJvb3RlZC9ldmVudHMnXG5cbmltcG9ydCB7IHR5cGUgQXJpYSwgYnVpbGRBcmlhUHJvcGVydGllcyB9IGZyb20gJy4vYXJpYS5tdHMnXG5pbXBvcnQgeyBDc3NDbGFzc2VzIH0gZnJvbSAnLi9jbGFzc2VzLm10cydcbmltcG9ydCB7IEh0bWxFbGVtZW50UHJvcGVydGllcyB9IGZyb20gJy4vaHRtbC1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuaW1wb3J0IHsgU3ZnRWxlbWVudFByb3BlcnRpZXMsIFN2Z1RhZ0VsZW1lbnQsIFN2Z1RhZ05hbWUgfSBmcm9tICcuL3N2Zy1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuXG5mdW5jdGlvbiBidWlsZE9uSGFuZGxlcnM8VEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50Pihcblx0b246IEVsZW1lbnRPbkhhbmRsZXJzPFRFbGVtZW50PiB8IHVuZGVmaW5lZCxcblx0ZWxlbWVudDogVEVsZW1lbnQsXG5cdHNpZ25hbDogQWJvcnRTaWduYWwsXG4pOiB2b2lkIHtcblx0aWYgKCFvbikgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMob24pKSB7XG5cdFx0aWYgKCFoYW5kbGVyKSBjb250aW51ZVxuXHRcdGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdGtleSxcblx0XHRcdGV2ZW50ID0+IHZvaWQgKGhhbmRsZXIgYXMgKGV2ZW50PzogRXZlbnQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KShldmVudCksXG5cdFx0XHRzaWduYWwgPyB7IHNpZ25hbCB9IDogdW5kZWZpbmVkLFxuXHRcdClcblx0fVxufVxuXG5mdW5jdGlvbiBidWlsZENsYXNzTGlzdChjbGFzc2VzOiBDc3NDbGFzc2VzIHwgdW5kZWZpbmVkKSB7XG5cdGlmIChjbGFzc2VzID09PSBudWxsIHx8IGNsYXNzZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9XG5cdGlmIChBcnJheS5pc0FycmF5KGNsYXNzZXMpKSByZXR1cm4geyBjbGFzc05hbWU6IGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB9XG5cblx0cmV0dXJuIHsgY2xhc3NOYW1lOiBTdHJpbmcoY2xhc3NlcykgfVxufVxuXG5mdW5jdGlvbiBpc1dyaXRhYmxlRG9tUHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0bGV0IHByb3RvOiBvYmplY3QgfCBudWxsID0gZWxlbWVudFxuXHR3aGlsZSAocHJvdG8pIHtcblx0XHRjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywga2V5KVxuXHRcdGlmIChkZXNjKSByZXR1cm4gISEoZGVzYy53cml0YWJsZSB8fCBkZXNjLnNldClcblx0XHRwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgYXMgb2JqZWN0IHwgbnVsbFxuXHR9XG5cdHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgdHlwZSBFbGVtZW50Q3JlYXRvciA9IChrZXk6IHN0cmluZywgbnM/OiBzdHJpbmcpID0+IEVsZW1lbnRcblxuLyoqXG4gKiBUaGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlIHJldHVybmVkIGJ5IHtAbGluayBjcmVhdGVFbGVtZW50RmFjdG9yeX0uXG4gKiBBY2NlcHRzIEhUTUwgb3IgU1ZHIHRhZyBuYW1lcyBhbmQgcmV0dXJucyB0aGUgbWF0Y2hpbmcgZWxlbWVudCB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRDcmVhdG9yRnVuY3Rpb24ge1xuXHQodGFnOiAnc3ZnJywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPCdzdmcnPik6IFNWR1NWR0VsZW1lbnRcblx0PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEssIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLPj4pOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS11cbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudEZhY3RvcnkgPSBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZhY3RvcnkoY29uc3RydWN0RWxlbWVudDogRWxlbWVudENyZWF0b3IsIHNpZ25hbDogQWJvcnRTaWduYWwpOiBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgSFRNTCBvciBTVkcgZWxlbWVudC4gVGhlIGVsZW1lbnQgaXMgKipub3QqKiBhcHBlbmRlZCB0byB0aGVcblx0ICogZG9jdW1lbnQgYXV0b21hdGljYWxseS5cblx0ICpcblx0ICogKipIVE1MIGVsZW1lbnRzKiog4oCUIHBhc3MgYW55IHRhZyBmcm9tIGBIVE1MRWxlbWVudFRhZ05hbWVNYXBgOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdkaXYnLCB7IGNsYXNzZXM6ICdjYXJkJywgY2hpbGRyZW46IFsuLi5dIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKlNWRyBlbGVtZW50cyoqIOKAlCB1c2UgYCdzdmcnYCBmb3IgdGhlIHJvb3QgZWxlbWVudCwgb3IgcHJlZml4IG90aGVyIFNWR1xuXHQgKiB0YWdzIHdpdGggYCdzdmc6J2AgdG8gYXZvaWQgY29sbGlzaW9ucyB3aXRoIHNhbWUtbmFtZWQgSFRNTCB0YWdzOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdzdmcnLCB7IHZpZXdCb3g6ICcwIDAgMjQgMjQnLCBjaGlsZHJlbjogZWxlbWVudCgnc3ZnOnVzZScsIHsgaHJlZjogdXJsIH0pIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKmBjbGFzc2VzYCoqIOKAlCBhY2NlcHRzIGEgc2luZ2xlIGNsYXNzIHN0cmluZyBvciBhIHtAbGluayBDc3NDbGFzc2VzfSBhcnJheTtcblx0ICogZmFsc3kgZW50cmllcyBhcmUgZmlsdGVyZWQgb3V0IGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqRE9NIHByb3BlcnR5IG5hbWVzKiog4oCUIGZvciBIVE1MIGVsZW1lbnRzLCBvdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgdmlhXG5cdCAqIGBPYmplY3QuYXNzaWduYCBhbmQgbXVzdCB1c2UgRE9NIHByb3BlcnR5IG5hbWVzLCBub3QgSFRNTCBhdHRyaWJ1dGUgbmFtZXM6XG5cdCAqIHwgSFRNTCBhdHRyaWJ1dGUgfCBET00gcHJvcGVydHkgfFxuXHQgKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXxcblx0ICogfCBgZm9yYCAgICAgICAgICB8IGBodG1sRm9yYCAgICB8XG5cdCAqIHwgYHJlYWRvbmx5YCAgICAgfCBgcmVhZE9ubHlgICAgfFxuXHQgKlxuXHQgKiBGb3IgU1ZHIGVsZW1lbnRzLCB3cml0YWJsZSBET00gcHJvcGVydGllcyBhcmUgc2V0IGRpcmVjdGx5OyBhbnl0aGluZyBlbHNlXG5cdCAqIChlLmcuIGB2aWV3Qm94YCwgYGhyZWZgKSBmYWxscyBiYWNrIHRvIGBzZXRBdHRyaWJ1dGVgIGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqQ2hpbGRyZW4qKiDigJQgcGFzcyBhIHNpbmdsZSBgTm9kZWAgb3IgYW4gYXJyYXkgb2YgYE5vZGVgcyB2aWEgdGhlXG5cdCAqIGBjaGlsZHJlbmAgcHJvcGVydHk7IHRoZXkgYXJlIGFwcGVuZGVkIGluIG9yZGVyLlxuXHQgKlxuXHQgKiAqKkV2ZW50IGxpc3RlbmVycyoqIOKAlCB1c2UgdGhlIGBvbmAgcHJvcCB3aXRoIGFuIG9iamVjdCBvZiBldmVudCBoYW5kbGVycy5cblx0ICogTGlzdGVuZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubW91bnRzLlxuXHQgKlxuXHQgKiAqKkFSSUEqKiDigJQgdXNlIHRoZSBgYXJpYWAgcHJvcCBmb3IgQVJJQSBhdHRyaWJ1dGVzLiBBY2NlcHRzIHN0cmluZyBJRHMgb3Jcblx0ICogYEVsZW1lbnRgIHJlZmVyZW5jZXMgZm9yIElETCByZWZsZWN0aW9uIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIGBgYHRzXG5cdCAqIGNvbnN0IGRpdiA9IGVsZW1lbnQoJ2RpdicsIHtcblx0ICogICBjbGFzc2VzOiAnY2FyZCcsXG5cdCAqICAgYXJpYTogeyBsYWJlbDogJ0NhcmQnLCBsYWJlbGxlZEJ5OiBoZWFkaW5nRWwgfSxcblx0ICogICBjaGlsZHJlbjogW1xuXHQgKiAgICAgZWxlbWVudCgnaDInLCB7IHRleHRDb250ZW50OiAnVGl0bGUnIH0pLFxuXHQgKiAgICAgZWxlbWVudCgncCcsICB7IHRleHRDb250ZW50OiAnQm9keScgIH0pLFxuXHQgKiAgIF0sXG5cdCAqIH0pXG5cdCAqXG5cdCAqIGNvbnN0IGljb24gPSBlbGVtZW50KCdzdmcnLCB7XG5cdCAqICAgdmlld0JveDogJzAgMCAyNCAyNCcsXG5cdCAqICAgYXJpYTogeyBoaWRkZW46ICd0cnVlJyB9LFxuXHQgKiAgIGNoaWxkcmVuOiBlbGVtZW50KCdzdmc6dXNlJywgeyBocmVmOiBzcHJpdGVVcmwgfSksXG5cdCAqIH0pXG5cdCAqIGBgYFxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWc6ICdzdmcnLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8J3N2Zyc+KTogU1ZHU1ZHRWxlbWVudFxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8S0VsZW1lbnQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogS0VsZW1lbnQsIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudD4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XVxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBFbGVtZW50IHtcblx0XHRpZiAodGFnID09PSAnc3ZnJyB8fCB0YWcuc3RhcnRzV2l0aCgnc3ZnOicpKSB7XG5cdFx0XHRjb25zdCBhY3R1YWxUYWcgPSB0YWcgPT09ICdzdmcnID8gJ3N2ZycgOiB0YWcuc2xpY2UoNClcblx0XHRcdGNvbnN0IHsgY2xhc3NlcywgY2hpbGRyZW4sIGFyaWEsIG9uLCBzdHlsZSwgLi4uYXR0cmlidXRlcyB9ID0gcHJvcGVydGllcyA/PyB7fVxuXHRcdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQoYWN0dWFsVGFnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKSBhcyBTVkdFbGVtZW50XG5cblx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSBjb250aW51ZVxuXHRcdFx0XHRpZiAoaXNXcml0YWJsZURvbVByb3BlcnR5KG5ld0VsZW1lbnQsIGtleSkpIHtcblx0XHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHsgY2xhc3NOYW1lIH0gPSBidWlsZENsYXNzTGlzdChjbGFzc2VzIGFzIENzc0NsYXNzZXMgfCB1bmRlZmluZWQpXG5cdFx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbGFzc05hbWUpXG5cblx0XHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRcdGJ1aWxkQXJpYVByb3BlcnRpZXMoYXJpYSBhcyBBcmlhIHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50KVxuXHRcdFx0YnVpbGRPbkhhbmRsZXJzKG9uIGFzIEVsZW1lbnRPbkhhbmRsZXJzPEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cblx0XHRcdGFwcGVuZENoaWxkcmVuKG5ld0VsZW1lbnQsIGNoaWxkcmVuIGFzIEFycmF5PE5vZGUgfCBzdHJpbmc+IHwgTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZClcblxuXHRcdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0XHR9XG5cblx0XHRjb25zdCB7IGFyaWEsIGNoaWxkcmVuLCBjbGFzc2VzLCBvbiwgc3R5bGUsIC4uLmFzc2lnbmFibGVQcm9wZXJ0aWVzIH0gPSBwcm9wZXJ0aWVzID8/IHt9XG5cdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQodGFnKSBhcyBIVE1MRWxlbWVudFxuXG5cdFx0Y29uc3QgeyBjbGFzc05hbWUgfSA9IGJ1aWxkQ2xhc3NMaXN0KGNsYXNzZXMgYXMgQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZClcblx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuXG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXNzaWduYWJsZVByb3BlcnRpZXMpKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWVcblx0XHRcdGlmIChpc1dyaXRhYmxlRG9tUHJvcGVydHkobmV3RWxlbWVudCwga2V5KSkge1xuXHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcblx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWEgYXMgQXJpYSB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudClcblx0XHRidWlsZE9uSGFuZGxlcnMob24gYXMgRWxlbWVudE9uSGFuZGxlcnM8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cdFx0YXBwZW5kQ2hpbGRyZW4obmV3RWxlbWVudCwgY2hpbGRyZW4gYXMgQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKVxuXG5cdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0fVxuXG5cdHJldHVybiBjcmVhdGVFbGVtZW50IGFzIHVua25vd24gYXMgRWxlbWVudENyZWF0b3JGdW5jdGlvblxufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZHJlbihlbGVtZW50OiBFbGVtZW50LCBjaGlsZHJlbjogQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcblx0XHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkKVxuXHRcdH1cblx0fVxuXHRlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkcmVuKVxuXHR9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rooted/elements",
3
- "version": "1.0.0-alpha.4",
3
+ "version": "1.0.0-alpha.6",
4
4
  "description": "rooted — html element utilities",
5
5
  "keywords": [
6
6
  "web-components",
@@ -50,11 +50,11 @@
50
50
  "extract-api": "rooted-development extract-api"
51
51
  },
52
52
  "peerDependencies": {
53
- "@rooted/events": "1.0.0-alpha.5"
53
+ "@rooted/events": "1.0.0-alpha.6"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@rooted/development": "workspace:*",
57
- "@rooted/events": "1.0.0-alpha.5",
57
+ "@rooted/events": "1.0.0-alpha.6",
58
58
  "tsx": "^4.19.0"
59
59
  }
60
60
  }