siarashield_workspace 0.0.58 → 0.0.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,15 +44,15 @@ Copy/paste:
44
44
  <meta name="csp-nonce" content="REPLACE_WITH_NONCE" />
45
45
  <meta http-equiv="Content-Security-Policy" content="
46
46
  default-src 'self';
47
- script-src 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
48
- script-src-elem 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
47
+ script-src 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com;
48
+ script-src-elem 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com;
49
49
  script-src-attr 'none';
50
- connect-src 'self' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
50
+ connect-src 'self' https://embed.mycybersiara.com;
51
51
  style-src 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com https://mycybersiara.com https://fonts.googleapis.com https://cdnjs.cloudflare.com;
52
52
  style-src-elem 'self' 'nonce-REPLACE_WITH_NONCE' https://embed.mycybersiara.com https://mycybersiara.com https://fonts.googleapis.com https://cdnjs.cloudflare.com;
53
53
  style-src-attr 'none';
54
54
  font-src 'self' https://fonts.gstatic.com https://mycybersiara.com https://cdnjs.cloudflare.com data:;
55
- img-src 'self' data: https://embed.mycybersiara.com https://embedcdn.mycybersiara.com https://mycybersiara.com;
55
+ img-src 'self' data: https://embed.mycybersiara.com https://mycybersiara.com;
56
56
  ">
57
57
  ```
58
58
 
@@ -224,22 +224,22 @@ For strict CSP, use a **server-generated nonce per request**. The same nonce mus
224
224
 
225
225
  ```http
226
226
  default-src 'self';
227
- script-src 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
228
- script-src-elem 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
227
+ script-src 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com;
228
+ script-src-elem 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com;
229
229
  script-src-attr 'none';
230
- connect-src 'self' https://embed.mycybersiara.com https://embedcdn.mycybersiara.com;
230
+ connect-src 'self' https://embed.mycybersiara.com;
231
231
  style-src 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com https://mycybersiara.com https://fonts.googleapis.com https://cdnjs.cloudflare.com;
232
232
  style-src-elem 'self' 'nonce-<dynamic>' https://embed.mycybersiara.com https://mycybersiara.com https://fonts.googleapis.com https://cdnjs.cloudflare.com;
233
233
  style-src-attr 'none';
234
234
  font-src 'self' https://fonts.gstatic.com https://mycybersiara.com https://cdnjs.cloudflare.com data:;
235
- img-src 'self' data: https://embed.mycybersiara.com https://embedcdn.mycybersiara.com https://mycybersiara.com;
235
+ img-src 'self' data: https://embed.mycybersiara.com https://mycybersiara.com;
236
236
  ```
237
237
 
238
238
  ## Script loading behavior
239
239
 
240
240
  By default (`loadJQuery: true`) the package loads:
241
- - `https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js` (fallback when jQuery not already present)
242
- - `https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js`
241
+ - `https://embed.mycybersiara.com/capcha-temple/js/jquery.min.js` (fallback when jQuery not already present)
242
+ - `https://embed.mycybersiara.com/CaptchaFormate/CaptchaResources.js`
243
243
  - `https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js`
244
244
 
245
245
  Most users should **not** add these script tags manually.
@@ -1,9 +1,9 @@
1
1
  const SELF = "'self'";
2
2
  const DATA = 'data:';
3
3
  const UNSAFE_INLINE = "'unsafe-inline'";
4
- const SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'];
4
+ const SCRIPT_HOSTS = ['https://embed.mycybersiara.com'];
5
5
  const OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'];
