@openziti/ziti-console-lib 0.12.5 → 0.12.7

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.
Files changed (39) hide show
  1. package/assets/fonts/icomoon.eot +0 -0
  2. package/assets/fonts/icomoon.svg +8 -0
  3. package/assets/fonts/icomoon.ttf +0 -0
  4. package/assets/fonts/icomoon.woff +0 -0
  5. package/assets/fonts/icomoon.woff2 +0 -0
  6. package/assets/html/terminators.htm +1 -1
  7. package/esm2022/lib/features/config-editor/config-editor.component.mjs +6 -2
  8. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +4 -1
  9. package/esm2022/lib/features/preview-list/preview-list.component.mjs +10 -3
  10. package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +44 -0
  11. package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +91 -0
  12. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +19 -19
  13. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +10 -4
  14. package/esm2022/lib/pages/identities/identities-page.service.mjs +7 -2
  15. package/esm2022/lib/services/schema.service.mjs +3 -3
  16. package/esm2022/lib/version.mjs +2 -2
  17. package/esm2022/lib/ziti-console-lib.module.mjs +19 -5
  18. package/esm2022/public-api.mjs +5 -1
  19. package/fesm2022/openziti-ziti-console-lib.mjs +195 -32
  20. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  21. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  22. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
  23. package/lib/features/preview-list/preview-list.component.d.ts +1 -0
  24. package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
  25. package/lib/features/progress-meter/progress-meter.component.d.ts +19 -0
  26. package/lib/features/progress-meter/progress-meter.component.d.ts.map +1 -0
  27. package/lib/features/progress-wizard/progress-wizard.component.d.ts +31 -0
  28. package/lib/features/progress-wizard/progress-wizard.component.d.ts.map +1 -0
  29. package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +1 -0
  30. package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +1 -1
  31. package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -1
  32. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +1 -1
  33. package/lib/pages/identities/identities-page.service.d.ts +1 -0
  34. package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
  35. package/lib/ziti-console-lib.module.d.ts +20 -18
  36. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/public-api.d.ts +4 -0
  39. package/public-api.d.ts.map +1 -1
