siarashield_workspace 0.0.38 → 0.0.40

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.
@@ -36,6 +36,16 @@ function normalizeNonce(nonce) {
36
36
  function isScriptElement(node) {
37
37
  return node instanceof Element && node.tagName.toLowerCase() === 'script';
38
38
  }
39
+ function isStyleElement(node) {
40
+ return node instanceof Element && node.tagName.toLowerCase() === 'style';
41
+ }
42
+ function isStylesheetLinkElement(node) {
43
+ if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {
44
+ return false;
45
+ }
46
+ const rel = (node.getAttribute('rel') ?? '').toLowerCase();
47
+ return rel === 'stylesheet';
48
+ }
39
49
  export function applyScriptNonce(script, nonce) {
40
50
  const resolvedNonce = normalizeNonce(nonce);
41
51
  if (!resolvedNonce) {
@@ -44,16 +54,43 @@ export function applyScriptNonce(script, nonce) {
44
54
  script.setAttribute('nonce', resolvedNonce);
45
55
  script.nonce = resolvedNonce;
46
56
  }
47
- function applyTrackedNonce(node) {
48
- if (!isScriptElement(node)) {
57
+ function applyStyleNonce(style, nonce) {
58
+ const resolvedNonce = normalizeNonce(nonce);
59
+ if (!resolvedNonce) {
49
60
  return;
50
61
  }
62
+ style.setAttribute('nonce', resolvedNonce);
63
+ style.nonce = resolvedNonce;
64
+ }
65
+ function applyLinkNonce(link, nonce) {
66
+ const resolvedNonce = normalizeNonce(nonce);
67
+ if (!resolvedNonce) {
68
+ return;
69
+ }
70
+ link.setAttribute('nonce', resolvedNonce);
71
+ // `HTMLLinkElement.nonce` exists in modern browsers.
72
+ link.nonce = resolvedNonce;
73
+ }
74
+ function applyNonceToNode(node, nonce) {
75
+ if (isScriptElement(node)) {
76
+ applyScriptNonce(node, nonce);
77
+ return;
78
+ }
79
+ if (isStyleElement(node)) {
80
+ applyStyleNonce(node, nonce);
81
+ return;
82
+ }
83
+ if (isStylesheetLinkElement(node)) {
84
+ applyLinkNonce(node, nonce);
85
+ }
86
+ }
87
+ function applyTrackedNonce(node) {
51
88
  const documentRef = node.ownerDocument;
52
89
  if (!documentRef) {
53
90
  return;
54
91
  }
55
92
  const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);
56
- applyScriptNonce(node, nonce);
93
+ applyNonceToNode(node, nonce);
57
94
  }
58
95
  function getTrackedInlineCaptchaScripts(documentRef) {
59
96
  const patchState = getDynamicScriptNoncePatchState();
@@ -86,16 +123,16 @@ function shouldSkipDuplicateInlineCaptchaScript(node) {
86
123
  function walkAndApplyNonce(root, nonce) {
87
124
  if (!nonce)
88
125
  return;
89
- // Fast path: root itself is a script.
90
- if (isScriptElement(root)) {
91
- applyScriptNonce(root, nonce);
126
+ // Fast path: root itself is nonceable.
127
+ if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {
128
+ applyNonceToNode(root, nonce);
92
129
  return;
93
130
  }
94
- // Common path for jQuery: append DocumentFragment containing scripts created via HTML parsing.
131
+ // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.
95
132
  if (root instanceof Element || root instanceof DocumentFragment) {
96
- const scripts = root.querySelectorAll?.('script') ?? [];
97
- for (const script of scripts) {
98
- applyScriptNonce(script, nonce);
133
+ const nonceable = root.querySelectorAll?.('script,style,link[rel="stylesheet"]') ?? [];
134
+ for (const el of nonceable) {
135
+ applyNonceToNode(el, nonce);
99
136
  }
100
137
  }
101
138
  }
@@ -127,6 +164,32 @@ function teardownNonceMutationObserver(documentRef) {
127
164
  observer.disconnect();
128
165
  patchState.observerByDocument.delete(documentRef);
129
166
  }
167
+ function injectNonceIntoHtml(html, nonce) {
168
+ const resolvedNonce = normalizeNonce(nonce);
169
+ if (!resolvedNonce)
170
+ return html;
171
+ // If tag already includes nonce, leave it.
172
+ const withNonceAttr = ` nonce="${resolvedNonce}"`;
173
+ const addNonceToTag = (tag) => {
174
+ const openTag = new RegExp(`<${tag}(\\s[^>]*?)?>`, 'gi');
175
+ return (input) => input.replace(openTag, (match) => {
176
+ if (/[\s"']nonce\s*=/.test(match))
177
+ return match;
178
+ // Insert nonce before closing `>`
179
+ return match.replace(/>$/, `${withNonceAttr}>`);
180
+ });
181
+ };
182
+ // For link rel=stylesheet, add nonce when missing.
183
+ const linkOpenTag = /<link\b[^>]*>/gi;
184
+ const addNonceToStylesheetLink = (input) => input.replace(linkOpenTag, (match) => {
185
+ if (/[\s"']nonce\s*=/.test(match))
186
+ return match;
187
+ if (!/\brel\s*=\s*["']?stylesheet["']?/i.test(match))
188
+ return match;
189
+ return match.replace(/>$/, `${withNonceAttr}>`);
190
+ });
191
+ return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));
192
+ }
130
193
  function patchDynamicScriptInsertion() {
131
194
  const patchState = getDynamicScriptNoncePatchState();
132
195
  if (patchState.patched) {
@@ -135,6 +198,7 @@ function patchDynamicScriptInsertion() {
135
198
  const originalAppendChild = Node.prototype.appendChild;
136
199
  const originalInsertBefore = Node.prototype.insertBefore;
137
200
  const originalReplaceChild = Node.prototype.replaceChild;
201
+ const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;
138
202
  Node.prototype.appendChild = function (node) {
139
203
  // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.
140
204
  if (shouldSkipDuplicateInlineCaptchaScript(node)) {
@@ -154,6 +218,12 @@ function patchDynamicScriptInsertion() {
154
218
  applyTrackedNonce(node);
155
219
  return originalReplaceChild.call(this, node, child);
156
220
  };
221
+ Element.prototype.insertAdjacentHTML = function (position, text) {
222
+ const documentRef = this.ownerDocument;
223
+ const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;
224
+ const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;
225
+ return originalInsertAdjacentHTML.call(this, position, patchedText);
226
+ };
157
227
  patchState.patched = true;
158
228
  }
159
229
  export function resolveCspNonce(documentRef, explicitNonce) {
@@ -222,4 +292,4 @@ export function loadScript(documentRef, src, options) {
222
292
  pendingBySrc.set(src, pending);
223
293
  return pending;
224
294
  }
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFD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WUFDekIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxnREFBZ0QsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBTY3JpcHRTdGF0dXMgPSAnbG9hZGluZycgfCAnbG9hZGVkJyB8ICdlcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0TG9hZE9wdGlvbnMge1xuICBub25jZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBub25jZUJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIHN0cmluZz47XG4gIG9ic2VydmVyQnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj47XG4gIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj47XG4gIHBhdGNoZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQgPSBuZXcgV2Vha01hcDxEb2N1bWVudCwgTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPj4oKTtcbmNvbnN0IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+PigpO1xuY29uc3QgRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZID0gJ19fc2lhcmFTaGllbGREeW5hbWljU2NyaXB0Tm9uY2VTdGF0ZV9fJztcblxuZnVuY3Rpb24gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPiB7XG4gIGxldCBzdGF0dXNCeVNyYyA9IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFzdGF0dXNCeVNyYykge1xuICAgIHN0YXR1c0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4oKTtcbiAgICBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULnNldChkb2N1bWVudFJlZiwgc3RhdHVzQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXR1c0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgcGVuZGluZ0J5U3JjID0gU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFwZW5kaW5nQnlTcmMpIHtcbiAgICBwZW5kaW5nQnlTcmMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcbiAgICBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHBlbmRpbmdCeVNyYyk7XG4gIH1cblxuICByZXR1cm4gcGVuZGluZ0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk6IER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0/OiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXSkge1xuICAgIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0gPSB7XG4gICAgICBub25jZUJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+KCksXG4gICAgICBvYnNlcnZlckJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNdXRhdGlvbk9ic2VydmVyPigpLFxuICAgICAgaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj4oKSxcbiAgICAgIHBhdGNoZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTm9uY2Uobm9uY2U/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHJpbW1lZCA9IG5vbmNlPy50cmltKCk7XG4gIHJldHVybiB0cmltbWVkID8gdHJpbW1lZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNTY3JpcHRFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2NyaXB0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcbiAgaWYgKCFyZXNvbHZlZE5vbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xuICBpZiAoIWlzU2NyaXB0RWxlbWVudChub2RlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm9uY2UgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCkubm9uY2VCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBsZXQgdHJhY2tlZFNjcmlwdHMgPSBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghdHJhY2tlZFNjcmlwdHMpIHtcbiAgICB0cmFja2VkU2NyaXB0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHBhdGNoU3RhdGUuaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCB0cmFja2VkU2NyaXB0cyk7XG4gIH1cblxuICByZXR1cm4gdHJhY2tlZFNjcmlwdHM7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgaWYgKCFpc1NjcmlwdEVsZW1lbnQobm9kZSkgfHwgQm9vbGVhbihub2RlLnNyYykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzY3JpcHRCb2R5ID0gKG5vZGUudGV4dENvbnRlbnQgPz8gJycpLnRyaW0oKTtcbiAgaWYgKCFzY3JpcHRCb2R5IHx8ICFzY3JpcHRCb2R5LmluY2x1ZGVzKCdjdXJyZW50TGFuZ0NvZGUnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdHJhY2tlZFNjcmlwdHMgPSBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWYpO1xuICBpZiAodHJhY2tlZFNjcmlwdHMuaGFzKHNjcmlwdEJvZHkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cmFja2VkU2NyaXB0cy5hZGQoc2NyaXB0Qm9keSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gd2Fsa0FuZEFwcGx5Tm9uY2Uocm9vdDogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFub25jZSkgcmV0dXJuO1xuXG4gIC8vIEZhc3QgcGF0aDogcm9vdCBpdHNlbGYgaXMgYSBzY3JpcHQuXG4gIGlmIChpc1NjcmlwdEVsZW1lbnQocm9vdCkpIHtcbiAgICBhcHBseVNjcmlwdE5vbmNlKHJvb3QsIG5vbmNlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDb21tb24gcGF0aCBmb3IgalF1ZXJ5OiBhcHBlbmQgRG9jdW1lbnRGcmFnbWVudCBjb250YWluaW5nIHNjcmlwdHMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxuICBpZiAocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb25zdCBzY3JpcHRzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NjcmlwdCcpID8/IFtdO1xuICAgIGZvciAoY29uc3Qgc2NyaXB0IG9mIHNjcmlwdHMpIHtcbiAgICAgIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0IGFzIEhUTUxTY3JpcHRFbGVtZW50LCBub25jZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgaWYgKHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiB7XG4gICAgY29uc3Qgbm9uY2UgPSBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICAgIGlmICghbm9uY2UpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiByZWNvcmQuYWRkZWROb2Rlcykge1xuICAgICAgICB3YWxrQW5kQXBwbHlOb25jZShub2RlLCBub25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBPYnNlcnZlIHRoZSBmdWxsIGRvY3VtZW50IGJlY2F1c2Ugc2NyaXB0cyBjYW4gYmUgaW5qZWN0ZWQgaW50byBib2R5L2hlYWQgYnkgdmVuZG9yL2pRdWVyeS5cbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50UmVmLmRvY3VtZW50RWxlbWVudCA/PyBkb2N1bWVudFJlZjtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCBvYnNlcnZlcik7XG59XG5cbmZ1bmN0aW9uIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBjb25zdCBvYnNlcnZlciA9IHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghb2JzZXJ2ZXIpIHJldHVybjtcbiAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xufVxuXG5mdW5jdGlvbiBwYXRjaER5bmFtaWNTY3JpcHRJbnNlcnRpb24oKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLnBhdGNoZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbEFwcGVuZENoaWxkID0gTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QmVmb3JlID0gTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO1xuICBjb25zdCBvcmlnaW5hbFJlcGxhY2VDaGlsZCA9IE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZDtcblxuICBOb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogVCk6IFQge1xuICAgIC8vIFZlbmRvciBjYXB0Y2hhIGluamVjdHMgYW4gaW5saW5lIHNuaXBwZXQgd2l0aCBgY3VycmVudExhbmdDb2RlYCB0aGF0IGNyYXNoZXMgd2hlbiBhcHBlbmRlZCB0d2ljZS5cbiAgICBpZiAoc2hvdWxkU2tpcER1cGxpY2F0ZUlubGluZUNhcHRjaGFTY3JpcHQobm9kZSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxBcHBlbmRDaGlsZC5jYWxsKHRoaXMsIG5vZGUpIGFzIFQ7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBULCBjaGlsZDogTm9kZSB8IG51bGwpOiBUIHtcbiAgICBpZiAoc2hvdWxkU2tpcER1cGxpY2F0ZUlubGluZUNhcHRjaGFTY3JpcHQobm9kZSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxJbnNlcnRCZWZvcmUuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IE5vZGUsIGNoaWxkOiBUKTogVCB7XG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVwbGFjZUNoaWxkLmNhbGwodGhpcywgbm9kZSwgY2hpbGQpIGFzIFQ7XG4gIH07XG5cbiAgcGF0Y2hTdGF0ZS5wYXRjaGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQsIGV4cGxpY2l0Tm9uY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXNvbHZlZEV4cGxpY2l0Tm9uY2UgPSBub3JtYWxpemVOb25jZShleHBsaWNpdE5vbmNlKTtcbiAgaWYgKHJlc29sdmVkRXhwbGljaXROb25jZSkge1xuICAgIHJldHVybiByZXNvbHZlZEV4cGxpY2l0Tm9uY2U7XG4gIH1cblxuICBjb25zdCBzY3JpcHRXaXRoTm9uY2UgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pignc2NyaXB0W25vbmNlXScpO1xuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcbiAgaWYgKG5vbmNlRnJvbVNjcmlwdCkge1xuICAgIHJldHVybiBub25jZUZyb21TY3JpcHQ7XG4gIH1cblxuICBjb25zdCBub25jZU1ldGEgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxNZXRhRWxlbWVudD4oJ21ldGFbbmFtZT1cImNzcC1ub25jZVwiXScpO1xuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQsIGV4cGxpY2l0Tm9uY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gcmVzb2x2ZUNzcE5vbmNlKGRvY3VtZW50UmVmLCBleHBsaWNpdE5vbmNlKTtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcblxuICBpZiAocmVzb2x2ZWROb25jZSkge1xuICAgIC8vIERPTSBwYXRjaGluZyBpcyBvbmx5IG5lZWRlZCB3aGVuIGEgQ1NQIG5vbmNlIG11c3QgYmUgcHJvcGFnYXRlZC5cbiAgICBwYXRjaER5bmFtaWNTY3JpcHRJbnNlcnRpb24oKTtcbiAgICBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5zZXQoZG9jdW1lbnRSZWYsIHJlc29sdmVkTm9uY2UpO1xuICAgIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZik7XG4gIH0gZWxzZSB7XG4gICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbiAgICB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZik7XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWROb25jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoZG9jdW1lbnRSZWY6IERvY3VtZW50LCBzcmM6IHN0cmluZywgb3B0aW9ucz86IFNjcmlwdExvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG5vbmNlID0gbm9ybWFsaXplTm9uY2Uob3B0aW9ucz8ubm9uY2UpO1xuICBjb25zdCBzdGF0dXNCeVNyYyA9IGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgcGVuZGluZ0J5U3JjID0gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2UoZXhpc3RpbmcsIG5vbmNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAoc3RhdHVzID09PSAnbG9hZGVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nQnlTcmMuZ2V0KHNyYyk7XG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHN0YXR1c0J5U3JjLnNldChzcmMsICdsb2FkaW5nJyk7XG5cbiAgY29uc3QgcGVuZGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudFJlZi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgYXBwbHlTY3JpcHROb25jZShzY3JpcHQsIG5vbmNlKTtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRlZCcpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH07XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnZXJyb3InKTtcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHNjcmlwdDogJHtzcmN9LiBDaGVjayBDU1AgYWxsb3dsaXN0IGFuZCBub25jZSBjb25maWd1cmF0aW9uLmApKTtcbiAgICB9O1xuICAgIGRvY3VtZW50UmVmLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfSk7XG5cbiAgcGVuZGluZ0J5U3JjLnNldChzcmMsIHBlbmRpbmcpO1xuICByZXR1cm4gcGVuZGluZztcbn1cbiJdfQ==
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFDakQsV0FBVyxDQUFDLDhCQUE4QixDQUFDLEdBQUc7WUFDNUMsZUFBZSxFQUFFLElBQUksT0FBTyxFQUFvQjtZQUNoRCxrQkFBa0IsRUFBRSxJQUFJLE9BQU8sRUFBOEI7WUFDN0QsNkJBQTZCLEVBQUUsSUFBSSxPQUFPLEVBQXlCO1lBQ25FLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFxQjtJQUMzQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFVO0lBQ2pDLE9BQU8sSUFBSSxZQUFZLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBVTtJQUNoQyxPQUFPLElBQUksWUFBWSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUM7QUFDM0UsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsSUFBVTtJQUN6QyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0QsT0FBTyxHQUFHLEtBQUssWUFBWSxDQUFDO0FBQzlCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBeUIsRUFBRSxLQUFjO0lBQ3hFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBdUIsRUFBRSxLQUFjO0lBQzlELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBcUIsRUFBRSxLQUFjO0lBQzNELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxQyxxREFBcUQ7SUFDcEQsSUFBNkMsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVUsRUFBRSxLQUFjO0lBQ2xELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVU7SUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRywrQkFBK0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakYsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFdBQXFCO0lBQzNELE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDckQsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDbkMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLHNDQUFzQyxDQUFDLElBQVU7SUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBVSxFQUFFLEtBQWM7SUFDbkQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPO0lBRW5CLHVDQUF1QztJQUN2QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuRixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTztJQUNULENBQUM7SUFFRCw2RkFBNkY7SUFDN0YsSUFBSSxJQUFJLFlBQVksT0FBTyxJQUFJLElBQUksWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZGLEtBQUssTUFBTSxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsZ0JBQWdCLENBQUMsRUFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFDLFdBQXFCO0lBQ3hELE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDckQsSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDaEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsNkZBQTZGO0lBQzdGLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxlQUFlLElBQUksV0FBVyxDQUFDO0lBQ3hELFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBQyxXQUFxQjtJQUMxRCxNQUFNLFVBQVUsR0FBRywrQkFBK0IsRUFBRSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPO0lBQ3RCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQVksRUFBRSxLQUFhO0lBQ3RELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRWhDLDJDQUEyQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxXQUFXLGFBQWEsR0FBRyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBdUIsRUFBRSxFQUFFO1FBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ2hELGtDQUFrQztZQUNsQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGLG1EQUFtRDtJQUNuRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztJQUN0QyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNuQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoRCxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBRUQsU0FBUywyQkFBMkI7SUFDbEMsTUFBTSxVQUFVLEdBQUcsK0JBQStCLEVBQUUsQ0FBQztJQUNyRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUN6RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3pELE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztJQUV4RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUEwQixJQUFPO1FBQzVELG9HQUFvRztRQUNwRyxJQUFJLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBTSxDQUFDO0lBQ25ELENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQTBCLElBQU8sRUFBRSxLQUFrQjtRQUNqRixJQUFJLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQU0sQ0FBQztJQUMzRCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUEwQixJQUFVLEVBQUUsS0FBUTtRQUMxRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBTSxDQUFDO0lBQzNELENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxRQUF3QixFQUFFLElBQVk7UUFDckYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRSxPQUFPLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFdBQXFCLEVBQUUsYUFBc0I7SUFDM0UsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQW9CLGVBQWUsQ0FBQyxDQUFDO0lBQ3RGLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFrQix3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZGLE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQXFCLEVBQUUsYUFBc0I7SUFDOUUsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRywrQkFBK0IsRUFBRSxDQUFDO0lBRXJELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsbUVBQW1FO1FBQ25FLDJCQUEyQixFQUFFLENBQUM7UUFDOUIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7U0FBTSxDQUFDO1FBQ04sVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFdBQXFCLEVBQUUsR0FBVyxFQUFFLE9BQTJCO0lBQ3hGLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFvQixlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFFdEYsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3BELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ25CLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxnREFBZ0QsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBTY3JpcHRTdGF0dXMgPSAnbG9hZGluZycgfCAnbG9hZGVkJyB8ICdlcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0TG9hZE9wdGlvbnMge1xuICBub25jZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBub25jZUJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIHN0cmluZz47XG4gIG9ic2VydmVyQnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj47XG4gIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj47XG4gIHBhdGNoZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQgPSBuZXcgV2Vha01hcDxEb2N1bWVudCwgTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPj4oKTtcbmNvbnN0IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+PigpO1xuY29uc3QgRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZID0gJ19fc2lhcmFTaGllbGREeW5hbWljU2NyaXB0Tm9uY2VTdGF0ZV9fJztcblxuZnVuY3Rpb24gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPiB7XG4gIGxldCBzdGF0dXNCeVNyYyA9IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFzdGF0dXNCeVNyYykge1xuICAgIHN0YXR1c0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4oKTtcbiAgICBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULnNldChkb2N1bWVudFJlZiwgc3RhdHVzQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXR1c0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgcGVuZGluZ0J5U3JjID0gU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFwZW5kaW5nQnlTcmMpIHtcbiAgICBwZW5kaW5nQnlTcmMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcbiAgICBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHBlbmRpbmdCeVNyYyk7XG4gIH1cblxuICByZXR1cm4gcGVuZGluZ0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk6IER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0/OiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXSkge1xuICAgIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0gPSB7XG4gICAgICBub25jZUJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+KCksXG4gICAgICBvYnNlcnZlckJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNdXRhdGlvbk9ic2VydmVyPigpLFxuICAgICAgaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj4oKSxcbiAgICAgIHBhdGNoZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTm9uY2Uobm9uY2U/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHJpbW1lZCA9IG5vbmNlPy50cmltKCk7XG4gIHJldHVybiB0cmltbWVkID8gdHJpbW1lZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNTY3JpcHRFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2NyaXB0Jztcbn1cblxuZnVuY3Rpb24gaXNTdHlsZUVsZW1lbnQobm9kZTogTm9kZSk6IG5vZGUgaXMgSFRNTFN0eWxlRWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3N0eWxlJztcbn1cblxuZnVuY3Rpb24gaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZTogTm9kZSk6IG5vZGUgaXMgSFRNTExpbmtFbGVtZW50IHtcbiAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnbGluaycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcmVsID0gKG5vZGUuZ2V0QXR0cmlidXRlKCdyZWwnKSA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHJlbCA9PT0gJ3N0eWxlc2hlZXQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTY3JpcHROb25jZShzY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzY3JpcHQuc2V0QXR0cmlidXRlKCdub25jZScsIHJlc29sdmVkTm9uY2UpO1xuICBzY3JpcHQubm9uY2UgPSByZXNvbHZlZE5vbmNlO1xufVxuXG5mdW5jdGlvbiBhcHBseVN0eWxlTm9uY2Uoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc3R5bGUubm9uY2UgPSByZXNvbHZlZE5vbmNlO1xufVxuXG5mdW5jdGlvbiBhcHBseUxpbmtOb25jZShsaW5rOiBIVE1MTGlua0VsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxpbmsuc2V0QXR0cmlidXRlKCdub25jZScsIHJlc29sdmVkTm9uY2UpO1xuICAvLyBgSFRNTExpbmtFbGVtZW50Lm5vbmNlYCBleGlzdHMgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAobGluayBhcyBIVE1MTGlua0VsZW1lbnQgJiB7IG5vbmNlPzogc3RyaW5nIH0pLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlOb25jZVRvTm9kZShub2RlOiBOb2RlLCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaXNTY3JpcHRFbGVtZW50KG5vZGUpKSB7XG4gICAgYXBwbHlTY3JpcHROb25jZShub2RlLCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1N0eWxlRWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U3R5bGVOb25jZShub2RlLCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5TGlua05vbmNlKG5vZGUsIG5vbmNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRyYWNrZWROb25jZShub2RlOiBOb2RlKTogdm9pZCB7XG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm9uY2UgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCkubm9uY2VCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGFwcGx5Tm9uY2VUb05vZGUobm9kZSwgbm9uY2UpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBsZXQgdHJhY2tlZFNjcmlwdHMgPSBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghdHJhY2tlZFNjcmlwdHMpIHtcbiAgICB0cmFja2VkU2NyaXB0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHBhdGNoU3RhdGUuaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCB0cmFja2VkU2NyaXB0cyk7XG4gIH1cblxuICByZXR1cm4gdHJhY2tlZFNjcmlwdHM7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgaWYgKCFpc1NjcmlwdEVsZW1lbnQobm9kZSkgfHwgQm9vbGVhbihub2RlLnNyYykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzY3JpcHRCb2R5ID0gKG5vZGUudGV4dENvbnRlbnQgPz8gJycpLnRyaW0oKTtcbiAgaWYgKCFzY3JpcHRCb2R5IHx8ICFzY3JpcHRCb2R5LmluY2x1ZGVzKCdjdXJyZW50TGFuZ0NvZGUnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdHJhY2tlZFNjcmlwdHMgPSBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWYpO1xuICBpZiAodHJhY2tlZFNjcmlwdHMuaGFzKHNjcmlwdEJvZHkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cmFja2VkU2NyaXB0cy5hZGQoc2NyaXB0Qm9keSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gd2Fsa0FuZEFwcGx5Tm9uY2Uocm9vdDogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFub25jZSkgcmV0dXJuO1xuXG4gIC8vIEZhc3QgcGF0aDogcm9vdCBpdHNlbGYgaXMgbm9uY2VhYmxlLlxuICBpZiAoaXNTY3JpcHRFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVzaGVldExpbmtFbGVtZW50KHJvb3QpKSB7XG4gICAgYXBwbHlOb25jZVRvTm9kZShyb290LCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ29tbW9uIHBhdGggZm9yIGpRdWVyeTogYXBwZW5kIERvY3VtZW50RnJhZ21lbnQgY29udGFpbmluZyBub2RlcyBjcmVhdGVkIHZpYSBIVE1MIHBhcnNpbmcuXG4gIGlmIChyb290IGluc3RhbmNlb2YgRWxlbWVudCB8fCByb290IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkge1xuICAgIGNvbnN0IG5vbmNlYWJsZSA9IHJvb3QucXVlcnlTZWxlY3RvckFsbD8uKCdzY3JpcHQsc3R5bGUsbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdJykgPz8gW107XG4gICAgZm9yIChjb25zdCBlbCBvZiBub25jZWFibGUpIHtcbiAgICAgIGFwcGx5Tm9uY2VUb05vZGUoZWwgYXMgdW5rbm93biBhcyBOb2RlLCBub25jZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgaWYgKHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiB7XG4gICAgY29uc3Qgbm9uY2UgPSBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICAgIGlmICghbm9uY2UpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiByZWNvcmQuYWRkZWROb2Rlcykge1xuICAgICAgICB3YWxrQW5kQXBwbHlOb25jZShub2RlLCBub25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBPYnNlcnZlIHRoZSBmdWxsIGRvY3VtZW50IGJlY2F1c2Ugc2NyaXB0cyBjYW4gYmUgaW5qZWN0ZWQgaW50byBib2R5L2hlYWQgYnkgdmVuZG9yL2pRdWVyeS5cbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50UmVmLmRvY3VtZW50RWxlbWVudCA/PyBkb2N1bWVudFJlZjtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCBvYnNlcnZlcik7XG59XG5cbmZ1bmN0aW9uIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBjb25zdCBvYnNlcnZlciA9IHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghb2JzZXJ2ZXIpIHJldHVybjtcbiAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xufVxuXG5mdW5jdGlvbiBpbmplY3ROb25jZUludG9IdG1sKGh0bWw6IHN0cmluZywgbm9uY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkgcmV0dXJuIGh0bWw7XG5cbiAgLy8gSWYgdGFnIGFscmVhZHkgaW5jbHVkZXMgbm9uY2UsIGxlYXZlIGl0LlxuICBjb25zdCB3aXRoTm9uY2VBdHRyID0gYCBub25jZT1cIiR7cmVzb2x2ZWROb25jZX1cImA7XG5cbiAgY29uc3QgYWRkTm9uY2VUb1RhZyA9ICh0YWc6ICdzY3JpcHQnIHwgJ3N0eWxlJykgPT4ge1xuICAgIGNvbnN0IG9wZW5UYWcgPSBuZXcgUmVnRXhwKGA8JHt0YWd9KFxcXFxzW14+XSo/KT8+YCwgJ2dpJyk7XG4gICAgcmV0dXJuIChpbnB1dDogc3RyaW5nKSA9PlxuICAgICAgaW5wdXQucmVwbGFjZShvcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgICAgaWYgKC9bXFxzXCInXW5vbmNlXFxzKj0vLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgIC8vIEluc2VydCBub25jZSBiZWZvcmUgY2xvc2luZyBgPmBcbiAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoLz4kLywgYCR7d2l0aE5vbmNlQXR0cn0+YCk7XG4gICAgICB9KTtcbiAgfTtcblxuICAvLyBGb3IgbGluayByZWw9c3R5bGVzaGVldCwgYWRkIG5vbmNlIHdoZW4gbWlzc2luZy5cbiAgY29uc3QgbGlua09wZW5UYWcgPSAvPGxpbmtcXGJbXj5dKj4vZ2k7XG4gIGNvbnN0IGFkZE5vbmNlVG9TdHlsZXNoZWV0TGluayA9IChpbnB1dDogc3RyaW5nKSA9PlxuICAgIGlucHV0LnJlcGxhY2UobGlua09wZW5UYWcsIChtYXRjaCkgPT4ge1xuICAgICAgaWYgKC9bXFxzXCInXW5vbmNlXFxzKj0vLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICBpZiAoIS9cXGJyZWxcXHMqPVxccypbXCInXT9zdHlsZXNoZWV0W1wiJ10/L2kudGVzdChtYXRjaCkpIHJldHVybiBtYXRjaDtcbiAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgIH0pO1xuXG4gIHJldHVybiBhZGROb25jZVRvU3R5bGVzaGVldExpbmsoYWRkTm9uY2VUb1RhZygnc3R5bGUnKShhZGROb25jZVRvVGFnKCdzY3JpcHQnKShodG1sKSkpO1xufVxuXG5mdW5jdGlvbiBwYXRjaER5bmFtaWNTY3JpcHRJbnNlcnRpb24oKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLnBhdGNoZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbEFwcGVuZENoaWxkID0gTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QmVmb3JlID0gTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO1xuICBjb25zdCBvcmlnaW5hbFJlcGxhY2VDaGlsZCA9IE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZDtcbiAgY29uc3Qgb3JpZ2luYWxJbnNlcnRBZGphY2VudEhUTUwgPSBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUw7XG5cbiAgTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQpOiBUIHtcbiAgICAvLyBWZW5kb3IgY2FwdGNoYSBpbmplY3RzIGFuIGlubGluZSBzbmlwcGV0IHdpdGggYGN1cnJlbnRMYW5nQ29kZWAgdGhhdCBjcmFzaGVzIHdoZW4gYXBwZW5kZWQgdHdpY2UuXG4gICAgaWYgKHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsQXBwZW5kQ2hpbGQuY2FsbCh0aGlzLCBub2RlKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogVCwgY2hpbGQ6IE5vZGUgfCBudWxsKTogVCB7XG4gICAgaWYgKHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QmVmb3JlLmNhbGwodGhpcywgbm9kZSwgY2hpbGQpIGFzIFQ7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBOb2RlLCBjaGlsZDogVCk6IFQge1xuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbFJlcGxhY2VDaGlsZC5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIEVsZW1lbnQucHJvdG90eXBlLmluc2VydEFkamFjZW50SFRNTCA9IGZ1bmN0aW9uIChwb3NpdGlvbjogSW5zZXJ0UG9zaXRpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5vd25lckRvY3VtZW50O1xuICAgIGNvbnN0IG5vbmNlID0gZG9jdW1lbnRSZWYgPyBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhdGNoZWRUZXh0ID0gbm9uY2UgPyBpbmplY3ROb25jZUludG9IdG1sKHRleHQsIG5vbmNlKSA6IHRleHQ7XG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MLmNhbGwodGhpcywgcG9zaXRpb24sIHBhdGNoZWRUZXh0KTtcbiAgfTtcblxuICBwYXRjaFN0YXRlLnBhdGNoZWQgPSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNzcE5vbmNlKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgZXhwbGljaXROb25jZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkRXhwbGljaXROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKGV4cGxpY2l0Tm9uY2UpO1xuICBpZiAocmVzb2x2ZWRFeHBsaWNpdE5vbmNlKSB7XG4gICAgcmV0dXJuIHJlc29sdmVkRXhwbGljaXROb25jZTtcbiAgfVxuXG4gIGNvbnN0IHNjcmlwdFdpdGhOb25jZSA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KCdzY3JpcHRbbm9uY2VdJyk7XG4gIGNvbnN0IG5vbmNlRnJvbVNjcmlwdCA9IG5vcm1hbGl6ZU5vbmNlKHNjcmlwdFdpdGhOb25jZT8uZ2V0QXR0cmlidXRlKCdub25jZScpID8/IHNjcmlwdFdpdGhOb25jZT8ubm9uY2UpO1xuICBpZiAobm9uY2VGcm9tU2NyaXB0KSB7XG4gICAgcmV0dXJuIG5vbmNlRnJvbVNjcmlwdDtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlTWV0YSA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwiY3NwLW5vbmNlXCJdJyk7XG4gIHJldHVybiBub3JtYWxpemVOb25jZShub25jZU1ldGE/LmNvbnRlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVNjcmlwdE5vbmNlKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgZXhwbGljaXROb25jZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSByZXNvbHZlQ3NwTm9uY2UoZG9jdW1lbnRSZWYsIGV4cGxpY2l0Tm9uY2UpO1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuXG4gIGlmIChyZXNvbHZlZE5vbmNlKSB7XG4gICAgLy8gRE9NIHBhdGNoaW5nIGlzIG9ubHkgbmVlZGVkIHdoZW4gYSBDU1Agbm9uY2UgbXVzdCBiZSBwcm9wYWdhdGVkLlxuICAgIHBhdGNoRHluYW1pY1NjcmlwdEluc2VydGlvbigpO1xuICAgIHBhdGNoU3RhdGUubm9uY2VCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgcmVzb2x2ZWROb25jZSk7XG4gICAgZW5zdXJlTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgfSBlbHNlIHtcbiAgICBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xuICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZE5vbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNjcmlwdChkb2N1bWVudFJlZjogRG9jdW1lbnQsIHNyYzogc3RyaW5nLCBvcHRpb25zPzogU2NyaXB0TG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgbm9uY2UgPSBub3JtYWxpemVOb25jZShvcHRpb25zPy5ub25jZSk7XG4gIGNvbnN0IHN0YXR1c0J5U3JjID0gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWYpO1xuICBjb25zdCBwZW5kaW5nQnlTcmMgPSBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWYpO1xuICBjb25zdCBleGlzdGluZyA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KGBzY3JpcHRbc3JjPVwiJHtzcmN9XCJdYCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgYXBwbHlTY3JpcHROb25jZShleGlzdGluZywgbm9uY2UpO1xuICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c0J5U3JjLmdldChzcmMpO1xuICAgIGlmIChzdGF0dXMgPT09ICdsb2FkZWQnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZyA9IHBlbmRpbmdCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAocGVuZGluZykge1xuICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRpbmcnKTtcblxuICBjb25zdCBwZW5kaW5nID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50UmVmLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBhcHBseVNjcmlwdE5vbmNlKHNjcmlwdCwgbm9uY2UpO1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnbG9hZGVkJyk7XG4gICAgICBwZW5kaW5nQnlTcmMuZGVsZXRlKHNyYyk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHN0YXR1c0J5U3JjLnNldChzcmMsICdlcnJvcicpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiAke3NyY30uIENoZWNrIENTUCBhbGxvd2xpc3QgYW5kIG5vbmNlIGNvbmZpZ3VyYXRpb24uYCkpO1xuICAgIH07XG4gICAgZG9jdW1lbnRSZWYuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9KTtcblxuICBwZW5kaW5nQnlTcmMuc2V0KHNyYywgcGVuZGluZyk7XG4gIHJldHVybiBwZW5kaW5nO1xufVxuIl19
@@ -180,6 +180,16 @@ function normalizeNonce(nonce) {
180
180
  function isScriptElement(node) {
181
181
  return node instanceof Element && node.tagName.toLowerCase() === 'script';
182
182
  }
183
+ function isStyleElement(node) {
184
+ return node instanceof Element && node.tagName.toLowerCase() === 'style';
185
+ }
186
+ function isStylesheetLinkElement(node) {
187
+ if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {
188
+ return false;
189
+ }
190
+ const rel = (node.getAttribute('rel') ?? '').toLowerCase();
191
+ return rel === 'stylesheet';
192
+ }
183
193
  function applyScriptNonce(script, nonce) {
184
194
  const resolvedNonce = normalizeNonce(nonce);
185
195
  if (!resolvedNonce) {
@@ -188,16 +198,43 @@ function applyScriptNonce(script, nonce) {
188
198
  script.setAttribute('nonce', resolvedNonce);
189
199
  script.nonce = resolvedNonce;
190
200
  }
191
- function applyTrackedNonce(node) {
192
- if (!isScriptElement(node)) {
201
+ function applyStyleNonce(style, nonce) {
202
+ const resolvedNonce = normalizeNonce(nonce);
203
+ if (!resolvedNonce) {
204
+ return;
205
+ }
206
+ style.setAttribute('nonce', resolvedNonce);
207
+ style.nonce = resolvedNonce;
208
+ }
209
+ function applyLinkNonce(link, nonce) {
210
+ const resolvedNonce = normalizeNonce(nonce);
211
+ if (!resolvedNonce) {
212
+ return;
213
+ }
214
+ link.setAttribute('nonce', resolvedNonce);
215
+ // `HTMLLinkElement.nonce` exists in modern browsers.
216
+ link.nonce = resolvedNonce;
217
+ }
218
+ function applyNonceToNode(node, nonce) {
219
+ if (isScriptElement(node)) {
220
+ applyScriptNonce(node, nonce);
221
+ return;
222
+ }
223
+ if (isStyleElement(node)) {
224
+ applyStyleNonce(node, nonce);
193
225
  return;
194
226
  }
227
+ if (isStylesheetLinkElement(node)) {
228
+ applyLinkNonce(node, nonce);
229
+ }
230
+ }
231
+ function applyTrackedNonce(node) {
195
232
  const documentRef = node.ownerDocument;
196
233
  if (!documentRef) {
197
234
  return;
198
235
  }
199
236
  const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);
200
- applyScriptNonce(node, nonce);
237
+ applyNonceToNode(node, nonce);
201
238
  }
202
239
  function getTrackedInlineCaptchaScripts(documentRef) {
203
240
  const patchState = getDynamicScriptNoncePatchState();
@@ -230,16 +267,16 @@ function shouldSkipDuplicateInlineCaptchaScript(node) {
230
267
  function walkAndApplyNonce(root, nonce) {
231
268
  if (!nonce)
232
269
  return;
233
- // Fast path: root itself is a script.
234
- if (isScriptElement(root)) {
235
- applyScriptNonce(root, nonce);
270
+ // Fast path: root itself is nonceable.
271
+ if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {
272
+ applyNonceToNode(root, nonce);
236
273
  return;
237
274
  }
238
- // Common path for jQuery: append DocumentFragment containing scripts created via HTML parsing.
275
+ // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.
239
276
  if (root instanceof Element || root instanceof DocumentFragment) {
240
- const scripts = root.querySelectorAll?.('script') ?? [];
241
- for (const script of scripts) {
242
- applyScriptNonce(script, nonce);
277
+ const nonceable = root.querySelectorAll?.('script,style,link[rel="stylesheet"]') ?? [];
278
+ for (const el of nonceable) {
279
+ applyNonceToNode(el, nonce);
243
280
  }
244
281
  }
245
282
  }
@@ -271,6 +308,32 @@ function teardownNonceMutationObserver(documentRef) {
271
308
  observer.disconnect();
272
309
  patchState.observerByDocument.delete(documentRef);
273
310
  }
311
+ function injectNonceIntoHtml(html, nonce) {
312
+ const resolvedNonce = normalizeNonce(nonce);
313
+ if (!resolvedNonce)
314
+ return html;
315
+ // If tag already includes nonce, leave it.
316
+ const withNonceAttr = ` nonce="${resolvedNonce}"`;
317
+ const addNonceToTag = (tag) => {
318
+ const openTag = new RegExp(`<${tag}(\\s[^>]*?)?>`, 'gi');
319
+ return (input) => input.replace(openTag, (match) => {
320
+ if (/[\s"']nonce\s*=/.test(match))
321
+ return match;
322
+ // Insert nonce before closing `>`
323
+ return match.replace(/>$/, `${withNonceAttr}>`);
324
+ });
325
+ };
326
+ // For link rel=stylesheet, add nonce when missing.
327
+ const linkOpenTag = /<link\b[^>]*>/gi;
328
+ const addNonceToStylesheetLink = (input) => input.replace(linkOpenTag, (match) => {
329
+ if (/[\s"']nonce\s*=/.test(match))
330
+ return match;
331
+ if (!/\brel\s*=\s*["']?stylesheet["']?/i.test(match))
332
+ return match;
333
+ return match.replace(/>$/, `${withNonceAttr}>`);
334
+ });
335
+ return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));
336
+ }
274
337
  function patchDynamicScriptInsertion() {
275
338
  const patchState = getDynamicScriptNoncePatchState();
276
339
  if (patchState.patched) {
@@ -279,6 +342,7 @@ function patchDynamicScriptInsertion() {
279
342
  const originalAppendChild = Node.prototype.appendChild;
280
343
  const originalInsertBefore = Node.prototype.insertBefore;
281
344
  const originalReplaceChild = Node.prototype.replaceChild;
345
+ const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;
282
346
  Node.prototype.appendChild = function (node) {
283
347
  // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.
284
348
  if (shouldSkipDuplicateInlineCaptchaScript(node)) {
@@ -298,6 +362,12 @@ function patchDynamicScriptInsertion() {
298
362
  applyTrackedNonce(node);
299
363
  return originalReplaceChild.call(this, node, child);
300
364
  };
365
+ Element.prototype.insertAdjacentHTML = function (position, text) {
366
+ const documentRef = this.ownerDocument;
367
+ const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;
368
+ const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;
369
+ return originalInsertAdjacentHTML.call(this, position, patchedText);
370
+ };
301
371
  patchState.patched = true;
302
372
  }
303
373
  function resolveCspNonce(documentRef, explicitNonce) {
@@ -1 +1 @@
1
- {"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n}\n\nfunction applyTrackedNonce(node: Node): void {\n if (!isScriptElement(node)) {\n return;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyScriptNonce(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is a script.\n if (isScriptElement(root)) {\n applyScriptNonce(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing scripts created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const scripts = root.querySelectorAll?.('script') ?? [];\n for (const script of scripts) {\n applyScriptNonce(script as HTMLScriptElement, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n patchState.nonceByDocument.set(documentRef, resolvedNonce);\n ensureNonceMutationObserver(documentRef);\n } else {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":"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"}
1
+ {"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'style';\n}\n\nfunction isStylesheetLinkElement(node: Node): node is HTMLLinkElement {\n if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {\n return false;\n }\n const rel = (node.getAttribute('rel') ?? '').toLowerCase();\n return rel === 'stylesheet';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n}\n\nfunction applyStyleNonce(style: HTMLStyleElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n style.setAttribute('nonce', resolvedNonce);\n style.nonce = resolvedNonce;\n}\n\nfunction applyLinkNonce(link: HTMLLinkElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n link.setAttribute('nonce', resolvedNonce);\n // `HTMLLinkElement.nonce` exists in modern browsers.\n (link as HTMLLinkElement & { nonce?: string }).nonce = resolvedNonce;\n}\n\nfunction applyNonceToNode(node: Node, nonce?: string): void {\n if (isScriptElement(node)) {\n applyScriptNonce(node, nonce);\n return;\n }\n if (isStyleElement(node)) {\n applyStyleNonce(node, nonce);\n return;\n }\n if (isStylesheetLinkElement(node)) {\n applyLinkNonce(node, nonce);\n }\n}\n\nfunction applyTrackedNonce(node: Node): void {\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyNonceToNode(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is nonceable.\n if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {\n applyNonceToNode(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const nonceable = root.querySelectorAll?.('script,style,link[rel=\"stylesheet\"]') ?? [];\n for (const el of nonceable) {\n applyNonceToNode(el as unknown as Node, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction injectNonceIntoHtml(html: string, nonce: string): string {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) return html;\n\n // If tag already includes nonce, leave it.\n const withNonceAttr = ` nonce=\"${resolvedNonce}\"`;\n\n const addNonceToTag = (tag: 'script' | 'style') => {\n const openTag = new RegExp(`<${tag}(\\\\s[^>]*?)?>`, 'gi');\n return (input: string) =>\n input.replace(openTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n // Insert nonce before closing `>`\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n };\n\n // For link rel=stylesheet, add nonce when missing.\n const linkOpenTag = /<link\\b[^>]*>/gi;\n const addNonceToStylesheetLink = (input: string) =>\n input.replace(linkOpenTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n if (!/\\brel\\s*=\\s*[\"']?stylesheet[\"']?/i.test(match)) return match;\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n\n return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n Element.prototype.insertAdjacentHTML = function (position: InsertPosition, text: string): void {\n const documentRef = this.ownerDocument;\n const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;\n const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;\n return originalInsertAdjacentHTML.call(this, position, patchedText);\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n patchState.nonceByDocument.set(documentRef, resolvedNonce);\n ensureNonceMutationObserver(documentRef);\n } else {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":";;;;SAagB,qBAAqB,GAAA;AACnC,IAAA,OAAQ,UAAwE;AAClF;AAEM,SAAU,gBAAgB,CAAC,CAAqB,EAAA;AACpD,IAAA,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;AACvC;;ACLA,MAAM,uBAAuB,GAAG,kCAAkC;AAClE,MAAM,oCAAoC,GAAG,6CAA6C;AAC1F,MAAM,0BAA0B,GAAG,IAAI;AAEvC,SAAS,oBAAoB,GAAA;IAC3B,MAAM,WAAW,GAAG,UAEnB;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE;QACzC,WAAW,CAAC,uBAAuB,CAAC,GAAG;AACrC,YAAA,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3C;IACH;AAEA,IAAA,OAAO,WAAW,CAAC,uBAAuB,CAAC;AAC7C;AAEA,SAAS,WAAW,GAAA;AAClB,IAAA,MAAM,UAAU,GAAG,oBAAoB,EAAE;AACzC,IAAA,UAAU,CAAC,KAAK,IAAI,CAAC;AACrB,IAAA,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC;QAAE;AAE1B,IAAA,OAAO,CAAC,GAAG,GAAG,MAAM,SAAS;AAC7B,IAAA,OAAO,CAAC,IAAI,GAAG,MAAM,SAAS;AAC9B,IAAA,OAAO,CAAC,IAAI,GAAG,MAAM,SAAS;AAC9B,IAAA,OAAO,CAAC,KAAK,GAAG,MAAM,SAAS;AAC/B,IAAA,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,KAAI;QACrC,MAAM,UAAU,GAAG;AAChB,aAAA,GAAG,CAAC,CAAC,GAAG,MAAM,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;aACtF,IAAI,CAAC,GAAG;AACR,aAAA,WAAW,EAAE;;AAGhB,QAAA,IACE,UAAU,CAAC,QAAQ,CAAC,sCAAsC,CAAC;AAC3D,YAAA,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;AACnC,YAAA,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AAC1C,YAAA,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EACpC;YACA;QACF;AAEA,QAAA,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;AACnC,IAAA,CAAC;AACH;AAEA,SAAS,aAAa,GAAA;AACpB,IAAA,MAAM,UAAU,GAAG,oBAAoB,EAAE;AACzC,IAAA,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC;QAAE;AAC5B,IAAA,UAAU,CAAC,KAAK,IAAI,CAAC;AACrB,IAAA,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC;QAAE;AAE1B,IAAA,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,WAAW;AACpC,IAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,YAAY;AACtC,IAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,YAAY;AACtC,IAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa;AACxC,IAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa;AAC1C;AAEM,SAAU,2BAA2B,CAAC,QAAQ,GAAG,0BAA0B,EAAA;AAC/E,IAAA,WAAW,EAAE;IACb,UAAU,CAAC,MAAK;AACd,QAAA,aAAa,EAAE;IACjB,CAAC,EAAE,QAAQ,CAAC;AACd;AAEA,SAAS,+BAA+B,GAAA;IACtC,MAAM,WAAW,GAAG,UAEnB;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAC,EAAE;QACtD,WAAW,CAAC,oCAAoC,CAAC,GAAG;AAClD,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,eAAe,EAAE,UAAU,CAAC,OAAO,IAAI,IAAI;SAC5C;IACH;AAEA,IAAA,OAAO,WAAW,CAAC,oCAAoC,CAAC;AAC1D;AAEA,SAAS,gCAAgC,CAAC,OAAgB,EAAE,MAAe,EAAA;AACzE,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACpE,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAClE,IAAA,MAAM,aAAa,GACjB,gBAAgB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,2BAA2B,CAAC;AAC/G,IAAA,MAAM,qBAAqB,GACzB,iBAAiB,CAAC,QAAQ,CAAC,wDAAwD,CAAC;AACpF,SAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAExF,IAAA,IAAI,aAAa;AAAE,QAAA,OAAO,IAAI;AAC9B,IAAA,IAAI,qBAAqB;AAAE,QAAA,OAAO,IAAI;AACtC,IAAA,OAAO,iBAAiB,KAAK,eAAe,IAAI,iBAAiB,KAAK,cAAc;AACtF;AAEA;;;AAGG;SACa,oCAAoC,GAAA;AAClD,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;IACpD,IAAI,UAAU,CAAC,SAAS;QAAE;AAE1B,IAAA,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe;AAClD,IAAA,UAAU,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAI;AAC7D,QAAA,IAAI,gCAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;AACrD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AACzC,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAChF;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AAED,IAAA,UAAU,CAAC,SAAS,GAAG,IAAI;AAC7B;;ACzIA,MAAM,sBAAsB,GAAG,qCAAqC;AACpE,MAAM,+BAA+B,GAAG,IAAI;SAE5B,yBAAyB,GAAA;IACvC,MAAM,WAAW,GAAG,UAEnB;IAED,IAAI,WAAW,CAAC,sBAAsB,CAAC;QAAE;AAEzC,IAAA,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAAuB;IAErE,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,KAAK,KAAI;AACR,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,IAAI,EAAE,MAAM,YAAY,OAAO,CAAC;YAAE;QAElC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY;YAAE;;;AAInB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9E,YAAA,IAAI,GAAG,GAAG,oBAAoB,GAAG,+BAA+B,EAAE;gBAChE,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,wBAAwB,EAAE;gBAChC;YACF;AACA,YAAA,0BAA0B,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC;QACnD;IACF,CAAC,EACD,IAAI,CACL;AAED,IAAA,WAAW,CAAC,sBAAsB,CAAC,GAAG,IAAI;AAC5C;;ACzBA,MAAM,yBAAyB,GAAG,IAAI,OAAO,EAAuC;AACpF,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAAwC;AACtF,MAAM,8BAA8B,GAAG,wCAAwC;AAE/E,SAAS,cAAc,CAAC,WAAqB,EAAA;IAC3C,IAAI,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,WAAW,GAAG,IAAI,GAAG,EAAwB;AAC7C,QAAA,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC;IACzD;AAEA,IAAA,OAAO,WAAW;AACpB;AAEA,SAAS,eAAe,CAAC,WAAqB,EAAA;IAC5C,IAAI,YAAY,GAAG,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC;IAC9D,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,GAAG,EAAyB;AAC/C,QAAA,0BAA0B,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3D;AAEA,IAAA,OAAO,YAAY;AACrB;AAEA,SAAS,+BAA+B,GAAA;IACtC,MAAM,WAAW,GAAG,UAEnB;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC,EAAE;QAChD,WAAW,CAAC,8BAA8B,CAAC,GAAG;YAC5C,eAAe,EAAE,IAAI,OAAO,EAAoB;YAChD,kBAAkB,EAAE,IAAI,OAAO,EAA8B;YAC7D,6BAA6B,EAAE,IAAI,OAAO,EAAyB;AACnE,YAAA,OAAO,EAAE,KAAK;SACf;IACH;AAEA,IAAA,OAAO,WAAW,CAAC,8BAA8B,CAAC;AACpD;AAEA,SAAS,cAAc,CAAC,KAAqB,EAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE;IAC7B,OAAO,OAAO,GAAG,OAAO,GAAG,SAAS;AACtC;AAEA,SAAS,eAAe,CAAC,IAAU,EAAA;AACjC,IAAA,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAC3E;AAEA,SAAS,cAAc,CAAC,IAAU,EAAA;AAChC,IAAA,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO;AAC1E;AAEA,SAAS,uBAAuB,CAAC,IAAU,EAAA;AACzC,IAAA,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;AACvE,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE;IAC1D,OAAO,GAAG,KAAK,YAAY;AAC7B;AAEM,SAAU,gBAAgB,CAAC,MAAyB,EAAE,KAAc,EAAA;AACxE,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE;QAClB;IACF;AAEA,IAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;AAC3C,IAAA,MAAM,CAAC,KAAK,GAAG,aAAa;AAC9B;AAEA,SAAS,eAAe,CAAC,KAAuB,EAAE,KAAc,EAAA;AAC9D,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE;QAClB;IACF;AAEA,IAAA,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;AAC1C,IAAA,KAAK,CAAC,KAAK,GAAG,aAAa;AAC7B;AAEA,SAAS,cAAc,CAAC,IAAqB,EAAE,KAAc,EAAA;AAC3D,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE;QAClB;IACF;AAEA,IAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;;AAExC,IAAA,IAA6C,CAAC,KAAK,GAAG,aAAa;AACtE;AAEA,SAAS,gBAAgB,CAAC,IAAU,EAAE,KAAc,EAAA;AAClD,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7B;IACF;AACA,IAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AACxB,QAAA,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B;IACF;AACA,IAAA,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE;AACjC,QAAA,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7B;AACF;AAEA,SAAS,iBAAiB,CAAC,IAAU,EAAA;AACnC,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;IACtC,IAAI,CAAC,WAAW,EAAE;QAChB;IACF;IAEA,MAAM,KAAK,GAAG,+BAA+B,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;AAChF,IAAA,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B;AAEA,SAAS,8BAA8B,CAAC,WAAqB,EAAA;AAC3D,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;IACpD,IAAI,cAAc,GAAG,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC,WAAW,CAAC;IAC9E,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,cAAc,GAAG,IAAI,GAAG,EAAU;QAClC,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC;IAC3E;AAEA,IAAA,OAAO,cAAc;AACvB;AAEA,SAAS,sCAAsC,CAAC,IAAU,EAAA;AACxD,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC/C,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;IAClD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC1D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;IACtC,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,cAAc,GAAG,8BAA8B,CAAC,WAAW,CAAC;AAClE,IAAA,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAClC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9B,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,iBAAiB,CAAC,IAAU,EAAE,KAAc,EAAA;AACnD,IAAA,IAAI,CAAC,KAAK;QAAE;;AAGZ,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE;AAClF,QAAA,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7B;IACF;;IAGA,IAAI,IAAI,YAAY,OAAO,IAAI,IAAI,YAAY,gBAAgB,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,qCAAqC,CAAC,IAAI,EAAE;AACtF,QAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;AAC1B,YAAA,gBAAgB,CAAC,EAAqB,EAAE,KAAK,CAAC;QAChD;IACF;AACF;AAEA,SAAS,2BAA2B,CAAC,WAAqB,EAAA;AACxD,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;IACpD,IAAI,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAClD;IACF;IAEA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAI;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AACpC,gBAAA,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;YAChC;QACF;AACF,IAAA,CAAC,CAAC;;AAGF,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,IAAI,WAAW;AACvD,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1D,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC1D;AAEA,SAAS,6BAA6B,CAAC,WAAqB,EAAA;AAC1D,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;AAC/D,IAAA,IAAI,CAAC,QAAQ;QAAE;IACf,QAAQ,CAAC,UAAU,EAAE;AACrB,IAAA,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC;AACnD;AAEA,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa,EAAA;AACtD,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,IAAI;;AAG/B,IAAA,MAAM,aAAa,GAAG,CAAA,QAAA,EAAW,aAAa,GAAG;AAEjD,IAAA,MAAM,aAAa,GAAG,CAAC,GAAuB,KAAI;QAChD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,aAAA,CAAe,EAAE,IAAI,CAAC;AACxD,QAAA,OAAO,CAAC,KAAa,KACnB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;AAC/B,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,KAAK;;YAE/C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA,EAAG,aAAa,CAAA,CAAA,CAAG,CAAC;AACjD,QAAA,CAAC,CAAC;AACN,IAAA,CAAC;;IAGD,MAAM,WAAW,GAAG,iBAAiB;AACrC,IAAA,MAAM,wBAAwB,GAAG,CAAC,KAAa,KAC7C,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,KAAI;AACnC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AAC/C,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA,EAAG,aAAa,CAAA,CAAA,CAAG,CAAC;AACjD,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF;AAEA,SAAS,2BAA2B,GAAA;AAClC,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;AACpD,IAAA,IAAI,UAAU,CAAC,OAAO,EAAE;QACtB;IACF;AAEA,IAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AACtD,IAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;AACxD,IAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;AACxD,IAAA,MAAM,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB;AAEvE,IAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,UAA0B,IAAO,EAAA;;AAE5D,QAAA,IAAI,sCAAsC,CAAC,IAAI,CAAC,EAAE;AAChD,YAAA,OAAO,IAAI;QACb;QACA,iBAAiB,CAAC,IAAI,CAAC;QACvB,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAM;AAClD,IAAA,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAA0B,IAAO,EAAE,KAAkB,EAAA;AACjF,QAAA,IAAI,sCAAsC,CAAC,IAAI,CAAC,EAAE;AAChD,YAAA,OAAO,IAAI;QACb;QACA,iBAAiB,CAAC,IAAI,CAAC;QACvB,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAM;AAC1D,IAAA,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAA0B,IAAU,EAAE,KAAQ,EAAA;QAC1E,iBAAiB,CAAC,IAAI,CAAC;QACvB,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAM;AAC1D,IAAA,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAwB,EAAE,IAAY,EAAA;AACrF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;AACtC,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;AACnF,QAAA,MAAM,WAAW,GAAG,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI;QACnE,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;AACrE,IAAA,CAAC;AAED,IAAA,UAAU,CAAC,OAAO,GAAG,IAAI;AAC3B;AAEM,SAAU,eAAe,CAAC,WAAqB,EAAE,aAAsB,EAAA;AAC3E,IAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC,aAAa,CAAC;IAC3D,IAAI,qBAAqB,EAAE;AACzB,QAAA,OAAO,qBAAqB;IAC9B;IAEA,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,CAAoB,eAAe,CAAC;AACrF,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,eAAe,EAAE,KAAK,CAAC;IACxG,IAAI,eAAe,EAAE;AACnB,QAAA,OAAO,eAAe;IACxB;IAEA,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAkB,wBAAwB,CAAC;AACtF,IAAA,OAAO,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;AAC3C;AAEM,SAAU,kBAAkB,CAAC,WAAqB,EAAE,aAAsB,EAAA;IAC9E,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC;AACjE,IAAA,MAAM,UAAU,GAAG,+BAA+B,EAAE;IAEpD,IAAI,aAAa,EAAE;;AAEjB,QAAA,2BAA2B,EAAE;QAC7B,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC;QAC1D,2BAA2B,CAAC,WAAW,CAAC;IAC1C;SAAO;AACL,QAAA,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9C,6BAA6B,CAAC,WAAW,CAAC;IAC5C;AAEA,IAAA,OAAO,aAAa;AACtB;SAEgB,UAAU,CAAC,WAAqB,EAAE,GAAW,EAAE,OAA2B,EAAA;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AAC/C,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAoB,CAAA,YAAA,EAAe,GAAG,CAAA,EAAA,CAAI,CAAC;IAErF,IAAI,QAAQ,EAAE;AACZ,QAAA,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE;QAC1B;QAEA,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QACrC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;IAE/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAChB,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/B,QAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC9B,YAAA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;AACxB,YAAA,OAAO,EAAE;AACX,QAAA,CAAC;AACD,QAAA,MAAM,CAAC,OAAO,GAAG,MAAK;AACpB,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,YAAA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAA,8CAAA,CAAgD,CAAC,CAAC;AAClG,QAAA,CAAC;AACD,QAAA,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtC,IAAA,CAAC,CAAC;AAEF,IAAA,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC9B,IAAA,OAAO,OAAO;AAChB;;ACxWA,MAAM,wBAAwB,GAAG,4CAA4C;AAC7E,MAAM,uBAAuB,GAAG,2CAA2C;AAC3E,MAAM,iBAAiB,GAAG,gCAAgC;AAM1D,SAAS,yBAAyB,CAAC,KAAc,EAAA;IAC/C,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;AACpG,IAAA,QACE,GAAG,CAAC,QAAQ,CAAC,kDAAkD,CAAC;AAChE,QAAA,GAAG,CAAC,QAAQ,CAAC,0DAA0D,CAAC;AACxE,QAAA,GAAG,CAAC,QAAQ,CAAC,wDAAwD,CAAC;AAE1E;AAEA,SAAS,wBAAwB,CAAC,SAA+B,EAAA;AAC/D,IAAA,MAAM,OAAO,GAAG,qBAAqB,EAAiD;AACtF,IAAA,MAAM,UAAU,GAA2B,CAAC,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;AAE5H,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,IAAI,IAAI,KAAK,SAAS;YAAE;AACxB,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE;AAC9B,QAAA,IAAI;AACD,YAAA,EAAe,EAAE;YAClB;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACF;AAEA,SAAS,sBAAsB,CAAC,IAAkB,EAAA;AAChD,IAAA,MAAM,OAAO,GAAG,qBAAqB,EAAiD;AACtF,IAAA,MAAM,MAAM,GAAG,CAAA,EAAG,iBAAiB,CAAA,EAAG,IAAI,EAAE;AAC5C,IAAA,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE;AAE9B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE;IAErC,MAAM,QAAQ,GAAG,SAAqB;IACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAe,KAAI;AACtC,QAAA,IAAI;AACF,YAAA,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC1B;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,MAAM,KAAK;YACb;;;YAIA,wBAAwB,CAAC,IAAI,CAAC;AAC9B,YAAA,OAAO,SAAS;QAClB;AACF,IAAA,CAAC,CAAY;AACb,IAAA,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;AACxB;AAEA,SAAS,gCAAgC,GAAA;AACvC,IAAA,MAAM,OAAO,GAAG,qBAAqB,EAKpC;IACD,IAAI,OAAO,CAAC,uBAAuB,CAAC;QAAE;AAEtC,IAAA,MAAM,cAAc,GAAG,CAAC,KAA6D,KAAU;QAC7F,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE;QAChD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3C,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,IAAe,KAAI;AACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,gBAAA,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC;YAC9B;YAEA,MAAM,OAAO,GAAG,QAAmC;AACnD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;AACtD,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAC3F,gBAAA,OAAO,YAAY,CAAC,OAAO,CAAC;YAC9B;YAEA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAiB,EAAE,GAAG,IAAe,KAAI;gBAC9D,MAAM,OAAO,GAAG,QAAqD;gBACrE,MAAM,aAAa,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI;gBACpD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE;AAC7D,oBAAA,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,IAAI,EAAE;gBAChD;AAEA,gBAAA,OAAQ,eAAqD,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAClF,YAAA,CAAC,CAAY;AAEb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC;AAC9B,QAAA,CAAC,CAAsB;AACzB,IAAA,CAAC;AAED,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACzB,IAAA,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;AACjC,IAAA,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;AACzC;SAEgB,kCAAkC,GAAA;AAChD,IAAA,MAAM,OAAO,GAAG,qBAAqB,EAEpC;IACD,IAAI,OAAO,CAAC,wBAAwB,CAAC;QAAE;IAEvC,sBAAsB,CAAC,YAAY,CAAC;IACpC,sBAAsB,CAAC,aAAa,CAAC;IACrC,sBAAsB,CAAC,cAAc,CAAC;AACtC,IAAA,gCAAgC,EAAE;AAClC,IAAA,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI;AAC1C;;MChHa,wBAAwB,CAAA;AACY,IAAA,QAAA;AAA/C,IAAA,WAAA,CAA+C,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAa;IAEpE,UAAU,CAAC,GAAW,EAAE,OAA2B,EAAA;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAChD;AALW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBACf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AADjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEnB,MAAM;2BAAC,QAAQ;;;ACC9B,MAAMA,qBAAmB,GAAG,kEAAkE;AAC9F,MAAMC,oBAAkB,GAAG,sEAAsE;AACjG,MAAMC,uBAAqB,GAAG,yEAAyE;AACvG,MAAMC,0BAAwB,GAAG,IAAI;AAErC,SAASC,iCAA+B,GAAA;IACtC,MAAM,CAAC,GAAG,UAAyD;AACnE,IAAA,MAAM,UAAU,GAAG;QACjB,yBAAyB;QACzB,0BAA0B;QAC1B,wBAAwB;QACxB,yBAAyB;KACjB;IAEV,MAAM,QAAQ,GAAG;SACd,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;SACrB,IAAI,CAAC,CAAC,KAAK,KAA0B,OAAO,KAAK,KAAK,UAAU,CAAC;IAEpE,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,SAAS,CAAC;AAC9C,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ;IACpB;AACF;AAEA,SAASC,eAAa,CAAI,EAAW,EAAA;IACnC,MAAM,CAAC,GAAG,UAAuF;IACjG,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;AACrC,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAM;IAChD;IACA,OAAO,EAAE,EAAE;AACb;MAsBa,oBAAoB,CAAA;AAcZ,IAAA,IAAA;AACA,IAAA,MAAA;AAdQ,IAAA,SAAS;IAC3B,UAAU,GAAG,IAAI;AACjB,IAAA,QAAQ;IACR,sBAAsB,GAAG,KAAK;AAEvC;;AAEG;AACO,IAAA,KAAK,GAAG,IAAI,YAAY,EAAU;IAEpC,WAAW,GAAG,KAAK;IAE3B,WAAA,CACmB,IAA6B,EAC7B,MAAgC,EAAA;QADhC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;IACtB;AAEH,IAAA,MAAM,eAAe,GAAA;QACnB,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACpD,SAAA,CAAC;IACJ;IAEA,MAAM,IAAI,CAAC,OAA+B,EAAA;QACxC,IAAI,IAAI,CAAC,WAAW;YAAE;;AAGtB,QAAA,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa;AAC5B,QAAA,yBAAyB,EAAE;AAE3B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;QACjE;;QAGA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa;QACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;AAC/D,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACpE,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAACL,qBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC;QAC9D;AAEA,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAACC,oBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC;AAC3D,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAACC,uBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;AAE9D,QAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,QAAAE,iCAA+B,EAAE;AACjC,QAAA,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC3C,QAAA,kCAAkC,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE;QACH;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;AACnC,YAAA,2BAA2B,EAAE;AAC7B,YAAA,oCAAoC,EAAE;QACxC;QACAC,eAAa,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,MAAM,IAAI,CAAC,sBAAsB,EAAE;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;AAEA;;AAEG;IACK,wBAAwB,GAAA;AAC9B,QAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,QAAA,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAC/D,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAC9E,uBAAuB,CACxB;AACD,QAAA,OAAO,OAAO,CAAC,oBAAoB,CAAC;IACtC;AAEQ,IAAA,mCAAmC,CAAC,CAA2C,EAAA;AACrF,QAAA,MAAM,wBAAwB,GAAG,CAAC,CAAC,kBAAkB;AACrD,QAAA,IAAI,OAAO,wBAAwB,KAAK,UAAU,EAAE;YAClD;QACF;AAEA,QAAA,CAAC,CAAC,kBAAkB,GAAG,MAAK;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAClE,CAAA,YAAA,EAAeH,uBAAqB,CAAA,EAAA,CAAI,CACzC;YACD,IAAI,QAAQ,EAAE;gBACZ;YACF;AAEA,YAAA,wBAAwB,EAAE;AAC5B,QAAA,CAAC;IACH;AAEQ,IAAA,MAAM,sBAAsB,CAAC,SAAS,GAAGC,0BAAwB,EAAA;AACvE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;QAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE;AACzC,YAAA,IAAI,qBAAqB,EAAE,CAAC,YAAY,EAAE;gBACxC;YACF;AACA,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1D;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;IAClF;AAEA;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;QAClF;QAEA,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,SAAS;QAC3H,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,2BAA2B,EAAE;QAC/B;AACA,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE;QAC3B,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACpC;AACA,QAAA,OAAO,EAAE;IACX;AAEA;;;AAGG;IACH,MAAM,iBAAiB,CAAC,OAMvB,EAAA;AACC,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI;AAC5C,QAAA,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,GAAG;AACrD,QAAA,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,GAAG;AAC7D,QAAA,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC;AACnD,QAAA,MAAM,sBAAsB,GAAG,OAAO,EAAE,sBAAsB,IAAI,GAAG;AACrE,QAAA,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAC,eAAe;QAC7D,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACvE,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;;AAE5B,QAAA,IAAI,CAAC,EAAE,IAAI,cAAc,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnE,YAAA,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QAC1B;QACA,IAAI,CAAC,EAAE,EAAE;;AAEP,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;YACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,sBAAsB,EAAE;AAC3D,gBAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnE,gBAAA,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC,eAAe;gBACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,oBAAA,OAAO,IAAI;gBACb;YACF;AACA,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,QAAA,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACzE,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;QAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE;AACzC,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnE,YAAA,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC,eAAe;YACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,IAAI;IACb;wGApMW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,2OAHrB,CAAA,+BAAA,CAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGhC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,+BAAA,CAAiC;oBAC3C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;mHAE4B,SAAS,EAAA,CAAA;sBAAnC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAKS,KAAK,EAAA,CAAA;sBAAd;;;AChEH,MAAM,mBAAmB,GAAG,kEAAkE;AAC9F,MAAM,kBAAkB,GAAG,sEAAsE;AACjG,MAAM,qBAAqB,GAAG,yEAAyE;AACvG,MAAM,wBAAwB,GAAG,IAAI;AAoBrC,IAAI,OAAO,GAAyB,IAAI;AACxC,IAAI,WAAW,GAAG,KAAK;AAEvB,SAAS,+BAA+B,GAAA;IACtC,MAAM,CAAC,GAAG,UAAyD;AACnE,IAAA,MAAM,UAAU,GAAG;QACjB,yBAAyB;QACzB,0BAA0B;QAC1B,wBAAwB;QACxB,yBAAyB;KACjB;IAEV,MAAM,QAAQ,GAAG;SACd,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;SACrB,IAAI,CAAC,CAAC,KAAK,KAA0B,OAAO,KAAK,KAAK,UAAU,CAAC;IAEpE,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,SAAS,CAAC;AAC9C,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ;IACpB;AACF;AAEA,SAAS,wBAAwB,GAAA;AAC/B,IAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,IAAA,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAC/D,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAoB,uBAAuB,CAAC;AAC/F,IAAA,OAAO,OAAO,CAAC,oBAAoB,CAAC;AACtC;AAEA,SAAS,aAAa,CAAI,EAAW,EAAA;IACnC,MAAM,CAAC,GAAG,UAAuF;IACjG,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;AACrC,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAM;IAChD;IACA,OAAO,EAAE,EAAE;AACb;AAEA,SAAS,mCAAmC,CAAC,CAA2C,EAAA;AACtF,IAAA,MAAM,wBAAwB,GAAG,CAAC,CAAC,kBAAkB;AACrD,IAAA,IAAI,OAAO,wBAAwB,KAAK,UAAU,EAAE;QAClD;IACF;AAEA,IAAA,CAAC,CAAC,kBAAkB,GAAG,MAAK;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAoB,CAAA,YAAA,EAAe,qBAAqB,CAAA,EAAA,CAAI,CAAC;QACpG,IAAI,QAAQ,EAAE;YACZ;QACF;AAEA,QAAA,wBAAwB,EAAE;AAC5B,IAAA,CAAC;AACH;AAEA,eAAe,sBAAsB,CAAC,SAAS,GAAG,wBAAwB,EAAA;AACxE,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE;AACzC,QAAA,IAAI,qBAAqB,EAAE,CAAC,YAAY,EAAE;YACxC;QACF;AACA,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D;AACA,IAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;AAClF;AAEA;;;;;;;AAOG;AACI,eAAe,eAAe,CAAC,OAA+B,EAAA;AACnE,IAAA,IAAI,WAAW;QAAE;AACjB,IAAA,IAAI,OAAO;AAAE,QAAA,OAAO,OAAO;AAE3B,IAAA,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC5D;AAEA,IAAA,OAAO,GAAG,CAAC,YAAW;AACpB,QAAA,yBAAyB,EAAE;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;AAC5D,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE;YAC/D,MAAM,UAAU,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC;QAC5D;QAEA,MAAM,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC;QACzD,MAAM,UAAU,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;AAE5D,QAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,QAAA,+BAA+B,EAAE;QACjC,mCAAmC,CAAC,CAAC,CAAC;AACtC,QAAA,kCAAkC,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE;QACH;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;AACnC,YAAA,2BAA2B,EAAE;AAC7B,YAAA,oCAAoC,EAAE;QACxC;QACA,aAAa,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,sBAAsB,EAAE;QAC9B,WAAW,GAAG,IAAI;IACpB,CAAC,GAAG;AAEJ,IAAA,IAAI;AACF,QAAA,MAAM,OAAO;IACf;YAAU;;IAEV;AACF;AAEA;;;AAGG;AACG,SAAU,uBAAuB,CAAC,OAA8C,EAAA;AACpF,IAAA,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACjC,IAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC;IAC7F;IAEA,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,SAAS;IAC3H,IAAI,aAAa,EAAE;QACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3C;AAEA,IAAA,IAAI,CAAC,OAAO,EAAE,sBAAsB,EAAE;AACpC,QAAA,2BAA2B,EAAE;IAC/B;AACA,IAAA,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE;AAC3B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,GAAG,CAAC,CAAC,eAAe,GAAG,SAAS;AACnF,IAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AACjD;AAEA;;AAEG;AACI,eAAe,4BAA4B,CAAC,OAMlD,EAAA;AACC,IAAA,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI;AAC5C,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,GAAG;AACrD,IAAA,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,GAAG;AAC7D,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC;AACnD,IAAA,MAAM,sBAAsB,GAAG,OAAO,EAAE,sBAAsB,IAAI,GAAG;AACrE,IAAA,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAC,eAAe;IAC7D,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3C;AACA,IAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACvE,IAAA,IAAI,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,cAAc,GAAG,CAAC,EAAE;;AAExC,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACnE,UAAU,GAAG,uBAAuB,EAAE;IACxC;AACA,IAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;QACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,sBAAsB,EAAE;AAC3D,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnE,YAAA,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC,eAAe;YACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,gBAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5B;QACF;AACA,QAAA,OAAO,UAAU;IACnB;IACA,IAAI,UAAU,CAAC,KAAK;AAAE,QAAA,OAAO,UAAU;AAEvC,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;;IAE5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE;AACzC,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnE,QAAA,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC,eAAe;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC5B;IACF;AAEA,IAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE;AACrB;;ACnNA,MAAM,IAAI,GAAG,QAAQ;AACrB,MAAM,IAAI,GAAG,OAAO;AACpB,MAAM,aAAa,GAAG,iBAAiB;AAEvC,MAAM,YAAY,GAAG,CAAC,mCAAmC,EAAE,gCAAgC,CAAU;AACrG,MAAM,qBAAqB,GAAG,CAAC,6BAA6B,CAAU;AACtE,MAAM,aAAa,GAAG,CAAC,gCAAgC,EAAE,mCAAmC,CAAU;AACtG,MAAM,WAAW,GAAG;IAClB,gCAAgC;IAChC,0BAA0B;IAC1B,8BAA8B;IAC9B,8BAA8B;CACtB;AACV,MAAM,UAAU,GAAG;IACjB,2BAA2B;IAC3B,0BAA0B;IAC1B,8BAA8B;CACtB;AACV,MAAM,SAAS,GAAG;IAChB,gCAAgC;IAChC,mCAAmC;IACnC,0BAA0B;CAClB;AAEV,SAAS,MAAM,CAAC,MAAiC,EAAA;IAC/C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAsB,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChG;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;IACjC,OAAO,KAAK,GAAG,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,CAAG,GAAG,SAAS;AAC/C;AAEA,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAgB,EAAA;IACxD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;AACjE;AAEA,SAAS,WAAW,CAAC,MAAc,EAAA;AACjC,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB;IAE9C,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC5C,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE;QACrC,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpD,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9B;AAEA,IAAA,OAAO,UAAU;AACnB;AAEM,SAAU,2BAA2B,CAAC,OAA+B,EAAA;AACzE,IAAA,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK;;AAE7D,IAAA,MAAM,yBAAyB,GAAG,OAAO,EAAE,yBAAyB,IAAI,KAAK;AAC7E,IAAA,MAAM,wBAAwB,GAAG,OAAO,EAAE,wBAAwB,IAAI,KAAK;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;IACzC,MAAM,WAAW,GAAG,iBAAiB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AACvG,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC;IAE1D,OAAO;AACL,QAAA,aAAa,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,yBAAyB,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;QAC1G,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC;QACxD,aAAa,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;AAC7C;;;;;AAKG;AACH,QAAA,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,wBAAwB,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;AAC5F,QAAA,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;AACtC,QAAA,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,wBAAwB,GAAG,aAAa,GAAG,iBAAiB,CAAC,CAAC;QAC9F,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC;KAChD;AACH;AAEM,SAAU,uBAAuB,CAAC,OAA+B,EAAA;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC;AACvD,SAAA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;SACxD,IAAI,CAAC,IAAI,CAAC;AACf;AAEM,SAAU,yBAAyB,CAAC,cAAsB,EAAE,OAA+B,EAAA;AAC/F,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC;AAC9C,IAAA,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAExD,IAAA,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACxD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAC5E;AAEA,IAAA,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE;AAC5B,SAAA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;SACxD,IAAI,CAAC,IAAI,CAAC;AACf;;ACnHA;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siarashield_workspace",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "description": "Angular wrapper for CyberSiara SiaraShield captcha embed.",
5
5
  "keywords": [
6
6
  "cybersiara",