6
- const CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'];
6
+ const CONNECT_HOSTS = ['https://embed.mycybersiara.com'];
7
7
  const STYLE_HOSTS = [
8
8
  'https://embed.mycybersiara.com',
9
9
  'https://mycybersiara.com',
@@ -15,11 +15,7 @@ const FONT_HOSTS = [
15
15
  'https://mycybersiara.com',
16
16
  'https://cdnjs.cloudflare.com',
17
17
  ];
18
- const IMG_HOSTS = [
19
- 'https://embed.mycybersiara.com',
20
- 'https://embedcdn.mycybersiara.com',
21
- 'https://mycybersiara.com',
22
- ];
18
+ const IMG_HOSTS = ['https://embed.mycybersiara.com', 'https://mycybersiara.com'];
23
19
  function unique(values) {
24
20
  return [...new Set(values.filter((value) => Boolean(value && value.trim())))];
25
21
  }
@@ -93,4 +89,4 @@ export function mergeSiaraShieldCspPolicy(existingPolicy, options) {
93
89
  .map(([name, values]) => serializeDirective(name, values))
94
90
  .join('; ');
95
91
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLWNzcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1jc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNyQixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUV4QyxNQUFNLFlBQVksR0FBRyxDQUFDLG1DQUFtQyxFQUFFLGdDQUFnQyxDQUFVLENBQUM7QUFDdEcsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLDZCQUE2QixDQUFVLENBQUM7QUFDdkUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxtQ0FBbUMsQ0FBVSxDQUFDO0FBQ3ZHLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLGdDQUFnQztJQUNoQywwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLDhCQUE4QjtDQUN0QixDQUFDO0FBQ1gsTUFBTSxVQUFVLEdBQUc7SUFDakIsMkJBQTJCO0lBQzNCLDBCQUEwQjtJQUMxQiw4QkFBOEI7Q0FDdEIsQ0FBQztBQUNYLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLGdDQUFnQztJQUNoQyxtQ0FBbUM7SUFDbkMsMEJBQTBCO0NBQ2xCLENBQUM7QUFFWCxTQUFTLE1BQU0sQ0FBQyxNQUFpQztJQUMvQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxD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N0UsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTaWFyYVNoaWVsZENzcE9wdGlvbnMge1xyXG4gIC8qKiBTZXJ2ZXItZ2VuZXJhdGVkIG5vbmNlIHZhbHVlIHdpdGhvdXQgdGhlIGAnbm9uY2UtJ2AgcHJlZml4LiAqL1xyXG4gIG5vbmNlPzogc3RyaW5nO1xyXG4gIC8qKiBPcHRpb25hbCBpZiB0aGUgY3VzdG9tZXIgc3RpbGwgbG9hZHMgalF1ZXJ5IGZyb20gR29vZ2xlJ3MgQ0ROLiAqL1xyXG4gIGluY2x1ZGVHb29nbGVBcGlzPzogYm9vbGVhbjtcclxuICAvKiogSW5jbHVkZSBgc2NyaXB0LXNyYyAndW5zYWZlLWlubGluZSdgIChub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24pLiAqL1xyXG4gIGluY2x1ZGVVbnNhZmVJbmxpbmVTY3JpcHQ/OiBib29sZWFuO1xyXG4gIC8qKiBJbmNsdWRlIGBzY3JpcHQtc3JjLWF0dHIgJ3NlbGYnICd1bnNhZmUtaW5saW5lJ2AgaW5zdGVhZCBvZiBgJ25vbmUnYC4gKi9cclxuICBhbGxvd0lubGluZUV2ZW50QXR0cmlidXRlcz86IGJvb2xlYW47XHJcbiAgLyoqIEluY2x1ZGUgYHN0eWxlLXNyYyAndW5zYWZlLWlubGluZSdgIChub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24pLiAqL1xyXG4gIGluY2x1ZGVVbnNhZmVJbmxpbmVTdHlsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNpYXJhU2hpZWxkQ3NwRGlyZWN0aXZlcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxuXHJcbmNvbnN0IFNFTEYgPSBcIidzZWxmJ1wiO1xyXG5jb25zdCBEQVRBID0gJ2RhdGE6JztcclxuY29uc3QgVU5TQUZFX0lOTElORSA9IFwiJ3Vuc2FmZS1pbmxpbmUnXCI7XHJcblxyXG5jb25zdCBTQ1JJUFRfSE9TVFMgPSBbJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbScsICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20nXSBhcyBjb25zdDtcclxuY29uc3QgT1BUSU9OQUxfU0NSSVBUX0hPU1RTID0gWydodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20nXSBhcyBjb25zdDtcclxuY29uc3QgQ09OTkVDVF9IT1NUUyA9IFsnaHR0cHM6Ly9lbWJlZC5teWN5YmVyc2lhcmEuY29tJywgJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbSddIGFzIGNvbnN0O1xyXG5jb25zdCBTVFlMRV9IT1NUUyA9IFtcclxuICAnaHR0cHM6Ly9lbWJlZC5teWN5YmVyc2lhcmEuY29tJyxcclxuICAnaHR0cHM6Ly9teWN5YmVyc2lhcmEuY29tJyxcclxuICAnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbScsXHJcbiAgJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20nLFxyXG5dIGFzIGNvbnN0O1xyXG5jb25zdCBGT05UX0hPU1RTID0gW1xyXG4gICdodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tJyxcclxuICAnaHR0cHM6Ly9teWN5YmVyc2lhcmEuY29tJyxcclxuICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbScsXHJcbl0gYXMgY29uc3Q7XHJcbmNvbnN0IElNR19IT1NUUyA9IFtcclxuICAnaHR0cHM6Ly9lbWJlZC5teWN5YmVyc2lhcmEuY29tJyxcclxuICAnaHR0cHM6Ly9lbWJlZGNkbi5teWN5YmVyc2lhcmEuY29tJyxcclxuICAnaHR0cHM6Ly9teWN5YmVyc2lhcmEuY29tJyxcclxuXSBhcyBjb25zdDtcclxuXHJcbmZ1bmN0aW9uIHVuaXF1ZSh2YWx1ZXM6IEFycmF5PHN0cmluZyB8IHVuZGVmaW5lZD4pOiBzdHJpbmdbXSB7XHJcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KHZhbHVlcy5maWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgc3RyaW5nID0+IEJvb2xlYW4odmFsdWUgJiYgdmFsdWUudHJpbSgpKSkpXTtcclxufVxyXG5cclxuZnVuY3Rpb24gbm9uY2VTb3VyY2Uobm9uY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIHJldHVybiBub25jZSA/IGAnbm9uY2UtJHtub25jZX0nYCA6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gc2VyaWFsaXplRGlyZWN0aXZlKG5hbWU6IHN0cmluZywgdmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPiAwID8gYCR7bmFtZX0gJHt2YWx1ZXMuam9pbignICcpfWAgOiBuYW1lO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVBvbGljeShwb2xpY3k6IHN0cmluZyk6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiB7XHJcbiAgY29uc3QgZGlyZWN0aXZlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCByYXdEaXJlY3RpdmUgb2YgcG9saWN5LnNwbGl0KCc7JykpIHtcclxuICAgIGNvbnN0IGRpcmVjdGl2ZSA9IHJhd0RpcmVjdGl2ZS50cmltKCk7XHJcbiAgICBpZiAoIWRpcmVjdGl2ZSkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJ0cyA9IGRpcmVjdGl2ZS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGNvbnN0IFtuYW1lLCAuLi52YWx1ZXNdID0gcGFydHM7XHJcbiAgICBpZiAoIW5hbWUpIHtcclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcblxyXG4gICAgZGlyZWN0aXZlcy5zZXQobmFtZSwgdmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkaXJlY3RpdmVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lhcmFTaGllbGRDc3BEaXJlY3RpdmVzKG9wdGlvbnM/OiBTaWFyYVNoaWVsZENzcE9wdGlvbnMpOiBTaWFyYVNoaWVsZENzcERpcmVjdGl2ZXMge1xyXG4gIGNvbnN0IGluY2x1ZGVHb29nbGVBcGlzID0gb3B0aW9ucz8uaW5jbHVkZUdvb2dsZUFwaXMgPz8gZmFsc2U7XHJcbiAgLy8gRGVmYXVsdCB0byBzdHJpY3Qvc2FmZSBDU1AuIEN1c3RvbWVycyBjYW4gZXhwbGljaXRseSBvcHQtaW4gaWYgdGhleSBhY2NlcHQgdGhlIHJpc2suXHJcbiAgY29uc3QgaW5jbHVkZVVuc2FmZUlubGluZVNjcmlwdCA9IG9wdGlvbnM/LmluY2x1ZGVVbnNhZmVJbmxpbmVTY3JpcHQgPz8gZmFsc2U7XHJcbiAgY29uc3QgaW5jbHVkZVVuc2FmZUlubGluZVN0eWxlID0gb3B0aW9ucz8uaW5jbHVkZVVuc2FmZUlubGluZVN0eWxlID8/IGZhbHNlO1xyXG4gIGNvbnN0IGFsbG93SW5saW5lRXZlbnRBdHRyaWJ1dGVzID0gb3B0aW9ucz8uYWxsb3dJbmxpbmVFdmVudEF0dHJpYnV0ZXMgPz8gZmFsc2U7XHJcbiAgY29uc3Qgbm9uY2UgPSBub25jZVNvdXJjZShvcHRpb25zPy5ub25jZSk7XHJcbiAgY29uc3Qgc2NyaXB0SG9zdHMgPSBpbmNsdWRlR29vZ2xlQXBpcyA/IFsuLi5TQ1JJUFRfSE9TVFMsIC4uLk9QVElPTkFMX1NDUklQVF9IT1NUU10gOiBbLi4uU0NSSVBUX0hPU1RTXTtcclxuICBjb25zdCBzdHlsZVNvdXJjZXMgPSB1bmlxdWUoW1NFTEYsIG5vbmNlLCAuLi5TVFlMRV9IT1NUU10pO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgJ2RlZmF1bHQtc3JjJzogdW5pcXVlKFtTRUxGXSksXHJcbiAgICAvKipcclxuICAgICAqIENTUCBub3RlOlxyXG4gICAgICogLSBWZW5kb3IgSFRNTCBjYW4gaW5jbHVkZSBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgKG9uY2xpY2ssIGV0YykuIENTUCBub25jZXMgZG8gTk9UIGNvdmVyIHRob3NlLlxyXG4gICAgICogLSBXaXRoIGEgY29uZmlndXJlZCBub25jZSwgdGhlIHBhY2thZ2UgbWlncmF0ZXMgdGhvc2UgaGFuZGxlcnMgdG8gYWRkRXZlbnRMaXN0ZW5lciBzbyBgc2NyaXB0LXNyYy1hdHRyICdub25lJ2Agd29ya3MuXHJcbiAgICAgKi9cclxuICAgICdzY3JpcHQtc3JjJzogdW5pcXVlKFtTRUxGLCBub25jZSwgLi4uc2NyaXB0SG9zdHMsIGluY2x1ZGVVbnNhZmVJbmxpbmVTY3JpcHQgPyBVTlNBRkVfSU5MSU5FIDogdW5kZWZpbmVkXSksXHJcbiAgICAnc2NyaXB0LXNyYy1lbGVtJzogdW5pcXVlKFtTRUxGLCBub25jZSwgLi4uc2NyaXB0SG9zdHNdKSxcclxuICAgICdzY3JpcHQtc3JjLWF0dHInOiB1bmlxdWUoYWxsb3dJbmxpbmVFdmVudEF0dHJpYnV0ZXMgPyBbU0VMRiwgVU5TQUZFX0lOTElORV0gOiBbXCInbm9uZSdcIl0pLFxyXG4gICAgJ2Nvbm5lY3Qtc3JjJzogdW5pcXVlKFtTRUxGLCAuLi5DT05ORUNUX0hPU1RTXSksXHJcbiAgICAnaW1nLXNyYyc6IHVuaXF1ZShbU0VMRiwgREFUQSwgLi4uSU1HX0hPU1RTXSksXHJcbiAgICAvKipcclxuICAgICAqIENTUCBub3RlOlxyXG4gICAgICogLSBBIG5vbmNlIGFsbG93cyBgPHN0eWxlIG5vbmNlPVwiLi4uXCI+Li4uPC9zdHlsZT5gIGJ1dCBkb2VzIE5PVCBhbGxvdyBgc3R5bGU9XCJcImAgYXR0cmlidXRlcyAvIGBlbGVtZW50LnN0eWxlPS4uLmAuXHJcbiAgICAgKiAtIFZlbmRvci9qUXVlcnkgdXNlcyBzdHlsZSBhdHRyaWJ1dGVzIGluIHNvbWUgZmxvd3MsIHNvIHdlIHNjb3BlIGAndW5zYWZlLWlubGluZSdgIHRvICphdHRyaWJ1dGVzIG9ubHkqLlxyXG4gICAgICogLSBUaGlzIGtlZXBzIHNjcmlwdHMgc3RyaWN0IHdoaWxlIHJlc3RvcmluZyBjb21wYXRpYmlsaXR5IHdpdGhvdXQgcmVxdWlyaW5nIGBzdHlsZS1zcmMgJ3Vuc2FmZS1pbmxpbmUnYC5cclxuICAgICAqL1xyXG4gICAgJ3N0eWxlLXNyYyc6IHVuaXF1ZShbLi4uc3R5bGVTb3VyY2VzLCBpbmNsdWRlVW5zYWZlSW5saW5lU3R5bGUgPyBVTlNBRkVfSU5MSU5FIDogdW5kZWZpbmVkXSksXHJcbiAgICAnc3R5bGUtc3JjLWVsZW0nOiB1bmlxdWUoc3R5bGVTb3VyY2VzKSxcclxuICAgICdzdHlsZS1zcmMtYXR0cic6IHVuaXF1ZShpbmNsdWRlVW5zYWZlSW5saW5lU3R5bGUgPyBbU0VMRiwgVU5TQUZFX0lOTElORV0gOiBbXCInbm9uZSdcIl0pLFxyXG4gICAgJ2ZvbnQtc3JjJzogdW5pcXVlKFtTRUxGLCAuLi5GT05UX0hPU1RTLCBEQVRBXSksXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpYXJhU2hpZWxkQ3NwUG9saWN5KG9wdGlvbnM/OiBTaWFyYVNoaWVsZENzcE9wdGlvbnMpOiBzdHJpbmcge1xyXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhnZXRTaWFyYVNoaWVsZENzcERpcmVjdGl2ZXMob3B0aW9ucykpXHJcbiAgICAubWFwKChbbmFtZSwgdmFsdWVzXSkgPT4gc2VyaWFsaXplRGlyZWN0aXZlKG5hbWUsIHZhbHVlcykpXHJcbiAgICAuam9pbignOyAnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlU2lhcmFTaGllbGRDc3BQb2xpY3koZXhpc3RpbmdQb2xpY3k6IHN0cmluZywgb3B0aW9ucz86IFNpYXJhU2hpZWxkQ3NwT3B0aW9ucyk6IHN0cmluZyB7XHJcbiAgY29uc3QgZGlyZWN0aXZlcyA9IHBhcnNlUG9saWN5KGV4aXN0aW5nUG9saWN5KTtcclxuICBjb25zdCByZWNvbW1lbmRlZCA9IGdldFNpYXJhU2hpZWxkQ3NwRGlyZWN0aXZlcyhvcHRpb25zKTtcclxuXHJcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVzXSBvZiBPYmplY3QuZW50cmllcyhyZWNvbW1lbmRlZCkpIHtcclxuICAgIGRpcmVjdGl2ZXMuc2V0KG5hbWUsIHVuaXF1ZShbLi4uKGRpcmVjdGl2ZXMuZ2V0KG5hbWUpID8/IFtdKSwgLi4udmFsdWVzXSkpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIFsuLi5kaXJlY3RpdmVzLmVudHJpZXMoKV1cclxuICAgIC5tYXAoKFtuYW1lLCB2YWx1ZXNdKSA9PiBzZXJpYWxpemVEaXJlY3RpdmUobmFtZSwgdmFsdWVzKSlcclxuICAgIC5qb2luKCc7ICcpO1xyXG59XHJcbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLWNzcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1jc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNyQixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUV4QyxNQUFNLFlBQVksR0FBRyxDQUFDLGdDQUFnQyxDQUFVLENBQUM7QUFDakUsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLDZCQUE2QixDQUFVLENBQUM7QUFDdkUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBVSxDQUFDO0FBQ2xFLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLGdDQUFnQztJQUNoQywwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLDhCQUE4QjtDQUN0QixDQUFDO0FBQ1gsTUFBTSxVQUFVLEdBQUc7SUFDakIsMkJBQTJCO0lBQzNCLDBCQUEwQjtJQUMxQiw4QkFBOEI7Q0FDdEIsQ0FBQztBQUNYLE1BQU0sU0FBUyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsMEJBQTBCLENBQVUsQ0FBQztBQUUxRixTQUFTLE1BQU0sQ0FBQyxNQUFpQztJQUMvQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFT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QUFPLEVBQUUsQ0FBQztTQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTaWFyYVNoaWVsZENzcE9wdGlvbnMge1xuICAvKiogU2VydmVyLWdlbmVyYXRlZCBub25jZSB2YWx1ZSB3aXRob3V0IHRoZSBgJ25vbmNlLSdgIHByZWZpeC4gKi9cbiAgbm9uY2U/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBpZiB0aGUgY3VzdG9tZXIgc3RpbGwgbG9hZHMgalF1ZXJ5IGZyb20gR29vZ2xlJ3MgQ0ROLiAqL1xuICBpbmNsdWRlR29vZ2xlQXBpcz86IGJvb2xlYW47XG4gIC8qKiBJbmNsdWRlIGBzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5lJ2AgKG5vdCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbikuICovXG4gIGluY2x1ZGVVbnNhZmVJbmxpbmVTY3JpcHQ/OiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBgc2NyaXB0LXNyYy1hdHRyICdzZWxmJyAndW5zYWZlLWlubGluZSdgIGluc3RlYWQgb2YgYCdub25lJ2AuICovXG4gIGFsbG93SW5saW5lRXZlbnRBdHRyaWJ1dGVzPzogYm9vbGVhbjtcbiAgLyoqIEluY2x1ZGUgYHN0eWxlLXNyYyAndW5zYWZlLWlubGluZSdgIChub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24pLiAqL1xuICBpbmNsdWRlVW5zYWZlSW5saW5lU3R5bGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTaWFyYVNoaWVsZENzcERpcmVjdGl2ZXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cbmNvbnN0IFNFTEYgPSBcIidzZWxmJ1wiO1xuY29uc3QgREFUQSA9ICdkYXRhOic7XG5jb25zdCBVTlNBRkVfSU5MSU5FID0gXCIndW5zYWZlLWlubGluZSdcIjtcblxuY29uc3QgU0NSSVBUX0hPU1RTID0gWydodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20nXSBhcyBjb25zdDtcbmNvbnN0IE9QVElPTkFMX1NDUklQVF9IT1NUUyA9IFsnaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tJ10gYXMgY29uc3Q7XG5jb25zdCBDT05ORUNUX0hPU1RTID0gWydodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20nXSBhcyBjb25zdDtcbmNvbnN0IFNUWUxFX0hPU1RTID0gW1xuICAnaHR0cHM6Ly9lbWJlZC5teWN5YmVyc2lhcmEuY29tJyxcbiAgJ2h0dHBzOi8vbXljeWJlcnNpYXJhLmNvbScsXG4gICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tJyxcbiAgJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20nLFxuXSBhcyBjb25zdDtcbmNvbnN0IEZPTlRfSE9TVFMgPSBbXG4gICdodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tJyxcbiAgJ2h0dHBzOi8vbXljeWJlcnNpYXJhLmNvbScsXG4gICdodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tJyxcbl0gYXMgY29uc3Q7XG5jb25zdCBJTUdfSE9TVFMgPSBbJ2h0dHBzOi8vZW1iZWQubXljeWJlcnNpYXJhLmNvbScsICdodHRwczovL215Y3liZXJzaWFyYS5jb20nXSBhcyBjb25zdDtcblxuZnVuY3Rpb24gdW5pcXVlKHZhbHVlczogQXJyYXk8c3RyaW5nIHwgdW5kZWZpbmVkPik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KHZhbHVlcy5maWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgc3RyaW5nID0+IEJvb2xlYW4odmFsdWUgJiYgdmFsdWUudHJpbSgpKSkpXTtcbn1cblxuZnVuY3Rpb24gbm9uY2VTb3VyY2Uobm9uY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gbm9uY2UgPyBgJ25vbmNlLSR7bm9uY2V9J2AgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZURpcmVjdGl2ZShuYW1lOiBzdHJpbmcsIHZhbHVlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWVzLmxlbmd0aCA+IDAgPyBgJHtuYW1lfSAke3ZhbHVlcy5qb2luKCcgJyl9YCA6IG5hbWU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUG9saWN5KHBvbGljeTogc3RyaW5nKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgZGlyZWN0aXZlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuICBmb3IgKGNvbnN0IHJhd0RpcmVjdGl2ZSBvZiBwb2xpY3kuc3BsaXQoJzsnKSkge1xuICAgIGNvbnN0IGRpcmVjdGl2ZSA9IHJhd0RpcmVjdGl2ZS50cmltKCk7XG4gICAgaWYgKCFkaXJlY3RpdmUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gZGlyZWN0aXZlLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IFtuYW1lLCAuLi52YWx1ZXNdID0gcGFydHM7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBkaXJlY3RpdmVzLnNldChuYW1lLCB2YWx1ZXMpO1xuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGl2ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaWFyYVNoaWVsZENzcERpcmVjdGl2ZXMob3B0aW9ucz86IFNpYXJhU2hpZWxkQ3NwT3B0aW9ucyk6IFNpYXJhU2hpZWxkQ3NwRGlyZWN0aXZlcyB7XG4gIGNvbnN0IGluY2x1ZGVHb29nbGVBcGlzID0gb3B0aW9ucz8uaW5jbHVkZUdvb2dsZUFwaXMgPz8gZmFsc2U7XG4gIC8vIERlZmF1bHQgdG8gc3RyaWN0L3NhZmUgQ1NQLiBDdXN0b21lcnMgY2FuIGV4cGxpY2l0bHkgb3B0LWluIGlmIHRoZXkgYWNjZXB0IHRoZSByaXNrLlxuICBjb25zdCBpbmNsdWRlVW5zYWZlSW5saW5lU2NyaXB0ID0gb3B0aW9ucz8uaW5jbHVkZVVuc2FmZUlubGluZVNjcmlwdCA/PyBmYWxzZTtcbiAgY29uc3QgaW5jbHVkZVVuc2FmZUlubGluZVN0eWxlID0gb3B0aW9ucz8uaW5jbHVkZVVuc2FmZUlubGluZVN0eWxlID8/IGZhbHNlO1xuICBjb25zdCBhbGxvd0lubGluZUV2ZW50QXR0cmlidXRlcyA9IG9wdGlvbnM/LmFsbG93SW5saW5lRXZlbnRBdHRyaWJ1dGVzID8/IGZhbHNlO1xuICBjb25zdCBub25jZSA9IG5vbmNlU291cmNlKG9wdGlvbnM/Lm5vbmNlKTtcbiAgY29uc3Qgc2NyaXB0SG9zdHMgPSBpbmNsdWRlR29vZ2xlQXBpcyA/IFsuLi5TQ1JJUFRfSE9TVFMsIC4uLk9QVElPTkFMX1NDUklQVF9IT1NUU10gOiBbLi4uU0NSSVBUX0hPU1RTXTtcbiAgY29uc3Qgc3R5bGVTb3VyY2VzID0gdW5pcXVlKFtTRUxGLCBub25jZSwgLi4uU1RZTEVfSE9TVFNdKTtcblxuICByZXR1cm4ge1xuICAgICdkZWZhdWx0LXNyYyc6IHVuaXF1ZShbU0VMRl0pLFxuICAgIC8qKlxuICAgICAqIENTUCBub3RlOlxuICAgICAqIC0gVmVuZG9yIEhUTUwgY2FuIGluY2x1ZGUgaW5saW5lIGV2ZW50IGhhbmRsZXJzIChvbmNsaWNrLCBldGMpLiBDU1Agbm9uY2VzIGRvIE5PVCBjb3ZlciB0aG9zZS5cbiAgICAgKiAtIFdpdGggYSBjb25maWd1cmVkIG5vbmNlLCB0aGUgcGFja2FnZSBtaWdyYXRlcyB0aG9zZSBoYW5kbGVycyB0byBhZGRFdmVudExpc3RlbmVyIHNvIGBzY3JpcHQtc3JjLWF0dHIgJ25vbmUnYCB3b3Jrcy5cbiAgICAgKi9cbiAgICAnc2NyaXB0LXNyYyc6IHVuaXF1ZShbU0VMRiwgbm9uY2UsIC4uLnNjcmlwdEhvc3RzLCBpbmNsdWRlVW5zYWZlSW5saW5lU2NyaXB0ID8gVU5TQUZFX0lOTElORSA6IHVuZGVmaW5lZF0pLFxuICAgICdzY3JpcHQtc3JjLWVsZW0nOiB1bmlxdWUoW1NFTEYsIG5vbmNlLCAuLi5zY3JpcHRIb3N0c10pLFxuICAgICdzY3JpcHQtc3JjLWF0dHInOiB1bmlxdWUoYWxsb3dJbmxpbmVFdmVudEF0dHJpYnV0ZXMgPyBbU0VMRiwgVU5TQUZFX0lOTElORV0gOiBbXCInbm9uZSdcIl0pLFxuICAgICdjb25uZWN0LXNyYyc6IHVuaXF1ZShbU0VMRiwgLi4uQ09OTkVDVF9IT1NUU10pLFxuICAgICdpbWctc3JjJzogdW5pcXVlKFtTRUxGLCBEQVRBLCAuLi5JTUdfSE9TVFNdKSxcbiAgICAvKipcbiAgICAgKiBDU1Agbm90ZTpcbiAgICAgKiAtIEEgbm9uY2UgYWxsb3dzIGA8c3R5bGUgbm9uY2U9XCIuLi5cIj4uLi48L3N0eWxlPmAgYnV0IGRvZXMgTk9UIGFsbG93IGBzdHlsZT1cIlwiYCBhdHRyaWJ1dGVzIC8gYGVsZW1lbnQuc3R5bGU9Li4uYC5cbiAgICAgKiAtIFZlbmRvci9qUXVlcnkgdXNlcyBzdHlsZSBhdHRyaWJ1dGVzIGluIHNvbWUgZmxvd3MsIHNvIHdlIHNjb3BlIGAndW5zYWZlLWlubGluZSdgIHRvICphdHRyaWJ1dGVzIG9ubHkqLlxuICAgICAqIC0gVGhpcyBrZWVwcyBzY3JpcHRzIHN0cmljdCB3aGlsZSByZXN0b3JpbmcgY29tcGF0aWJpbGl0eSB3aXRob3V0IHJlcXVpcmluZyBgc3R5bGUtc3JjICd1bnNhZmUtaW5saW5lJ2AuXG4gICAgICovXG4gICAgJ3N0eWxlLXNyYyc6IHVuaXF1ZShbLi4uc3R5bGVTb3VyY2VzLCBpbmNsdWRlVW5zYWZlSW5saW5lU3R5bGUgPyBVTlNBRkVfSU5MSU5FIDogdW5kZWZpbmVkXSksXG4gICAgJ3N0eWxlLXNyYy1lbGVtJzogdW5pcXVlKHN0eWxlU291cmNlcyksXG4gICAgJ3N0eWxlLXNyYy1hdHRyJzogdW5pcXVlKGluY2x1ZGVVbnNhZmVJbmxpbmVTdHlsZSA/IFtTRUxGLCBVTlNBRkVfSU5MSU5FXSA6IFtcIidub25lJ1wiXSksXG4gICAgJ2ZvbnQtc3JjJzogdW5pcXVlKFtTRUxGLCAuLi5GT05UX0hPU1RTLCBEQVRBXSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaWFyYVNoaWVsZENzcFBvbGljeShvcHRpb25zPzogU2lhcmFTaGllbGRDc3BPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGdldFNpYXJhU2hpZWxkQ3NwRGlyZWN0aXZlcyhvcHRpb25zKSlcbiAgICAubWFwKChbbmFtZSwgdmFsdWVzXSkgPT4gc2VyaWFsaXplRGlyZWN0aXZlKG5hbWUsIHZhbHVlcykpXG4gICAgLmpvaW4oJzsgJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVNpYXJhU2hpZWxkQ3NwUG9saWN5KGV4aXN0aW5nUG9saWN5OiBzdHJpbmcsIG9wdGlvbnM/OiBTaWFyYVNoaWVsZENzcE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VQb2xpY3koZXhpc3RpbmdQb2xpY3kpO1xuICBjb25zdCByZWNvbW1lbmRlZCA9IGdldFNpYXJhU2hpZWxkQ3NwRGlyZWN0aXZlcyhvcHRpb25zKTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHJlY29tbWVuZGVkKSkge1xuICAgIGRpcmVjdGl2ZXMuc2V0KG5hbWUsIHVuaXF1ZShbLi4uKGRpcmVjdGl2ZXMuZ2V0KG5hbWUpID8/IFtdKSwgLi4udmFsdWVzXSkpO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5kaXJlY3RpdmVzLmVudHJpZXMoKV1cbiAgICAubWFwKChbbmFtZSwgdmFsdWVzXSkgPT4gc2VyaWFsaXplRGlyZWN0aXZlKG5hbWUsIHZhbHVlcykpXG4gICAgLmpvaW4oJzsgJyk7XG59XG4iXX0=
@@ -71,7 +71,7 @@ function getVendorRuntimeErrorPatchState() {
71
71
  function isLikelyVendorScriptRuntimeError(message, source) {
72
72
  const normalizedMessage = String(message ?? '').trim().toLowerCase();
73
73
  const normalizedSource = String(source ?? '').trim().toLowerCase();
74
- const fromSiaraHost = normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');
74
+ const fromSiaraHost = normalizedSource.includes('embed.mycybersiara.com');
75
75
  const fromRequestsJs = normalizedSource.includes('requests.js');
76
76
  const isKnownVendorDomError = normalizedMessage.includes("cannot read properties of null (reading 'removechild')") &&
77
77
  (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));
@@ -111,7 +111,6 @@ export function installVendorRuntimeErrorSuppression() {
111
111
  // Requests.js and vendor scripts are commonly cross-origin; suppress the generic noise.
112
112
  if (filename.includes('requests.js') ||
113
113
  filename.includes('embed.mycybersiara.com') ||
114
- filename.includes('embedcdn.mycybersiara.com') ||
115
114
  filename.includes('jquery')) {
116
115
  event.preventDefault?.();
117
116
  event.stopImmediatePropagation?.();
@@ -134,4 +133,4 @@ export function installVendorRuntimeErrorSuppression() {
134
133
  }
135
134
  patchState.installed = true;
136
135
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLWxvZy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1sb2ctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsTUFBTSx1QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQztBQUNuRSxNQUFNLG9DQUFvQyxHQUFHLDZDQUE2QyxDQUFDO0FBQzNGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0FBRXhDLFNBQVMsb0JBQW9CO0lBQzNCLE1BQU0sV0FBVyxHQUFHLFVBRW5CLENBQUM7SUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztRQUMxQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsR0FBRztZQUNyQyxLQUFLLEVBQUUsQ0FBQztZQUNSLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN4QyxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDMUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELFNBQVMsV0FBVztJQUNsQixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQzFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3RCLElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQUUsT0FBTztJQUVqQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUM5QixPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMvQixPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMvQixPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJO2FBQ3BCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNULFdBQVcsRUFBRSxDQUFDO1FBRWpCLHFGQUFxRjtRQUNyRixJQUNFLFVBQVUsQ0FBQyxRQUFRLENBQUMsc0NBQXNDLENBQUM7WUFDM0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDbkMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztZQUMxQyxVQUFVLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUNwQyxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsYUFBYTtJQUNwQixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQzFDLElBQUksVUFBVSxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQUUsT0FBTztJQUNuQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0QixJQUFJLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUFFLE9BQU87SUFFakMsT0FBTyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztJQUN2QyxPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDdkMsT0FBTyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQVEsR0FBRywwQkFBMEI7SUFDL0UsV0FBVyxFQUFFLENBQUM7SUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsYUFBYSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsK0JBQStCO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLFVBRW5CLENBQUM7SUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxXQUFXLENBQUMsb0NBQW9DLENBQUMsR0FBRztZQUNsRCxTQUFTLEVBQUUsS0FBSztZQUNoQixlQUFlLEVBQUUsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJO1NBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBUyxnQ0FBZ0MsQ0FBQyxPQUFnQixFQUFFLE1BQWU7SUFDekUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuRSxNQUFNLGFBQWEsR0FDakIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDaEgsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0scUJBQXFCLEdBQ3pCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyx3REFBd0QsQ0FBQztRQUNwRixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sd0JBQXdCLEdBQzVCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVuSCxJQUFJLGFBQWE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQixJQUFJLGNBQWM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNoQyxJQUFJLHFCQUFxQjtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZDLElBQUksd0JBQXdCO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDMUMsT0FBTyxpQkFBaUIsS0FBSyxlQUFlLElBQUksaUJBQWlCLEtBQUssY0FBYyxDQUFDO0FBQ3ZGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsb0NBQW9DO0lBQ2xELE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDckQsSUFBSSxVQUFVLENBQUMsU0FBUztRQUFFLE9BQU87SUFFakMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxNQUFNLHFCQUFxQixHQUFJLFVBQW9GO1NBQ2hILGdDQUFnQyxDQUFDO0lBRXBDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUM1Qyx5RkFBeUY7UUFDekYscUZBQXFGO1FBQ3JGLE1BQU0sVUFBVSxHQUFHLEtBQW1CLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFFLFVBQStDLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRS9HLE1BQU0seUJBQXlCLEdBQzdCLE9BQU8sS0FBSyxlQUFlO1lBQzNCLE9BQU8sS0FBSyxjQUFjO1lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMseUJBQXlCO1lBQUUsT0FBTztRQUV2Qyx3RkFBd0Y7UUFDeEYsSUFDRSxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDO1lBQzNDLFFBQVEsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7WUFDOUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDM0IsQ0FBQztZQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLEtBQThELENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBQy9GLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdELElBQUksZ0NBQWdDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMxQyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRiwwR0FBMEc7SUFDMUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDMUIsVUFBb0YsQ0FBQyxnQ0FBZ0M7WUFDcEgsb0JBQW9CLENBQUM7UUFDdkIsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBDb25zb2xlUGF0Y2hTdGF0ZSB7XG4gIGRlcHRoOiBudW1iZXI7XG4gIG9yaWdpbmFsTG9nOiBDb25zb2xlWydsb2cnXTtcbiAgb3JpZ2luYWxJbmZvOiBDb25zb2xlWydpbmZvJ107XG4gIG9yaWdpbmFsV2FybjogQ29uc29sZVsnd2FybiddO1xuICBvcmlnaW5hbERlYnVnOiBDb25zb2xlWydkZWJ1ZyddO1xuICBvcmlnaW5hbEVycm9yOiBDb25zb2xlWydlcnJvciddO1xufVxuXG5pbnRlcmZhY2UgVmVuZG9yUnVudGltZUVycm9yUGF0Y2hTdGF0ZSB7XG4gIGluc3RhbGxlZDogYm9vbGVhbjtcbiAgb3JpZ2luYWxPbkVycm9yOiBPbkVycm9yRXZlbnRIYW5kbGVyIHwgbnVsbDtcbn1cblxuY29uc3QgQ09OU09MRV9QQVRDSF9TVEFURV9LRVkgPSAnX19zaWFyYVNoaWVsZENvbnNvbGVQYXRjaFN0YXRlX18nO1xuY29uc3QgVkVORE9SX1JVTlRJTUVfRVJST1JfUEFUQ0hfU1RBVEVfS0VZID0gJ19fc2lhcmFTaGllbGRWZW5kb3JSdW50aW1lRXJyb3JQYXRjaFN0YXRlX18nO1xuY29uc3QgREVGQVVMVF9TVVBQUkVTU19XSU5ET1dfTVMgPSA4MDAwO1xuXG5mdW5jdGlvbiBnZXRDb25zb2xlUGF0Y2hTdGF0ZSgpOiBDb25zb2xlUGF0Y2hTdGF0ZSB7XG4gIGNvbnN0IGdsb2JhbFN0YXRlID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgICBbQ09OU09MRV9QQVRDSF9TVEFURV9LRVldPzogQ29uc29sZVBhdGNoU3RhdGU7XG4gIH07XG5cbiAgaWYgKCFnbG9iYWxTdGF0ZVtDT05TT0xFX1BBVENIX1NUQVRFX0tFWV0pIHtcbiAgICBnbG9iYWxTdGF0ZVtDT05TT0xFX1BBVENIX1NUQVRFX0tFWV0gPSB7XG4gICAgICBkZXB0aDogMCxcbiAgICAgIG9yaWdpbmFsTG9nOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLFxuICAgICAgb3JpZ2luYWxJbmZvOiBjb25zb2xlLmluZm8uYmluZChjb25zb2xlKSxcbiAgICAgIG9yaWdpbmFsV2FybjogY29uc29sZS53YXJuLmJpbmQoY29uc29sZSksXG4gICAgICBvcmlnaW5hbERlYnVnOiBjb25zb2xlLmRlYnVnLmJpbmQoY29uc29sZSksXG4gICAgICBvcmlnaW5hbEVycm9yOiBjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBnbG9iYWxTdGF0ZVtDT05TT0xFX1BBVENIX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIG11dGVDb25zb2xlKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0Q29uc29sZVBhdGNoU3RhdGUoKTtcbiAgcGF0Y2hTdGF0ZS5kZXB0aCArPSAxO1xuICBpZiAocGF0Y2hTdGF0ZS5kZXB0aCA+IDEpIHJldHVybjtcblxuICBjb25zb2xlLmxvZyA9ICgpID0+IHVuZGVmaW5lZDtcbiAgY29uc29sZS5pbmZvID0gKCkgPT4gdW5kZWZpbmVkO1xuICBjb25zb2xlLndhcm4gPSAoKSA9PiB1bmRlZmluZWQ7XG4gIGNvbnNvbGUuZGVidWcgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIGNvbnNvbGUuZXJyb3IgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGFyZ3NcbiAgICAgIC5tYXAoKGFyZykgPT4gKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnID8gYXJnIDogYXJnIGluc3RhbmNlb2YgRXJyb3IgPyBhcmcubWVzc2FnZSA6ICcnKSlcbiAgICAgIC5qb2luKCcgJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gS25vd24gbm9pc3kgdXBzdHJlYW0gdmVuZG9yIHJ1bnRpbWUgZXJyb3IgcGF0aCBmcm9tIENhcHRjaGFSZXNvdXJjZXMuanMgYm9vdHN0cmFwLlxuICAgIGlmIChcbiAgICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2FuIGVycm9yZXZlbnQgd2l0aCBubyBlcnJvciBvY2N1cnJlZCcpIHx8XG4gICAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdzY3JpcHQgZXJyb3InKSB8fFxuICAgICAgbm9ybWFsaXplZC5pbmNsdWRlcygnY2FwdGNoYXJlc291cmNlcy5qcycpIHx8XG4gICAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdnZXRjeWJlcnNpYXJhJylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXRjaFN0YXRlLm9yaWdpbmFsRXJyb3IoLi4uYXJncyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVubXV0ZUNvbnNvbGUoKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXRDb25zb2xlUGF0Y2hTdGF0ZSgpO1xuICBpZiAocGF0Y2hTdGF0ZS5kZXB0aCA9PT0gMCkgcmV0dXJuO1xuICBwYXRjaFN0YXRlLmRlcHRoIC09IDE7XG4gIGlmIChwYXRjaFN0YXRlLmRlcHRoID4gMCkgcmV0dXJuO1xuXG4gIGNvbnNvbGUubG9nID0gcGF0Y2hTdGF0ZS5vcmlnaW5hbExvZztcbiAgY29uc29sZS5pbmZvID0gcGF0Y2hTdGF0ZS5vcmlnaW5hbEluZm87XG4gIGNvbnNvbGUud2FybiA9IHBhdGNoU3RhdGUub3JpZ2luYWxXYXJuO1xuICBjb25zb2xlLmRlYnVnID0gcGF0Y2hTdGF0ZS5vcmlnaW5hbERlYnVnO1xuICBjb25zb2xlLmVycm9yID0gcGF0Y2hTdGF0ZS5vcmlnaW5hbEVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcHJlc3NWZW5kb3JDb25zb2xlV2luZG93KHdpbmRvd01zID0gREVGQVVMVF9TVVBQUkVTU19XSU5ET1dfTVMpOiB2b2lkIHtcbiAgbXV0ZUNvbnNvbGUoKTtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgdW5tdXRlQ29uc29sZSgpO1xuICB9LCB3aW5kb3dNcyk7XG59XG5cbmZ1bmN0aW9uIGdldFZlbmRvclJ1bnRpbWVFcnJvclBhdGNoU3RhdGUoKTogVmVuZG9yUnVudGltZUVycm9yUGF0Y2hTdGF0ZSB7XG4gIGNvbnN0IGdsb2JhbFN0YXRlID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgICBbVkVORE9SX1JVTlRJTUVfRVJST1JfUEFUQ0hfU1RBVEVfS0VZXT86IFZlbmRvclJ1bnRpbWVFcnJvclBhdGNoU3RhdGU7XG4gIH07XG5cbiAgaWYgKCFnbG9iYWxTdGF0ZVtWRU5ET1JfUlVOVElNRV9FUlJPUl9QQVRDSF9TVEFURV9LRVldKSB7XG4gICAgZ2xvYmFsU3RhdGVbVkVORE9SX1JVTlRJTUVfRVJST1JfUEFUQ0hfU1RBVEVfS0VZXSA9IHtcbiAgICAgIGluc3RhbGxlZDogZmFsc2UsXG4gICAgICBvcmlnaW5hbE9uRXJyb3I6IGdsb2JhbFRoaXMub25lcnJvciA/PyBudWxsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2xvYmFsU3RhdGVbVkVORE9SX1JVTlRJTUVfRVJST1JfUEFUQ0hfU1RBVEVfS0VZXTtcbn1cblxuZnVuY3Rpb24gaXNMaWtlbHlWZW5kb3JTY3JpcHRSdW50aW1lRXJyb3IobWVzc2FnZTogdW5rbm93biwgc291cmNlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRNZXNzYWdlID0gU3RyaW5nKG1lc3NhZ2UgPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBub3JtYWxpemVkU291cmNlID0gU3RyaW5nKHNvdXJjZSA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGZyb21TaWFyYUhvc3QgPVxuICAgIG5vcm1hbGl6ZWRTb3VyY2UuaW5jbHVkZXMoJ2VtYmVkLm15Y3liZXJzaWFyYS5jb20nKSB8fCBub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdlbWJlZGNkbi5teWN5YmVyc2lhcmEuY29tJyk7XG4gIGNvbnN0IGZyb21SZXF1ZXN0c0pzID0gbm9ybWFsaXplZFNvdXJjZS5pbmNsdWRlcygncmVxdWVzdHMuanMnKTtcbiAgY29uc3QgaXNLbm93blZlbmRvckRvbUVycm9yID1cbiAgICBub3JtYWxpemVkTWVzc2FnZS5pbmNsdWRlcyhcImNhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgbnVsbCAocmVhZGluZyAncmVtb3ZlY2hpbGQnKVwiKSAmJlxuICAgIChub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdqcXVlcnknKSB8fCBub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdjYXB0Y2hhcmVzb3VyY2VzJykpO1xuICBjb25zdCBpc0tub3duTm9FcnJvckVycm9yRXZlbnQgPVxuICAgIG5vcm1hbGl6ZWRNZXNzYWdlLmluY2x1ZGVzKCdhbiBlcnJvcmV2ZW50IHdpdGggbm8gZXJyb3Igb2NjdXJyZWQnKSB8fCBub3JtYWxpemVkTWVzc2FnZS5pbmNsdWRlcygnc2NyaXB0IGVycm9yJyk7XG5cbiAgaWYgKGZyb21TaWFyYUhvc3QpIHJldHVybiB0cnVlO1xuICBpZiAoZnJvbVJlcXVlc3RzSnMpIHJldHVybiB0cnVlO1xuICBpZiAoaXNLbm93blZlbmRvckRvbUVycm9yKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGlzS25vd25Ob0Vycm9yRXJyb3JFdmVudCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBub3JtYWxpemVkTWVzc2FnZSA9PT0gJ3NjcmlwdCBlcnJvci4nIHx8IG5vcm1hbGl6ZWRNZXNzYWdlID09PSAnc2NyaXB0IGVycm9yJztcbn1cblxuLyoqXG4gKiBTdXBwcmVzc2VzIG5vaXN5IGNyb3NzLW9yaWdpbiB2ZW5kb3IgcnVudGltZSBzY3JpcHQgZXJyb3JzIHNvIEFuZ3VsYXIgZG9lcyBub3RcbiAqIHN1cmZhY2UgdGhlbSBhcyB1bmhhbmRsZWQgYEVycm9yRXZlbnRgIGNyYXNoZXMgaW4gdGhlIGNvbnNvbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24oKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXRWZW5kb3JSdW50aW1lRXJyb3JQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLmluc3RhbGxlZCkgcmV0dXJuO1xuXG4gIGNvbnN0IHByZXZpb3VzT25FcnJvciA9IHBhdGNoU3RhdGUub3JpZ2luYWxPbkVycm9yO1xuICBjb25zdCBwcmV2aW91c0Vycm9yTGlzdGVuZXIgPSAoZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIHsgX19zaWFyYVNoaWVsZFByZXZFcnJvckxpc3RlbmVyX18/OiAoZXY6IEV2ZW50KSA9PiB2b2lkIH0pXG4gICAgLl9fc2lhcmFTaGllbGRQcmV2RXJyb3JMaXN0ZW5lcl9fO1xuXG4gIGNvbnN0IGNhcHR1cmVFcnJvckxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIC8vIEFuZ3VsYXIgY2FuIHN1cmZhY2UgY3Jvc3Mtb3JpZ2luIHNjcmlwdCBmYWlsdXJlcyBhcyBnZW5lcmljIEVycm9yRXZlbnQgXCJTY3JpcHQgZXJyb3IuXCJcbiAgICAvLyBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgdmVuZG9yIHJlcXVlc3Qgc3VjY2VlZHMuIFRoaXMgYmxvY2tzIHRob3NlIGZyb20gYnViYmxpbmcuXG4gICAgY29uc3QgZXJyb3JFdmVudCA9IGV2ZW50IGFzIEVycm9yRXZlbnQ7XG4gICAgY29uc3QgbWVzc2FnZSA9IFN0cmluZyhlcnJvckV2ZW50Py5tZXNzYWdlID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IFN0cmluZygoZXJyb3JFdmVudCBhcyB1bmtub3duIGFzIHsgZmlsZW5hbWU/OiBzdHJpbmcgfSk/LmZpbGVuYW1lID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IGlzR2VuZXJpY0Nyb3NzT3JpZ2luTm9pc2UgPVxuICAgICAgbWVzc2FnZSA9PT0gJ3NjcmlwdCBlcnJvci4nIHx8XG4gICAgICBtZXNzYWdlID09PSAnc2NyaXB0IGVycm9yJyB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnYW4gZXJyb3JldmVudCB3aXRoIG5vIGVycm9yIG9jY3VycmVkJyk7XG5cbiAgICBpZiAoIWlzR2VuZXJpY0Nyb3NzT3JpZ2luTm9pc2UpIHJldHVybjtcblxuICAgIC8vIFJlcXVlc3RzLmpzIGFuZCB2ZW5kb3Igc2NyaXB0cyBhcmUgY29tbW9ubHkgY3Jvc3Mtb3JpZ2luOyBzdXBwcmVzcyB0aGUgZ2VuZXJpYyBub2lzZS5cbiAgICBpZiAoXG4gICAgICBmaWxlbmFtZS5pbmNsdWRlcygncmVxdWVzdHMuanMnKSB8fFxuICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJ2VtYmVkLm15Y3liZXJzaWFyYS5jb20nKSB8fFxuICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJ2VtYmVkY2RuLm15Y3liZXJzaWFyYS5jb20nKSB8fFxuICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJ2pxdWVyeScpXG4gICAgKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdD8uKCk7XG4gICAgICAoZXZlbnQgYXMgdW5rbm93biBhcyB7IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj86ICgpID0+IHZvaWQgfSkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPy4oKTtcbiAgICB9XG4gIH07XG5cbiAgZ2xvYmFsVGhpcy5vbmVycm9yID0gKG1lc3NhZ2UsIHNvdXJjZSwgbGluZW5vLCBjb2xubywgZXJyb3IpID0+IHtcbiAgICBpZiAoaXNMaWtlbHlWZW5kb3JTY3JpcHRSdW50aW1lRXJyb3IobWVzc2FnZSwgc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwcmV2aW91c09uRXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwcmV2aW91c09uRXJyb3IuY2FsbChnbG9iYWxUaGlzLCBtZXNzYWdlLCBzb3VyY2UsIGxpbmVubywgY29sbm8sIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gQ2FwdHVyZS1waGFzZSBsaXN0ZW5lciB0byBwcmV2ZW50IEFuZ3VsYXIgZ2xvYmFsIGVycm9yIGhhbmRsZXIgZnJvbSBsb2dnaW5nIGdlbmVyaWMgY3Jvc3Mtb3JpZ2luIG5vaXNlLlxuICBpZiAoIXByZXZpb3VzRXJyb3JMaXN0ZW5lcikge1xuICAgIChnbG9iYWxUaGlzIGFzIHVua25vd24gYXMgeyBfX3NpYXJhU2hpZWxkUHJldkVycm9yTGlzdGVuZXJfXz86IChldjogRXZlbnQpID0+IHZvaWQgfSkuX19zaWFyYVNoaWVsZFByZXZFcnJvckxpc3RlbmVyX18gPVxuICAgICAgY2FwdHVyZUVycm9yTGlzdGVuZXI7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNhcHR1cmVFcnJvckxpc3RlbmVyLCB0cnVlKTtcbiAgfVxuXG4gIHBhdGNoU3RhdGUuaW5zdGFsbGVkID0gdHJ1ZTtcbn1cblxuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLWxvZy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1sb2ctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsTUFBTSx1QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQztBQUNuRSxNQUFNLG9DQUFvQyxHQUFHLDZDQUE2QyxDQUFDO0FBQzNGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0FBRXhDLFNBQVMsb0JBQW9CO0lBQzNCLE1BQU0sV0FBVyxHQUFHLFVBRW5CLENBQUM7SUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztRQUMxQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsR0FBRztZQUNyQyxLQUFLLEVBQUUsQ0FBQztZQUNSLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN4QyxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDMUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELFNBQVMsV0FBVztJQUNsQixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQzFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3RCLElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxD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LE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsMEdBQTBHO0lBQzFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLFVBQW9GLENBQUMsZ0NBQWdDO1lBQ3BILG9CQUFvQixDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQ29uc29sZVBhdGNoU3RhdGUge1xuICBkZXB0aDogbnVtYmVyO1xuICBvcmlnaW5hbExvZzogQ29uc29sZVsnbG9nJ107XG4gIG9yaWdpbmFsSW5mbzogQ29uc29sZVsnaW5mbyddO1xuICBvcmlnaW5hbFdhcm46IENvbnNvbGVbJ3dhcm4nXTtcbiAgb3JpZ2luYWxEZWJ1ZzogQ29uc29sZVsnZGVidWcnXTtcbiAgb3JpZ2luYWxFcnJvcjogQ29uc29sZVsnZXJyb3InXTtcbn1cblxuaW50ZXJmYWNlIFZlbmRvclJ1bnRpbWVFcnJvclBhdGNoU3RhdGUge1xuICBpbnN0YWxsZWQ6IGJvb2xlYW47XG4gIG9yaWdpbmFsT25FcnJvcjogT25FcnJvckV2ZW50SGFuZGxlciB8IG51bGw7XG59XG5cbmNvbnN0IENPTlNPTEVfUEFUQ0hfU1RBVEVfS0VZID0gJ19fc2lhcmFTaGllbGRDb25zb2xlUGF0Y2hTdGF0ZV9fJztcbmNvbnN0IFZFTkRPUl9SVU5USU1FX0VSUk9SX1BBVENIX1NUQVRFX0tFWSA9ICdfX3NpYXJhU2hpZWxkVmVuZG9yUnVudGltZUVycm9yUGF0Y2hTdGF0ZV9fJztcbmNvbnN0IERFRkFVTFRfU1VQUFJFU1NfV0lORE9XX01TID0gODAwMDtcblxuZnVuY3Rpb24gZ2V0Q29uc29sZVBhdGNoU3RhdGUoKTogQ29uc29sZVBhdGNoU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW0NPTlNPTEVfUEFUQ0hfU1RBVEVfS0VZXT86IENvbnNvbGVQYXRjaFN0YXRlO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsU3RhdGVbQ09OU09MRV9QQVRDSF9TVEFURV9LRVldKSB7XG4gICAgZ2xvYmFsU3RhdGVbQ09OU09MRV9QQVRDSF9TVEFURV9LRVldID0ge1xuICAgICAgZGVwdGg6IDAsXG4gICAgICBvcmlnaW5hbExvZzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSxcbiAgICAgIG9yaWdpbmFsSW5mbzogY29uc29sZS5pbmZvLmJpbmQoY29uc29sZSksXG4gICAgICBvcmlnaW5hbFdhcm46IGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpLFxuICAgICAgb3JpZ2luYWxEZWJ1ZzogY29uc29sZS5kZWJ1Zy5iaW5kKGNvbnNvbGUpLFxuICAgICAgb3JpZ2luYWxFcnJvcjogY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2xvYmFsU3RhdGVbQ09OU09MRV9QQVRDSF9TVEFURV9LRVldO1xufVxuXG5mdW5jdGlvbiBtdXRlQ29uc29sZSgpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldENvbnNvbGVQYXRjaFN0YXRlKCk7XG4gIHBhdGNoU3RhdGUuZGVwdGggKz0gMTtcbiAgaWYgKHBhdGNoU3RhdGUuZGVwdGggPiAxKSByZXR1cm47XG5cbiAgY29uc29sZS5sb2cgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIGNvbnNvbGUuaW5mbyA9ICgpID0+IHVuZGVmaW5lZDtcbiAgY29uc29sZS53YXJuID0gKCkgPT4gdW5kZWZpbmVkO1xuICBjb25zb2xlLmRlYnVnID0gKCkgPT4gdW5kZWZpbmVkO1xuICBjb25zb2xlLmVycm9yID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBhcmdzXG4gICAgICAubWFwKChhcmcpID0+ICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyA/IGFyZyA6IGFyZyBpbnN0YW5jZW9mIEVycm9yID8gYXJnLm1lc3NhZ2UgOiAnJykpXG4gICAgICAuam9pbignICcpXG4gICAgICAudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEtub3duIG5vaXN5IHVwc3RyZWFtIHZlbmRvciBydW50aW1lIGVycm9yIHBhdGggZnJvbSBDYXB0Y2hhUmVzb3VyY2VzLmpzIGJvb3RzdHJhcC5cbiAgICBpZiAoXG4gICAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdhbiBlcnJvcmV2ZW50IHdpdGggbm8gZXJyb3Igb2NjdXJyZWQnKSB8fFxuICAgICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2NyaXB0IGVycm9yJykgfHxcbiAgICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2NhcHRjaGFyZXNvdXJjZXMuanMnKSB8fFxuICAgICAgbm9ybWFsaXplZC5pbmNsdWRlcygnZ2V0Y3liZXJzaWFyYScpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGF0Y2hTdGF0ZS5vcmlnaW5hbEVycm9yKC4uLmFyZ3MpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bm11dGVDb25zb2xlKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0Q29uc29sZVBhdGNoU3RhdGUoKTtcbiAgaWYgKHBhdGNoU3RhdGUuZGVwdGggPT09IDApIHJldHVybjtcbiAgcGF0Y2hTdGF0ZS5kZXB0aCAtPSAxO1xuICBpZiAocGF0Y2hTdGF0ZS5kZXB0aCA+IDApIHJldHVybjtcblxuICBjb25zb2xlLmxvZyA9IHBhdGNoU3RhdGUub3JpZ2luYWxMb2c7XG4gIGNvbnNvbGUuaW5mbyA9IHBhdGNoU3RhdGUub3JpZ2luYWxJbmZvO1xuICBjb25zb2xlLndhcm4gPSBwYXRjaFN0YXRlLm9yaWdpbmFsV2FybjtcbiAgY29uc29sZS5kZWJ1ZyA9IHBhdGNoU3RhdGUub3JpZ2luYWxEZWJ1ZztcbiAgY29uc29sZS5lcnJvciA9IHBhdGNoU3RhdGUub3JpZ2luYWxFcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdyh3aW5kb3dNcyA9IERFRkFVTFRfU1VQUFJFU1NfV0lORE9XX01TKTogdm9pZCB7XG4gIG11dGVDb25zb2xlKCk7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHVubXV0ZUNvbnNvbGUoKTtcbiAgfSwgd2luZG93TXMpO1xufVxuXG5mdW5jdGlvbiBnZXRWZW5kb3JSdW50aW1lRXJyb3JQYXRjaFN0YXRlKCk6IFZlbmRvclJ1bnRpbWVFcnJvclBhdGNoU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW1ZFTkRPUl9SVU5USU1FX0VSUk9SX1BBVENIX1NUQVRFX0tFWV0/OiBWZW5kb3JSdW50aW1lRXJyb3JQYXRjaFN0YXRlO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsU3RhdGVbVkVORE9SX1JVTlRJTUVfRVJST1JfUEFUQ0hfU1RBVEVfS0VZXSkge1xuICAgIGdsb2JhbFN0YXRlW1ZFTkRPUl9SVU5USU1FX0VSUk9SX1BBVENIX1NUQVRFX0tFWV0gPSB7XG4gICAgICBpbnN0YWxsZWQ6IGZhbHNlLFxuICAgICAgb3JpZ2luYWxPbkVycm9yOiBnbG9iYWxUaGlzLm9uZXJyb3IgPz8gbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW1ZFTkRPUl9SVU5USU1FX0VSUk9SX1BBVENIX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIGlzTGlrZWx5VmVuZG9yU2NyaXB0UnVudGltZUVycm9yKG1lc3NhZ2U6IHVua25vd24sIHNvdXJjZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBjb25zdCBub3JtYWxpemVkTWVzc2FnZSA9IFN0cmluZyhtZXNzYWdlID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgbm9ybWFsaXplZFNvdXJjZSA9IFN0cmluZyhzb3VyY2UgPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBmcm9tU2lhcmFIb3N0ID1cbiAgICBub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdlbWJlZC5teWN5YmVyc2lhcmEuY29tJyk7XG4gIGNvbnN0IGZyb21SZXF1ZXN0c0pzID0gbm9ybWFsaXplZFNvdXJjZS5pbmNsdWRlcygncmVxdWVzdHMuanMnKTtcbiAgY29uc3QgaXNLbm93blZlbmRvckRvbUVycm9yID1cbiAgICBub3JtYWxpemVkTWVzc2FnZS5pbmNsdWRlcyhcImNhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgbnVsbCAocmVhZGluZyAncmVtb3ZlY2hpbGQnKVwiKSAmJlxuICAgIChub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdqcXVlcnknKSB8fCBub3JtYWxpemVkU291cmNlLmluY2x1ZGVzKCdjYXB0Y2hhcmVzb3VyY2VzJykpO1xuICBjb25zdCBpc0tub3duTm9FcnJvckVycm9yRXZlbnQgPVxuICAgIG5vcm1hbGl6ZWRNZXNzYWdlLmluY2x1ZGVzKCdhbiBlcnJvcmV2ZW50IHdpdGggbm8gZXJyb3Igb2NjdXJyZWQnKSB8fCBub3JtYWxpemVkTWVzc2FnZS5pbmNsdWRlcygnc2NyaXB0IGVycm9yJyk7XG5cbiAgaWYgKGZyb21TaWFyYUhvc3QpIHJldHVybiB0cnVlO1xuICBpZiAoZnJvbVJlcXVlc3RzSnMpIHJldHVybiB0cnVlO1xuICBpZiAoaXNLbm93blZlbmRvckRvbUVycm9yKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGlzS25vd25Ob0Vycm9yRXJyb3JFdmVudCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBub3JtYWxpemVkTWVzc2FnZSA9PT0gJ3NjcmlwdCBlcnJvci4nIHx8IG5vcm1hbGl6ZWRNZXNzYWdlID09PSAnc2NyaXB0IGVycm9yJztcbn1cblxuLyoqXG4gKiBTdXBwcmVzc2VzIG5vaXN5IGNyb3NzLW9yaWdpbiB2ZW5kb3IgcnVudGltZSBzY3JpcHQgZXJyb3JzIHNvIEFuZ3VsYXIgZG9lcyBub3RcbiAqIHN1cmZhY2UgdGhlbSBhcyB1bmhhbmRsZWQgYEVycm9yRXZlbnRgIGNyYXNoZXMgaW4gdGhlIGNvbnNvbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24oKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXRWZW5kb3JSdW50aW1lRXJyb3JQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLmluc3RhbGxlZCkgcmV0dXJuO1xuXG4gIGNvbnN0IHByZXZpb3VzT25FcnJvciA9IHBhdGNoU3RhdGUub3JpZ2luYWxPbkVycm9yO1xuICBjb25zdCBwcmV2aW91c0Vycm9yTGlzdGVuZXIgPSAoZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIHsgX19zaWFyYVNoaWVsZFByZXZFcnJvckxpc3RlbmVyX18/OiAoZXY6IEV2ZW50KSA9PiB2b2lkIH0pXG4gICAgLl9fc2lhcmFTaGllbGRQcmV2RXJyb3JMaXN0ZW5lcl9fO1xuXG4gIGNvbnN0IGNhcHR1cmVFcnJvckxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIC8vIEFuZ3VsYXIgY2FuIHN1cmZhY2UgY3Jvc3Mtb3JpZ2luIHNjcmlwdCBmYWlsdXJlcyBhcyBnZW5lcmljIEVycm9yRXZlbnQgXCJTY3JpcHQgZXJyb3IuXCJcbiAgICAvLyBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgdmVuZG9yIHJlcXVlc3Qgc3VjY2VlZHMuIFRoaXMgYmxvY2tzIHRob3NlIGZyb20gYnViYmxpbmcuXG4gICAgY29uc3QgZXJyb3JFdmVudCA9IGV2ZW50IGFzIEVycm9yRXZlbnQ7XG4gICAgY29uc3QgbWVzc2FnZSA9IFN0cmluZyhlcnJvckV2ZW50Py5tZXNzYWdlID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IFN0cmluZygoZXJyb3JFdmVudCBhcyB1bmtub3duIGFzIHsgZmlsZW5hbWU/OiBzdHJpbmcgfSk/LmZpbGVuYW1lID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IGlzR2VuZXJpY0Nyb3NzT3JpZ2luTm9pc2UgPVxuICAgICAgbWVzc2FnZSA9PT0gJ3NjcmlwdCBlcnJvci4nIHx8XG4gICAgICBtZXNzYWdlID09PSAnc2NyaXB0IGVycm9yJyB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnYW4gZXJyb3JldmVudCB3aXRoIG5vIGVycm9yIG9jY3VycmVkJyk7XG5cbiAgICBpZiAoIWlzR2VuZXJpY0Nyb3NzT3JpZ2luTm9pc2UpIHJldHVybjtcblxuICAgIC8vIFJlcXVlc3RzLmpzIGFuZCB2ZW5kb3Igc2NyaXB0cyBhcmUgY29tbW9ubHkgY3Jvc3Mtb3JpZ2luOyBzdXBwcmVzcyB0aGUgZ2VuZXJpYyBub2lzZS5cbiAgICBpZiAoXG4gICAgICBmaWxlbmFtZS5pbmNsdWRlcygncmVxdWVzdHMuanMnKSB8fFxuICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJ2VtYmVkLm15Y3liZXJzaWFyYS5jb20nKSB8fFxuICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJ2pxdWVyeScpXG4gICAgKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdD8uKCk7XG4gICAgICAoZXZlbnQgYXMgdW5rbm93biBhcyB7IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj86ICgpID0+IHZvaWQgfSkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPy4oKTtcbiAgICB9XG4gIH07XG5cbiAgZ2xvYmFsVGhpcy5vbmVycm9yID0gKG1lc3NhZ2UsIHNvdXJjZSwgbGluZW5vLCBjb2xubywgZXJyb3IpID0+IHtcbiAgICBpZiAoaXNMaWtlbHlWZW5kb3JTY3JpcHRSdW50aW1lRXJyb3IobWVzc2FnZSwgc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwcmV2aW91c09uRXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwcmV2aW91c09uRXJyb3IuY2FsbChnbG9iYWxUaGlzLCBtZXNzYWdlLCBzb3VyY2UsIGxpbmVubywgY29sbm8sIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gQ2FwdHVyZS1waGFzZSBsaXN0ZW5lciB0byBwcmV2ZW50IEFuZ3VsYXIgZ2xvYmFsIGVycm9yIGhhbmRsZXIgZnJvbSBsb2dnaW5nIGdlbmVyaWMgY3Jvc3Mtb3JpZ2luIG5vaXNlLlxuICBpZiAoIXByZXZpb3VzRXJyb3JMaXN0ZW5lcikge1xuICAgIChnbG9iYWxUaGlzIGFzIHVua25vd24gYXMgeyBfX3NpYXJhU2hpZWxkUHJldkVycm9yTGlzdGVuZXJfXz86IChldjogRXZlbnQpID0+IHZvaWQgfSkuX19zaWFyYVNoaWVsZFByZXZFcnJvckxpc3RlbmVyX18gPVxuICAgICAgY2FwdHVyZUVycm9yTGlzdGVuZXI7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNhcHR1cmVFcnJvckxpc3RlbmVyLCB0cnVlKTtcbiAgfVxuXG4gIHBhdGNoU3RhdGUuaW5zdGFsbGVkID0gdHJ1ZTtcbn1cblxuIl19
@@ -317,4 +317,4 @@ export function loadScript(documentRef, src, options) {
317
317
  pendingBySrc.set(src, pending);
318
318
  return pending;
319
319
  }
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFlMUYsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYs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QyxDQUFDLENBQUM7SUFFSCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zdGFsbFZlbmRvcklubGluZUV2ZW50TWlncmF0aW9uIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLWV2ZW50LW1pZ3JhdGlvbic7XHJcblxyXG50eXBlIFNjcmlwdFN0YXR1cyA9ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2Vycm9yJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0TG9hZE9wdGlvbnMge1xyXG4gIG5vbmNlPzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSB7XHJcbiAgbm9uY2VCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+O1xyXG4gIG9ic2VydmVyQnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj47XHJcbiAgaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIFNldDxzdHJpbmc+PjtcclxuICBwYXRjaGVkOiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4+KCk7XHJcbmNvbnN0IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+PigpO1xyXG5jb25zdCBEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVkgPSAnX19zaWFyYVNoaWVsZER5bmFtaWNTY3JpcHROb25jZVN0YXRlX18nO1xyXG5cclxuZnVuY3Rpb24gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPiB7XHJcbiAgbGV0IHN0YXR1c0J5U3JjID0gU0NSSVBUX1NUQVRVU19CWV9ET0NVTUVOVC5nZXQoZG9jdW1lbnRSZWYpO1xyXG4gIGlmICghc3RhdHVzQnlTcmMpIHtcclxuICAgIHN0YXR1c0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4oKTtcclxuICAgIFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBzdGF0dXNCeVNyYyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc3RhdHVzQnlTcmM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFBlbmRpbmdCeVNyYyhkb2N1bWVudFJlZjogRG9jdW1lbnQpOiBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PiB7XHJcbiAgbGV0IHBlbmRpbmdCeVNyYyA9IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XHJcbiAgaWYgKCFwZW5kaW5nQnlTcmMpIHtcclxuICAgIHBlbmRpbmdCeVNyYyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xyXG4gICAgU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBwZW5kaW5nQnlTcmMpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBlbmRpbmdCeVNyYztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpOiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcclxuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XHJcbiAgICBbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXT86IER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGU7XHJcbiAgfTtcclxuXHJcbiAgaWYgKCFnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldKSB7XHJcbiAgICBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldID0ge1xyXG4gICAgICBub25jZUJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+KCksXHJcbiAgICAgIG9ic2VydmVyQnlEb2N1bWVudDogbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE11dGF0aW9uT2JzZXJ2ZXI+KCksXHJcbiAgICAgIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+KCksXHJcbiAgICAgIHBhdGNoZWQ6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJldHVybiBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldO1xyXG59XHJcblxyXG5mdW5jdGlvbiBub3JtYWxpemVOb25jZShub25jZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHRyaW1tZWQgPSBub25jZT8udHJpbSgpO1xyXG4gIHJldHVybiB0cmltbWVkID8gdHJpbW1lZCA6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTY3JpcHRFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1N0eWxlRWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MU3R5bGVFbGVtZW50IHtcclxuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZSc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzU3R5bGVzaGVldExpbmtFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxMaW5rRWxlbWVudCB7XHJcbiAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnbGluaycpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgY29uc3QgcmVsID0gKG5vZGUuZ2V0QXR0cmlidXRlKCdyZWwnKSA/PyAnJykudG9Mb3dlckNhc2UoKTtcclxuICByZXR1cm4gcmVsID09PSAnc3R5bGVzaGVldCc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNjcmlwdE5vbmNlKHNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcclxuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XHJcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcclxuXHJcbiAgLy8gU29tZSB2ZW5kb3IgSFRNTCBmcmFnbWVudHMgaW5jbHVkZSBpbmxpbmUgc2NyaXB0cyB0aGF0IGV4ZWN1dGUgaW1tZWRpYXRlbHkgZHVyaW5nIGluc2VydGlvbi5cclxuICAvLyBJbiBzdHJpY3QgQ1NQIG1vZGUgdGhlc2UgcnVuIHdpdGggYSBub25jZSwgYnV0IGNhbiBzdGlsbCByYWNlIERPTSBpbnNlcnRpb24gYW5kIGNyYXNoXHJcbiAgLy8gKGUuZy4gYG51bGwucXVlcnlTZWxlY3RvciguLi4pYCkuIFdlIGRlZmVuc2l2ZWx5IHJldHJ5IG9uY2Ugb24gZmFpbHVyZS5cclxuICBpZiAoIXNjcmlwdC5zcmMpIHtcclxuICAgIGNvbnN0IGJvZHkgPSBzY3JpcHQudGV4dENvbnRlbnQgPz8gJyc7XHJcbiAgICBpZiAoYm9keSAmJiAhYm9keS5pbmNsdWRlcygnX19zaWFyYVNoaWVsZElubGluZVJldHJ5X18nKSkge1xyXG4gICAgICBzY3JpcHQudGV4dENvbnRlbnQgPSBgKGZ1bmN0aW9uKCl7XFxuYCArXHJcbiAgICAgICAgYCAgdmFyIF9fc2lhcmFTaGllbGRJbmxpbmVSZXRyeV9fID0gdHJ1ZTtcXG5gICtcclxuICAgICAgICBgICBmdW5jdGlvbiBfX3J1bigpe1xcbiR7Ym9keX1cXG4gIH1cXG5gICtcclxuICAgICAgICBgICB0cnkgeyBfX3J1bigpOyB9IGNhdGNoIChlKSB7XFxuYCArXHJcbiAgICAgICAgYCAgICB0cnkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRyeSB7IF9fcnVuKCk7IH0gY2F0Y2ggKF9lKSB7fSB9LCAwKTsgfSBjYXRjaCAoX3QpIHt9XFxuYCArXHJcbiAgICAgICAgYCAgfVxcbmAgK1xyXG4gICAgICAgIGB9KSgpO2A7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBhcHBseVN0eWxlTm9uY2Uoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcclxuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHN0eWxlLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcclxuICBzdHlsZS5ub25jZSA9IHJlc29sdmVkTm9uY2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwcGx5TGlua05vbmNlKGxpbms6IEhUTUxMaW5rRWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcclxuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xyXG4gIGlmICghcmVzb2x2ZWROb25jZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbGluay5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XHJcbiAgLy8gYEhUTUxMaW5rRWxlbWVudC5ub25jZWAgZXhpc3RzIGluIG1vZGVybiBicm93c2Vycy5cclxuICAobGluayBhcyBIVE1MTGlua0VsZW1lbnQgJiB7IG5vbmNlPzogc3RyaW5nIH0pLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcclxufVxyXG5cclxuZnVuY3Rpb24gYXBwbHlOb25jZVRvTm9kZShub2RlOiBOb2RlLCBub25jZT86IHN0cmluZyk6IHZvaWQge1xyXG4gIGlmIChpc1NjcmlwdEVsZW1lbnQobm9kZSkpIHtcclxuICAgIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBpZiAoaXNTdHlsZUVsZW1lbnQobm9kZSkpIHtcclxuICAgIGFwcGx5U3R5bGVOb25jZShub2RlLCBub25jZSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGlmIChpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChub2RlKSkge1xyXG4gICAgYXBwbHlMaW5rTm9uY2Uobm9kZSwgbm9uY2UpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xyXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xyXG4gIGlmICghZG9jdW1lbnRSZWYpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IG5vbmNlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xyXG4gIGFwcGx5Tm9uY2VUb05vZGUobm9kZSwgbm9uY2UpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogU2V0PHN0cmluZz4ge1xyXG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XHJcbiAgbGV0IHRyYWNrZWRTY3JpcHRzID0gcGF0Y2hTdGF0ZS5pbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xyXG4gIGlmICghdHJhY2tlZFNjcmlwdHMpIHtcclxuICAgIHRyYWNrZWRTY3JpcHRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgdHJhY2tlZFNjcmlwdHMpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRyYWNrZWRTY3JpcHRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlOiBOb2RlKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFpc1NjcmlwdEVsZW1lbnQobm9kZSkgfHwgQm9vbGVhbihub2RlLnNyYykpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHNjcmlwdEJvZHkgPSAobm9kZS50ZXh0Q29udGVudCA/PyAnJykudHJpbSgpO1xyXG4gIGlmICghc2NyaXB0Qm9keSB8fCAhc2NyaXB0Qm9keS5pbmNsdWRlcygnY3VycmVudExhbmdDb2RlJykpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xyXG4gIGlmICghZG9jdW1lbnRSZWYpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHRyYWNrZWRTY3JpcHRzID0gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmKTtcclxuICBpZiAodHJhY2tlZFNjcmlwdHMuaGFzKHNjcmlwdEJvZHkpKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHRyYWNrZWRTY3JpcHRzLmFkZChzY3JpcHRCb2R5KTtcclxuICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdhbGtBbmRBcHBseU5vbmNlKHJvb3Q6IE5vZGUsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgaWYgKCFub25jZSkgcmV0dXJuO1xyXG5cclxuICAvLyBGYXN0IHBhdGg6IHJvb3QgaXRzZWxmIGlzIG5vbmNlYWJsZS5cclxuICBpZiAoaXNTY3JpcHRFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVzaGVldExpbmtFbGVtZW50KHJvb3QpKSB7XHJcbiAgICBhcHBseU5vbmNlVG9Ob2RlKHJvb3QsIG5vbmNlKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIC8vIENvbW1vbiBwYXRoIGZvciBqUXVlcnk6IGFwcGVuZCBEb2N1bWVudEZyYWdtZW50IGNvbnRhaW5pbmcgbm9kZXMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxyXG4gIGlmIChyb290IGluc3RhbmNlb2YgRWxlbWVudCB8fCByb290IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkge1xyXG4gICAgY29uc3Qgbm9uY2VhYmxlID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NjcmlwdCxzdHlsZSxsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl0nKSA/PyBbXTtcclxuICAgIGZvciAoY29uc3QgZWwgb2Ygbm9uY2VhYmxlKSB7XHJcbiAgICAgIGFwcGx5Tm9uY2VUb05vZGUoZWwgYXMgdW5rbm93biBhcyBOb2RlLCBub25jZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBlbnN1cmVOb25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XHJcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcclxuICBpZiAocGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xyXG4gICAgY29uc3Qgbm9uY2UgPSBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xyXG4gICAgaWYgKCFub25jZSkgcmV0dXJuO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgZm9yIChjb25zdCBub2RlIG9mIHJlY29yZC5hZGRlZE5vZGVzKSB7XHJcbiAgICAgICAgd2Fsa0FuZEFwcGx5Tm9uY2Uobm9kZSwgbm9uY2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIC8vIE9ic2VydmUgdGhlIGZ1bGwgZG9jdW1lbnQgYmVjYXVzZSBzY3JpcHRzIGNhbiBiZSBpbmplY3RlZCBpbnRvIGJvZHkvaGVhZCBieSB2ZW5kb3IvalF1ZXJ5LlxyXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudFJlZi5kb2N1bWVudEVsZW1lbnQgPz8gZG9jdW1lbnRSZWY7XHJcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuICBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5zZXQoZG9jdW1lbnRSZWYsIG9ic2VydmVyKTtcclxufVxyXG5cclxuZnVuY3Rpb24gdGVhcmRvd25Ob25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XHJcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcclxuICBjb25zdCBvYnNlcnZlciA9IHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XHJcbiAgaWYgKCFvYnNlcnZlcikgcmV0dXJuO1xyXG4gIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbmplY3ROb25jZUludG9IdG1sKGh0bWw6IHN0cmluZywgbm9uY2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcclxuICBpZiAoIXJlc29sdmVkTm9uY2UpIHJldHVybiBodG1sO1xyXG5cclxuICAvLyBJZiB0YWcgYWxyZWFkeSBpbmNsdWRlcyBub25jZSwgbGVhdmUgaXQuXHJcbiAgY29uc3Qgd2l0aE5vbmNlQXR0ciA9IGAgbm9uY2U9XCIke3Jlc29sdmVkTm9uY2V9XCJgO1xyXG5cclxuICBjb25zdCBhZGROb25jZVRvVGFnID0gKHRhZzogJ3NjcmlwdCcgfCAnc3R5bGUnKSA9PiB7XHJcbiAgICBjb25zdCBvcGVuVGFnID0gbmV3IFJlZ0V4cChgPCR7dGFnfShcXFxcc1tePl0qPyk/PmAsICdnaScpO1xyXG4gICAgcmV0dXJuIChpbnB1dDogc3RyaW5nKSA9PlxyXG4gICAgICBpbnB1dC5yZXBsYWNlKG9wZW5UYWcsIChtYXRjaCkgPT4ge1xyXG4gICAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xyXG4gICAgICAgIC8vIEluc2VydCBub25jZSBiZWZvcmUgY2xvc2luZyBgPmBcclxuICAgICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcclxuICAgICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgLy8gRm9yIGxpbmsgcmVsPXN0eWxlc2hlZXQsIGFkZCBub25jZSB3aGVuIG1pc3NpbmcuXHJcbiAgY29uc3QgbGlua09wZW5UYWcgPSAvPGxpbmtcXGJbXj5dKj4vZ2k7XHJcbiAgY29uc3QgYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rID0gKGlucHV0OiBzdHJpbmcpID0+XHJcbiAgICBpbnB1dC5yZXBsYWNlKGxpbmtPcGVuVGFnLCAobWF0Y2gpID0+IHtcclxuICAgICAgaWYgKC9bXFxzXCInXW5vbmNlXFxzKj0vLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XHJcbiAgICAgIGlmICghL1xcYnJlbFxccyo9XFxzKltcIiddP3N0eWxlc2hlZXRbXCInXT8vaS50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xyXG4gICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcclxuICAgIH0pO1xyXG5cclxuICByZXR1cm4gYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rKGFkZE5vbmNlVG9UYWcoJ3N0eWxlJykoYWRkTm9uY2VUb1RhZygnc2NyaXB0JykoaHRtbCkpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk6IHZvaWQge1xyXG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XHJcbiAgaWYgKHBhdGNoU3RhdGUucGF0Y2hlZCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRDaGlsZCA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO1xyXG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QmVmb3JlID0gTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO1xyXG4gIGNvbnN0IG9yaWdpbmFsUmVwbGFjZUNoaWxkID0gTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkO1xyXG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MID0gRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MO1xyXG5cclxuICBOb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogVCk6IFQge1xyXG4gICAgLy8gVmVuZG9yIGNhcHRjaGEgaW5qZWN0cyBhbiBpbmxpbmUgc25pcHBldCB3aXRoIGBjdXJyZW50TGFuZ0NvZGVgIHRoYXQgY3Jhc2hlcyB3aGVuIGFwcGVuZGVkIHR3aWNlLlxyXG4gICAgaWYgKHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGUpKSB7XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XHJcbiAgICByZXR1cm4gb3JpZ2luYWxBcHBlbmRDaGlsZC5jYWxsKHRoaXMsIG5vZGUpIGFzIFQ7XHJcbiAgfTtcclxuXHJcbiAgTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBULCBjaGlsZDogTm9kZSB8IG51bGwpOiBUIHtcclxuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xyXG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QmVmb3JlLmNhbGwodGhpcywgbm9kZSwgY2hpbGQpIGFzIFQ7XHJcbiAgfTtcclxuXHJcbiAgTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBOb2RlLCBjaGlsZDogVCk6IFQge1xyXG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XHJcbiAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlQ2hpbGQuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcclxuICB9O1xyXG5cclxuICBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwgPSBmdW5jdGlvbiAocG9zaXRpb246IEluc2VydFBvc2l0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5vd25lckRvY3VtZW50O1xyXG4gICAgY29uc3Qgbm9uY2UgPSBkb2N1bWVudFJlZiA/IHBhdGNoU3RhdGUubm9uY2VCeURvY3VtZW50LmdldChkb2N1bWVudFJlZikgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBwYXRjaGVkVGV4dCA9IG5vbmNlID8gaW5qZWN0Tm9uY2VJbnRvSHRtbCh0ZXh0LCBub25jZSkgOiB0ZXh0O1xyXG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MLmNhbGwodGhpcywgcG9zaXRpb24sIHBhdGNoZWRUZXh0KTtcclxuICB9O1xyXG5cclxuICBwYXRjaFN0YXRlLnBhdGNoZWQgPSB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNzcE5vbmNlKGRvY3VtZW50UmVmOiBEb2N1bWVudCB8IG51bGwgfCB1bmRlZmluZWQsIGV4cGxpY2l0Tm9uY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHJlc29sdmVkRXhwbGljaXROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKGV4cGxpY2l0Tm9uY2UpO1xyXG4gIGlmIChyZXNvbHZlZEV4cGxpY2l0Tm9uY2UpIHtcclxuICAgIHJldHVybiByZXNvbHZlZEV4cGxpY2l0Tm9uY2U7XHJcbiAgfVxyXG5cclxuICBpZiAoIWRvY3VtZW50UmVmKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc2NyaXB0V2l0aE5vbmNlID0gZG9jdW1lbnRSZWYucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oJ3NjcmlwdFtub25jZV0nKTtcclxuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcclxuICBpZiAobm9uY2VGcm9tU2NyaXB0KSB7XHJcbiAgICByZXR1cm4gbm9uY2VGcm9tU2NyaXB0O1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgbm9uY2VNZXRhID0gZG9jdW1lbnRSZWYucXVlcnlTZWxlY3RvcjxIVE1MTWV0YUVsZW1lbnQ+KCdtZXRhW25hbWU9XCJjc3Atbm9uY2VcIl0nKTtcclxuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCByZXNvbHZlZE5vbmNlID0gcmVzb2x2ZUNzcE5vbmNlKGRvY3VtZW50UmVmLCBleHBsaWNpdE5vbmNlKTtcclxuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xyXG5cclxuICBpZiAocmVzb2x2ZWROb25jZSkge1xyXG4gICAgLy8gRE9NIHBhdGNoaW5nIGlzIG9ubHkgbmVlZGVkIHdoZW4gYSBDU1Agbm9uY2UgbXVzdCBiZSBwcm9wYWdhdGVkLlxyXG4gICAgcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk7XHJcbiAgICBjb25zdCBlZmZlY3RpdmVEb2N1bWVudFJlZiA9IGRvY3VtZW50UmVmID8/IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XHJcbiAgICBpZiAoZWZmZWN0aXZlRG9jdW1lbnRSZWYpIHtcclxuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuc2V0KGVmZmVjdGl2ZURvY3VtZW50UmVmLCByZXNvbHZlZE5vbmNlKTtcclxuICAgICAgZW5zdXJlTm9uY2VNdXRhdGlvbk9ic2VydmVyKGVmZmVjdGl2ZURvY3VtZW50UmVmKTtcclxuICAgICAgaW5zdGFsbFZlbmRvcklubGluZUV2ZW50TWlncmF0aW9uKGVmZmVjdGl2ZURvY3VtZW50UmVmKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKGRvY3VtZW50UmVmKSB7XHJcbiAgICAgIHBhdGNoU3RhdGUubm9uY2VCeURvY3VtZW50LmRlbGV0ZShkb2N1bWVudFJlZik7XHJcbiAgICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiByZXNvbHZlZE5vbmNlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNjcmlwdChkb2N1bWVudFJlZjogRG9jdW1lbnQsIHNyYzogc3RyaW5nLCBvcHRpb25zPzogU2NyaXB0TG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICBjb25zdCBub25jZSA9IG5vcm1hbGl6ZU5vbmNlKG9wdGlvbnM/Lm5vbmNlKTtcclxuICBjb25zdCBzdGF0dXNCeVNyYyA9IGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmKTtcclxuICBjb25zdCBwZW5kaW5nQnlTcmMgPSBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWYpO1xyXG4gIGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnRSZWYucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oYHNjcmlwdFtzcmM9XCIke3NyY31cIl1gKTtcclxuXHJcbiAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICBhcHBseVNjcmlwdE5vbmNlKGV4aXN0aW5nLCBub25jZSk7XHJcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNCeVNyYy5nZXQoc3JjKTtcclxuICAgIGlmIChzdGF0dXMgPT09ICdsb2FkZWQnKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwZW5kaW5nID0gcGVuZGluZ0J5U3JjLmdldChzcmMpO1xyXG4gICAgaWYgKHBlbmRpbmcpIHtcclxuICAgICAgcmV0dXJuIHBlbmRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRpbmcnKTtcclxuXHJcbiAgY29uc3QgcGVuZGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50UmVmLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgc2NyaXB0LnNyYyA9IHNyYztcclxuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICBhcHBseVNjcmlwdE5vbmNlKHNjcmlwdCwgbm9uY2UpO1xyXG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRlZCcpO1xyXG4gICAgICBwZW5kaW5nQnlTcmMuZGVsZXRlKHNyYyk7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH07XHJcbiAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2Vycm9yJyk7XHJcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcclxuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiAke3NyY30uIENoZWNrIENTUCBhbGxvd2xpc3QgYW5kIG5vbmNlIGNvbmZpZ3VyYXRpb24uYCkpO1xyXG4gICAgfTtcclxuICAgIGRvY3VtZW50UmVmLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICB9KTtcclxuXHJcbiAgcGVuZGluZ0J5U3JjLnNldChzcmMsIHBlbmRpbmcpO1xyXG4gIHJldHVybiBwZW5kaW5nO1xyXG59XHJcbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFlMUYsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYs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QyxDQUFDLENBQUM7SUFFSCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zdGFsbFZlbmRvcklubGluZUV2ZW50TWlncmF0aW9uIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLWV2ZW50LW1pZ3JhdGlvbic7XG5cbnR5cGUgU2NyaXB0U3RhdHVzID0gJ2xvYWRpbmcnIHwgJ2xvYWRlZCcgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdExvYWRPcHRpb25zIHtcbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgbm9uY2VCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+O1xuICBvYnNlcnZlckJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIE11dGF0aW9uT2JzZXJ2ZXI+O1xuICBpbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+O1xuICBwYXRjaGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4+KCk7XG5jb25zdCBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVCA9IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+Pj4oKTtcbmNvbnN0IERZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWSA9ICdfX3NpYXJhU2hpZWxkRHluYW1pY1NjcmlwdE5vbmNlU3RhdGVfXyc7XG5cbmZ1bmN0aW9uIGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4ge1xuICBsZXQgc3RhdHVzQnlTcmMgPSBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghc3RhdHVzQnlTcmMpIHtcbiAgICBzdGF0dXNCeVNyYyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRTdGF0dXM+KCk7XG4gICAgU0NSSVBUX1NUQVRVU19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHN0YXR1c0J5U3JjKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0dXNCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IHBlbmRpbmdCeVNyYyA9IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghcGVuZGluZ0J5U3JjKSB7XG4gICAgcGVuZGluZ0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICAgU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBwZW5kaW5nQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpOiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICAgIFtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldPzogRHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZTtcbiAgfTtcblxuICBpZiAoIWdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0pIHtcbiAgICBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldID0ge1xuICAgICAgbm9uY2VCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgc3RyaW5nPigpLFxuICAgICAgb2JzZXJ2ZXJCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj4oKSxcbiAgICAgIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+KCksXG4gICAgICBwYXRjaGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5vbmNlKG5vbmNlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRyaW1tZWQgPSBub25jZT8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCA/IHRyaW1tZWQgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzU2NyaXB0RWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MU2NyaXB0RWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTdHlsZUVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZSc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVzaGVldExpbmtFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxMaW5rRWxlbWVudCB7XG4gIGlmICghKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2xpbmsnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlbCA9IChub2RlLmdldEF0dHJpYnV0ZSgncmVsJykgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiByZWwgPT09ICdzdHlsZXNoZWV0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcbiAgaWYgKCFyZXNvbHZlZE5vbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcblxuICAvLyBTb21lIHZlbmRvciBIVE1MIGZyYWdtZW50cyBpbmNsdWRlIGlubGluZSBzY3JpcHRzIHRoYXQgZXhlY3V0ZSBpbW1lZGlhdGVseSBkdXJpbmcgaW5zZXJ0aW9uLlxuICAvLyBJbiBzdHJpY3QgQ1NQIG1vZGUgdGhlc2UgcnVuIHdpdGggYSBub25jZSwgYnV0IGNhbiBzdGlsbCByYWNlIERPTSBpbnNlcnRpb24gYW5kIGNyYXNoXG4gIC8vIChlLmcuIGBudWxsLnF1ZXJ5U2VsZWN0b3IoLi4uKWApLiBXZSBkZWZlbnNpdmVseSByZXRyeSBvbmNlIG9uIGZhaWx1cmUuXG4gIGlmICghc2NyaXB0LnNyYykge1xuICAgIGNvbnN0IGJvZHkgPSBzY3JpcHQudGV4dENvbnRlbnQgPz8gJyc7XG4gICAgaWYgKGJvZHkgJiYgIWJvZHkuaW5jbHVkZXMoJ19fc2lhcmFTaGllbGRJbmxpbmVSZXRyeV9fJykpIHtcbiAgICAgIHNjcmlwdC50ZXh0Q29udGVudCA9IGAoZnVuY3Rpb24oKXtcXG5gICtcbiAgICAgICAgYCAgdmFyIF9fc2lhcmFTaGllbGRJbmxpbmVSZXRyeV9fID0gdHJ1ZTtcXG5gICtcbiAgICAgICAgYCAgZnVuY3Rpb24gX19ydW4oKXtcXG4ke2JvZHl9XFxuICB9XFxuYCArXG4gICAgICAgIGAgIHRyeSB7IF9fcnVuKCk7IH0gY2F0Y2ggKGUpIHtcXG5gICtcbiAgICAgICAgYCAgICB0cnkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRyeSB7IF9fcnVuKCk7IH0gY2F0Y2ggKF9lKSB7fSB9LCAwKTsgfSBjYXRjaCAoX3QpIHt9XFxuYCArXG4gICAgICAgIGAgIH1cXG5gICtcbiAgICAgICAgYH0pKCk7YDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlTdHlsZU5vbmNlKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XG4gIHN0eWxlLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlMaW5rTm9uY2UobGluazogSFRNTExpbmtFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaW5rLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgLy8gYEhUTUxMaW5rRWxlbWVudC5ub25jZWAgZXhpc3RzIGluIG1vZGVybiBicm93c2Vycy5cbiAgKGxpbmsgYXMgSFRNTExpbmtFbGVtZW50ICYgeyBub25jZT86IHN0cmluZyB9KS5ub25jZSA9IHJlc29sdmVkTm9uY2U7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Tm9uY2VUb05vZGUobm9kZTogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzU2NyaXB0RWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZUVsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseVN0eWxlTm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseUxpbmtOb25jZShub2RlLCBub25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBhcHBseU5vbmNlVG9Ob2RlKG5vZGUsIG5vbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgbGV0IHRyYWNrZWRTY3JpcHRzID0gcGF0Y2hTdGF0ZS5pbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIXRyYWNrZWRTY3JpcHRzKSB7XG4gICAgdHJhY2tlZFNjcmlwdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgdHJhY2tlZFNjcmlwdHMpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNrZWRTY3JpcHRzO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gIGlmICghaXNTY3JpcHRFbGVtZW50KG5vZGUpIHx8IEJvb2xlYW4obm9kZS5zcmMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0Qm9keSA9IChub2RlLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIGlmICghc2NyaXB0Qm9keSB8fCAhc2NyaXB0Qm9keS5pbmNsdWRlcygnY3VycmVudExhbmdDb2RlJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHRyYWNrZWRTY3JpcHRzID0gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmKTtcbiAgaWYgKHRyYWNrZWRTY3JpcHRzLmhhcyhzY3JpcHRCb2R5KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJhY2tlZFNjcmlwdHMuYWRkKHNjcmlwdEJvZHkpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdhbGtBbmRBcHBseU5vbmNlKHJvb3Q6IE5vZGUsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghbm9uY2UpIHJldHVybjtcblxuICAvLyBGYXN0IHBhdGg6IHJvb3QgaXRzZWxmIGlzIG5vbmNlYWJsZS5cbiAgaWYgKGlzU2NyaXB0RWxlbWVudChyb290KSB8fCBpc1N0eWxlRWxlbWVudChyb290KSB8fCBpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChyb290KSkge1xuICAgIGFwcGx5Tm9uY2VUb05vZGUocm9vdCwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbW1vbiBwYXRoIGZvciBqUXVlcnk6IGFwcGVuZCBEb2N1bWVudEZyYWdtZW50IGNvbnRhaW5pbmcgbm9kZXMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxuICBpZiAocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb25zdCBub25jZWFibGUgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2NyaXB0LHN0eWxlLGxpbmtbcmVsPVwic3R5bGVzaGVldFwiXScpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZWwgb2Ygbm9uY2VhYmxlKSB7XG4gICAgICBhcHBseU5vbmNlVG9Ob2RlKGVsIGFzIHVua25vd24gYXMgTm9kZSwgbm9uY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVOb25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgIGNvbnN0IG5vbmNlID0gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgICBpZiAoIW5vbmNlKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVjb3JkLmFkZGVkTm9kZXMpIHtcbiAgICAgICAgd2Fsa0FuZEFwcGx5Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gT2JzZXJ2ZSB0aGUgZnVsbCBkb2N1bWVudCBiZWNhdXNlIHNjcmlwdHMgY2FuIGJlIGluamVjdGVkIGludG8gYm9keS9oZWFkIGJ5IHZlbmRvci9qUXVlcnkuXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudFJlZi5kb2N1bWVudEVsZW1lbnQgPz8gZG9jdW1lbnRSZWY7XG4gIG9ic2VydmVyLm9ic2VydmUocm9vdCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgb2JzZXJ2ZXIpO1xufVxuXG5mdW5jdGlvbiB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgY29uc3Qgb2JzZXJ2ZXIgPSBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIW9ic2VydmVyKSByZXR1cm47XG4gIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Tm9uY2VJbnRvSHRtbChodG1sOiBzdHJpbmcsIG5vbmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHJldHVybiBodG1sO1xuXG4gIC8vIElmIHRhZyBhbHJlYWR5IGluY2x1ZGVzIG5vbmNlLCBsZWF2ZSBpdC5cbiAgY29uc3Qgd2l0aE5vbmNlQXR0ciA9IGAgbm9uY2U9XCIke3Jlc29sdmVkTm9uY2V9XCJgO1xuXG4gIGNvbnN0IGFkZE5vbmNlVG9UYWcgPSAodGFnOiAnc2NyaXB0JyB8ICdzdHlsZScpID0+IHtcbiAgICBjb25zdCBvcGVuVGFnID0gbmV3IFJlZ0V4cChgPCR7dGFnfShcXFxcc1tePl0qPyk/PmAsICdnaScpO1xuICAgIHJldHVybiAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICAgIGlucHV0LnJlcGxhY2Uob3BlblRhZywgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAvLyBJbnNlcnQgbm9uY2UgYmVmb3JlIGNsb3NpbmcgYD5gXG4gICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLy8gRm9yIGxpbmsgcmVsPXN0eWxlc2hlZXQsIGFkZCBub25jZSB3aGVuIG1pc3NpbmcuXG4gIGNvbnN0IGxpbmtPcGVuVGFnID0gLzxsaW5rXFxiW14+XSo+L2dpO1xuICBjb25zdCBhZGROb25jZVRvU3R5bGVzaGVldExpbmsgPSAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICBpbnB1dC5yZXBsYWNlKGxpbmtPcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgaWYgKCEvXFxicmVsXFxzKj1cXHMqW1wiJ10/c3R5bGVzaGVldFtcIiddPy9pLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rKGFkZE5vbmNlVG9UYWcoJ3N0eWxlJykoYWRkTm9uY2VUb1RhZygnc2NyaXB0JykoaHRtbCkpKTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBpZiAocGF0Y2hTdGF0ZS5wYXRjaGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRDaGlsZCA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO1xuICBjb25zdCBvcmlnaW5hbEluc2VydEJlZm9yZSA9IE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXBsYWNlQ2hpbGQgPSBOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MID0gRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MO1xuXG4gIE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBUKTogVCB7XG4gICAgLy8gVmVuZG9yIGNhcHRjaGEgaW5qZWN0cyBhbiBpbmxpbmUgc25pcHBldCB3aXRoIGBjdXJyZW50TGFuZ0NvZGVgIHRoYXQgY3Jhc2hlcyB3aGVuIGFwcGVuZGVkIHR3aWNlLlxuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEFwcGVuZENoaWxkLmNhbGwodGhpcywgbm9kZSkgYXMgVDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQsIGNoaWxkOiBOb2RlIHwgbnVsbCk6IFQge1xuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEJlZm9yZS5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogTm9kZSwgY2hpbGQ6IFQpOiBUIHtcbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlQ2hpbGQuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcbiAgfTtcblxuICBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwgPSBmdW5jdGlvbiAocG9zaXRpb246IEluc2VydFBvc2l0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJlZiA9IHRoaXMub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBub25jZSA9IGRvY3VtZW50UmVmID8gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwYXRjaGVkVGV4dCA9IG5vbmNlID8gaW5qZWN0Tm9uY2VJbnRvSHRtbCh0ZXh0LCBub25jZSkgOiB0ZXh0O1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEFkamFjZW50SFRNTC5jYWxsKHRoaXMsIHBvc2l0aW9uLCBwYXRjaGVkVGV4dCk7XG4gIH07XG5cbiAgcGF0Y2hTdGF0ZS5wYXRjaGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRFeHBsaWNpdE5vbmNlID0gbm9ybWFsaXplTm9uY2UoZXhwbGljaXROb25jZSk7XG4gIGlmIChyZXNvbHZlZEV4cGxpY2l0Tm9uY2UpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRFeHBsaWNpdE5vbmNlO1xuICB9XG5cbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzY3JpcHRXaXRoTm9uY2UgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pignc2NyaXB0W25vbmNlXScpO1xuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcbiAgaWYgKG5vbmNlRnJvbVNjcmlwdCkge1xuICAgIHJldHVybiBub25jZUZyb21TY3JpcHQ7XG4gIH1cblxuICBjb25zdCBub25jZU1ldGEgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxNZXRhRWxlbWVudD4oJ21ldGFbbmFtZT1cImNzcC1ub25jZVwiXScpO1xuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZiwgZXhwbGljaXROb25jZSk7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG5cbiAgaWYgKHJlc29sdmVkTm9uY2UpIHtcbiAgICAvLyBET00gcGF0Y2hpbmcgaXMgb25seSBuZWVkZWQgd2hlbiBhIENTUCBub25jZSBtdXN0IGJlIHByb3BhZ2F0ZWQuXG4gICAgcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk7XG4gICAgY29uc3QgZWZmZWN0aXZlRG9jdW1lbnRSZWYgPSBkb2N1bWVudFJlZiA/PyBnbG9iYWxUaGlzLmRvY3VtZW50O1xuICAgIGlmIChlZmZlY3RpdmVEb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuc2V0KGVmZmVjdGl2ZURvY3VtZW50UmVmLCByZXNvbHZlZE5vbmNlKTtcbiAgICAgIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihlZmZlY3RpdmVEb2N1bWVudFJlZik7XG4gICAgICBpbnN0YWxsVmVuZG9ySW5saW5lRXZlbnRNaWdyYXRpb24oZWZmZWN0aXZlRG9jdW1lbnRSZWYpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZG9jdW1lbnRSZWYpIHtcbiAgICAgIHBhdGNoU3RhdGUubm9uY2VCeURvY3VtZW50LmRlbGV0ZShkb2N1bWVudFJlZik7XG4gICAgICB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkTm9uY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2NyaXB0KGRvY3VtZW50UmVmOiBEb2N1bWVudCwgc3JjOiBzdHJpbmcsIG9wdGlvbnM/OiBTY3JpcHRMb2FkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBub25jZSA9IG5vcm1hbGl6ZU5vbmNlKG9wdGlvbnM/Lm5vbmNlKTtcbiAgY29uc3Qgc3RhdHVzQnlTcmMgPSBnZXRTdGF0dXNCeVNyYyhkb2N1bWVudFJlZik7XG4gIGNvbnN0IHBlbmRpbmdCeVNyYyA9IGdldFBlbmRpbmdCeVNyYyhkb2N1bWVudFJlZik7XG4gIGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnRSZWYucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oYHNjcmlwdFtzcmM9XCIke3NyY31cIl1gKTtcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICBhcHBseVNjcmlwdE5vbmNlKGV4aXN0aW5nLCBub25jZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzQnlTcmMuZ2V0KHNyYyk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2xvYWRlZCcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBwZW5kaW5nID0gcGVuZGluZ0J5U3JjLmdldChzcmMpO1xuICAgIGlmIChwZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcGVuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnbG9hZGluZycpO1xuXG4gIGNvbnN0IHBlbmRpbmcgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnRSZWYuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0LCBub25jZSk7XG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHN0YXR1c0J5U3JjLnNldChzcmMsICdsb2FkZWQnKTtcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9O1xuICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2Vycm9yJyk7XG4gICAgICBwZW5kaW5nQnlTcmMuZGVsZXRlKHNyYyk7XG4gICAgICByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzY3JpcHQ6ICR7c3JjfS4gQ2hlY2sgQ1NQIGFsbG93bGlzdCBhbmQgbm9uY2UgY29uZmlndXJhdGlvbi5gKSk7XG4gICAgfTtcbiAgICBkb2N1bWVudFJlZi5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gIH0pO1xuXG4gIHBlbmRpbmdCeVNyYy5zZXQoc3JjLCBwZW5kaW5nKTtcbiAgcmV0dXJuIHBlbmRpbmc7XG59XG4iXX0=
@@ -6,8 +6,8 @@ import { prepareScriptNonce } from './siara-shield-script-utils';
6
6
  import { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./siara-shield-loader.service";
9
- const JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';
10
- const CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';
9
+ const JQUERY_FALLBACK_SRC = 'https://embed.mycybersiara.com/capcha-temple/js/jquery.min.js';
10
+ const CAPTCHA_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/CaptchaResources.js';
11
11
  const VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';
12
12
  const CAPTCHA_READY_TIMEOUT_MS = 8000;
13
13
  const CAPTCHA_CONTAINER_READY_TIMEOUT_MS = 2000;
@@ -237,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
237
237
  }], token: [{
238
238
  type: Output
239
239
  }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUVuRixNQUFNLG1CQUFtQixHQUFHLGtFQUFrRSxDQUFDO0FBQy9GLE1BQU0sa0JBQWtCLEdBQUcsc0VBQXNFLENBQUM7QUFDbEcsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUN0QyxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQztBQUNoRCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUVyQyxLQUFLLFVBQVUsdUJBQXVCLENBQUMsV0FBcUIsRUFBRSxTQUFTLEdBQUcsa0NBQWtDO0lBQzFHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDMUMsSUFBSSxXQUFXLENBQUMs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QUFDLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBek1VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDJPQUhyQixpQ0FBaUM7OzRGQUdoQyxvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7c0hBRTRCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUtJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0SW5pdENhcHRjaGFGbiwgZ2V0U2lhcmFTaGllbGRHbG9iYWxzIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQuZ2xvYmFscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24sIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLWxvZy11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsQ2FwdGNoYVN1Ym1pdEd1YXJkIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc3VibWl0LWd1YXJkJztcbmltcG9ydCB7IHByZXBhcmVTY3JpcHROb25jZSB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yQ2hhbGxlbmdlUnVudGltZVBhdGNoIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLXJ1bnRpbWUnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuY29uc3QgQ0FQVENIQV9DT05UQUlORVJfUkVBRFlfVElNRU9VVF9NUyA9IDIwMDA7XG5jb25zdCBDQVBUQ0hBX0NPTlRBSU5FUl9QT0xMX01TID0gNTA7XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JDYXB0Y2hhQ29udGFpbmVyKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgdGltZW91dE1zID0gQ0FQVENIQV9DT05UQUlORVJfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgIGlmIChkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yKCcuU2lhcmFTaGllbGQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBDQVBUQ0hBX0NPTlRBSU5FUl9QT0xMX01TKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5zdXJlQWNjZXNzaWJpbGl0eVBvcHVwQWxpYXNlcygpOiB2b2lkIHtcbiAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYWxpYXNOYW1lcyA9IFtcbiAgICAnUmVtb3ZlQWNjZXNpYmlsaXR5UG9wdXAnLFxuICAgICdfUmVtb3ZlQWNjZXNpYmlsaXR5UG9wdXAnLFxuICAgICdSZW1vdmVBY2Nlc2libGl0eVBvcHVwJyxcbiAgICAnX1JlbW92ZUFjY2VzaWJsaXR5UG9wdXAnLFxuICBdIGFzIGNvbnN0O1xuXG4gIGNvbnN0IGV4aXN0aW5nID0gYWxpYXNOYW1lc1xuICAgIC5tYXAoKG5hbWUpID0+IGdbbmFtZV0pXG4gICAgLmZpbmQoKHZhbHVlKTogdmFsdWUgaXMgKCkgPT4gdm9pZCA9PiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpO1xuXG4gIGNvbnN0IHN0YWJsZUZuID0gZXhpc3RpbmcgPz8gKCgpID0+IHVuZGVmaW5lZCk7XG4gIGZvciAoY29uc3QgbmFtZSBvZiBhbGlhc05hbWVzKSB7XG4gICAgZ1tuYW1lXSA9IHN0YWJsZUZuO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkluUm9vdFpvbmU8VD4oZm46ICgpID0+IFQpOiBUIHtcbiAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7IFpvbmU/OiB7IHJvb3Q/OiB7IHJ1bj86IDxVPihjYjogKCkgPT4gVSkgPT4gVSB9IH0gfTtcbiAgY29uc3Qgem9uZVJvb3RSdW4gPSBnLlpvbmU/LnJvb3Q/LnJ1bjtcbiAgaWYgKHR5cGVvZiB6b25lUm9vdFJ1biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB6b25lUm9vdFJ1bi5jYWxsKGcuWm9uZT8ucm9vdCwgZm4pIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIGZuKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lhcmFTaGllbGRJbml0T3B0aW9ucyB7XG4gIC8qKiBTaWFyYVNoaWVsZCBwdWJsaWMga2V5LiBVc2UgXCJURVNULUNZQkVSU0lBUkFcIiBmb3Igc3RhZ2luZy9kZXZlbG9wbWVudC4gKi9cbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIC8qKiBMb2FkcyBqUXVlcnkgYmVmb3JlIFNpYXJhU2hpZWxkIHNjcmlwdC4gRGVmYXVsdCBpcyB0cnVlIGZvciBlYXNpZXIgaW50ZWdyYXRpb24uIFNldCB0byBmYWxzZSBvbmx5IGlmIHlvdXIgcGFnZSBhbHJlYWR5IGluY2x1ZGVzIGpRdWVyeS4gKi9cbiAgbG9hZEpRdWVyeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDU1Agbm9uY2UgdmFsdWUgKHdpdGhvdXQgdGhlIGAnbm9uY2UtJ2AgcHJlZml4KS5cbiAgICogSWYgb21pdHRlZCwgd2UgYXR0ZW1wdCB0byByZXNvbHZlIGl0IGZyb20gZXhpc3RpbmcgYHNjcmlwdFtub25jZV1gIG9yIGBtZXRhW25hbWU9XCJjc3Atbm9uY2VcIl1gLlxuICAgKi9cbiAgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdHJ1ZSBvbmx5IHdoZW4gYWN0aXZlbHkgZGVidWdnaW5nIHZlbmRvci9ydW50aW1lIGludGVybmFscyBpbiBicm93c2VyIGNvbnNvbGUuICovXG4gIGFsbG93VmVuZG9yQ29uc29sZUxvZ3M/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWFyYS1zaGllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJTaWFyYVNoaWVsZFwiPjwvZGl2PmAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNpYXJhU2hpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpY0tleSE6IHN0cmluZztcbiAgQElucHV0KCkgbG9hZEpRdWVyeSA9IHRydWU7XG4gIEBJbnB1dCgpIGNzcE5vbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBhbGxvd1ZlbmRvckNvbnNvbGVMb2dzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IGBDeWJlclNpYXJhVG9rZW5gIHJpZ2h0IGFmdGVyIGEgc3VjY2Vzc2Z1bCBgY2hlY2tDYXB0Y2hhKClgLlxuICAgKi9cbiAgQE91dHB1dCgpIHRva2VuID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXI6IFNpYXJhU2hpZWxkTG9hZGVyU2VydmljZSxcbiAgKSB7fVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoe1xuICAgICAgcHVibGljS2V5OiB0aGlzLnB1YmxpY0tleSxcbiAgICAgIGxvYWRKUXVlcnk6IHRoaXMubG9hZEpRdWVyeSxcbiAgICAgIGNzcE5vbmNlOiB0aGlzLmNzcE5vbmNlLFxuICAgICAgYWxsb3dWZW5kb3JDb25zb2xlTG9nczogdGhpcy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaW5pdChvcHRpb25zOiBTaWFyYVNoaWVsZEluaXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgIC8vIEVuc3VyZSB0aGUgaG9zdCBlbGVtZW50IGlzIGluIERPTSBiZWZvcmUgc2NyaXB0cyBydW4uXG4gICAgdm9pZCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dWZW5kb3JDb25zb2xlTG9ncykge1xuICAgICAgLy8gSW5zdGFsbCBzdXBwcmVzc2lvbiBhcyBlYXJseSBhcyBwb3NzaWJsZSBzbyBBbmd1bGFyIGRvZXNuJ3QgbG9nIGNyb3NzLW9yaWdpbiB2ZW5kb3Igbm9pc2UgZHVyaW5nIGJvb3RzdHJhcC5cbiAgICAgIGluc3RhbGxWZW5kb3JSdW50aW1lRXJyb3JTdXBwcmVzc2lvbigpO1xuICAgICAgc3VwcHJlc3NWZW5kb3JDb25zb2xlV2luZG93KCk7XG4gICAgfVxuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcblxuICAgIGlmICghb3B0aW9ucy5wdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGRDb21wb25lbnQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIENTUCBub25jZSBwcm9wYWdhdGlvbiBzbyBhbnkgdmVuZG9yLWluamVjdGVkIGNoaWxkIHNjcmlwdHMgZ2V0IHRoZSBzYW1lIG5vbmNlLlxuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA/PyBnbG9iYWxUaGlzLmRvY3VtZW50ID8/IG51bGw7XG4gICAgY29uc3Qgbm9uY2UgPSBwcmVwYXJlU2NyaXB0Tm9uY2UoZG9jdW1lbnRSZWYsIG9wdGlvbnMuY3NwTm9uY2UpO1xuICAgIGlmIChkb2N1bWVudFJlZikge1xuICAgICAgLy8gVmVuZG9yIHNjcmlwdHMgb2Z0ZW4gcXVlcnkgYC5TaWFyYVNoaWVsZGAgaW1tZWRpYXRlbHk7IGVuc3VyZSBpdCdzIHByZXNlbnQgaW4gRE9NLlxuICAgICAgYXdhaXQgd2FpdEZvckNhcHRjaGFDb250YWluZXIoZG9jdW1lbnRSZWYpO1xuICAgIH1cbiAgICBpZiAoKG9wdGlvbnMubG9hZEpRdWVyeSA/PyB0cnVlKSAmJiAhdGhpcy5pc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkZXIubG9hZFNjcmlwdChKUVVFUllfRkFMTEJBQ0tfU1JDLCB7IG5vbmNlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoQ0FQVENIQV9TQ1JJUFRfU1JDLCB7IG5vbmNlIH0pO1xuICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoVkFMSURBVElPTl9TQ1JJUFRfU1JDLCB7IG5vbmNlIH0pO1xuXG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGVuc3VyZUFjY2Vzc2liaWxpdHlQb3B1cEFsaWFzZXMoKTtcbiAgICB0aGlzLnByZXZlbnREdXBsaWNhdGVWYWxpZGF0aW9uQm9vdHN0cmFwKGcpO1xuICAgIGluc3RhbGxWZW5kb3JDaGFsbGVuZ2VSdW50aW1lUGF0Y2goKTtcbiAgICBjb25zdCBpbml0Q2FwdGNoYUZuID0gZ2V0SW5pdENhcHRjaGFGbihnKTtcbiAgICBpZiAoIWluaXRDYXB0Y2hhRm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NpYXJhU2hpZWxkOiBJbml0Q2FwdGNoYSgpIGlzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgbG9hZGluZyBzY3JpcHRzLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJ1bkluUm9vdFpvbmUoKCkgPT4gaW5pdENhcHRjaGFGbihvcHRpb25zLnB1YmxpY0tleSkpO1xuICAgIGF3YWl0IHRoaXMud2FpdEZvckNoZWNrQ2FwdGNoYUFwaSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdCBwcmVsb2FkZWQgalF1ZXJ5IGZyb20gZ2xvYmFsIG9iamVjdCBvciBhbiBleGlzdGluZyBzY3JpcHQgdGFnLlxuICAgKi9cbiAgcHJpdmF0ZSBpc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGlmICh0eXBlb2YgZy5qUXVlcnkgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGcuJCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdKcXVlcnlTY3JpcHQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgICAgJ3NjcmlwdFtzcmMqPVwianF1ZXJ5XCJdJyxcbiAgICApO1xuICAgIHJldHVybiBCb29sZWFuKGV4aXN0aW5nSnF1ZXJ5U2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudER1cGxpY2F0ZVZhbGlkYXRpb25Cb290c3RyYXAoZzogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2lhcmFTaGllbGRHbG9iYWxzPik6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbiA9IGcuQXBwZW5kVmFsaWRhdGlvbkpTO1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZy5BcHBlbmRWYWxpZGF0aW9uSlMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oXG4gICAgICAgIGBzY3JpcHRbc3JjPVwiJHtWQUxJREFUSU9OX1NDUklQVF9TUkN9XCJdYCxcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5hbEFwcGVuZFZhbGlkYXRpb24oKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQ2hlY2tDYXB0Y2hhQXBpKHRpbWVvdXRNcyA9IENBUFRDSEFfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydGVkQXQgPCB0aW1lb3V0TXMpIHtcbiAgICAgIGlmIChnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DaGVja0NhcHRjaGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGQ6IENoZWNrQ2FwdGNoYSgpIHdhcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aW1lb3V0LicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBnbG9iYWwgYENoZWNrQ2FwdGNoYSgpYCBmcm9tIFNpYXJhU2hpZWxkIHNjcmlwdC5cbiAgICogUmV0dXJucyB0cnVlIHdoZW4gY2FwdGNoYSBpcyB2YWxpZDsgZW1pdHMgdG9rZW4gaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgY2hlY2tDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAoIWcuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpYXJhU2hpZWxkOiBDaGVja0NhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlLiBEaWQgaW5pdCgpIHJ1bj8nKTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1Rva2VuID0gdHlwZW9mIGcuQ3liZXJTaWFyYVRva2VuID09PSAnc3RyaW5nJyAmJiBnLkN5YmVyU2lhcmFUb2tlbi5sZW5ndGggPiAwID8gZy5DeWJlclNpYXJhVG9rZW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGV4aXN0aW5nVG9rZW4pIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzKSB7XG4gICAgICBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3coKTtcbiAgICB9XG4gICAgY29uc3Qgb2sgPSBnLkNoZWNrQ2FwdGNoYSgpO1xuICAgIGlmIChvayAmJiB0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnRva2VuLmVtaXQoZy5DeWJlclNpYXJhVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gb2s7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmMtZnJpZW5kbHkgY2FwdGNoYSB2YWxpZGF0aW9uIHRvIGF2b2lkIGZpcnN0LWNsaWNrIHRpbWluZyBpc3N1ZXMuXG4gICAqIFBlcmZvcm1zIG9uZSB2YWxpZGF0aW9uIGNhbGwgYW5kIHdhaXRzIGZvciB0b2tlbiBwcm9wYWdhdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrQ2FwdGNoYUFzeW5jKG9wdGlvbnM/OiB7XG4gICAgdGltZW91dE1zPzogbnVtYmVyO1xuICAgIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAgIGJlZm9yZUNoZWNrRGVsYXlNcz86IG51bWJlcjtcbiAgICByZXRyeU9uRmFsc2VNcz86IG51bWJlcjtcbiAgICBmYWxzZVJlc3VsdFRva2VuV2FpdE1zPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zID8/IDIwMDA7XG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyAxMjA7XG4gICAgY29uc3QgYmVmb3JlQ2hlY2tEZWxheU1zID0gb3B0aW9ucz8uYmVmb3JlQ2hlY2tEZWxheU1zID8/IDE0MDtcbiAgICBjb25zdCByZXRyeU9uRmFsc2VNcyA9IG9wdGlvbnM/LnJldHJ5T25GYWxzZU1zID8/IDA7XG4gICAgY29uc3QgZmFsc2VSZXN1bHRUb2tlbldhaXRNcyA9IG9wdGlvbnM/LmZhbHNlUmVzdWx0VG9rZW5XYWl0TXMgPz8gOTAwO1xuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DeWJlclNpYXJhVG9rZW47XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZ1Rva2VuID09PSAnc3RyaW5nJyAmJiBleGlzdGluZ1Rva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiZWZvcmVDaGVja0RlbGF5TXMpKTtcbiAgICBsZXQgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIC8vIE9wdGlvbmFsIHJldHJ5IGZvciBpbnRlZ3JhdGlvbnMgdGhhdCBvYnNlcnZlIGxhdGUgdmVuZG9yLXN0YXRlIHNldHRsaW5nLlxuICAgIGlmICghb2sgJiYgcmV0cnlPbkZhbHNlTXMgPiAwKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCByZXRyeU9uRmFsc2VNcykpO1xuICAgICAgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIH1cbiAgICBpZiAoIW9rKSB7XG4gICAgICAvLyBTb21lIHZlbmRvciBmbG93cyByZXR1cm4gZmFsc2UgZmlyc3QsIHRoZW4gc2V0IHRva2VuIHNob3J0bHkgYWZ0ZXIuXG4gICAgICBjb25zdCBmYWxzZVN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIGZhbHNlU3RhcnRlZEF0IDwgZmFsc2VSZXN1bHRUb2tlbldhaXRNcykge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWxNcykpO1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudG9rZW4uZW1pdCh0b2tlbik7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgaWYgKHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycgJiYgZy5DeWJlclNpYXJhVG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcG9sbEludGVydmFsTXMpKTtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCkuQ3liZXJTaWFyYVRva2VuO1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnRva2VuLmVtaXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUVuRixNQUFNLG1CQUFtQixHQUFHLCtEQUErRCxDQUFDO0FBQzVGLE1BQU0sa0JBQWtCLEdBQUcsbUVBQW1FLENBQUM7QUFDL0YsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUN0QyxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQztBQUNoRCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUVyQyxLQUFLLFVBQVUsdUJBQXVCLENBQUMsV0FBcUIsRUFBRSxTQUFTLEdBQUcsa0NBQWtDO0lBQzFHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDMUMsSUFBSSxXQUFXLENBQUMs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QUFDLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBek1VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDJPQUhyQixpQ0FBaUM7OzRGQUdoQyxvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7c0hBRTRCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUtJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0SW5pdENhcHRjaGFGbiwgZ2V0U2lhcmFTaGllbGRHbG9iYWxzIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQuZ2xvYmFscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24sIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLWxvZy11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsQ2FwdGNoYVN1Ym1pdEd1YXJkIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc3VibWl0LWd1YXJkJztcbmltcG9ydCB7IHByZXBhcmVTY3JpcHROb25jZSB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yQ2hhbGxlbmdlUnVudGltZVBhdGNoIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLXJ1bnRpbWUnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWQubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWQubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuY29uc3QgQ0FQVENIQV9DT05UQUlORVJfUkVBRFlfVElNRU9VVF9NUyA9IDIwMDA7XG5jb25zdCBDQVBUQ0hBX0NPTlRBSU5FUl9QT0xMX01TID0gNTA7XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JDYXB0Y2hhQ29udGFpbmVyKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgdGltZW91dE1zID0gQ0FQVENIQV9DT05UQUlORVJfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgIGlmIChkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yKCcuU2lhcmFTaGllbGQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBDQVBUQ0hBX0NPTlRBSU5FUl9QT0xMX01TKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5zdXJlQWNjZXNzaWJpbGl0eVBvcHVwQWxpYXNlcygpOiB2b2lkIHtcbiAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYWxpYXNOYW1lcyA9IFtcbiAgICAnUmVtb3ZlQWNjZXNpYmlsaXR5UG9wdXAnLFxuICAgICdfUmVtb3ZlQWNjZXNpYmlsaXR5UG9wdXAnLFxuICAgICdSZW1vdmVBY2Nlc2libGl0eVBvcHVwJyxcbiAgICAnX1JlbW92ZUFjY2VzaWJsaXR5UG9wdXAnLFxuICBdIGFzIGNvbnN0O1xuXG4gIGNvbnN0IGV4aXN0aW5nID0gYWxpYXNOYW1lc1xuICAgIC5tYXAoKG5hbWUpID0+IGdbbmFtZV0pXG4gICAgLmZpbmQoKHZhbHVlKTogdmFsdWUgaXMgKCkgPT4gdm9pZCA9PiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpO1xuXG4gIGNvbnN0IHN0YWJsZUZuID0gZXhpc3RpbmcgPz8gKCgpID0+IHVuZGVmaW5lZCk7XG4gIGZvciAoY29uc3QgbmFtZSBvZiBhbGlhc05hbWVzKSB7XG4gICAgZ1tuYW1lXSA9IHN0YWJsZUZuO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkluUm9vdFpvbmU8VD4oZm46ICgpID0+IFQpOiBUIHtcbiAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7IFpvbmU/OiB7IHJvb3Q/OiB7IHJ1bj86IDxVPihjYjogKCkgPT4gVSkgPT4gVSB9IH0gfTtcbiAgY29uc3Qgem9uZVJvb3RSdW4gPSBnLlpvbmU/LnJvb3Q/LnJ1bjtcbiAgaWYgKHR5cGVvZiB6b25lUm9vdFJ1biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB6b25lUm9vdFJ1bi5jYWxsKGcuWm9uZT8ucm9vdCwgZm4pIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIGZuKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lhcmFTaGllbGRJbml0T3B0aW9ucyB7XG4gIC8qKiBTaWFyYVNoaWVsZCBwdWJsaWMga2V5LiBVc2UgXCJURVNULUNZQkVSU0lBUkFcIiBmb3Igc3RhZ2luZy9kZXZlbG9wbWVudC4gKi9cbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIC8qKiBMb2FkcyBqUXVlcnkgYmVmb3JlIFNpYXJhU2hpZWxkIHNjcmlwdC4gRGVmYXVsdCBpcyB0cnVlIGZvciBlYXNpZXIgaW50ZWdyYXRpb24uIFNldCB0byBmYWxzZSBvbmx5IGlmIHlvdXIgcGFnZSBhbHJlYWR5IGluY2x1ZGVzIGpRdWVyeS4gKi9cbiAgbG9hZEpRdWVyeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDU1Agbm9uY2UgdmFsdWUgKHdpdGhvdXQgdGhlIGAnbm9uY2UtJ2AgcHJlZml4KS5cbiAgICogSWYgb21pdHRlZCwgd2UgYXR0ZW1wdCB0byByZXNvbHZlIGl0IGZyb20gZXhpc3RpbmcgYHNjcmlwdFtub25jZV1gIG9yIGBtZXRhW25hbWU9XCJjc3Atbm9uY2VcIl1gLlxuICAgKi9cbiAgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdHJ1ZSBvbmx5IHdoZW4gYWN0aXZlbHkgZGVidWdnaW5nIHZlbmRvci9ydW50aW1lIGludGVybmFscyBpbiBicm93c2VyIGNvbnNvbGUuICovXG4gIGFsbG93VmVuZG9yQ29uc29sZUxvZ3M/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWFyYS1zaGllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJTaWFyYVNoaWVsZFwiPjwvZGl2PmAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNpYXJhU2hpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpY0tleSE6IHN0cmluZztcbiAgQElucHV0KCkgbG9hZEpRdWVyeSA9IHRydWU7XG4gIEBJbnB1dCgpIGNzcE5vbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBhbGxvd1ZlbmRvckNvbnNvbGVMb2dzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IGBDeWJlclNpYXJhVG9rZW5gIHJpZ2h0IGFmdGVyIGEgc3VjY2Vzc2Z1bCBgY2hlY2tDYXB0Y2hhKClgLlxuICAgKi9cbiAgQE91dHB1dCgpIHRva2VuID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXI6IFNpYXJhU2hpZWxkTG9hZGVyU2VydmljZSxcbiAgKSB7fVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoe1xuICAgICAgcHVibGljS2V5OiB0aGlzLnB1YmxpY0tleSxcbiAgICAgIGxvYWRKUXVlcnk6IHRoaXMubG9hZEpRdWVyeSxcbiAgICAgIGNzcE5vbmNlOiB0aGlzLmNzcE5vbmNlLFxuICAgICAgYWxsb3dWZW5kb3JDb25zb2xlTG9nczogdGhpcy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaW5pdChvcHRpb25zOiBTaWFyYVNoaWVsZEluaXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgIC8vIEVuc3VyZSB0aGUgaG9zdCBlbGVtZW50IGlzIGluIERPTSBiZWZvcmUgc2NyaXB0cyBydW4uXG4gICAgdm9pZCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dWZW5kb3JDb25zb2xlTG9ncykge1xuICAgICAgLy8gSW5zdGFsbCBzdXBwcmVzc2lvbiBhcyBlYXJseSBhcyBwb3NzaWJsZSBzbyBBbmd1bGFyIGRvZXNuJ3QgbG9nIGNyb3NzLW9yaWdpbiB2ZW5kb3Igbm9pc2UgZHVyaW5nIGJvb3RzdHJhcC5cbiAgICAgIGluc3RhbGxWZW5kb3JSdW50aW1lRXJyb3JTdXBwcmVzc2lvbigpO1xuICAgICAgc3VwcHJlc3NWZW5kb3JDb25zb2xlV2luZG93KCk7XG4gICAgfVxuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcblxuICAgIGlmICghb3B0aW9ucy5wdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGRDb21wb25lbnQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIENTUCBub25jZSBwcm9wYWdhdGlvbiBzbyBhbnkgdmVuZG9yLWluamVjdGVkIGNoaWxkIHNjcmlwdHMgZ2V0IHRoZSBzYW1lIG5vbmNlLlxuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA/PyBnbG9iYWxUaGlzLmRvY3VtZW50ID8/IG51bGw7XG4gICAgY29uc3Qgbm9uY2UgPSBwcmVwYXJlU2NyaXB0Tm9uY2UoZG9jdW1lbnRSZWYsIG9wdGlvbnMuY3NwTm9uY2UpO1xuICAgIGlmIChkb2N1bWVudFJlZikge1xuICAgICAgLy8gVmVuZG9yIHNjcmlwdHMgb2Z0ZW4gcXVlcnkgYC5TaWFyYVNoaWVsZGAgaW1tZWRpYXRlbHk7IGVuc3VyZSBpdCdzIHByZXNlbnQgaW4gRE9NLlxuICAgICAgYXdhaXQgd2FpdEZvckNhcHRjaGFDb250YWluZXIoZG9jdW1lbnRSZWYpO1xuICAgIH1cbiAgICBpZiAoKG9wdGlvbnMubG9hZEpRdWVyeSA/PyB0cnVlKSAmJiAhdGhpcy5pc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkZXIubG9hZFNjcmlwdChKUVVFUllfRkFMTEJBQ0tfU1JDLCB7IG5vbmNlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoQ0FQVENIQV9TQ1JJUFRfU1JDLCB7IG5vbmNlIH0pO1xuICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoVkFMSURBVElPTl9TQ1JJUFRfU1JDLCB7IG5vbmNlIH0pO1xuXG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGVuc3VyZUFjY2Vzc2liaWxpdHlQb3B1cEFsaWFzZXMoKTtcbiAgICB0aGlzLnByZXZlbnREdXBsaWNhdGVWYWxpZGF0aW9uQm9vdHN0cmFwKGcpO1xuICAgIGluc3RhbGxWZW5kb3JDaGFsbGVuZ2VSdW50aW1lUGF0Y2goKTtcbiAgICBjb25zdCBpbml0Q2FwdGNoYUZuID0gZ2V0SW5pdENhcHRjaGFGbihnKTtcbiAgICBpZiAoIWluaXRDYXB0Y2hhRm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NpYXJhU2hpZWxkOiBJbml0Q2FwdGNoYSgpIGlzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgbG9hZGluZyBzY3JpcHRzLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJ1bkluUm9vdFpvbmUoKCkgPT4gaW5pdENhcHRjaGFGbihvcHRpb25zLnB1YmxpY0tleSkpO1xuICAgIGF3YWl0IHRoaXMud2FpdEZvckNoZWNrQ2FwdGNoYUFwaSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdCBwcmVsb2FkZWQgalF1ZXJ5IGZyb20gZ2xvYmFsIG9iamVjdCBvciBhbiBleGlzdGluZyBzY3JpcHQgdGFnLlxuICAgKi9cbiAgcHJpdmF0ZSBpc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGlmICh0eXBlb2YgZy5qUXVlcnkgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGcuJCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdKcXVlcnlTY3JpcHQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgICAgJ3NjcmlwdFtzcmMqPVwianF1ZXJ5XCJdJyxcbiAgICApO1xuICAgIHJldHVybiBCb29sZWFuKGV4aXN0aW5nSnF1ZXJ5U2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudER1cGxpY2F0ZVZhbGlkYXRpb25Cb290c3RyYXAoZzogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2lhcmFTaGllbGRHbG9iYWxzPik6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbiA9IGcuQXBwZW5kVmFsaWRhdGlvbkpTO1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZy5BcHBlbmRWYWxpZGF0aW9uSlMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oXG4gICAgICAgIGBzY3JpcHRbc3JjPVwiJHtWQUxJREFUSU9OX1NDUklQVF9TUkN9XCJdYCxcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5hbEFwcGVuZFZhbGlkYXRpb24oKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQ2hlY2tDYXB0Y2hhQXBpKHRpbWVvdXRNcyA9IENBUFRDSEFfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydGVkQXQgPCB0aW1lb3V0TXMpIHtcbiAgICAgIGlmIChnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DaGVja0NhcHRjaGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGQ6IENoZWNrQ2FwdGNoYSgpIHdhcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aW1lb3V0LicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBnbG9iYWwgYENoZWNrQ2FwdGNoYSgpYCBmcm9tIFNpYXJhU2hpZWxkIHNjcmlwdC5cbiAgICogUmV0dXJucyB0cnVlIHdoZW4gY2FwdGNoYSBpcyB2YWxpZDsgZW1pdHMgdG9rZW4gaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgY2hlY2tDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAoIWcuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpYXJhU2hpZWxkOiBDaGVja0NhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlLiBEaWQgaW5pdCgpIHJ1bj8nKTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1Rva2VuID0gdHlwZW9mIGcuQ3liZXJTaWFyYVRva2VuID09PSAnc3RyaW5nJyAmJiBnLkN5YmVyU2lhcmFUb2tlbi5sZW5ndGggPiAwID8gZy5DeWJlclNpYXJhVG9rZW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGV4aXN0aW5nVG9rZW4pIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzKSB7XG4gICAgICBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3coKTtcbiAgICB9XG4gICAgY29uc3Qgb2sgPSBnLkNoZWNrQ2FwdGNoYSgpO1xuICAgIGlmIChvayAmJiB0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnRva2VuLmVtaXQoZy5DeWJlclNpYXJhVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gb2s7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmMtZnJpZW5kbHkgY2FwdGNoYSB2YWxpZGF0aW9uIHRvIGF2b2lkIGZpcnN0LWNsaWNrIHRpbWluZyBpc3N1ZXMuXG4gICAqIFBlcmZvcm1zIG9uZSB2YWxpZGF0aW9uIGNhbGwgYW5kIHdhaXRzIGZvciB0b2tlbiBwcm9wYWdhdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrQ2FwdGNoYUFzeW5jKG9wdGlvbnM/OiB7XG4gICAgdGltZW91dE1zPzogbnVtYmVyO1xuICAgIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAgIGJlZm9yZUNoZWNrRGVsYXlNcz86IG51bWJlcjtcbiAgICByZXRyeU9uRmFsc2VNcz86IG51bWJlcjtcbiAgICBmYWxzZVJlc3VsdFRva2VuV2FpdE1zPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zID8/IDIwMDA7XG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyAxMjA7XG4gICAgY29uc3QgYmVmb3JlQ2hlY2tEZWxheU1zID0gb3B0aW9ucz8uYmVmb3JlQ2hlY2tEZWxheU1zID8/IDE0MDtcbiAgICBjb25zdCByZXRyeU9uRmFsc2VNcyA9IG9wdGlvbnM/LnJldHJ5T25GYWxzZU1zID8/IDA7XG4gICAgY29uc3QgZmFsc2VSZXN1bHRUb2tlbldhaXRNcyA9IG9wdGlvbnM/LmZhbHNlUmVzdWx0VG9rZW5XYWl0TXMgPz8gOTAwO1xuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DeWJlclNpYXJhVG9rZW47XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZ1Rva2VuID09PSAnc3RyaW5nJyAmJiBleGlzdGluZ1Rva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiZWZvcmVDaGVja0RlbGF5TXMpKTtcbiAgICBsZXQgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIC8vIE9wdGlvbmFsIHJldHJ5IGZvciBpbnRlZ3JhdGlvbnMgdGhhdCBvYnNlcnZlIGxhdGUgdmVuZG9yLXN0YXRlIHNldHRsaW5nLlxuICAgIGlmICghb2sgJiYgcmV0cnlPbkZhbHNlTXMgPiAwKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCByZXRyeU9uRmFsc2VNcykpO1xuICAgICAgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIH1cbiAgICBpZiAoIW9rKSB7XG4gICAgICAvLyBTb21lIHZlbmRvciBmbG93cyByZXR1cm4gZmFsc2UgZmlyc3QsIHRoZW4gc2V0IHRva2VuIHNob3J0bHkgYWZ0ZXIuXG4gICAgICBjb25zdCBmYWxzZVN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIGZhbHNlU3RhcnRlZEF0IDwgZmFsc2VSZXN1bHRUb2tlbldhaXRNcykge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWxNcykpO1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudG9rZW4uZW1pdCh0b2tlbik7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgaWYgKHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycgJiYgZy5DeWJlclNpYXJhVG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcG9sbEludGVydmFsTXMpKTtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCkuQ3liZXJTaWFyYVRva2VuO1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnRva2VuLmVtaXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4iXX0=