@@ -253,8 +253,14 @@ class IdentityServicePathHelper {
253
253
  node.id = ePoint.id;
254
254
  node.name = ePoint.name;
255
255
  node.type = 'Identity';
256
- node.apiSession = ePoint.hasApiSession === false ? 'No' : 'Yes';
257
- node.routerConnection = ePoint.hasEdgeRouterConnection === false ? 'No' : 'Yes';
256
+ if (_.has(ePoint, 'edgeRouterConnectionStatus')) {
257
+ node.routerConnection = ePoint.edgeRouterConnectionStatus === 'offline' ? 'No' : 'Yes';
258
+ node.apiSession = node.routerConnection;
259
+ }
260
+ else {
261
+ node.routerConnection = ePoint['hasEdgeRouterConnection'] === false ? 'No' : 'Yes';
262
+ node.apiSession = ePoint['hasApiSession'] === false ? 'No' : 'Yes';
263
+ }
258
264
  node.os = ePoint.envInfo ? ePoint.envInfo.os : '';
259
265
  node.mfaEnabled = ePoint.isMfaEnabled;
260
266
  node.status = ePoint.envInfo && ePoint.envInfo.os !== null ? 'Registered' : 'Un-Registered';
@@ -313,7 +319,7 @@ class IdentityServicePathHelper {
313
319
  else if (endpointNode.apiSession === 'No') {
314
320
  linkstate = 0;
315
321
  }
316
- else if (endpointNode.status === 'Registered' && endpointNode.apiSession === 'Yes') {
322
+ else if (endpointNode.status === 'Registered' && endpointNode.routerConnection === 'Yes') {
317
323
  linkstate = 1;
318
324
  }
319
325
  else {
@@ -365,4 +371,4 @@ class RootJson {
365
371
  }
366
372
  ;
367
373
  }
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUV2QixNQUFNLElBQUk7Q0FPVDtBQUVELE1BQU0sSUFBSTtDQWdCVDtBQUVELE1BQU0sZUFBZTtJQUFyQjtRQWtCSSxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR25CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxXQUFXO0NBR3ZCO0FBRUQsTUFHYSx5QkFBeUI7SUFHbEM7UUFGQSxvQkFBZSxHQUFHLENBQUMsQ0FBQztJQUdqQixDQUFDO0lBRUcsbUJBQW1CLENBQ3RCLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsVUFBVSxHQUFHLEVBQUU7UUFFZixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBSSxjQUFjLENBQUMsSUFBSSxDQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUcsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1osY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxjQUFjLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUMzQixjQUFjLENBQUMsSUFBSSxHQUFHLEVBQUUs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LFFBQVE7SUFBZDtRQUNPLFVBQUssR0FBTyxFQUFFLENBQUM7UUFDZixVQUFLLEdBQU8sRUFBRSxDQUFDO0lBc0J0QixDQUFDO0lBckJNLE9BQU8sQ0FBRSxTQUFTO1FBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUUsVUFBVSxFQUFFO1lBQzNDLGdDQUFnQztZQUM1QixrQkFBa0I7WUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSTtRQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO0lBQ1QsQ0FBQztJQUFBLENBQUM7SUFDRixXQUFXLENBQUUsU0FBUztRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzdCO0lBQ1QsQ0FBQztJQUFBLENBQUM7SUFDSCxPQUFPLENBQUUsU0FBUztRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFBQSxDQUFDO0NBRVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNsYXNzIExpbmsge1xuICAgIHNvdXJjZTtcbiAgICBzb3VyY2VOYW1lO1xuICAgIHRhcmdldDtcbiAgICB0YXJnZXROYW1lO1xuICAgIHdlaWdodDtcbiAgICBzdGF0dXM7XG59XG5cbmNsYXNzIE5vZGUge1xuICAgIGlkO1xuICAgIG5hbWU7XG4gICAgcHJvdmlkZXI7XG4gICAgZ3JvdXA7XG4gICAgcG9zeDtcbiAgICBwb3N5O1xuICAgIHN0YXR1cztcbiAgICBvbmxpbmU7XG4gICAgYXBpU2Vzc2lvbjtcbiAgICByb3V0ZXJDb25uZWN0aW9uO1xuICAgIHR1bm5lbGVyRW5hYmxlZDtcbiAgICBvcztcbiAgICBtZmFFbmFibGVkO1xuICAgIHR5cGU7XG4gICAgdXNhZ2U7XG59XG5cbmNsYXNzIFNlcnZpY2VIb3N0Tm9kZSB7XG4gICAgaWQ7XG4gICAgbmFtZTtcbiAgICBncm91cDtcbiAgICBwb3N4O1xuICAgIHBvc3k7XG4gICAgaW50ZXJjZXB0SXBzO1xuICAgIGludGVyY2VwdFBvcnRzO1xuICAgIGludGVyY2VwdFByb3RvY29scztcbiAgICBmb3J3YXJkZWRIb3N0O1xuICAgIGhvc3ROYW1lcztcbiAgICBmb3J3YXJkZWRQb3J0O1xuICAgIGhvc3RQb3J0cztcbiAgICBmb3J3YXJkZWRQcm90b2NvbDtcbiAgICBob3N0UHJvdG9jb2xzO1xuICAgIHN0YXR1cztcbiAgICB0eXBlO1xuICAgIHVzYWdlO1xuICAgIGludGVyY2VwdCA9IFtdO1xuICAgIGNvbmZpZ0FkZHJlc3M7XG4gICAgY29uZmlnUG9ydHM7XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGF0YSB7XG4gICAgaWQ7XG4gICAgbmFtZTtcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlTZXJ2aWNlUGF0aEhlbHBlciB7XG4gICAgcG9zeV9mb3JfZ3JvdXAzID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXRFbmRwb2ludEdyYXBoT2JqKFxuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgYmluZElkbmV0aXRpZXMsXG4gICAgICAgIGVkZ2Vyb3V0ZXJzLFxuICAgICAgICBzZWxlY3RlZFNlcnZpY2VPYixcbiAgICAgICAgc2VydmljZUNvbmZpZ3MsXG4gICAgICAgIGZpbHRlclRleHQgPSAnJ1xuICAgICkge1xuICAgICAgICBsZXQgZW5kcG9pbnROb2RlT2IgPSBudWxsO1xuICAgICAgICBjb25zdCByb290T2IgPSBuZXcgUm9vdEpzb24oKTtcbiAgICAgICAgY29uc3QgYmluZE5vZGUgPSAgYmluZElkbmV0aXRpZXMuZmluZCggKG5kKSA9PiAgbmQuaWQgPT09IGVuZHBvaW50LmlkICApO1xuICAgICAgIGlmICghYmluZE5vZGUpIHtcbiAgICAgICAgICBlbmRwb2ludE5vZGVPYiA9IGNyZWF0ZUVuZHBvaW50KGVuZHBvaW50KTtcbiAgICAgICAgICBlbmRwb2ludE5vZGVPYi5ncm91cCA9ICcxJztcbiAgICAgICAgICBlbmRwb2ludE5vZGVPYi5wb3N4ID0gNTA7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IucG9zeSA9IDIwMDtcbiAgICAgICAgICByb290T2IuYWRkTm9kZShlbmRwb2ludE5vZGVPYik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHB1YmxpY1JvdXRlck5vZGVzID0gW107XG4gICAgICAgIGxldCBwb3N5ID0gMDtcbiAgICAgICAgXy5pc0FycmF5KGVkZ2Vyb3V0ZXJzKSAmJiBlZGdlcm91dGVycy5mb3JFYWNoKChuZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU9iID0gY3JlYXRlRVJOb2RlKG5kKTtcbiAgICAgICAgICAgIG5vZGVPYi5ncm91cCA9ICcyYSc7XG4gICAgICAgICAgICBub2RlT2IucG9zeCA9IDI1MDtcbiAgICAgICAgICAgIHBvc3kgPSBwb3N5ICsgMTAwO1xuICAgICAgICAgICAgbm9kZU9iLnBvc3kgPSBwb3N5O1xuICAgICAgICAgICAgcHVibGljUm91dGVyTm9kZXMucHVzaChub2RlT2IpO1xuICAgICAgICAgICAgcm9vdE9iLmFkZE5vZGUobm9kZU9iKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHB1YmxpY1JvdXRlck5vZGVzRm9yRW5kcG9pbnRUdW5uZWxlcnMgPSBbXTtcblxuICAgICAgICBjb25zdCBwb3N4X2Zvcl9ncm91cDMgPSA1NTA7XG4gICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMDtcbiAgICAgICAgbGV0IGdyb3VwM0lkcyA9IFtdO1xuICAgICAgICBsZXQgcG9zeV9mb3JfZ3JvdXA0ID0gMTUwO1xuICAgICAgICBjb25zdCBncm91cDROb2RlcyA9IFtdO1xuICAgICAgICBjb25zdCBzZXJ2aWNlSVBQb3J0cyA9IFtdO1xuICAgICAgICAgICBjb25zdCBzck5vZGUgPSBuZXcgU2VydmljZUhvc3ROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5pZCA9IHNlbGVjdGVkU2VydmljZU9iLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUubmFtZSA9IHNlbGVjdGVkU2VydmljZU9iLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5pbnRlcmNlcHQgPSBzZXJ2aWNlQ29uZmlnQWxpYXMoc2VydmljZUNvbmZpZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUudHlwZSA9ICdDb25maWcgU2VydmljZSc7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5ncm91cCA9ICc0JztcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLnN0YXR1cyA9ICcxJztcbiAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA0Tm9kZXMucHVzaChzck5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICByb290T2IuYWRkTm9kZShzck5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBfLmlzQXJyYXkoYmluZElkbmV0aXRpZXMpICYmIGJpbmRJZG5ldGl0aWVzLmZvckVhY2goKGVQb2ludCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cDNJZHMuaW5kZXhPZihlUG9pbnQuaWQpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwM0lkcy5wdXNoKGVQb2ludC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gY3JlYXRlIGxpbmtzIGJldHdlZW4gbm9kZXNcblxuICAgICAgICAvLyBpbiBncm91cDMsICByZW1vdmUgIHJvdXRlcnMvZXAgIHRoYXQgZXhpc3QgaW4gZ3JvdXAyXG4gICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMTY1O1xuICAgICAgICBsZXQgZ3JwM1lpbmNyZW1lbnQgPSAxMDA7XG5cbiAgICAgICAgY29uc3QgZ3JvdXAzTm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IGNvdW50Z3JwMyA9IDA7XG4gICAgICAgIGdyb3VwM0lkcy5maW5kKChuaWQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBsZXQncyBjaGVjayBpZiB0aGUgc2VydmljZSBob3N0ZWQgaXMgYW4gRW5kcG9pbnRcbiAgICAgICAgICAgICAgIGxldCBncnAzTm9kZSA9IGZpbmRFbmRwb2ludChuaWQsIGJpbmRJZG5ldGl0aWVzKTtcbiAgICAgICAgICAgICAgICAgIGlmKGdycDNOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGdycDNOb2RlLmdyb3VwID0gJzMnO1xuICAgICAgICAgICAgICAgICAgICBncnAzTm9kZS5wb3N4ID0gcG9zeF9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICBncnAzTm9kZS5wb3N5ID0gdGhpcy5wb3N5X2Zvcl9ncm91cDM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gdGhpcy5wb3N5X2Zvcl9ncm91cDMgKyAxMjU7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwM05vZGVzLnB1c2goZ3JwM05vZGUpO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGdycDMrKztcbiAgICAgICAgICAgICAgICAgICAgcm9vdE9iLmFkZE5vZGUoZ3JwM05vZGUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBncnAzWWluY3JlbWVudCA9IGNvdW50Z3JwMyA+IDIgPyA3NSA6IDEwMDtcbiAgICAgICAgaWYgKGNvdW50Z3JwMyA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAxNjA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRncnAzID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDEyMDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudGdycDMgPj0gNSkge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSA1MDtcbiAgICAgICAgICAgIGdycDNZaW5jcmVtZW50ID0gNzU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDczO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdyb3VwM05vZGVzKVxuICAgICAgICAgICAgZ3JvdXAzTm9kZXMuZmluZCgobm9kZTMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZTMuZ3JvdXAgPT09ICczJykge1xuICAgICAgICAgICAgICAgICAgICBub2RlMy5wb3N5ID0gdGhpcy5wb3N5X2Zvcl9ncm91cDM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gdGhpcy5wb3N5X2Zvcl9ncm91cDMgKyBncnAzWWluY3JlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZ3JvdXA0Tm9kZXMgJiYgZ3JvdXA0Tm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBwb3N5X2Zvcl9ncm91cDQgPSAyMDA7XG4gICAgICAgIH1cblxuICAgICAgICBncm91cDROb2Rlcy5maW5kKChuZDQpID0+IHtcbiAgICAgICAgICAgLy8gbmQ0LnBvc3ggPSBncm91cDNOb2RlcyAgJiYgZ3JvdXAzTm9kZXMubGVuZ3RoID4gMCAgJiYgIWdyb3VwM05vZGVzWzBdLnR5cGUuaW5jbHVkZXMoXCJQdWJsaWMgSG9zdGVkXCIpID8gcG9zeF9mb3JfZ3JvdXAzICsgMTc1IDogcG9zeF9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgbmQ0LnBvc3ggPSBwb3N4X2Zvcl9ncm91cDMgKyAxNzU7XG4gICAgICAgICAgICBuZDQucG9zeSA9IHBvc3lfZm9yX2dyb3VwNDtcbiAgICAgICAgICAgIHBvc3lfZm9yX2dyb3VwNCA9IHBvc3lfZm9yX2dyb3VwNCArIDEwMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGNvdW50UHVibGljTm9kZXMgPSAwO1xuICAgICAgICByb290T2Iubm9kZXMuZmluZCgocE5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChwTm9kZS5ncm91cC5pbmNsdWRlcygnMicpKSB7XG4gICAgICAgICAgICAgICAgY291bnRQdWJsaWNOb2RlcyA9IGNvdW50UHVibGljTm9kZXMgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBwdWJsaWNSb3V0ZXJOb2RlcyA9IFtdO1xuICAgICAgICBsZXQgcG9zeV9ncm91cDIgPSAxMDA7XG4gICAgICAgIGxldCB5SW5jcmVtZW50ID0gMDtcbiAgICAgICAgaWYgKGNvdW50UHVibGljTm9kZXMgPT09IDEpIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gMjAwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50UHVibGljTm9kZXMgPj0gMiAmJiBjb3VudFB1YmxpY05vZGVzIDwgNSkge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSA2MDtcbiAgICAgICAgICAgIHlJbmNyZW1lbnQgPSA4MDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudFB1YmxpY05vZGVzID49IDUgJiYgY291bnRQdWJsaWNOb2RlcyA8IDEwKSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDQwO1xuICAgICAgICAgICAgeUluY3JlbWVudCA9IDUwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSA0MDtcbiAgICAgICAgICAgIHlJbmNyZW1lbnQgPSA0MDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RPYi5ub2Rlcy5maW5kKChwdWJsaWNOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocHVibGljTm9kZS5ncm91cC5pbmNsdWRlcygnMicpKSB7XG4gICAgICAgICAgICAgICAgcHVibGljTm9kZS5wb3N4ID0gMjc1O1xuICAgICAgICAgICAgICAgIHB1YmxpY05vZGUucG9zeSA9IHBvc3lfZ3JvdXAyO1xuICAgICAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gcG9zeV9ncm91cDIgKyB5SW5jcmVtZW50O1xuICAgICAgICAgICAgICAgIHB1YmxpY1JvdXRlck5vZGVzLnB1c2gocHVibGljTm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1YmxpY05vZGUuZ3JvdXAgPT09ICcyYicpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAzTm9kZXMucHVzaChwdWJsaWNOb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG5cbiAgICAgICAgZm9yIChsZXQgazEgPSAwOyBrMSA8IHJvb3RPYi5ub2Rlcy5sZW5ndGg7IGsxKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5kID0gcm9vdE9iLm5vZGVzW2sxXTtcbiAgICAgICAgICAgIGlmIChlbmRwb2ludE5vZGVPYiAhPT1udWxsICYmIChuZC5ncm91cCA9PT0gJzJhJyB8fCBuZC5ncm91cCA9PT0gJzJhYicgfHwgbmQuZ3JvdXAgPT09ICcyYWMnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxuayA9IG5ldyBMaW5rKCk7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZSA9IGVuZHBvaW50Tm9kZU9iLmlkO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2VOYW1lID0gZW5kcG9pbnROb2RlT2IubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gbmQuaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldE5hbWUgPSBuZC5uYW1lO1xuICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRFbmRwb2ludFRvUm91dGVyTGlua1N0YXRlKGVuZHBvaW50Tm9kZU9iLCBuZCk7XG4gICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IGdldFdlaWdodChsbmsuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgazEgPSAwOyBrMSA8IHJvb3RPYi5ub2Rlcy5sZW5ndGg7IGsxKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5kMSA9IHJvb3RPYi5ub2Rlc1trMV07XG5cbiAgICAgICAgICAgIGlmIChuZDEuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGsyID0gMDsgazIgPCBncm91cDNOb2Rlcy5sZW5ndGg7IGsyKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmQyID0gZ3JvdXAzTm9kZXNbazJdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmQyLmdyb3VwID09PSAnMmInIHx8IG5kMi5ncm91cCA9PT0gJzJhYicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9IC8vIGxpbmsgbm90IHJlcXVpcmVkLlxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxuayA9IG5ldyBMaW5rKCk7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBuZDEuaWQ7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zb3VyY2VOYW1lID0gbmQxLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGxuay50YXJnZXQgPSBuZDIuaWQ7XG4gICAgICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gbmQyLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5kMS50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSAmJiBuZDIudHlwZS5pbmNsdWRlcygnUm91dGVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kMS5zdGF0dXMgPT09ICdQUk9WSVNJT05FRCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDEub25saW5lID09PSAnWWVzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kMi5zdGF0dXMgPT09ICdQUk9WSVNJT05FRCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDIub25saW5lID09PSAnWWVzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG5rLnN0YXR1cyA9IGdldEVuZHBvaW50VG9Sb3V0ZXJMaW5rU3RhdGUobmQyLCBuZDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RPYi5hZGRMaW5rKGxuayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgazAgPSAwOyBrMCA8IGdyb3VwNE5vZGVzLmxlbmd0aDsgazArKykge1xuICAgICAgICAgICAgZm9yIChsZXQgazEgPSAwOyBrMSA8IGdyb3VwM05vZGVzLmxlbmd0aDsgazErKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxuayA9IG5ldyBMaW5rKCk7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZSA9IGdyb3VwM05vZGVzW2sxXS5pZDtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IGdyb3VwM05vZGVzW2sxXS5uYW1lO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXQgPSBncm91cDROb2Rlc1trMF0uaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldE5hbWUgPSBncm91cDROb2Rlc1trMF0ubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE5kID0gcm9vdE9iLm5vZGVzLmZpbmQoIGZ1bmN0aW9uIChybmQpIHtcbiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBybmQuaWQgPT09IGdyb3VwM05vZGVzW2sxXS5pZDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5kLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSAgZm91bmROZC5vbmxpbmUgPT09ICdZZXMnID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnN0YXR1cyA9IGdldFNlcnZpY2VUb0VuZHBvaW50TGlua1N0YXRlKGdyb3VwM05vZGVzW2sxXSwgZ3JvdXA0Tm9kZXNbazBdKTtcbiAgICAgICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IGdldFdlaWdodChsbmsuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9vdE9iLmFkZExpbmsobG5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNlcnZpY2VDb25maWdBbGlhcyhjb25maWdzKSB7XG4gICAgICAgICAgbGV0IGludGVyY2VwdCA9IFtdO1xuICAgICAgICAgIF8uaXNBcnJheShjb25maWdzKSAmJiBjb25maWdzLmZvckVhY2goIChjb25mKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGFkZHJlc3NlcyA9ICcnO1xuICAgICAgICAgICAgIGxldCBwb3J0cyA9ICcnO1xuICAgICAgICAgICAgaWYgKGNvbmYuZGF0YS5hZGRyZXNzZXMpIHtcbiAgICAgICAgICAgICAgIGFkZHJlc3NlcyA9IGNvbmYuZGF0YS5hZGRyZXNzZXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICBhZGRyZXNzZXMgPSBjb25mLmRhdGEuYWRkcmVzcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8uaXNBcnJheShjb25mLmRhdGEucG9ydFJhbmdlcykgKSB7XG4gICAgICAgICAgICAgICAgY29uZi5kYXRhLnBvcnRSYW5nZXMuZm9yRWFjaCggKHBvcnRzSnNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcG9ydHNKc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcnRzID0gcG9ydHMgKyBrZXkgKyc6Jytwb3J0c0pzb25ba2V5XSArJyAnIDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICBwb3J0cyA9IHBvcnRzICsgJzsnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3J0cyA9ICBjb25mLmRhdGEucG9ydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludGVyY2VwdC5wdXNoKGFkZHJlc3Nlcyk7XG4gICAgICAgICAgICBpbnRlcmNlcHQucHVzaChwb3J0cyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGludGVyY2VwdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmRFbmRwb2ludChlbmRwb2ludElkLCBlbmRwb2ludHMpIHtcbiAgICAgICAgICAgIGxldCBub2RlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChlbmRwb2ludElkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlUG9pbnQgPSBlbmRwb2ludHMuZmluZCggZnVuY3Rpb24gKGVyKSB7XG4gICAgICAgICAgICAgICAgIHJldHVybiBlci5pZCA9PT0gZW5kcG9pbnRJZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoZVBvaW50KSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IGNyZWF0ZUVuZHBvaW50KGVQb2ludCk7XG4gICAgICAgICAgICAgICAgbm9kZS50eXBlID0gJ0hvc3RlZCBJZGVudGl0eSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSAvLyBlbmQgb2YgZmluZEVuZHBvaW50XG5cbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlRW5kcG9pbnQoZVBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IE5vZGUoKTtcbiAgICAgICAgICAgIG5vZGUuaWQgPSBlUG9pbnQuaWQ7XG4gICAgICAgICAgICBub2RlLm5hbWUgPSBlUG9pbnQubmFtZTtcbiAgICAgICAgICAgIG5vZGUudHlwZSA9ICdJZGVudGl0eSc7XG4gICAgICAgICAgICBub2RlLmFwaVNlc3Npb24gPSBlUG9pbnQuaGFzQXBpU2Vzc2lvbiA9PT0gZmFsc2UgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICBub2RlLnJvdXRlckNvbm5lY3Rpb24gPSBlUG9pbnQuaGFzRWRnZVJvdXRlckNvbm5lY3Rpb24gPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgbm9kZS5vcyA9IGVQb2ludC5lbnZJbmZvPyBlUG9pbnQuZW52SW5mby5vcyA6ICcnO1xuICAgICAgICAgICAgbm9kZS5tZmFFbmFibGVkID0gZVBvaW50LmlzTWZhRW5hYmxlZDtcbiAgICAgICAgICAgIG5vZGUuc3RhdHVzID0gZVBvaW50LmVudkluZm8gJiYgZVBvaW50LmVudkluZm8ub3MgIT09IG51bGwgPyAnUmVnaXN0ZXJlZCcgOiAnVW4tUmVnaXN0ZXJlZCc7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUVSTm9kZShlcm91dGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlT2IgPSBuZXcgTm9kZSgpO1xuICAgICAgICAgICAgbm9kZU9iLmlkID0gZXJvdXRlci5pZDtcbiAgICAgICAgICAgIG5vZGVPYi5uYW1lID0gZXJvdXRlci5uYW1lO1xuICAgICAgICAgICAgbm9kZU9iLnN0YXR1cyA9IGVyb3V0ZXIuaXNWZXJpZmllZCA9PT0gdHJ1ZT8gJ1JlZ2lzdGVyZWQnOidVbi1SZWdpc3RlcmVkJztcbiAgICAgICAgICAgIG5vZGVPYi5vbmxpbmUgPSBlcm91dGVyLmlzT25saW5lID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50dW5uZWxlckVuYWJsZWQgPSBlcm91dGVyLmlzVHVubmVsZXJFbmFibGVkID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50eXBlID0gJ0VkZ2VSb3V0ZXInO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVPYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmRFZGdlUm91dGVyRm9ySWQocm91dGVySWQsIGVkZ2Vyb3V0ZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBlcm91dGVyID0gZWRnZXJvdXRlcnMuZmluZCgoZXIpID0+IHtcbiAgICAgICAgICAgICAgLy8gIGlmIChlci5pZCA9PT0gcm91dGVySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyLmlkID09PSByb3V0ZXJJZDtcbiAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoZXJvdXRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVFUk5vZGUoZXJvdXRlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IC8vIGVuZCBvZiBmaW5kRWRnZVJvdXRlckZvcklkXG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGUsIHJvdXRlck5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKHJvdXRlck5vZGUuc3RhdHVzID09PSAnRVJST1InKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnN0YXR1cyA9PT0gJ1VuLVJlZ2lzdGVyZWQnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5hcGlTZXNzaW9uID09PSAnTm8nKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGVyTm9kZS5vbmxpbmUgPT09ICdZZXMnICYmIGVuZHBvaW50Tm9kZS5yb3V0ZXJDb25uZWN0aW9uID09PSAnWWVzJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxpbmtzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNlcnZpY2VUb0VuZHBvaW50TGlua1N0YXRlKGVuZHBvaW50Tm9kZSwgc2VydmljZU5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50Tm9kZS5zdGF0dXMgPT09ICdVbi1SZWdpc3RlcmVkJyB8fCBzZXJ2aWNlTm9kZS5pbnRlcmNlcHQuaW5jbHVkZXMoJ05vJykpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLmFwaVNlc3Npb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuc3RhdHVzID09PSAnUmVnaXN0ZXJlZCcgJiYgZW5kcG9pbnROb2RlLmFwaVNlc3Npb24gPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsaW5rc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRXZWlnaHQobGlua1N0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbGlua1N0YXRlID09PSAtMSA/IDUgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb290T2I7XG4gICAgfSAvLyBlbmQgb2YgTkVXIEZ1bmN0aW9uXG5cbn1cblxuIGNsYXNzIFJvb3RKc29uIHtcbiAgICAgICAgbm9kZXM6YW55ID0gW107XG4gICAgICAgIGxpbmtzOmFueSA9IFtdO1xuICAgICAgICBhZGROb2RlIChuZXdPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE9iaiA9IHRoaXMubm9kZXMuZmluZCggZnVuY3Rpb24gKG5kKSB7XG4gICAgICAgICAgICAgICAgICAgLy8gaWYgKG5kLmlkID09PSBuZXdPYmplY3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gbmQgPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmQuaWQgPT09IG5ld09iamVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghZm91bmRPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5ld09iamVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXBsYWNlTm9kZSAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZHggPSB0aGlzLm5vZGVzLmZpbmRJbmRleChuZCA9PiBuZC5pZCA9PT0gbmV3T2JqZWN0LmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5keCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgIHRoaXMubm9kZXNbaW5keF0gPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgIGFkZExpbmsgKG5ld09iamVjdCkge1xuICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2gobmV3T2JqZWN0KTtcbiAgICAgICAgfTtcblxuIH1cbiJdfQ==
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUV2QixNQUFNLElBQUk7Q0FPVDtBQUVELE1BQU0sSUFBSTtDQWdCVDtBQUVELE1BQU0sZUFBZTtJQUFyQjtRQWtCSSxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR25CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxXQUFXO0NBR3ZCO0FBRUQsTUFHYSx5QkFBeUI7SUFHbEM7UUFGQSxvQkFBZSxHQUFHLENBQUMsQ0FBQztJQUdqQixDQUFDO0lBRUcsbUJBQW1CLENBQ3RCLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsVUFBVSxHQUFHLEVBQUU7UUFFZixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBSSxjQUFjLENBQUMsSUFBSSxDQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUcsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1osY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxjQUFjLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUMzQixjQUFjLENBQUMsSUFBSSxHQUFHLEVBQUUs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QUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUEsQ0FBQztDQUVSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jbGFzcyBMaW5rIHtcbiAgICBzb3VyY2U7XG4gICAgc291cmNlTmFtZTtcbiAgICB0YXJnZXQ7XG4gICAgdGFyZ2V0TmFtZTtcbiAgICB3ZWlnaHQ7XG4gICAgc3RhdHVzO1xufVxuXG5jbGFzcyBOb2RlIHtcbiAgICBpZDtcbiAgICBuYW1lO1xuICAgIHByb3ZpZGVyO1xuICAgIGdyb3VwO1xuICAgIHBvc3g7XG4gICAgcG9zeTtcbiAgICBzdGF0dXM7XG4gICAgb25saW5lO1xuICAgIGFwaVNlc3Npb247XG4gICAgcm91dGVyQ29ubmVjdGlvbjtcbiAgICB0dW5uZWxlckVuYWJsZWQ7XG4gICAgb3M7XG4gICAgbWZhRW5hYmxlZDtcbiAgICB0eXBlO1xuICAgIHVzYWdlO1xufVxuXG5jbGFzcyBTZXJ2aWNlSG9zdE5vZGUge1xuICAgIGlkO1xuICAgIG5hbWU7XG4gICAgZ3JvdXA7XG4gICAgcG9zeDtcbiAgICBwb3N5O1xuICAgIGludGVyY2VwdElwcztcbiAgICBpbnRlcmNlcHRQb3J0cztcbiAgICBpbnRlcmNlcHRQcm90b2NvbHM7XG4gICAgZm9yd2FyZGVkSG9zdDtcbiAgICBob3N0TmFtZXM7XG4gICAgZm9yd2FyZGVkUG9ydDtcbiAgICBob3N0UG9ydHM7XG4gICAgZm9yd2FyZGVkUHJvdG9jb2w7XG4gICAgaG9zdFByb3RvY29scztcbiAgICBzdGF0dXM7XG4gICAgdHlwZTtcbiAgICB1c2FnZTtcbiAgICBpbnRlcmNlcHQgPSBbXTtcbiAgICBjb25maWdBZGRyZXNzO1xuICAgIGNvbmZpZ1BvcnRzO1xufVxuXG5leHBvcnQgY2xhc3MgU2VydmljZURhdGEge1xuICAgIGlkO1xuICAgIG5hbWU7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5U2VydmljZVBhdGhIZWxwZXIge1xuICAgIHBvc3lfZm9yX2dyb3VwMyA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0RW5kcG9pbnRHcmFwaE9iaihcbiAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgIGJpbmRJZG5ldGl0aWVzLFxuICAgICAgICBlZGdlcm91dGVycyxcbiAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlT2IsXG4gICAgICAgIHNlcnZpY2VDb25maWdzLFxuICAgICAgICBmaWx0ZXJUZXh0ID0gJydcbiAgICApIHtcbiAgICAgICAgbGV0IGVuZHBvaW50Tm9kZU9iID0gbnVsbDtcbiAgICAgICAgY29uc3Qgcm9vdE9iID0gbmV3IFJvb3RKc29uKCk7XG4gICAgICAgIGNvbnN0IGJpbmROb2RlID0gIGJpbmRJZG5ldGl0aWVzLmZpbmQoIChuZCkgPT4gIG5kLmlkID09PSBlbmRwb2ludC5pZCAgKTtcbiAgICAgICBpZiAoIWJpbmROb2RlKSB7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IgPSBjcmVhdGVFbmRwb2ludChlbmRwb2ludCk7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IuZ3JvdXAgPSAnMSc7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IucG9zeCA9IDUwO1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iLnBvc3kgPSAyMDA7XG4gICAgICAgICAgcm9vdE9iLmFkZE5vZGUoZW5kcG9pbnROb2RlT2IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2RlcyA9IFtdO1xuICAgICAgICBsZXQgcG9zeSA9IDA7XG4gICAgICAgIF8uaXNBcnJheShlZGdlcm91dGVycykgJiYgZWRnZXJvdXRlcnMuZm9yRWFjaCgobmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYiA9IGNyZWF0ZUVSTm9kZShuZCk7XG4gICAgICAgICAgICBub2RlT2IuZ3JvdXAgPSAnMmEnO1xuICAgICAgICAgICAgbm9kZU9iLnBvc3ggPSAyNTA7XG4gICAgICAgICAgICBwb3N5ID0gcG9zeSArIDEwMDtcbiAgICAgICAgICAgIG5vZGVPYi5wb3N5ID0gcG9zeTtcbiAgICAgICAgICAgIHB1YmxpY1JvdXRlck5vZGVzLnB1c2gobm9kZU9iKTtcbiAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKG5vZGVPYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2Rlc0ZvckVuZHBvaW50VHVubmVsZXJzID0gW107XG5cbiAgICAgICAgY29uc3QgcG9zeF9mb3JfZ3JvdXAzID0gNTUwO1xuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDA7XG4gICAgICAgIGxldCBncm91cDNJZHMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZm9yX2dyb3VwNCA9IDE1MDtcbiAgICAgICAgY29uc3QgZ3JvdXA0Tm9kZXMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VydmljZUlQUG9ydHMgPSBbXTtcbiAgICAgICAgICAgY29uc3Qgc3JOb2RlID0gbmV3IFNlcnZpY2VIb3N0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaWQgPSBzZWxlY3RlZFNlcnZpY2VPYi5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLm5hbWUgPSBzZWxlY3RlZFNlcnZpY2VPYi5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaW50ZXJjZXB0ID0gc2VydmljZUNvbmZpZ0FsaWFzKHNlcnZpY2VDb25maWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLnR5cGUgPSAnQ29uZmlnIFNlcnZpY2UnO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuZ3JvdXAgPSAnNCc7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5zdGF0dXMgPSAnMSc7XG4gICAgICAgICAgICAgICAgICAgICAgIGdyb3VwNE5vZGVzLnB1c2goc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgcm9vdE9iLmFkZE5vZGUoc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgXy5pc0FycmF5KGJpbmRJZG5ldGl0aWVzKSAmJiBiaW5kSWRuZXRpdGllcy5mb3JFYWNoKChlUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAzSWRzLmluZGV4T2YoZVBvaW50LmlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDNJZHMucHVzaChlUG9pbnQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBsaW5rcyBiZXR3ZWVuIG5vZGVzXG5cbiAgICAgICAgLy8gaW4gZ3JvdXAzLCAgcmVtb3ZlICByb3V0ZXJzL2VwICB0aGF0IGV4aXN0IGluIGdyb3VwMlxuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDE2NTtcbiAgICAgICAgbGV0IGdycDNZaW5jcmVtZW50ID0gMTAwO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwM05vZGVzID0gW107XG4gICAgICAgIGxldCBjb3VudGdycDMgPSAwO1xuICAgICAgICBncm91cDNJZHMuZmluZCgobmlkKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbGV0J3MgY2hlY2sgaWYgdGhlIHNlcnZpY2UgaG9zdGVkIGlzIGFuIEVuZHBvaW50XG4gICAgICAgICAgICAgICBsZXQgZ3JwM05vZGUgPSBmaW5kRW5kcG9pbnQobmlkLCBiaW5kSWRuZXRpdGllcyk7XG4gICAgICAgICAgICAgICAgICBpZihncnAzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBncnAzTm9kZS5ncm91cCA9ICczJztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeCA9IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgMTI1O1xuICAgICAgICAgICAgICAgICAgICBncm91cDNOb2Rlcy5wdXNoKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgY291bnRncnAzKys7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JwM1lpbmNyZW1lbnQgPSBjb3VudGdycDMgPiAyID8gNzUgOiAxMDA7XG4gICAgICAgIGlmIChjb3VudGdycDMgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMTYwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50Z3JwMyA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAxMjA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRncnAzID49IDUpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gNTA7XG4gICAgICAgICAgICBncnAzWWluY3JlbWVudCA9IDc1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSA3MztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cDNOb2RlcylcbiAgICAgICAgICAgIGdyb3VwM05vZGVzLmZpbmQoKG5vZGUzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUzLmdyb3VwID09PSAnMycpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTMucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgZ3JwM1lpbmNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGdyb3VwNE5vZGVzICYmIGdyb3VwNE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcG9zeV9mb3JfZ3JvdXA0ID0gMjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXA0Tm9kZXMuZmluZCgobmQ0KSA9PiB7XG4gICAgICAgICAgIC8vIG5kNC5wb3N4ID0gZ3JvdXAzTm9kZXMgICYmIGdyb3VwM05vZGVzLmxlbmd0aCA+IDAgICYmICFncm91cDNOb2Rlc1swXS50eXBlLmluY2x1ZGVzKFwiUHVibGljIEhvc3RlZFwiKSA/IHBvc3hfZm9yX2dyb3VwMyArIDE3NSA6IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgIG5kNC5wb3N4ID0gcG9zeF9mb3JfZ3JvdXAzICsgMTc1O1xuICAgICAgICAgICAgbmQ0LnBvc3kgPSBwb3N5X2Zvcl9ncm91cDQ7XG4gICAgICAgICAgICBwb3N5X2Zvcl9ncm91cDQgPSBwb3N5X2Zvcl9ncm91cDQgKyAxMDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBjb3VudFB1YmxpY05vZGVzID0gMDtcbiAgICAgICAgcm9vdE9iLm5vZGVzLmZpbmQoKHBOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocE5vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIGNvdW50UHVibGljTm9kZXMgPSBjb3VudFB1YmxpY05vZGVzICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHVibGljUm91dGVyTm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZ3JvdXAyID0gMTAwO1xuICAgICAgICBsZXQgeUluY3JlbWVudCA9IDA7XG4gICAgICAgIGlmIChjb3VudFB1YmxpY05vZGVzID09PSAxKSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDIwMDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudFB1YmxpY05vZGVzID49IDIgJiYgY291bnRQdWJsaWNOb2RlcyA8IDUpIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNjA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gODA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRQdWJsaWNOb2RlcyA+PSA1ICYmIGNvdW50UHVibGljTm9kZXMgPCAxMCkge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSA0MDtcbiAgICAgICAgICAgIHlJbmNyZW1lbnQgPSA1MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNDA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gNDA7XG4gICAgICAgIH1cblxuICAgICAgICByb290T2Iubm9kZXMuZmluZCgocHVibGljTm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHB1YmxpY05vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIHB1YmxpY05vZGUucG9zeCA9IDI3NTtcbiAgICAgICAgICAgICAgICBwdWJsaWNOb2RlLnBvc3kgPSBwb3N5X2dyb3VwMjtcbiAgICAgICAgICAgICAgICBwb3N5X2dyb3VwMiA9IHBvc3lfZ3JvdXAyICsgeUluY3JlbWVudDtcbiAgICAgICAgICAgICAgICBwdWJsaWNSb3V0ZXJOb2Rlcy5wdXNoKHB1YmxpY05vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaWNOb2RlLmdyb3VwID09PSAnMmInKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwM05vZGVzLnB1c2gocHVibGljTm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZCA9IHJvb3RPYi5ub2Rlc1trMV07XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnROb2RlT2IgIT09bnVsbCAmJiAobmQuZ3JvdXAgPT09ICcyYScgfHwgbmQuZ3JvdXAgPT09ICcyYWInIHx8IG5kLmdyb3VwID09PSAnMmFjJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBlbmRwb2ludE5vZGVPYi5pZDtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IGVuZHBvaW50Tm9kZU9iLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldCA9IG5kLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gbmQubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGVPYiwgbmQpO1xuICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgcm9vdE9iLmFkZExpbmsobG5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZDEgPSByb290T2Iubm9kZXNbazFdO1xuXG4gICAgICAgICAgICBpZiAobmQxLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrMiA9IDA7IGsyIDwgZ3JvdXAzTm9kZXMubGVuZ3RoOyBrMisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kMiA9IGdyb3VwM05vZGVzW2syXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5kMi5ncm91cCA9PT0gJzJiJyB8fCBuZDIuZ3JvdXAgPT09ICcyYWInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyBsaW5rIG5vdCByZXF1aXJlZC5cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlID0gbmQxLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IG5kMS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gbmQyLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0TmFtZSA9IG5kMi5uYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZDEudHlwZS5pbmNsdWRlcygnUm91dGVyJykgJiYgbmQyLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDEuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQxLm9ubGluZSA9PT0gJ1llcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDIuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQyLm9ubGluZSA9PT0gJ1llcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRFbmRwb2ludFRvUm91dGVyTGlua1N0YXRlKG5kMiwgbmQxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGswID0gMDsgazAgPCBncm91cDROb2Rlcy5sZW5ndGg7IGswKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCBncm91cDNOb2Rlcy5sZW5ndGg7IGsxKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZU5hbWUgPSBncm91cDNOb2Rlc1trMV0ubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gZ3JvdXA0Tm9kZXNbazBdLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gZ3JvdXA0Tm9kZXNbazBdLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmROZCA9IHJvb3RPYi5ub2Rlcy5maW5kKCBmdW5jdGlvbiAocm5kKSB7XG4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm5kLmlkID09PSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZm91bmROZC50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gIGZvdW5kTmQub25saW5lID09PSAnWWVzJyA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRTZXJ2aWNlVG9FbmRwb2ludExpbmtTdGF0ZShncm91cDNOb2Rlc1trMV0sIGdyb3VwNE5vZGVzW2swXSk7XG4gICAgICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvb3RPYi5hZGRMaW5rKGxuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzZXJ2aWNlQ29uZmlnQWxpYXMoY29uZmlncykge1xuICAgICAgICAgIGxldCBpbnRlcmNlcHQgPSBbXTtcbiAgICAgICAgICBfLmlzQXJyYXkoY29uZmlncykgJiYgY29uZmlncy5mb3JFYWNoKCAoY29uZikgPT4ge1xuICAgICAgICAgICAgIGxldCBhZGRyZXNzZXMgPSAnJztcbiAgICAgICAgICAgICBsZXQgcG9ydHMgPSAnJztcbiAgICAgICAgICAgIGlmIChjb25mLmRhdGEuYWRkcmVzc2VzKSB7XG4gICAgICAgICAgICAgICBhZGRyZXNzZXMgPSBjb25mLmRhdGEuYWRkcmVzc2VzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgYWRkcmVzc2VzID0gY29uZi5kYXRhLmFkZHJlc3M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmlzQXJyYXkoY29uZi5kYXRhLnBvcnRSYW5nZXMpICkge1xuICAgICAgICAgICAgICAgIGNvbmYuZGF0YS5wb3J0UmFuZ2VzLmZvckVhY2goIChwb3J0c0pzb24pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHBvcnRzSnNvbikge1xuICAgICAgICAgICAgICAgICAgICBwb3J0cyA9IHBvcnRzICsga2V5ICsnOicrcG9ydHNKc29uW2tleV0gKycgJyA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgcG9ydHMgPSBwb3J0cyArICc7JztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcG9ydHMgPSAgY29uZi5kYXRhLnBvcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnRlcmNlcHQucHVzaChhZGRyZXNzZXMpO1xuICAgICAgICAgICAgaW50ZXJjZXB0LnB1c2gocG9ydHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBpbnRlcmNlcHQ7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBmaW5kRW5kcG9pbnQoZW5kcG9pbnRJZCwgZW5kcG9pbnRzKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnRJZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZVBvaW50ID0gZW5kcG9pbnRzLmZpbmQoIGZ1bmN0aW9uIChlcikge1xuICAgICAgICAgICAgICAgICByZXR1cm4gZXIuaWQgPT09IGVuZHBvaW50SWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGVQb2ludCkge1xuICAgICAgICAgICAgICAgIG5vZGUgPSBjcmVhdGVFbmRwb2ludChlUG9pbnQpO1xuICAgICAgICAgICAgICAgIG5vZGUudHlwZSA9ICdIb3N0ZWQgSWRlbnRpdHknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0gLy8gZW5kIG9mIGZpbmRFbmRwb2ludFxuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUVuZHBvaW50KGVQb2ludCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBOb2RlKCk7XG4gICAgICAgICAgICBub2RlLmlkID0gZVBvaW50LmlkO1xuICAgICAgICAgICAgbm9kZS5uYW1lID0gZVBvaW50Lm5hbWU7XG4gICAgICAgICAgICBub2RlLnR5cGUgPSAnSWRlbnRpdHknO1xuICAgICAgICAgICAgaWYgKF8uaGFzKGVQb2ludCwnZWRnZVJvdXRlckNvbm5lY3Rpb25TdGF0dXMnKSApIHtcbiAgICAgICAgICAgICAgbm9kZS5yb3V0ZXJDb25uZWN0aW9uID0gZVBvaW50LmVkZ2VSb3V0ZXJDb25uZWN0aW9uU3RhdHVzID09PSAnb2ZmbGluZScgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICAgIG5vZGUuYXBpU2Vzc2lvbiA9ICBub2RlLnJvdXRlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBub2RlLnJvdXRlckNvbm5lY3Rpb24gPSBlUG9pbnRbJ2hhc0VkZ2VSb3V0ZXJDb25uZWN0aW9uJ10gPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgICBub2RlLmFwaVNlc3Npb24gPSAgZVBvaW50WydoYXNBcGlTZXNzaW9uJ10gPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIG5vZGUub3MgPSBlUG9pbnQuZW52SW5mbz8gZVBvaW50LmVudkluZm8ub3MgOiAnJztcbiAgICAgICAgICAgICBub2RlLm1mYUVuYWJsZWQgPSBlUG9pbnQuaXNNZmFFbmFibGVkO1xuICAgICAgICAgICAgIG5vZGUuc3RhdHVzID0gZVBvaW50LmVudkluZm8gJiYgZVBvaW50LmVudkluZm8ub3MgIT09IG51bGwgPyAnUmVnaXN0ZXJlZCcgOiAnVW4tUmVnaXN0ZXJlZCc7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUVSTm9kZShlcm91dGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlT2IgPSBuZXcgTm9kZSgpO1xuICAgICAgICAgICAgbm9kZU9iLmlkID0gZXJvdXRlci5pZDtcbiAgICAgICAgICAgIG5vZGVPYi5uYW1lID0gZXJvdXRlci5uYW1lO1xuICAgICAgICAgICAgbm9kZU9iLnN0YXR1cyA9IGVyb3V0ZXIuaXNWZXJpZmllZCA9PT0gdHJ1ZT8gJ1JlZ2lzdGVyZWQnOidVbi1SZWdpc3RlcmVkJztcbiAgICAgICAgICAgIG5vZGVPYi5vbmxpbmUgPSBlcm91dGVyLmlzT25saW5lID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50dW5uZWxlckVuYWJsZWQgPSBlcm91dGVyLmlzVHVubmVsZXJFbmFibGVkID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50eXBlID0gJ0VkZ2VSb3V0ZXInO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVPYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmRFZGdlUm91dGVyRm9ySWQocm91dGVySWQsIGVkZ2Vyb3V0ZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBlcm91dGVyID0gZWRnZXJvdXRlcnMuZmluZCgoZXIpID0+IHtcbiAgICAgICAgICAgICAgLy8gIGlmIChlci5pZCA9PT0gcm91dGVySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyLmlkID09PSByb3V0ZXJJZDtcbiAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoZXJvdXRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVFUk5vZGUoZXJvdXRlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IC8vIGVuZCBvZiBmaW5kRWRnZVJvdXRlckZvcklkXG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGUsIHJvdXRlck5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKHJvdXRlck5vZGUuc3RhdHVzID09PSAnRVJST1InKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnN0YXR1cyA9PT0gJ1VuLVJlZ2lzdGVyZWQnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5hcGlTZXNzaW9uID09PSAnTm8nKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGVyTm9kZS5vbmxpbmUgPT09ICdZZXMnICYmIGVuZHBvaW50Tm9kZS5yb3V0ZXJDb25uZWN0aW9uID09PSAnWWVzJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxpbmtzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNlcnZpY2VUb0VuZHBvaW50TGlua1N0YXRlKGVuZHBvaW50Tm9kZSwgc2VydmljZU5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50Tm9kZS5zdGF0dXMgPT09ICdVbi1SZWdpc3RlcmVkJyB8fCBzZXJ2aWNlTm9kZS5pbnRlcmNlcHQuaW5jbHVkZXMoJ05vJykpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLmFwaVNlc3Npb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuc3RhdHVzID09PSAnUmVnaXN0ZXJlZCcgJiYgZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsaW5rc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRXZWlnaHQobGlua1N0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbGlua1N0YXRlID09PSAtMSA/IDUgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb290T2I7XG4gICAgfSAvLyBlbmQgb2YgTkVXIEZ1bmN0aW9uXG5cbn1cblxuIGNsYXNzIFJvb3RKc29uIHtcbiAgICAgICAgbm9kZXM6YW55ID0gW107XG4gICAgICAgIGxpbmtzOmFueSA9IFtdO1xuICAgICAgICBhZGROb2RlIChuZXdPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE9iaiA9IHRoaXMubm9kZXMuZmluZCggZnVuY3Rpb24gKG5kKSB7XG4gICAgICAgICAgICAgICAgICAgLy8gaWYgKG5kLmlkID09PSBuZXdPYmplY3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gbmQgPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmQuaWQgPT09IG5ld09iamVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghZm91bmRPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5ld09iamVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXBsYWNlTm9kZSAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZHggPSB0aGlzLm5vZGVzLmZpbmRJbmRleChuZCA9PiBuZC5pZCA9PT0gbmV3T2JqZWN0LmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5keCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgIHRoaXMubm9kZXNbaW5keF0gPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgIGFkZExpbmsgKG5ld09iamVjdCkge1xuICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2gobmV3T2JqZWN0KTtcbiAgICAgICAgfTtcblxuIH1cbiJdfQ==
@@ -42,6 +42,7 @@ class IdentitiesPageService extends ListPageServiceClass {
42
42
  this.csvDownloadService = csvDownloadService;
43
43
  this.growlerService = growlerService;
44
44
  this.dialogForm = dialogForm;
45
+ this.extService = extService;
45
46
  this.router = router;
46
47
  this.paging = this.DEFAULT_PAGING;
47
48
  this.modalType = 'identities';
@@ -173,7 +174,7 @@ class IdentitiesPageService extends ListPageServiceClass {
173
174
  { label: 'Non-Admins', value: false },
174
175
  ]
175
176
  };
176
- return [
177
+ let tableColumns = [
177
178
  {
178
179
  colId: 'name',
179
180
  field: 'name',
@@ -291,6 +292,10 @@ class IdentitiesPageService extends ListPageServiceClass {
291
292
  },
292
293
  this.ID_COLUMN_DEF
293
294
  ];
295
+ if (this.extService.processTableColumns) {
296
+ tableColumns = this.extService.processTableColumns(tableColumns);
297
+ }
298
+ return tableColumns;
294
299
  }
295
300
  getData(filters, sort, page) {
296
301
  // we can customize filters or sorting here before moving on...
@@ -491,4 +496,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
491
496
  type: Inject,
492
497
  args: [IDENTITY_EXTENSION_SERVICE]
493
498
  }] }, { type: i5.Router }]; } });
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdGllcy1wYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQVksT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzlCLE1BQU0sOEZBQThGLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFJL0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDM0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBSXBHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRTNHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7QUFFakgsTUFHYSxxQkFBc0IsU0FBUSxvQkFBb0I7SUFnRDNELFlBQzhCLFFBQThCLEVBQ3hE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QUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7K0dBdmRRLHFCQUFxQixrQkFpRGxCLGdCQUFnQixtREFFaEIsaUJBQWlCLHNHQUlqQiwwQkFBMEI7bUhBdkQ3QixxQkFBcUIsY0FGbEIsTUFBTTs7U0FFVCxxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWtEUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFJeEIsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgQ29tcG9uZW50LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge2Nsb25lRGVlcCwgaXNFbXB0eX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZSwgRmlsdGVyT2JqfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0xpc3RQYWdlU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2xpc3QtcGFnZS1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge1xuICAgIFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudFxufSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9jb2x1bW4taGVhZGVycy90YWJsZS1jb2x1bW4tZGVmYXVsdC90YWJsZS1jb2x1bW4tZGVmYXVsdC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q2FsbGJhY2tSZXN1bHRzfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1mb3JtL2xpc3QtcGFnZS1mb3JtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtDc3ZEb3dubG9hZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jc3YtZG93bmxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHt1bnNldH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtJVG9vbHRpcEFuZ3VsYXJDb21wfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XG5pbXBvcnQge0lUb29sdGlwUGFyYW1zfSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcbmltcG9ydCB7T1NUb29sdGlwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS90b29sdGlwcy9vcy10b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTREtUb29sdGlwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS90b29sdGlwcy9zZGstdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1Jlc2V0RW5yb2xsbWVudENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL3Jlc2V0LWVucm9sbG1lbnQvcmVzZXQtZW5yb2xsbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Mtc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2lkZW50aXR5L2lkZW50aXR5LWZvcm0uc2VydmljZVwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7VGFibGVDZWxsTmFtZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnRcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0aWVzUGFnZVNlcnZpY2UgZXh0ZW5kcyBMaXN0UGFnZVNlcnZpY2VDbGFzcyB7XG5cbiAgICBwcml2YXRlIHBhZ2luZyA9IHRoaXMuREVGQVVMVF9QQUdJTkc7XG4gICAgcHVibGljIG1vZGFsVHlwZSA9ICdpZGVudGl0aWVzJztcblxuICAgIG92ZXJyaWRlIENTVl9DT0xVTU5TID0gW1xuICAgICAgICB7bGFiZWw6ICdOYW1lJywgcGF0aDogJ25hbWUnfSxcbiAgICAgICAge2xhYmVsOiAnUm9sZXMnLCBwYXRoOiAncm9sZUF0dHJpYnV0ZXMnfSxcbiAgICAgICAge2xhYmVsOiAnT25saW5lJywgcGF0aDogJ2hhc0FwaVNlc3Npb24nfSxcbiAgICAgICAge2xhYmVsOiAnRWRnZSBSb3V0ZXIgQ29ubmVjdGVkJywgcGF0aDogJ2hhc0VkZ2VSb3V0ZXJDb25uZWN0aW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ09TJywgcGF0aDogJ2VudkluZm8ub3MnfSxcbiAgICAgICAge2xhYmVsOiAnT1MgVmVyc2lvbicsIHBhdGg6ICdlbnZJbmZvLm9zVmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdTREsnLCBwYXRoOiAnc2RrSW5mby52ZXJzaW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ0FwcCBWZXJzaW9uJywgcGF0aDogJ3Nka0luZm8uYXBwVmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdUeXBlJywgcGF0aDogJ3R5cGVJZCd9LFxuICAgICAgICB7bGFiZWw6ICdJcyBBZG1pbicsIHBhdGg6ICdpc0FkbWluJ30sXG4gICAgICAgIHtsYWJlbDogJ0F1dGggUG9saWN5JywgcGF0aDogJ2F1dGhQb2xpY3kubmFtZSd9LFxuICAgICAgICB7bGFiZWw6ICdBdXRoIFBvbGljeSBJRCcsIHBhdGg6ICdhdXRoUG9saWN5LmlkJ30sXG4gICAgICAgIHtsYWJlbDogJ01GQSBFbmFibGVkJywgcGF0aDogJ2lzTWZhRW5hYmxlZCd9LFxuICAgICAgICB7bGFiZWw6ICdDcmVhdGVkIEF0JywgcGF0aDogJ2NyZWF0ZWRBdCd9LFxuICAgICAgICB7bGFiZWw6ICdJRCcsIHBhdGg6ICdpZCd9LFxuICAgIF07XG5cbiAgICBzZWxlY3RlZElkZW50aXR5OiBhbnkgPSBuZXcgSWRlbnRpdHkoKTtcbiAgICBjb2x1bW5GaWx0ZXJzOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBvczogJycsXG4gICAgICAgIGNyZWF0ZWRBdDogJycsXG4gICAgfTtcblxuICAgIG92ZXJyaWRlIG1lbnVJdGVtcyA9IFtcbiAgICAgICAge25hbWU6ICdFZGl0JywgYWN0aW9uOiAndXBkYXRlJ30sXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgSldUJywgYWN0aW9uOiAnZG93bmxvYWQtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1ZpZXcgUVInLCBhY3Rpb246ICdxci1jb2RlJ30sXG4gICAgICAgIHtuYW1lOiAnVmlzdWFsaXplcicsIGFjdGlvbjogJ2lkZW50aXR5LXNlcnZpY2UtcGF0aCd9LFxuICAgICAgICB7bmFtZTogJ1Jlc2V0IEVucm9sbG1lbnQnLCBhY3Rpb246ICdyZXNldC1lbnJvbGxtZW50J30sXG4gICAgICAgIHtuYW1lOiAnUmVpc3N1ZSBFbnJvbGxtZW50JywgYWN0aW9uOiAncmVpc3N1ZS1lbnJvbGxtZW50J30sXG4gICAgICAgIHtuYW1lOiAnUmVzZXQgTUZBJywgYWN0aW9uOiAncmVzZXQtbWZhJ30sXG4gICAgICAgIHtuYW1lOiAnT3ZlcnJpZGUnLCBhY3Rpb246ICdvdmVycmlkZSd9LFxuICAgICAgICB7bmFtZTogJ0RlbGV0ZScsIGFjdGlvbjogJ2RlbGV0ZSd9LFxuICAgIF07XG5cbiAgICBvdmVycmlkZSB0YWJsZUhlYWRlckFjdGlvbnMgPSBbXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgQWxsJywgYWN0aW9uOiAnZG93bmxvYWQtYWxsJ30sXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgU2VsZWN0ZWQnLCBhY3Rpb246ICdkb3dubG9hZC1zZWxlY3RlZCd9LFxuICAgIF1cblxuICAgIHJlc291cmNlVHlwZSA9ICdpZGVudGl0aWVzJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlQ2xhc3MsXG4gICAgICAgIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgY3N2RG93bmxvYWRTZXJ2aWNlOiBDc3ZEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ0Zvcm06IE1hdERpYWxvZyxcbiAgICAgICAgQEluamVjdChJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNldHRpbmdzLCBmaWx0ZXJTZXJ2aWNlLCBjc3ZEb3dubG9hZFNlcnZpY2UsIGV4dFNlcnZpY2UsIHJvdXRlcik7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUgPSAoZm9ybURhdGEpOiBQcm9taXNlPENhbGxiYWNrUmVzdWx0cz4gPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcGFzc2VkOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaW5pdFRhYmxlQ29sdW1ucygpOiBhbnkge1xuICAgICAgICB0aGlzLmluaXRNZW51QWN0aW9ucygpO1xuXG4gICAgICAgIGNvbnN0IG5hbWVSZW5kZXJlciA9IChyb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cIi4vaWRlbnRpdGllcy8ke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNlbGwtbmFtZS1yZW5kZXJlclwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUgJHtyb3c/LmRhdGE/Lmhhc0FwaVNlc3Npb259XCIgdGl0bGU9XCJBcGkgU2Vzc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSAke3Jvdz8uZGF0YT8uaGFzRWRnZVJvdXRlckNvbm5lY3Rpb259XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ke3Jvdz8uZGF0YT8ubmFtZX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9zUmVuZGVyZXIgPSAocm93KSA9PiB7XG4gICAgICAgICAgICBsZXQgb3MgPSBcIm90aGVyXCI7XG4gICAgICAgICAgICBsZXQgb3NEZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24mJnJvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndpbmRvd3NcIik+PTApIG9zID0gXCJ3aW5kb3dzXCI7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImRhcndpblwiKT49MCkgb3MgPSBcImFwcGxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwibGludXhcIik+PTApIG9zID0gXCJsaW51eFwiO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImFuZHJvaWRcIik+PTApIG9zID0gXCJhbmRyb2lkXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid2luZG93c1wiKT49MCkgb3MgPSBcIndpbmRvd3NcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MpIG9zRGV0YWlscyArPSBcIk9TOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/LmFyY2gpIG9zRGV0YWlscyArPSBcIiYjMTA7QXJjaDogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5hcmNoO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZSkgb3NEZXRhaWxzICs9IFwiJiMxMDtSZWxlYXNlOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZTtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24pIG9zRGV0YWlscyArPSBcIiYjMTA7VmVyc2lvbjogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIHN0eWxlPVwib3ZlcmZsb3c6IHVuc2V0O1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3MgJHtvc31cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNka1JlbmRlcmVyID0gKHJvdykgPT4ge1xuICAgICAgICAgICAgbGV0IHNkayA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgdmVyc2lvbiA9IFwiLVwiO1xuICAgICAgICAgICAgY29uc3Qgc2RrSW5mbyA9IHJvdz8uZGF0YT8uc2RrSW5mbztcbiAgICAgICAgICAgIGlmIChzZGtJbmZvKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnZlcnNpb24pIHZlcnNpb24gKz0gc2RrSW5mbz8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwSWQpIHNkayArPSBzZGtJbmZvPy5hcHBJZDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwVmVyc2lvbikgc2RrICs9IHNka0luZm8/LmFwcFZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnR5cGUpIHNkayArPSBzZGtJbmZvPy50eXBlO1xuICAgICAgICAgICAgICAgIGlmIChzZGtJbmZvPy50eXBlKSBzZGsgKz0gXCImIzEwO1wiK3Nka0luZm8/LmJyYW5jaDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8ucmV2aXNpb24pIHNkayArPSBcIiAtIFwiK3Nka0luZm8/LnJldmlzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCIgc3R5bGU9XCJvdmVyZmxvdzogdW5zZXQ7XCIgZGF0YS1iYWxsb29uLXBvcz1cInVwXCIgYXJpYS1sYWJlbD1cIiR7c2RrfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib25lbGluZVwiPiR7dmVyc2lvbn08L3NwYW4+XG4gICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbkZpbHRlcnM7XG5cbiAgICAgICAgY29uc3Qgb3NQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnQ09NQk8nLFxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczogW1xuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJycsIGljb246ICdlbXB0eScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQXBwbGUnLCB2YWx1ZTogJ2RhcndpbicsIGljb246ICdhcHBsZScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnV2luZG93cycsIHZhbHVlOiAnbWluZ3cnLCBpY29uOiAnd2luZG93cycgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0xpbnV4JywgdmFsdWU6ICdsaW51eCcsIGljb246ICdsaW51eCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FuZHJvaWQnLCB2YWx1ZTogJ2FuZHJvaWQnLCBpY29uOiAnYW5kcm9pZCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ090aGVyICh0ZXh0IHNlYXJjaCknLCB2YWx1ZTogJycsIGljb246ICdvdGhlcicsIHVzZVRleHRJbnB1dDogdHJ1ZSAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb2x1bW5GaWx0ZXJzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzQWRtaW5IZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnU0VMRUNUJyxcbiAgICAgICAgICAgIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gICAgICAgICAgICBmaWx0ZXJPcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FsbCcsIHZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBZG1pbnMnLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdOb24tQWRtaW5zJywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ05hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBUYWJsZUNlbGxOYW1lQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBwYXRoUm9vdDogdGhpcy5iYXNlUGF0aCwgc2hvd0lkZW50aXR5SWNvbnM6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVkaXRGb3JtKGRhdGE/LmRhdGE/LmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNvcnREaXI6ICdhc2MnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAzMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdSb2xlcycsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FZGl0Rm9ybShkYXRhPy5kYXRhPy5pZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLnJvbGVzUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ29zJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ29zJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnTy9TJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogb3NSZW5kZXJlcixcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB0b29sdGlwQ29tcG9uZW50OiBPU1Rvb2x0aXBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiAnZW52SW5mbycsXG4gICAgICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudFBhcmFtczogeyBjb2xvcjogJyNlY2VjZWMnIH0sXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdzZGsnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc2RrJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnU0RLJyxcbiAgICAgICAgICAgICAgICB0b29sdGlwRmllbGQ6ICdzZGtJbmZvJyxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHNka1JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQ6IFNES1Rvb2x0aXBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTI1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAndHlwZS5uYW1lJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnVHlwZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdpc0FkbWluJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lzQWRtaW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdJcyBBZG1pbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiBpc0FkbWluSGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnQ3JlYXRlZCBBdCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHRoaXMuY3JlYXRlZEF0Rm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAndG9rZW4nLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAndG9rZW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdUb2tlbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiAnY2VsbFRva2VuQ29tcG9uZW50JyxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2lzTWZhRW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc01mYUVuYWJsZWQnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdNRkEnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLklEX0NPTFVNTl9ERUZcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXREYXRhKGZpbHRlcnM/OiBGaWx0ZXJPYmpbXSwgc29ydD86IGFueSwgcGFnZT86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIHdlIGNhbiBjdXN0b21pemUgZmlsdGVycyBvciBzb3J0aW5nIGhlcmUgYmVmb3JlIG1vdmluZyBvbi4uLlxuICAgICAgICB0aGlzLnBhZ2luZy5wYWdlID0gcGFnZSB8fCB0aGlzLnBhZ2luZy5wYWdlO1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VGFibGVEYXRhKCdpZGVudGl0aWVzJywgdGhpcy5wYWdpbmcsIGZpbHRlcnMsIHNvcnQpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEocmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhKHJlc3VsdHM6IGFueSkge1xuICAgICAgICBpZiAoIWlzRW1wdHkocmVzdWx0cz8uZGF0YSkpIHtcbiAgICAgICAgICAgIC8vcHJlLXByb2Nlc3MgZGF0YSBiZWZvcmUgcmVuZGVyaW5nXG4gICAgICAgICAgICByZXN1bHRzLmRhdGEgPSB0aGlzLmFkZEFjdGlvbnNQZXJSb3cocmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRBY3Rpb25zUGVyUm93KHJlc3VsdHM6IGFueSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuZGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QgPSBbJ3VwZGF0ZScsICdvdmVycmlkZScsICdkZWxldGUnLCAnaWRlbnRpdHktc2VydmljZS1wYXRoJ107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Vucm9sbWVudFRva2VuKHJvdykpIHtcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdyZWlzc3VlLWVucm9sbG1lbnQnKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5yb2xsbWVudEV4cGlyZWQocm93KSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdkb3dubG9hZC1lbnJvbGxtZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ3FyLWNvZGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQXV0aGVudGljYXRvcihyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgncmVzZXQtZW5yb2xsbWVudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJvdy5pc01mYUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdyZXNldC1tZmEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkTGlzdEl0ZW1FeHRlbnNpb25BY3Rpb25zKHJvdyk7XG4gICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYXNBdXRoZW50aWNhdG9yKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmF1dGhlbnRpY2F0b3JzPy5jZXJ0Py5pZCB8fCBpdGVtLmF1dGhlbnRpY2F0b3JzPy51cGRiPy5pZDtcbiAgICB9XG5cbiAgICBoYXNFbnJvbG1lbnRUb2tlbihpdGVtKSB7XG4gICAgICAgIGxldCB0b2tlbjtcbiAgICAgICAgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uand0KSB7XG4gICAgICAgICAgICB0b2tlbiA9IGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uand0O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3QpIHtcbiAgICAgICAgICAgIHRva2VuID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5qd3QpIHtcbiAgICAgICAgICAgIHRva2VuID0gaXRlbT8uZW5yb2xsbWVudD8udXBkYj8uand0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG5cbiAgICBlbnJvbGxtZW50RXhwaXJlZChpdGVtKSB7XG4gICAgICAgIGxldCBleHBpcmF0aW9uO1xuICAgICAgICBpZiAoaXRlbT8uZW5yb2xsbWVudD8ub3R0Py5qd3QpIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24gPSBpdGVtPy5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py5vdHRjYT8uand0KSB7XG4gICAgICAgICAgICBleHBpcmF0aW9uID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5qd3QpIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24gPSBpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5leHBpcmVzQXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbWVudChleHBpcmF0aW9uKS5pc0JlZm9yZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJZGVudGl0aWVzUm9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnaWRlbnRpdHktcm9sZS1hdHRyaWJ1dGVzJywge30sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRNRkEoaWRlbnRpdHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UucmVzZXRNRkEoaWRlbnRpdHkuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgYE1GQSBSZXNldGAsXG4gICAgICAgICAgICAgICAgYE1GQSB3YXMgc3VjY2Vzc2Z1bGx5IHJlc2V0IGZvciBpZGVudGl0eTogJHtpZGVudGl0eS5uYW1lfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy56aXRpU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIFJlc2V0IE1GQWAsXG4gICAgICAgICAgICAgICAgYEF0dGVtcHQgdG8gcmVzZXQgTUZBIGZhaWxlZDogJHttZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SldUKGlkZW50aXR5OiBhbnkpIHtcbiAgICAgICAgbGV0IHFyQ29kZTtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uand0O1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5qd3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHFyQ29kZTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbihpZGVudGl0eTogYW55KSB7XG4gICAgICAgIGxldCBxckNvZGU7XG4gICAgICAgIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py50b2tlbikpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LnRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8udG9rZW4pKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LnRva2VuO1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LnRva2VuKSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LnRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxckNvZGU7XG4gICAgfVxuXG4gICAgZG93bmxvYWRKV1Qoand0LCBuYW1lKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6YXBwbGljYXRpb24veml0aS1qd3Q7Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KGp3dCkpO1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBuYW1lK1wiLmp3dFwiKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29weVRva2VuKHRva2VuKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRva2VuKTtcbiAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgYFRleHQgQ29waWVkYCxcbiAgICAgICAgICAgIGBSZWdpc3RyYXRpb24gdG9rZW4gY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgfVxuXG4gICAgcmVzZXRKV1QoaWRlbnRpdHkpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0Zvcm0ub3BlbihSZXNldEVucm9sbG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Jlc2V0J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWY7XG4gICAgfVxuXG4gICAgcmVpc3N1ZUpXVChpZGVudGl0eSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nRm9ybS5vcGVuKFJlc2V0RW5yb2xsbWVudENvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eSxcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVpc3N1ZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmO1xuICAgIH1cblxuICAgIGdldEVucm9sbG1lbnRFeHBpcmF0aW9uKGlkZW50aXR5OiBhbnkpIHtcbiAgICAgICAgbGV0IGV4cGlyZXNBdDtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uZXhwaXJlc0F0O1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5leHBpcmVzQXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cGlyZXNBdDtcbiAgICB9XG5cbiAgICByZXNldEVucm9sbG1lbnQoaWRlbnRpdHk6IGFueSwgZGF0ZTogYW55KSB7XG4gICAgICAgIGxldCBpZCA9IGlkZW50aXR5Py5hdXRoZW50aWNhdG9ycz8uY2VydD8uaWQ7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQpKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0LmlkO1xuICAgICAgICAgICAgfSBlbHNlIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Lm90dGNhKSkge1xuICAgICAgICAgICAgICAgIGlkID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhLmlkO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudC51cGRiKSkge1xuICAgICAgICAgICAgICAgIGlkID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGIuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVzZXRFbnJvbGxtZW50KGlkLCBkYXRlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGBFbnJvbGxtZW50IFJlc2V0YCxcbiAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5IHJlaXNzdWVkIGVucm9sbG1lbnQgdG9rZW5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgUmVzZXQgRmFpbGVkYCxcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHJlaXNzdWVzIGVucm9sbG1lbnQgdG9rZW5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuVXBkYXRlKGl0ZW1JZD86IGFueSkge1xuICAgICAgICB0aGlzLm1vZGFsVHlwZSA9ICdpZGVudGl0eSc7XG4gICAgICAgIHRoaXMuc2lkZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5PdmVycmlkZXNNb2RhbChpdGVtKSB7XG4gICAgICAgIHRoaXMubW9kYWxUeXBlID0gJ292ZXJyaWRlcyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eSA9IGl0ZW07XG4gICAgICAgIHRoaXMuc2lkZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgfVxufVxuIl19
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdGllcy1wYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQVksT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzlCLE1BQU0sOEZBQThGLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFJL0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDM0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBSXBHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRTNHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7QUFFakgsTUFHYSxxQkFBc0IsU0FBUSxvQkFBb0I7SUFnRDNELFlBQzhCLFFBQThCLEVBQ3hE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LENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQVk7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDOytHQTNkUSxxQkFBcUIsa0JBaURsQixnQkFBZ0IsbURBRWhCLGlCQUFpQixzR0FJakIsMEJBQTBCO21IQXZEN0IscUJBQXFCLGNBRmxCLE1BQU07O1NBRVQscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFrRFEsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBSXhCLE1BQU07MkJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIENvbXBvbmVudCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtjbG9uZURlZXAsIGlzRW1wdHl9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0RhdGFUYWJsZUZpbHRlclNlcnZpY2UsIEZpbHRlck9ian0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtMaXN0UGFnZVNlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NoYXJlZC9saXN0LXBhZ2Utc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnRcbn0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NhbGxiYWNrUmVzdWx0c30gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2xpc3QtcGFnZS1mZWF0dXJlcy9saXN0LXBhZ2UtZm9ybS9saXN0LXBhZ2UtZm9ybS5jb21wb25lbnRcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3N2RG93bmxvYWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY3N2LWRvd25sb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7SWRlbnRpdHl9IGZyb20gXCIuLi8uLi9tb2RlbHMvaWRlbnRpdHlcIjtcbmltcG9ydCB7dW5zZXR9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7SVRvb2x0aXBBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xuaW1wb3J0IHtJVG9vbHRpcFBhcmFtc30gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQge09TVG9vbHRpcENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvdG9vbHRpcHMvb3MtdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7U0RLVG9vbHRpcENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvdG9vbHRpcHMvc2RrLXRvb2x0aXAuY29tcG9uZW50XCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtSZXNldEVucm9sbG1lbnRDb21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9yZXNldC1lbnJvbGxtZW50L3Jlc2V0LWVucm9sbG1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7SURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9pZGVudGl0eS9pZGVudGl0eS1mb3JtLnNlcnZpY2VcIjtcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1RhYmxlQ2VsbE5hbWVDb21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdGllc1BhZ2VTZXJ2aWNlIGV4dGVuZHMgTGlzdFBhZ2VTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcHJpdmF0ZSBwYWdpbmcgPSB0aGlzLkRFRkFVTFRfUEFHSU5HO1xuICAgIHB1YmxpYyBtb2RhbFR5cGUgPSAnaWRlbnRpdGllcyc7XG5cbiAgICBvdmVycmlkZSBDU1ZfQ09MVU1OUyA9IFtcbiAgICAgICAge2xhYmVsOiAnTmFtZScsIHBhdGg6ICduYW1lJ30sXG4gICAgICAgIHtsYWJlbDogJ1JvbGVzJywgcGF0aDogJ3JvbGVBdHRyaWJ1dGVzJ30sXG4gICAgICAgIHtsYWJlbDogJ09ubGluZScsIHBhdGg6ICdoYXNBcGlTZXNzaW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ0VkZ2UgUm91dGVyIENvbm5lY3RlZCcsIHBhdGg6ICdoYXNFZGdlUm91dGVyQ29ubmVjdGlvbid9LFxuICAgICAgICB7bGFiZWw6ICdPUycsIHBhdGg6ICdlbnZJbmZvLm9zJ30sXG4gICAgICAgIHtsYWJlbDogJ09TIFZlcnNpb24nLCBwYXRoOiAnZW52SW5mby5vc1ZlcnNpb24nfSxcbiAgICAgICAge2xhYmVsOiAnU0RLJywgcGF0aDogJ3Nka0luZm8udmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdBcHAgVmVyc2lvbicsIHBhdGg6ICdzZGtJbmZvLmFwcFZlcnNpb24nfSxcbiAgICAgICAge2xhYmVsOiAnVHlwZScsIHBhdGg6ICd0eXBlSWQnfSxcbiAgICAgICAge2xhYmVsOiAnSXMgQWRtaW4nLCBwYXRoOiAnaXNBZG1pbid9LFxuICAgICAgICB7bGFiZWw6ICdBdXRoIFBvbGljeScsIHBhdGg6ICdhdXRoUG9saWN5Lm5hbWUnfSxcbiAgICAgICAge2xhYmVsOiAnQXV0aCBQb2xpY3kgSUQnLCBwYXRoOiAnYXV0aFBvbGljeS5pZCd9LFxuICAgICAgICB7bGFiZWw6ICdNRkEgRW5hYmxlZCcsIHBhdGg6ICdpc01mYUVuYWJsZWQnfSxcbiAgICAgICAge2xhYmVsOiAnQ3JlYXRlZCBBdCcsIHBhdGg6ICdjcmVhdGVkQXQnfSxcbiAgICAgICAge2xhYmVsOiAnSUQnLCBwYXRoOiAnaWQnfSxcbiAgICBdO1xuXG4gICAgc2VsZWN0ZWRJZGVudGl0eTogYW55ID0gbmV3IElkZW50aXR5KCk7XG4gICAgY29sdW1uRmlsdGVyczogYW55ID0ge1xuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgb3M6ICcnLFxuICAgICAgICBjcmVhdGVkQXQ6ICcnLFxuICAgIH07XG5cbiAgICBvdmVycmlkZSBtZW51SXRlbXMgPSBbXG4gICAgICAgIHtuYW1lOiAnRWRpdCcsIGFjdGlvbjogJ3VwZGF0ZSd9LFxuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIEpXVCcsIGFjdGlvbjogJ2Rvd25sb2FkLWVucm9sbG1lbnQnfSxcbiAgICAgICAge25hbWU6ICdWaWV3IFFSJywgYWN0aW9uOiAncXItY29kZSd9LFxuICAgICAgICB7bmFtZTogJ1Zpc3VhbGl6ZXInLCBhY3Rpb246ICdpZGVudGl0eS1zZXJ2aWNlLXBhdGgnfSxcbiAgICAgICAge25hbWU6ICdSZXNldCBFbnJvbGxtZW50JywgYWN0aW9uOiAncmVzZXQtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1JlaXNzdWUgRW5yb2xsbWVudCcsIGFjdGlvbjogJ3JlaXNzdWUtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1Jlc2V0IE1GQScsIGFjdGlvbjogJ3Jlc2V0LW1mYSd9LFxuICAgICAgICB7bmFtZTogJ092ZXJyaWRlJywgYWN0aW9uOiAnb3ZlcnJpZGUnfSxcbiAgICAgICAge25hbWU6ICdEZWxldGUnLCBhY3Rpb246ICdkZWxldGUnfSxcbiAgICBdO1xuXG4gICAgb3ZlcnJpZGUgdGFibGVIZWFkZXJBY3Rpb25zID0gW1xuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIEFsbCcsIGFjdGlvbjogJ2Rvd25sb2FkLWFsbCd9LFxuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIFNlbGVjdGVkJywgYWN0aW9uOiAnZG93bmxvYWQtc2VsZWN0ZWQnfSxcbiAgICBdXG5cbiAgICByZXNvdXJjZVR5cGUgPSAnaWRlbnRpdGllcyc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZUNsYXNzLFxuICAgICAgICBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIG92ZXJyaWRlIGNzdkRvd25sb2FkU2VydmljZTogQ3N2RG93bmxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dGb3JtOiBNYXREaWFsb2csXG4gICAgICAgIEBJbmplY3QoSURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UpIHByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNldHRpbmdzLCBmaWx0ZXJTZXJ2aWNlLCBjc3ZEb3dubG9hZFNlcnZpY2UsIGV4dFNlcnZpY2UsIHJvdXRlcik7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUgPSAoZm9ybURhdGEpOiBQcm9taXNlPENhbGxiYWNrUmVzdWx0cz4gPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcGFzc2VkOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaW5pdFRhYmxlQ29sdW1ucygpOiBhbnkge1xuICAgICAgICB0aGlzLmluaXRNZW51QWN0aW9ucygpO1xuXG4gICAgICAgIGNvbnN0IG5hbWVSZW5kZXJlciA9IChyb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cIi4vaWRlbnRpdGllcy8ke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNlbGwtbmFtZS1yZW5kZXJlclwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUgJHtyb3c/LmRhdGE/Lmhhc0FwaVNlc3Npb259XCIgdGl0bGU9XCJBcGkgU2Vzc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSAke3Jvdz8uZGF0YT8uaGFzRWRnZVJvdXRlckNvbm5lY3Rpb259XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ke3Jvdz8uZGF0YT8ubmFtZX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9zUmVuZGVyZXIgPSAocm93KSA9PiB7XG4gICAgICAgICAgICBsZXQgb3MgPSBcIm90aGVyXCI7XG4gICAgICAgICAgICBsZXQgb3NEZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24mJnJvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndpbmRvd3NcIik+PTApIG9zID0gXCJ3aW5kb3dzXCI7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImRhcndpblwiKT49MCkgb3MgPSBcImFwcGxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwibGludXhcIik+PTApIG9zID0gXCJsaW51eFwiO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImFuZHJvaWRcIik+PTApIG9zID0gXCJhbmRyb2lkXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid2luZG93c1wiKT49MCkgb3MgPSBcIndpbmRvd3NcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MpIG9zRGV0YWlscyArPSBcIk9TOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/LmFyY2gpIG9zRGV0YWlscyArPSBcIiYjMTA7QXJjaDogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5hcmNoO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZSkgb3NEZXRhaWxzICs9IFwiJiMxMDtSZWxlYXNlOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZTtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24pIG9zRGV0YWlscyArPSBcIiYjMTA7VmVyc2lvbjogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIHN0eWxlPVwib3ZlcmZsb3c6IHVuc2V0O1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3MgJHtvc31cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNka1JlbmRlcmVyID0gKHJvdykgPT4ge1xuICAgICAgICAgICAgbGV0IHNkayA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgdmVyc2lvbiA9IFwiLVwiO1xuICAgICAgICAgICAgY29uc3Qgc2RrSW5mbyA9IHJvdz8uZGF0YT8uc2RrSW5mbztcbiAgICAgICAgICAgIGlmIChzZGtJbmZvKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnZlcnNpb24pIHZlcnNpb24gKz0gc2RrSW5mbz8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwSWQpIHNkayArPSBzZGtJbmZvPy5hcHBJZDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwVmVyc2lvbikgc2RrICs9IHNka0luZm8/LmFwcFZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnR5cGUpIHNkayArPSBzZGtJbmZvPy50eXBlO1xuICAgICAgICAgICAgICAgIGlmIChzZGtJbmZvPy50eXBlKSBzZGsgKz0gXCImIzEwO1wiK3Nka0luZm8/LmJyYW5jaDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8ucmV2aXNpb24pIHNkayArPSBcIiAtIFwiK3Nka0luZm8/LnJldmlzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCIgc3R5bGU9XCJvdmVyZmxvdzogdW5zZXQ7XCIgZGF0YS1iYWxsb29uLXBvcz1cInVwXCIgYXJpYS1sYWJlbD1cIiR7c2RrfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib25lbGluZVwiPiR7dmVyc2lvbn08L3NwYW4+XG4gICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbkZpbHRlcnM7XG5cbiAgICAgICAgY29uc3Qgb3NQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnQ09NQk8nLFxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczogW1xuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJycsIGljb246ICdlbXB0eScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQXBwbGUnLCB2YWx1ZTogJ2RhcndpbicsIGljb246ICdhcHBsZScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnV2luZG93cycsIHZhbHVlOiAnbWluZ3cnLCBpY29uOiAnd2luZG93cycgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0xpbnV4JywgdmFsdWU6ICdsaW51eCcsIGljb246ICdsaW51eCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FuZHJvaWQnLCB2YWx1ZTogJ2FuZHJvaWQnLCBpY29uOiAnYW5kcm9pZCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ090aGVyICh0ZXh0IHNlYXJjaCknLCB2YWx1ZTogJycsIGljb246ICdvdGhlcicsIHVzZVRleHRJbnB1dDogdHJ1ZSAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb2x1bW5GaWx0ZXJzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzQWRtaW5IZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnU0VMRUNUJyxcbiAgICAgICAgICAgIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gICAgICAgICAgICBmaWx0ZXJPcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FsbCcsIHZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBZG1pbnMnLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdOb24tQWRtaW5zJywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHRhYmxlQ29sdW1ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ05hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBUYWJsZUNlbGxOYW1lQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBwYXRoUm9vdDogdGhpcy5iYXNlUGF0aCwgc2hvd0lkZW50aXR5SWNvbnM6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVkaXRGb3JtKGRhdGE/LmRhdGE/LmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNvcnREaXI6ICdhc2MnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAzMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdSb2xlcycsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FZGl0Rm9ybShkYXRhPy5kYXRhPy5pZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLnJvbGVzUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ29zJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ29zJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnTy9TJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogb3NSZW5kZXJlcixcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB0b29sdGlwQ29tcG9uZW50OiBPU1Rvb2x0aXBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiAnZW52SW5mbycsXG4gICAgICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudFBhcmFtczogeyBjb2xvcjogJyNlY2VjZWMnIH0sXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdzZGsnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc2RrJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnU0RLJyxcbiAgICAgICAgICAgICAgICB0b29sdGlwRmllbGQ6ICdzZGtJbmZvJyxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHNka1JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQ6IFNES1Rvb2x0aXBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTI1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAndHlwZS5uYW1lJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnVHlwZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdpc0FkbWluJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lzQWRtaW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdJcyBBZG1pbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiBpc0FkbWluSGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnQ3JlYXRlZCBBdCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHRoaXMuY3JlYXRlZEF0Rm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAndG9rZW4nLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAndG9rZW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdUb2tlbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiAnY2VsbFRva2VuQ29tcG9uZW50JyxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2lzTWZhRW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc01mYUVuYWJsZWQnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdNRkEnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLklEX0NPTFVNTl9ERUZcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHRoaXMuZXh0U2VydmljZS5wcm9jZXNzVGFibGVDb2x1bW5zKSB7XG4gICAgICAgICAgICB0YWJsZUNvbHVtbnMgPSB0aGlzLmV4dFNlcnZpY2UucHJvY2Vzc1RhYmxlQ29sdW1ucyh0YWJsZUNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWJsZUNvbHVtbnM7XG4gICAgfVxuXG4gICAgZ2V0RGF0YShmaWx0ZXJzPzogRmlsdGVyT2JqW10sIHNvcnQ/OiBhbnksIHBhZ2U/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICAvLyB3ZSBjYW4gY3VzdG9taXplIGZpbHRlcnMgb3Igc29ydGluZyBoZXJlIGJlZm9yZSBtb3Zpbmcgb24uLi5cbiAgICAgICAgdGhpcy5wYWdpbmcucGFnZSA9IHBhZ2UgfHwgdGhpcy5wYWdpbmcucGFnZTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFRhYmxlRGF0YSgnaWRlbnRpdGllcycsIHRoaXMucGFnaW5nLCBmaWx0ZXJzLCBzb3J0KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NEYXRhKHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YShyZXN1bHRzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KHJlc3VsdHM/LmRhdGEpKSB7XG4gICAgICAgICAgICAvL3ByZS1wcm9jZXNzIGRhdGEgYmVmb3JlIHJlbmRlcmluZ1xuICAgICAgICAgICAgcmVzdWx0cy5kYXRhID0gdGhpcy5hZGRBY3Rpb25zUGVyUm93KHJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQWN0aW9uc1BlclJvdyhyZXN1bHRzOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0ID0gWyd1cGRhdGUnLCAnb3ZlcnJpZGUnLCAnZGVsZXRlJywgJ2lkZW50aXR5LXNlcnZpY2UtcGF0aCddO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNFbnJvbG1lbnRUb2tlbihyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgncmVpc3N1ZS1lbnJvbGxtZW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVucm9sbG1lbnRFeHBpcmVkKHJvdykpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgnZG93bmxvYWQtZW5yb2xsbWVudCcpO1xuICAgICAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdxci1jb2RlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0F1dGhlbnRpY2F0b3Iocm93KSkge1xuICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ3Jlc2V0LWVucm9sbG1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyb3cuaXNNZmFFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgncmVzZXQtbWZhJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZExpc3RJdGVtRXh0ZW5zaW9uQWN0aW9ucyhyb3cpO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFzQXV0aGVudGljYXRvcihpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtPy5hdXRoZW50aWNhdG9ycz8uY2VydD8uaWQgfHwgaXRlbS5hdXRoZW50aWNhdG9ycz8udXBkYj8uaWQ7XG4gICAgfVxuXG4gICAgaGFzRW5yb2xtZW50VG9rZW4oaXRlbSkge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChpdGVtPy5lbnJvbGxtZW50Py5vdHQ/Lmp3dCkge1xuICAgICAgICAgICAgdG9rZW4gPSBpdGVtPy5lbnJvbGxtZW50Py5vdHQ/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py5vdHRjYT8uand0KSB7XG4gICAgICAgICAgICB0b2tlbiA9IGl0ZW0/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uZW5yb2xsbWVudD8udXBkYj8uand0KSB7XG4gICAgICAgICAgICB0b2tlbiA9IGl0ZW0/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuXG4gICAgZW5yb2xsbWVudEV4cGlyZWQoaXRlbSkge1xuICAgICAgICBsZXQgZXhwaXJhdGlvbjtcbiAgICAgICAgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uand0KSB7XG4gICAgICAgICAgICBleHBpcmF0aW9uID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Py5leHBpcmVzQXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dCkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbiA9IGl0ZW0/LmVucm9sbG1lbnQ/Lm90dGNhPy5leHBpcmVzQXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uZW5yb2xsbWVudD8udXBkYj8uand0KSB7XG4gICAgICAgICAgICBleHBpcmF0aW9uID0gaXRlbT8uZW5yb2xsbWVudD8udXBkYj8uZXhwaXJlc0F0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb21lbnQoZXhwaXJhdGlvbikuaXNCZWZvcmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRlbnRpdGllc1JvbGVBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2lkZW50aXR5LXJvbGUtYXR0cmlidXRlcycsIHt9LCBbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0TUZBKGlkZW50aXR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLnJlc2V0TUZBKGlkZW50aXR5LmlkKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGBNRkEgUmVzZXRgLFxuICAgICAgICAgICAgICAgIGBNRkEgd2FzIHN1Y2Nlc3NmdWxseSByZXNldCBmb3IgaWRlbnRpdHk6ICR7aWRlbnRpdHkubmFtZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMueml0aVNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBSZXNldCBNRkFgLFxuICAgICAgICAgICAgICAgIGBBdHRlbXB0IHRvIHJlc2V0IE1GQSBmYWlsZWQ6ICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEpXVChpZGVudGl0eTogYW55KSB7XG4gICAgICAgIGxldCBxckNvZGU7XG4gICAgICAgIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py5qd3QpKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py5qd3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3QpKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5qd3QpKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uand0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxckNvZGU7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW4oaWRlbnRpdHk6IGFueSkge1xuICAgICAgICBsZXQgcXJDb2RlO1xuICAgICAgICBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8udG9rZW4pKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py50b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LnRva2VuKSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy50b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy50b2tlbikpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy50b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXJDb2RlO1xuICAgIH1cblxuICAgIGRvd25sb2FkSldUKGp3dCwgbmFtZSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOmFwcGxpY2F0aW9uL3ppdGktand0O2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChqd3QpKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgbmFtZStcIi5qd3RcIik7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvcHlUb2tlbih0b2tlbikge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0b2tlbik7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgUmVnaXN0cmF0aW9uIHRva2VuIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIHJlc2V0SldUKGlkZW50aXR5KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dGb3JtLm9wZW4oUmVzZXRFbnJvbGxtZW50Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgaWRlbnRpdHk6IGlkZW50aXR5LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdyZXNldCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmO1xuICAgIH1cblxuICAgIHJlaXNzdWVKV1QoaWRlbnRpdHkpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0Zvcm0ub3BlbihSZXNldEVucm9sbG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgICAgICAgICAgICAgdHlwZTogJ3JlaXNzdWUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZjtcbiAgICB9XG5cbiAgICBnZXRFbnJvbGxtZW50RXhwaXJhdGlvbihpZGVudGl0eTogYW55KSB7XG4gICAgICAgIGxldCBleHBpcmVzQXQ7XG4gICAgICAgIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py5leHBpcmVzQXQpKSB7XG4gICAgICAgICAgICBleHBpcmVzQXQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py5leHBpcmVzQXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy5leHBpcmVzQXQpKSB7XG4gICAgICAgICAgICBleHBpcmVzQXQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5leHBpcmVzQXQpKSB7XG4gICAgICAgICAgICBleHBpcmVzQXQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uZXhwaXJlc0F0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHBpcmVzQXQ7XG4gICAgfVxuXG4gICAgcmVzZXRFbnJvbGxtZW50KGlkZW50aXR5OiBhbnksIGRhdGU6IGFueSkge1xuICAgICAgICBsZXQgaWQgPSBpZGVudGl0eT8uYXV0aGVudGljYXRvcnM/LmNlcnQ/LmlkO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICBpZighaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0KSkge1xuICAgICAgICAgICAgICAgIGlkID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dC5pZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZighaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudC5vdHRjYSkpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYS5pZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQudXBkYikpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiLmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlc2V0RW5yb2xsbWVudChpZCwgZGF0ZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBgRW5yb2xsbWVudCBSZXNldGAsXG4gICAgICAgICAgICAgICAgYFN1Y2Nlc3NmdWxseSByZWlzc3VlZCBlbnJvbGxtZW50IHRva2VuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYFJlc2V0IEZhaWxlZGAsXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byByZWlzc3VlcyBlbnJvbGxtZW50IHRva2VuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlblVwZGF0ZShpdGVtSWQ/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5tb2RhbFR5cGUgPSAnaWRlbnRpdHknO1xuICAgICAgICB0aGlzLnNpZGVNb2RhbE9wZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuT3ZlcnJpZGVzTW9kYWwoaXRlbSkge1xuICAgICAgICB0aGlzLm1vZGFsVHlwZSA9ICdvdmVycmlkZXMnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWRlbnRpdHkgPSBpdGVtO1xuICAgICAgICB0aGlzLnNpZGVNb2RhbE9wZW4gPSB0cnVlO1xuICAgIH1cbn1cbiJdfQ==