ng-easycommerce-v18 0.3.14-beta.5 → 0.3.14-beta.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.
package/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ # Version 0.3.14-beta.7
2
+ - Ajuste en stores-ec platform id privado.
3
+ # Version 0.3.14-beta.6
4
+ - Se modifica archivos para ssr y que no usen document
1
5
  # Version 0.3.14-beta.5
2
6
  - Pruebas para errores en console al desplegar + merge rama isVisible
3
7
  # Version 0.3.14-beta.3
@@ -91,7 +91,7 @@ export class CoreConstantsService {
91
91
  }
92
92
  }
93
93
  // Para SSR, intentar construir desde el document si está disponible
94
- if (this.document?.location) {
94
+ if (isPlatformBrowser(this.platformId) && this.document?.location) {
95
95
  return `${this.document.location.protocol}//${this.document.location.host}`;
96
96
  }
97
97
  // Intentar obtener desde environment
@@ -316,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
316
316
  providedIn: 'root'
317
317
  }]
318
318
  }], ctorParameters: () => [] });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdGFudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9jb25zdGFudHMvY29yZS5jb25zdGFudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFDakQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFFekIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNoQzs7T0FFRztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNsRDs7T0FFRztJQUNLLFVBQVUsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0M7O09BRUc7SUFDSyxRQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDOztPQUVHO0lBQ0ssV0FBVyxHQUFnQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUM1RDs7T0FFRztJQUNLLE1BQU0sQ0FBUztJQUV2QjtRQUNDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDckIsQ0FBQztJQUNGLENBQUM7SUFDRDs7T0FFRztJQUNJLGtCQUFrQixHQUFXLGFBQWEsQ0FBQztJQUNsRDs7T0FFRztJQUNJLGNBQWMsR0FBVyxXQUFXLENBQUM7SUFDNUM7O09BRUc7SUFD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TyxJQUFJLENBQUMseUJBQXlCLENBQUEsQ0FBQyxDQUFDO0lBRXZFOzs7Ozs7Ozs7Ozs7OztNQWNFO0lBQ00sK0JBQStCLEdBQW9DO1FBQzFFLElBQUksRUFBRSxPQUFPO1FBQ2IsSUFBSSxFQUFFLE9BQU87UUFDYixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLFlBQVksRUFBRSxJQUFJO0tBQ2xCLENBQUE7SUFFRCxrQ0FBa0MsR0FBRyxDQUFDLEtBQXNDLEVBQUUsRUFBRTtRQUMvRSxJQUFJLENBQUMsK0JBQStCLEdBQUc7WUFDdEMsR0FBRyxJQUFJLENBQUMsK0JBQStCO1lBQ3ZDLEdBQUcsS0FBSztTQUNSLENBQUE7SUFDRixDQUFDLENBQUE7SUFFRCxrQ0FBa0MsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUE7SUFFeEUsVUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxXQUFXLEdBQVksS0FBSyxDQUFDO3dHQTlVeEIsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGcEIsTUFBTTs7NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4vYXBpLmNvbnN0YW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ3VycmVuY3lDb25maWcsIGN1cnJlbmN5VHlwZSwgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCwgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRU5WSVJPTk1FTlRfVE9LRU4gfSBmcm9tICcuLi9wcm92aWRlcnMnO1xyXG4vKipcclxuICogU2VydmljaW8gcXVlIHByb3ZlZSBsYXMgY29uc3RhbnRlcyBuZWNlc2FyaWFzIHF1ZSBzZSB1dGlsaXphbiBwb3IgdG9kYSBsYSBhcGxpY2FjacOzbi5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgQ29yZUNvbnN0YW50c1NlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVDb25zdGFudHNTZXJ2aWNlIHtcclxuXHJcblx0cHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBxdWUgY29udGllbmUgbGFzIGNvbnN0YW50ZXMgdXNhZGFzIHBhcmEgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSlcclxuXHQvKipcclxuXHQgKiBQcm92ZWUgZWwgSUQgZGUgbGEgcGxhdGFmb3JtYSBlbiBkb25kZSBzZSBlc3RhIGVqZWN1dGFuZG8gZWwgY29kaWdvLCBlc3RvIHNpcnZlIHBhcmEgcG9kZXIgZGlmZXJlbmNpYXIgc2kgZXMgZGUgdW4gc2Vydmlkb3IgbyB1biBuYXZlZ2Fkb3Igd2ViLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG5cdC8qKlxyXG5cdCAqIERvY3VtZW50IHRva2VuIHBhcmEgYWNjZXNvIFNTUi1jb21wYXRpYmxlIGFsIGRvY3VtZW50b1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKVxyXG5cdC8qKlxyXG5cdCAqIENvbnRpZW5lIGxvcyBkYXRvcyBwcm92aXN0byBwb3IgZWwgZnJvbnRlbmQgZW4gZWwgYXJjaGl2byBlbnZpcm9ubWVudC50c1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UX1RPS0VOKVxyXG5cdC8qKlxyXG5cdCAqIEd1YXJkYSBsYSB2YXJpYWJsZSB3aW5kb3cgZGVsIHdlYiBicm93c2VyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgd2luZG93PzpXaW5kb3c7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuXHRcdFx0dGhpcy53aW5kb3cgPSB3aW5kb3dcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogUGF0aCB1c2FkbyBlbiBsYXMgY29sZWNjaW9uZXMgZGUgcHJvZHVjdG9zLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBQUk9EVUNUX0xJU1RfUk9VVEU6IHN0cmluZyA9ICdjb2xsZWN0aW9uLyc7XHJcblx0LyoqXHJcblx0ICogUGF0aCB1c2FkbyBwYXJhIGFjY2VkZXIgYSBsYXMgc2VjY2lvbmVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBTRUNUSU9OU19ST1VURTogc3RyaW5nID0gJ3NlY3Rpb25zLyc7XHJcblx0LyoqXHJcblx0ICogUGF0aCBxdWUgYWxvamEgbGEgY2FycGV0YSBkZSBsb3MgYXNzZXRzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWFkb25seSBBU1NFVFNfVVJMOiBzdHJpbmcgPSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMO1xyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgbGEgdXJsIGRvbmRlIHNlIGd1YXJkYSBsYXMgaW1hZ2VuZXMuXHJcblx0ICogQHBhcmFtIHBvc3RNZWRpYSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWFVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvJyA6ICcnKSArIChwb3N0TWVkaWEgPyBwb3N0TWVkaWEgOiBcImltYWdlL1wiKTtcclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBkb25kZSBzZSBndWFyZGEgbGFzIGltYWdlbmVzLlxyXG5cdCAqIEBwYXJhbSBwb3N0TWVkaWEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIG1lZGlhSW1hZ2VVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvaW1hZ2UvJyA6ICcnKSArIChwb3N0TWVkaWEgPyBwb3N0TWVkaWEgOiBcImltYWdlL1wiKTtcclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBkZWwgc2l0aW8uXHJcblx0ICogQHBhcmFtIHBvc3RNZWRpYSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgdXJsID0gKCkgPT4gdGhpcy5hcGlDb25zdGFudHMuQVBJX1VSTC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyByZW1vdmUgbGFzdCBzbGFzaFx0XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVSTCBkZWwgc2l0aW8gZnJvbnRlbmQgLSBDb21wYXRpYmxlIGNvbiBBbmd1bGFyIFNTUlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgRlJPTlRFTkRfVVJMKCk6IHN0cmluZyB7XHJcblx0XHQvLyBWZXJpZmljYXIgc2kgZXN0YW1vcyBlbiBlbCBuYXZlZ2Fkb3JcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdC8vIFByaW1lcm8gaW50ZW50YSBsZWVyIGRlIHdpbmRvdy5fX2VudiAoY29uZmlndXJhZG8gcG9yIERvY2tlci9DSSlcclxuXHRcdFx0Y29uc3Qgd2luZG93RW52ID0gKHRoaXMud2luZG93IGFzIGFueSk/Ll9fZW52O1xyXG5cdFx0XHRpZiAod2luZG93RW52Py5mcm9udGVuZFVybCkge1xyXG5cdFx0XHRcdC8vIExvZyBwYXJhIGRlYnVnZ2luZyBlbiBkZXNhcnJvbGxvXHJcblx0XHRcdFx0aWYgKCF3aW5kb3dFbnYuZnJvbnRlbmRVcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oJ1tGUk9OVEVORF9VUkxdIEludmFsaWQgZnJvbnRlbmRVcmwgZm9ybWF0OicsIHdpbmRvd0Vudi5mcm9udGVuZFVybCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB3aW5kb3dFbnYuZnJvbnRlbmRVcmw7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdC8vIFNpIG5vIGhheSBjb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSwgY29uc3RydWlyIGRlc2RlIHdpbmRvdy5sb2NhdGlvblxyXG5cdFx0XHRpZiAodGhpcy53aW5kb3c/LmxvY2F0aW9uKSB7XHJcblx0XHRcdFx0Y29uc3QgdXJsID0gYCR7dGhpcy53aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3RoaXMud2luZG93LmxvY2F0aW9uLmhvc3R9YDtcclxuXHRcdFx0XHQvLyBWZXJpZmljYXIgcXVlIG5vIHNlYSBsb2NhbGhvc3QgbyAxMjcuMC4wLjEgZW4gcHJvZHVjY2nDs25cclxuXHRcdFx0XHRpZiAodXJsLmluY2x1ZGVzKCcxMjcuMC4wLjEnKSB8fCB1cmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oJ1tGUk9OVEVORF9VUkxdIFVzaW5nIGxvY2FsaG9zdCBVUkwgaW4gcHJvZHVjdGlvbiwgY29uc2lkZXIgc2V0dGluZyB3aW5kb3cuX19lbnYuZnJvbnRlbmRVcmwnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIHVybDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBQYXJhIFNTUiwgaW50ZW50YXIgY29uc3RydWlyIGRlc2RlIGVsIGRvY3VtZW50IHNpIGVzdMOhIGRpc3BvbmlibGVcclxuXHRcdGlmICh0aGlzLmRvY3VtZW50Py5sb2NhdGlvbikge1xyXG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7dGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ob3N0fWA7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIEludGVudGFyIG9idGVuZXIgZGVzZGUgZW52aXJvbm1lbnRcclxuXHRcdGlmICh0aGlzLmVudmlyb25tZW50LmZyb250ZW5kVXJsKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmVudmlyb25tZW50LmZyb250ZW5kVXJsO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyDDmmx0aW1vIGZhbGxiYWNrIC0gdXNhciBsYSBVUkwgZGVsIEFQSSBzaSBlc3TDoSBjb25maWd1cmFkYSB5IGVzIGFic29sdXRhXHJcblx0XHRjb25zdCBhcGlVcmwgPSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMO1xyXG5cdFx0aWYgKGFwaVVybCAmJiAoYXBpVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBhcGlVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKGFwaVVybCk7XHJcblx0XHRcdFx0cmV0dXJuIGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3R9YDtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybignW0ZST05URU5EX1VSTF0gQ291bGQgbm90IHBhcnNlIEFQSSBVUkwgYXMgZmFsbGJhY2s6JywgYXBpVXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBGYWxsYmFjayBmaW5hbCAtIHJldG9ybmFyIFVSTCB2YWPDrWFcclxuXHRcdGNvbnNvbGUud2FybignW0ZST05URU5EX1VSTF0gTm8gdmFsaWQgZnJvbnRlbmQgVVJMIGZvdW5kLCB0aGlzIG1heSBjYXVzZSBpc3N1ZXMgd2l0aCBtZXRhIHRhZ3MnKTtcclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgbGEgVVJMIGNvbXBsZXRhIGRlbCBmcm9udGVuZCBjb24gdW5hIHJ1dGEgb3BjaW9uYWxcclxuXHQgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgb3BjaW9uYWwgcGFyYSBhZ3JlZ2FyIGEgbGEgVVJMIGJhc2VcclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBVUkwgY29tcGxldGEgZGVsIGZyb250ZW5kXHJcblx0ICovXHJcblx0cHVibGljIGdldEZyb250ZW5kVXJsID0gKHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdFx0Y29uc3QgYmFzZVVybCA9IHRoaXMuRlJPTlRFTkRfVVJMO1xyXG5cdFx0aWYgKCFwYXRoKSB7XHJcblx0XHRcdHJldHVybiBiYXNlVXJsO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBBc2VndXJhciBxdWUgbGEgcnV0YSBjb21pZW5jZSBjb24gJy8nIHkgbm8gdGVuZ2EgZG9ibGUgc2xhc2hcclxuXHRcdGNvbnN0IGNsZWFuUGF0aCA9IHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWA7XHJcblx0XHRjb25zdCBjbGVhbkJhc2VVcmwgPSBiYXNlVXJsLmVuZHNXaXRoKCcvJykgPyBiYXNlVXJsLnNsaWNlKDAsIC0xKSA6IGJhc2VVcmw7XHJcblx0XHRcclxuXHRcdHJldHVybiBgJHtjbGVhbkJhc2VVcmx9JHtjbGVhblBhdGh9YDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgbGEgVVJMIGFic29sdXRhIGRlIHVuYSBpbWFnZW4gcGFyYSBtZXRhIHRhZ3MgKGNvbXBhdGlibGUgY29uIFNTUilcclxuXHQgKiBAcGFyYW0gcG9zdE1lZGlhIC0gUnV0YSBkZSBsYSBpbWFnZW5cclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBVUkwgYWJzb2x1dGEgZGUgbGEgaW1hZ2VuXHJcblx0ICovXHJcblx0cHVibGljIGdldEFic29sdXRlSW1hZ2VVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuXHRcdC8vIFNpIGxhIFVSTCB5YSBlcyBhYnNvbHV0YSwgZGV2b2x2ZXJsYSB0YWwgY29tbyBlc3TDoVxyXG5cdFx0aWYgKHBvc3RNZWRpYSAmJiAocG9zdE1lZGlhLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBwb3N0TWVkaWEuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkpIHtcclxuXHRcdFx0cmV0dXJuIHBvc3RNZWRpYTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDb25zdHJ1aXIgbGEgVVJMIGRlIGxhIGltYWdlbiB1c2FuZG8gbGEgVVJMIGRlbCBBUElcclxuXHRcdGNvbnN0IGltYWdlVXJsID0gdGhpcy5tZWRpYUltYWdlVXJsKHBvc3RNZWRpYSk7XHJcblx0XHRcclxuXHRcdC8vIFNpIGxhIFVSTCBkZSBsYSBpbWFnZW4geWEgZXMgYWJzb2x1dGEsIGRldm9sdmVybGFcclxuXHRcdGlmIChpbWFnZVVybC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgaW1hZ2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gaW1hZ2VVcmw7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIFNpIGVzIHVuYSBVUkwgcmVsYXRpdmEsIGNvbnZlcnRpcmxhIGEgYWJzb2x1dGEgdXNhbmRvIGxhIFVSTCBiYXNlIGRlbCBBUElcclxuXHRcdGNvbnN0IGFwaUJhc2VVcmwgPSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMO1xyXG5cdFx0aWYgKGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xyXG5cdFx0XHQvLyBBUElfVVJMIHlhIGVzIGFic29sdXRhXHJcblx0XHRcdHJldHVybiBpbWFnZVVybDtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gU2kgQVBJX1VSTCBlcyByZWxhdGl2YSwgdXNhciBsYSBVUkwgZGVsIGZyb250ZW5kIGNvbW8gYmFzZVxyXG5cdFx0Y29uc3QgZnJvbnRlbmRVcmwgPSB0aGlzLkZST05URU5EX1VSTDtcclxuXHRcdGlmICghZnJvbnRlbmRVcmwpIHtcclxuXHRcdFx0cmV0dXJuIGltYWdlVXJsOyAvLyBGYWxsYmFjayBzaSBubyBwb2RlbW9zIGRldGVybWluYXIgbGEgVVJMIGRlbCBmcm9udGVuZFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBDb25zdHJ1aXIgVVJMIGFic29sdXRhXHJcblx0XHRjb25zdCBjbGVhbkFwaVVybCA9IGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnLycpID8gYXBpQmFzZVVybC5zdWJzdHJpbmcoMSkgOiBhcGlCYXNlVXJsO1xyXG5cdFx0Y29uc3QgY2xlYW5Gcm9udGVuZFVybCA9IGZyb250ZW5kVXJsLmVuZHNXaXRoKCcvJykgPyBmcm9udGVuZFVybC5zbGljZSgwLCAtMSkgOiBmcm9udGVuZFVybDtcclxuXHRcdGNvbnN0IGNsZWFuSW1hZ2VVcmwgPSBpbWFnZVVybC5zdGFydHNXaXRoKCcvJykgPyBpbWFnZVVybC5zdWJzdHJpbmcoMSkgOiBpbWFnZVVybDtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIGAke2NsZWFuRnJvbnRlbmRVcmx9LyR7Y2xlYW5BcGlVcmx9JHtjbGVhbkltYWdlVXJsfWA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBkZSBsYXMgaW1hZ2VuZXMgZGUgbG9zIGJhbm5lcnNcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWFCYW5uZXJVcmwgPSAoKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvJyA6ICcnKSArIFwiYmFubmVyLWltYWdlL1wiO1xyXG5cdFxyXG5cdG1lZGlhU3RvcmVVcmwgPSAoKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvJyA6ICcnKSArIFwic3RvcmUtaW1hZ2UvXCI7XHJcblx0XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBgdHJ1ZWAgc2kgbGEgdmlzdGEgZXMgbW9iaWxlLCBgZmFsc2VgIGNhc28gY29udHJhcmlvLlxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtb2JpbGVTY3JlZW4gPSAoKTogYm9vbGVhbiA9PiB0aGlzLndpbmRvdyAmJiB0aGlzLndpbmRvdz8uaW5uZXJXaWR0aCA8IDc1MCB8fCBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBDb250aWVuZSBsb3MgdmFsb3JlcyBwYXJhIGxhIG1vbmVkYSBhY3R1YWxcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVuY3k6IEN1cnJlbmN5Q29uZmlnID0ge1xyXG5cdFx0Y29kZTogJ0FSRycsXHJcblx0XHRzeW1ib2w6ICckJyxcclxuXHRcdHBvc2l0aW9uOiAnTGVmdCcsXHJcblx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBBcnJlZ2xvIGRlIHZhbG9yZXMgdXNhZG9zIHBhcmEgZWwgcGlwZSBjdXJyZW5jeVByaWNlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSA9IFtcclxuXHRcdHtcclxuXHRcdFx0Y29kZTogJ0VVUicsXHJcblx0XHRcdHN5bWJvbDogJ+KCrCcsXHJcblx0XHRcdHBvc2l0aW9uOiAnUmlnaHQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnQVJHJyxcclxuXHRcdFx0c3ltYm9sOiAnJCcsXHJcblx0XHRcdHBvc2l0aW9uOiAnTGVmdCcsXHJcblx0XHRcdHdpdGhvdXREZWNpbWFsOiBmYWxzZVxyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0Y29kZTogJ0FSUycsXHJcblx0XHRcdHN5bWJvbDogJyQnLFxyXG5cdFx0XHRwb3NpdGlvbjogJ0xlZnQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGNvZGU6ICdVU0QnLFxyXG5cdFx0XHRzeW1ib2w6ICckJyxcclxuXHRcdFx0cG9zaXRpb246ICdMZWZ0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnUFlHJyxcclxuXHRcdFx0c3ltYm9sOiAnR3MuJyxcclxuXHRcdFx0cG9zaXRpb246ICdMZWZ0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnUEVOJyxcclxuXHRcdFx0c3ltYm9sOiAnUy8nLFxyXG5cdFx0XHRwb3NpdGlvbjogJ0xlZnQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGNvZGU6ICdTRUsnLFxyXG5cdFx0XHRzeW1ib2w6ICdTRUsnLFxyXG5cdFx0XHRwb3NpdGlvbjogJ1JpZ2h0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IHRydWVcclxuXHRcdH0sXHJcblx0XVxyXG5cdC8qKlxyXG5cdCAqIENhbWJpYSBsYSBjb25maWd1cmFjacOzbiBkZSBsYSBtb25lZGEuXHJcblx0ICogQHBhcmFtIGN1cnJlbmN5VHlwZUNvbmZpZyBBcnJlZ2xvIGNvbiBsYXMgZGlzdGludGFzIG1vbmVkYXMuXHJcblx0ICovXHJcblx0cHVibGljIHNldEN1cnJlbmN5VHlwZUNvbmZpZyhjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10pIHtcclxuXHRcdHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnID0gY3VycmVuY3lUeXBlQ29uZmlnO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgRGVmaW5pciBlbCBjb2RlIGRlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgcXVpZXJhIHV0aWxpemFyLlxyXG5cdCAqIFNpIGVsIHRpcG8gZXMgQ1VTVE9NIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBzZWd1bmRvIHBhcmFtZXRybyBkb25kZSBzZSBwdWVkZSBkZWZpbmlyIGxhIHNpbWJvbG9nw61hIHkgcG9zZXNpw7NuIHF1ZSBzZSBxdWllcmEuXHJcblx0ICogQHBhcmFtIGN1c3RvbVR5cGUgRm9ybWF0byBkZWwgcGFyw6FtZXRybyBlamVtcGxvIHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0wnICwgd2l0aG91dERlY2ltYWxzOiBmYWxzZSB9ICxcclxuXHQgKiB0b2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzIHkgcG9yIGRlZmVjdG8gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIGVqZW1wbG8uXHJcblx0ICogQHJldHVybnMgc2UgcmV0b3JuYSBsYSBjb25maWd1cmFjacOzbiBxdWUgc2Ugc2V0ZW8gYSBsYSBwcm9waWVkYWQgY3VycmVuY3kgZGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDdXJyZW5jeShjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU/OiBDdXJyZW5jeUNvbmZpZyk6IEN1cnJlbmN5Q29uZmlnIHtcclxuXHRcdHRoaXMuY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5maW5kKChjdDogQ3VycmVuY3lDb25maWcpID0+IGN0LmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZC50b1VwcGVyQ2FzZSgpKSB8fCB0aGlzLmN1cnJlbmN5XHJcblx0XHRjdXN0b21UeXBlICYmICh0aGlzLmN1cnJlbmN5ID0geyAuLi50aGlzLmN1cnJlbmN5LCAuLi5jdXN0b21UeXBlIH0pXHJcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW5jeTtcclxuXHR9O1xyXG5cclxuXHJcblx0cHVibGljIG1vZGlmeUNoYW5uZWxDb25maWcoY2hhbm5lbENvbmZpZzogYW55KSB7XHJcblx0XHRpZiAoY2hhbm5lbENvbmZpZy5jaGFubmVsIHx8IGNoYW5uZWxDb25maWcuY29kZSlcclxuXHRcdFx0dGhpcy5hcGlDb25zdGFudHMuc2V0Q2hhbm5lbChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxyXG5cclxuXHRcdGlmIChjaGFubmVsQ29uZmlnLmxvY2FsZSB8fCBjaGFubmVsQ29uZmlnLmxvY2FsZXMuY29kZSlcclxuXHRcdFx0dGhpcy5hcGlDb25zdGFudHMuc2V0TG9jYWxlKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKVxyXG5cclxuXHRcdGlmIChjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxyXG5cdFx0XHR0aGlzLnNldEN1cnJlbmN5KGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXHJcblxyXG5cdFx0cmV0dXJuIGNoYW5uZWxDb25maWc7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEBkZXNjcmlwdGlvbiBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBxdWUgZmlsdHJvcyBkZWwgdGlwbyBgU29ydEZpbHRlcmAgc2UgcXVpZXJlIG1vc3RyYXIgZW4gbGEgdmlzdGEuXHJcblx0KiBTZSB1c2FuIGxvcyBjb2RpZ28gZGUgbG9zIGZpbHRyb3MgcGFyYSBpbmRpY2FyIGN1YWxlcyBzZSBkZWJlbiBtb3N0cmFyLlxyXG5cdCovXHJcblx0cHJpdmF0ZSBzb3J0RmlsdGVyczogc3RyaW5nW10gPSBbJ3ByaWNlJywgJ29yZGVyLWFscGgnLCAncmVjZW50J11cclxuXHJcblx0LyoqXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZmlsdGVyc0NvZGUgYXJyZWdsbyBkZSBzdHJpbmdzIGNvbiBsb3MgY29kaWdvcyBkZSBsb3MgZmlsdHJvcy5cclxuXHQgKiBTaSBzZSBsZSBwYXNhIGVsIHBhcmFtZXRybyAqKmFsbCoqIGVzdGUgbW9zdHJhcmEgdG9kb3MuXHJcblx0ICogQGV4YW1wbGUgcHJpY2UgfCBvcmRlci1hbHBoIHwgcmVjZW50IHwgdXBkYXRlIHwgYWxsXHJcblx0ICogQHJldHVybnNcclxuXHQgKi9cclxuXHRzZXRTb3J0RmlsdGVycyA9IChmaWx0ZXJzQ29kZTogc3RyaW5nW10gPSBbJ2FsbCddKSA9PiB0aGlzLnNvcnRGaWx0ZXJzID0gZmlsdGVyc0NvZGU7XHJcblxyXG5cdGdldFNvcnRGaWx0ZXJzID0gKCkgPT4gdGhpcy5zb3J0RmlsdGVycztcclxuXHJcblx0Ly8gQUJPVVQgUFJPRFVDVFMgXHJcblx0cHJpdmF0ZSBwcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50OiBib29sZWFuID0gZmFsc2U7XHJcblx0c2V0UHJvZHVjdFdpdGhVbmlxdWVWYXJpYW50KHZhbHVlOiBib29sZWFuKSB7IHRoaXMucHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHZhbHVlOyB9XHJcblx0Z2V0UHJvZHVjdFdpdGhVbmlxdWVWYXJpYW50KCkgeyByZXR1cm4gdGhpcy5wcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50IH1cclxuXHJcblx0LyoqXHJcblx0KiBAZGVzY3JpcHRpb24gZXN0YSB2YXJpYWJsZSBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBsb3MgcGFyYW1ldHJvcyBjdWFuZG8gc2UgZGVzZWEgbW9zdHJhclxyXG5cdCogdmFyaWFudGVzIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxyXG5cdCogQHBhcmFtIHtzdHJpbmd9dHlwZSB0aXBvIGRlIG9wdGlvbnNcclxuXHQqIEBwYXJhbSB7c3RyaW5nfWNvZGUgY29kaWdvIGRlIG9wdGlvbnNcclxuXHQqIEBwYXJhbSB7Ym9vbGVhbn1kZWZhdWx0Rmlyc3RPcHRpb24gYHRydWVgIHRvbWEgZWwgcHJpbWVyIG9wdGlvbiBkZWwgcHJvZHVjdG8gZW4gZ2VuZXJhbFxyXG5cdCogQHBhcmFtIHtib29sZWFufWNoZWNrSWZTdG9jayBgdHJ1ZWAgc2UgcmVhbGl6YSB1biBjaGVxdWVvIGRlIHNpIGxhIHZhcmlhbnRlIHRpZW5lIHN0b2NrIHBhcmEgbW9zdHJhcmxhXHJcblx0KiBAZXhhbXBsZSAgYGBgamF2YXNjcmlwdFxyXG5cdCoge1xyXG5cdCAgIHR5cGU6ICdjb2xvcicsXHJcblx0ICAgY29kZTogJ2NvbG9yJyxcclxuXHQgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlICxcclxuXHQgICBjaGVja0lmU3RvY2s6dHJ1ZVxyXG5cdCAgIH0gYGBgXHJcblx0Ki9cclxuXHRwcml2YXRlIHBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XHJcblx0XHR0eXBlOiAnY29sb3InLFxyXG5cdFx0Y29kZTogJ2NvbG9yJyxcclxuXHRcdGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UsXHJcblx0XHRjaGVja0lmU3RvY2s6IHRydWVcclxuXHR9XHJcblxyXG5cdHNldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAodmFsdWU6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpID0+IHtcclxuXHRcdHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHtcclxuXHRcdFx0Li4udGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50LFxyXG5cdFx0XHQuLi52YWx1ZVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICgpID0+IHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudFxyXG5cdFxyXG5cdHB1YmxpYyBnZXRDaGFubmVsKCl7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmb3JtX3NlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcbiJdfQ==
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdGFudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9jb25zdGFudHMvY29yZS5jb25zdGFudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFDakQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFFekIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNoQzs7T0FFRztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNsRDs7T0FFRztJQUNLLFVBQVUsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0M7O09BRUc7SUFDSyxRQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDOztPQUVHO0lBQ0ssV0FBVyxHQUFnQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUM1RDs7T0FFRztJQUNLLE1BQU0sQ0FBUztJQUV2QjtRQUNDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDckIsQ0FBQztJQUNGLENBQUM7SUFDRDs7T0FFRztJQUNJLGtCQUFrQixHQUFXLGFBQWEsQ0FBQztJQUNsRDs7T0FFRztJQUNJLGNBQWMsR0FBVyxXQUFXLENBQUM7SUFDNUM7O09BRUc7SUFD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LENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLDJCQUEyQixLQUFLLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFBLENBQUMsQ0FBQztJQUV2RTs7Ozs7Ozs7Ozs7Ozs7TUFjRTtJQUNNLCtCQUErQixHQUFvQztRQUMxRSxJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxPQUFPO1FBQ2Isa0JBQWtCLEVBQUUsS0FBSztRQUN6QixZQUFZLEVBQUUsSUFBSTtLQUNsQixDQUFBO0lBRUQsa0NBQWtDLEdBQUcsQ0FBQyxLQUFzQyxFQUFFLEVBQUU7UUFDL0UsSUFBSSxDQUFDLCtCQUErQixHQUFHO1lBQ3RDLEdBQUcsSUFBSSxDQUFDLCtCQUErQjtZQUN2QyxHQUFHLEtBQUs7U0FDUixDQUFBO0lBQ0YsQ0FBQyxDQUFBO0lBRUQsa0NBQWtDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFBO0lBRXhFLFVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVyxHQUFZLEtBQUssQ0FBQzt3R0E5VXhCLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRnBCLE1BQU07OzRGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuL2FwaS5jb25zdGFudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnLCBjdXJyZW5jeVR5cGUsIFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVOVklST05NRU5UX1RPS0VOIH0gZnJvbSAnLi4vcHJvdmlkZXJzJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBwcm92ZWUgbGFzIGNvbnN0YW50ZXMgbmVjZXNhcmlhcyBxdWUgc2UgdXRpbGl6YW4gcG9yIHRvZGEgbGEgYXBsaWNhY2nDs24uXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIENvcmVDb25zdGFudHNTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ29uc3RhbnRzU2VydmljZSB7XHJcblxyXG5cdHB1YmxpYyBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gcXVlIGNvbnRpZW5lIGxhcyBjb25zdGFudGVzIHVzYWRhcyBwYXJhIGxhIEFQSVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpXHJcblx0LyoqXHJcblx0ICogUHJvdmVlIGVsIElEIGRlIGxhIHBsYXRhZm9ybWEgZW4gZG9uZGUgc2UgZXN0YSBlamVjdXRhbmRvIGVsIGNvZGlnbywgZXN0byBzaXJ2ZSBwYXJhIHBvZGVyIGRpZmVyZW5jaWFyIHNpIGVzIGRlIHVuIHNlcnZpZG9yIG8gdW4gbmF2ZWdhZG9yIHdlYi5cclxuXHQgKi9cclxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuXHQvKipcclxuXHQgKiBEb2N1bWVudCB0b2tlbiBwYXJhIGFjY2VzbyBTU1ItY29tcGF0aWJsZSBhbCBkb2N1bWVudG9cclxuXHQgKi9cclxuXHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCA9IGluamVjdChET0NVTUVOVClcclxuXHQvKipcclxuXHQgKiBDb250aWVuZSBsb3MgZGF0b3MgcHJvdmlzdG8gcG9yIGVsIGZyb250ZW5kIGVuIGVsIGFyY2hpdm8gZW52aXJvbm1lbnQudHNcclxuXHQgKi9cclxuXHRwcml2YXRlIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVF9UT0tFTilcclxuXHQvKipcclxuXHQgKiBHdWFyZGEgbGEgdmFyaWFibGUgd2luZG93IGRlbCB3ZWIgYnJvd3Nlci5cclxuXHQgKi9cclxuXHRwcml2YXRlIHdpbmRvdz86V2luZG93O1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdHRoaXMud2luZG93ID0gd2luZG93XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhdGggdXNhZG8gZW4gbGFzIGNvbGVjY2lvbmVzIGRlIHByb2R1Y3Rvcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgUFJPRFVDVF9MSVNUX1JPVVRFOiBzdHJpbmcgPSAnY29sbGVjdGlvbi8nO1xyXG5cdC8qKlxyXG5cdCAqIFBhdGggdXNhZG8gcGFyYSBhY2NlZGVyIGEgbGFzIHNlY2Npb25lcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgU0VDVElPTlNfUk9VVEU6IHN0cmluZyA9ICdzZWN0aW9ucy8nO1xyXG5cdC8qKlxyXG5cdCAqIFBhdGggcXVlIGFsb2phIGxhIGNhcnBldGEgZGUgbG9zIGFzc2V0cy5cclxuXHQgKi9cclxuXHRwdWJsaWMgcmVhZG9ubHkgQVNTRVRTX1VSTDogc3RyaW5nID0gdGhpcy5hcGlDb25zdGFudHMuQVBJX1VSTDtcclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBkb25kZSBzZSBndWFyZGEgbGFzIGltYWdlbmVzLlxyXG5cdCAqIEBwYXJhbSBwb3N0TWVkaWEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIG1lZGlhVXJsID0gKHBvc3RNZWRpYT86IHN0cmluZykgPT4gdGhpcy5BU1NFVFNfVVJMICsgKHRoaXMuQVNTRVRTX1VSTCA9PSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMID8gJ21lZGlhLycgOiAnJykgKyAocG9zdE1lZGlhID8gcG9zdE1lZGlhIDogXCJpbWFnZS9cIik7XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBsYSB1cmwgZG9uZGUgc2UgZ3VhcmRhIGxhcyBpbWFnZW5lcy5cclxuXHQgKiBAcGFyYW0gcG9zdE1lZGlhIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYUltYWdlVXJsID0gKHBvc3RNZWRpYT86IHN0cmluZykgPT4gdGhpcy5BU1NFVFNfVVJMICsgKHRoaXMuQVNTRVRTX1VSTCA9PSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMID8gJ21lZGlhL2ltYWdlLycgOiAnJykgKyAocG9zdE1lZGlhID8gcG9zdE1lZGlhIDogXCJpbWFnZS9cIik7XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBsYSB1cmwgZGVsIHNpdGlvLlxyXG5cdCAqIEBwYXJhbSBwb3N0TWVkaWEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIHVybCA9ICgpID0+IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwucmVwbGFjZSgvXFwvJC8sICcnKTsgLy8gcmVtb3ZlIGxhc3Qgc2xhc2hcdFxyXG5cclxuXHQvKipcclxuXHQgKiBVUkwgZGVsIHNpdGlvIGZyb250ZW5kIC0gQ29tcGF0aWJsZSBjb24gQW5ndWxhciBTU1JcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IEZST05URU5EX1VSTCgpOiBzdHJpbmcge1xyXG5cdFx0Ly8gVmVyaWZpY2FyIHNpIGVzdGFtb3MgZW4gZWwgbmF2ZWdhZG9yXHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHQvLyBQcmltZXJvIGludGVudGEgbGVlciBkZSB3aW5kb3cuX19lbnYgKGNvbmZpZ3VyYWRvIHBvciBEb2NrZXIvQ0kpXHJcblx0XHRcdGNvbnN0IHdpbmRvd0VudiA9ICh0aGlzLndpbmRvdyBhcyBhbnkpPy5fX2VudjtcclxuXHRcdFx0aWYgKHdpbmRvd0Vudj8uZnJvbnRlbmRVcmwpIHtcclxuXHRcdFx0XHQvLyBMb2cgcGFyYSBkZWJ1Z2dpbmcgZW4gZGVzYXJyb2xsb1xyXG5cdFx0XHRcdGlmICghd2luZG93RW52LmZyb250ZW5kVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKCdbRlJPTlRFTkRfVVJMXSBJbnZhbGlkIGZyb250ZW5kVXJsIGZvcm1hdDonLCB3aW5kb3dFbnYuZnJvbnRlbmRVcmwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gd2luZG93RW52LmZyb250ZW5kVXJsO1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBTaSBubyBoYXkgY29uZmlndXJhY2nDs24gZXNwZWPDrWZpY2EsIGNvbnN0cnVpciBkZXNkZSB3aW5kb3cubG9jYXRpb25cclxuXHRcdFx0aWYgKHRoaXMud2luZG93Py5sb2NhdGlvbikge1xyXG5cdFx0XHRcdGNvbnN0IHVybCA9IGAke3RoaXMud2luZG93LmxvY2F0aW9uLnByb3RvY29sfS8vJHt0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0fWA7XHJcblx0XHRcdFx0Ly8gVmVyaWZpY2FyIHF1ZSBubyBzZWEgbG9jYWxob3N0IG8gMTI3LjAuMC4xIGVuIHByb2R1Y2Npw7NuXHJcblx0XHRcdFx0aWYgKHVybC5pbmNsdWRlcygnMTI3LjAuMC4xJykgfHwgdXJsLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKCdbRlJPTlRFTkRfVVJMXSBVc2luZyBsb2NhbGhvc3QgVVJMIGluIHByb2R1Y3Rpb24sIGNvbnNpZGVyIHNldHRpbmcgd2luZG93Ll9fZW52LmZyb250ZW5kVXJsJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB1cmw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gUGFyYSBTU1IsIGludGVudGFyIGNvbnN0cnVpciBkZXNkZSBlbCBkb2N1bWVudCBzaSBlc3TDoSBkaXNwb25pYmxlXHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLmRvY3VtZW50Py5sb2NhdGlvbikge1xyXG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7dGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ob3N0fWA7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIEludGVudGFyIG9idGVuZXIgZGVzZGUgZW52aXJvbm1lbnRcclxuXHRcdGlmICh0aGlzLmVudmlyb25tZW50LmZyb250ZW5kVXJsKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmVudmlyb25tZW50LmZyb250ZW5kVXJsO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyDDmmx0aW1vIGZhbGxiYWNrIC0gdXNhciBsYSBVUkwgZGVsIEFQSSBzaSBlc3TDoSBjb25maWd1cmFkYSB5IGVzIGFic29sdXRhXHJcblx0XHRjb25zdCBhcGlVcmwgPSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMO1xyXG5cdFx0aWYgKGFwaVVybCAmJiAoYXBpVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBhcGlVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKGFwaVVybCk7XHJcblx0XHRcdFx0cmV0dXJuIGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3R9YDtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybignW0ZST05URU5EX1VSTF0gQ291bGQgbm90IHBhcnNlIEFQSSBVUkwgYXMgZmFsbGJhY2s6JywgYXBpVXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBGYWxsYmFjayBmaW5hbCAtIHJldG9ybmFyIFVSTCB2YWPDrWFcclxuXHRcdGNvbnNvbGUud2FybignW0ZST05URU5EX1VSTF0gTm8gdmFsaWQgZnJvbnRlbmQgVVJMIGZvdW5kLCB0aGlzIG1heSBjYXVzZSBpc3N1ZXMgd2l0aCBtZXRhIHRhZ3MnKTtcclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgbGEgVVJMIGNvbXBsZXRhIGRlbCBmcm9udGVuZCBjb24gdW5hIHJ1dGEgb3BjaW9uYWxcclxuXHQgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgb3BjaW9uYWwgcGFyYSBhZ3JlZ2FyIGEgbGEgVVJMIGJhc2VcclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBVUkwgY29tcGxldGEgZGVsIGZyb250ZW5kXHJcblx0ICovXHJcblx0cHVibGljIGdldEZyb250ZW5kVXJsID0gKHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdFx0Y29uc3QgYmFzZVVybCA9IHRoaXMuRlJPTlRFTkRfVVJMO1xyXG5cdFx0aWYgKCFwYXRoKSB7XHJcblx0XHRcdHJldHVybiBiYXNlVXJsO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBBc2VndXJhciBxdWUgbGEgcnV0YSBjb21pZW5jZSBjb24gJy8nIHkgbm8gdGVuZ2EgZG9ibGUgc2xhc2hcclxuXHRcdGNvbnN0IGNsZWFuUGF0aCA9IHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWA7XHJcblx0XHRjb25zdCBjbGVhbkJhc2VVcmwgPSBiYXNlVXJsLmVuZHNXaXRoKCcvJykgPyBiYXNlVXJsLnNsaWNlKDAsIC0xKSA6IGJhc2VVcmw7XHJcblx0XHRcclxuXHRcdHJldHVybiBgJHtjbGVhbkJhc2VVcmx9JHtjbGVhblBhdGh9YDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgbGEgVVJMIGFic29sdXRhIGRlIHVuYSBpbWFnZW4gcGFyYSBtZXRhIHRhZ3MgKGNvbXBhdGlibGUgY29uIFNTUilcclxuXHQgKiBAcGFyYW0gcG9zdE1lZGlhIC0gUnV0YSBkZSBsYSBpbWFnZW5cclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBVUkwgYWJzb2x1dGEgZGUgbGEgaW1hZ2VuXHJcblx0ICovXHJcblx0cHVibGljIGdldEFic29sdXRlSW1hZ2VVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuXHRcdC8vIFNpIGxhIFVSTCB5YSBlcyBhYnNvbHV0YSwgZGV2b2x2ZXJsYSB0YWwgY29tbyBlc3TDoVxyXG5cdFx0aWYgKHBvc3RNZWRpYSAmJiAocG9zdE1lZGlhLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBwb3N0TWVkaWEuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkpIHtcclxuXHRcdFx0cmV0dXJuIHBvc3RNZWRpYTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDb25zdHJ1aXIgbGEgVVJMIGRlIGxhIGltYWdlbiB1c2FuZG8gbGEgVVJMIGRlbCBBUElcclxuXHRcdGNvbnN0IGltYWdlVXJsID0gdGhpcy5tZWRpYUltYWdlVXJsKHBvc3RNZWRpYSk7XHJcblx0XHRcclxuXHRcdC8vIFNpIGxhIFVSTCBkZSBsYSBpbWFnZW4geWEgZXMgYWJzb2x1dGEsIGRldm9sdmVybGFcclxuXHRcdGlmIChpbWFnZVVybC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgaW1hZ2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gaW1hZ2VVcmw7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIFNpIGVzIHVuYSBVUkwgcmVsYXRpdmEsIGNvbnZlcnRpcmxhIGEgYWJzb2x1dGEgdXNhbmRvIGxhIFVSTCBiYXNlIGRlbCBBUElcclxuXHRcdGNvbnN0IGFwaUJhc2VVcmwgPSB0aGlzLmFwaUNvbnN0YW50cy5BUElfVVJMO1xyXG5cdFx0aWYgKGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xyXG5cdFx0XHQvLyBBUElfVVJMIHlhIGVzIGFic29sdXRhXHJcblx0XHRcdHJldHVybiBpbWFnZVVybDtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gU2kgQVBJX1VSTCBlcyByZWxhdGl2YSwgdXNhciBsYSBVUkwgZGVsIGZyb250ZW5kIGNvbW8gYmFzZVxyXG5cdFx0Y29uc3QgZnJvbnRlbmRVcmwgPSB0aGlzLkZST05URU5EX1VSTDtcclxuXHRcdGlmICghZnJvbnRlbmRVcmwpIHtcclxuXHRcdFx0cmV0dXJuIGltYWdlVXJsOyAvLyBGYWxsYmFjayBzaSBubyBwb2RlbW9zIGRldGVybWluYXIgbGEgVVJMIGRlbCBmcm9udGVuZFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBDb25zdHJ1aXIgVVJMIGFic29sdXRhXHJcblx0XHRjb25zdCBjbGVhbkFwaVVybCA9IGFwaUJhc2VVcmwuc3RhcnRzV2l0aCgnLycpID8gYXBpQmFzZVVybC5zdWJzdHJpbmcoMSkgOiBhcGlCYXNlVXJsO1xyXG5cdFx0Y29uc3QgY2xlYW5Gcm9udGVuZFVybCA9IGZyb250ZW5kVXJsLmVuZHNXaXRoKCcvJykgPyBmcm9udGVuZFVybC5zbGljZSgwLCAtMSkgOiBmcm9udGVuZFVybDtcclxuXHRcdGNvbnN0IGNsZWFuSW1hZ2VVcmwgPSBpbWFnZVVybC5zdGFydHNXaXRoKCcvJykgPyBpbWFnZVVybC5zdWJzdHJpbmcoMSkgOiBpbWFnZVVybDtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIGAke2NsZWFuRnJvbnRlbmRVcmx9LyR7Y2xlYW5BcGlVcmx9JHtjbGVhbkltYWdlVXJsfWA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBkZSBsYXMgaW1hZ2VuZXMgZGUgbG9zIGJhbm5lcnNcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWFCYW5uZXJVcmwgPSAoKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvJyA6ICcnKSArIFwiYmFubmVyLWltYWdlL1wiO1xyXG5cdFxyXG5cdG1lZGlhU3RvcmVVcmwgPSAoKSA9PiB0aGlzLkFTU0VUU19VUkwgKyAodGhpcy5BU1NFVFNfVVJMID09IHRoaXMuYXBpQ29uc3RhbnRzLkFQSV9VUkwgPyAnbWVkaWEvJyA6ICcnKSArIFwic3RvcmUtaW1hZ2UvXCI7XHJcblx0XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBgdHJ1ZWAgc2kgbGEgdmlzdGEgZXMgbW9iaWxlLCBgZmFsc2VgIGNhc28gY29udHJhcmlvLlxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtb2JpbGVTY3JlZW4gPSAoKTogYm9vbGVhbiA9PiB0aGlzLndpbmRvdyAmJiB0aGlzLndpbmRvdz8uaW5uZXJXaWR0aCA8IDc1MCB8fCBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBDb250aWVuZSBsb3MgdmFsb3JlcyBwYXJhIGxhIG1vbmVkYSBhY3R1YWxcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVuY3k6IEN1cnJlbmN5Q29uZmlnID0ge1xyXG5cdFx0Y29kZTogJ0FSRycsXHJcblx0XHRzeW1ib2w6ICckJyxcclxuXHRcdHBvc2l0aW9uOiAnTGVmdCcsXHJcblx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBBcnJlZ2xvIGRlIHZhbG9yZXMgdXNhZG9zIHBhcmEgZWwgcGlwZSBjdXJyZW5jeVByaWNlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSA9IFtcclxuXHRcdHtcclxuXHRcdFx0Y29kZTogJ0VVUicsXHJcblx0XHRcdHN5bWJvbDogJ+KCrCcsXHJcblx0XHRcdHBvc2l0aW9uOiAnUmlnaHQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnQVJHJyxcclxuXHRcdFx0c3ltYm9sOiAnJCcsXHJcblx0XHRcdHBvc2l0aW9uOiAnTGVmdCcsXHJcblx0XHRcdHdpdGhvdXREZWNpbWFsOiBmYWxzZVxyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0Y29kZTogJ0FSUycsXHJcblx0XHRcdHN5bWJvbDogJyQnLFxyXG5cdFx0XHRwb3NpdGlvbjogJ0xlZnQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGNvZGU6ICdVU0QnLFxyXG5cdFx0XHRzeW1ib2w6ICckJyxcclxuXHRcdFx0cG9zaXRpb246ICdMZWZ0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnUFlHJyxcclxuXHRcdFx0c3ltYm9sOiAnR3MuJyxcclxuXHRcdFx0cG9zaXRpb246ICdMZWZ0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRjb2RlOiAnUEVOJyxcclxuXHRcdFx0c3ltYm9sOiAnUy8nLFxyXG5cdFx0XHRwb3NpdGlvbjogJ0xlZnQnLFxyXG5cdFx0XHR3aXRob3V0RGVjaW1hbDogZmFsc2VcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGNvZGU6ICdTRUsnLFxyXG5cdFx0XHRzeW1ib2w6ICdTRUsnLFxyXG5cdFx0XHRwb3NpdGlvbjogJ1JpZ2h0JyxcclxuXHRcdFx0d2l0aG91dERlY2ltYWw6IHRydWVcclxuXHRcdH0sXHJcblx0XVxyXG5cdC8qKlxyXG5cdCAqIENhbWJpYSBsYSBjb25maWd1cmFjacOzbiBkZSBsYSBtb25lZGEuXHJcblx0ICogQHBhcmFtIGN1cnJlbmN5VHlwZUNvbmZpZyBBcnJlZ2xvIGNvbiBsYXMgZGlzdGludGFzIG1vbmVkYXMuXHJcblx0ICovXHJcblx0cHVibGljIHNldEN1cnJlbmN5VHlwZUNvbmZpZyhjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10pIHtcclxuXHRcdHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnID0gY3VycmVuY3lUeXBlQ29uZmlnO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgRGVmaW5pciBlbCBjb2RlIGRlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgcXVpZXJhIHV0aWxpemFyLlxyXG5cdCAqIFNpIGVsIHRpcG8gZXMgQ1VTVE9NIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBzZWd1bmRvIHBhcmFtZXRybyBkb25kZSBzZSBwdWVkZSBkZWZpbmlyIGxhIHNpbWJvbG9nw61hIHkgcG9zZXNpw7NuIHF1ZSBzZSBxdWllcmEuXHJcblx0ICogQHBhcmFtIGN1c3RvbVR5cGUgRm9ybWF0byBkZWwgcGFyw6FtZXRybyBlamVtcGxvIHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0wnICwgd2l0aG91dERlY2ltYWxzOiBmYWxzZSB9ICxcclxuXHQgKiB0b2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzIHkgcG9yIGRlZmVjdG8gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIGVqZW1wbG8uXHJcblx0ICogQHJldHVybnMgc2UgcmV0b3JuYSBsYSBjb25maWd1cmFjacOzbiBxdWUgc2Ugc2V0ZW8gYSBsYSBwcm9waWVkYWQgY3VycmVuY3kgZGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDdXJyZW5jeShjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU/OiBDdXJyZW5jeUNvbmZpZyk6IEN1cnJlbmN5Q29uZmlnIHtcclxuXHRcdHRoaXMuY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5maW5kKChjdDogQ3VycmVuY3lDb25maWcpID0+IGN0LmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZC50b1VwcGVyQ2FzZSgpKSB8fCB0aGlzLmN1cnJlbmN5XHJcblx0XHRjdXN0b21UeXBlICYmICh0aGlzLmN1cnJlbmN5ID0geyAuLi50aGlzLmN1cnJlbmN5LCAuLi5jdXN0b21UeXBlIH0pXHJcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW5jeTtcclxuXHR9O1xyXG5cclxuXHJcblx0cHVibGljIG1vZGlmeUNoYW5uZWxDb25maWcoY2hhbm5lbENvbmZpZzogYW55KSB7XHJcblx0XHRpZiAoY2hhbm5lbENvbmZpZy5jaGFubmVsIHx8IGNoYW5uZWxDb25maWcuY29kZSlcclxuXHRcdFx0dGhpcy5hcGlDb25zdGFudHMuc2V0Q2hhbm5lbChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxyXG5cclxuXHRcdGlmIChjaGFubmVsQ29uZmlnLmxvY2FsZSB8fCBjaGFubmVsQ29uZmlnLmxvY2FsZXMuY29kZSlcclxuXHRcdFx0dGhpcy5hcGlDb25zdGFudHMuc2V0TG9jYWxlKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKVxyXG5cclxuXHRcdGlmIChjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxyXG5cdFx0XHR0aGlzLnNldEN1cnJlbmN5KGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXHJcblxyXG5cdFx0cmV0dXJuIGNoYW5uZWxDb25maWc7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEBkZXNjcmlwdGlvbiBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBxdWUgZmlsdHJvcyBkZWwgdGlwbyBgU29ydEZpbHRlcmAgc2UgcXVpZXJlIG1vc3RyYXIgZW4gbGEgdmlzdGEuXHJcblx0KiBTZSB1c2FuIGxvcyBjb2RpZ28gZGUgbG9zIGZpbHRyb3MgcGFyYSBpbmRpY2FyIGN1YWxlcyBzZSBkZWJlbiBtb3N0cmFyLlxyXG5cdCovXHJcblx0cHJpdmF0ZSBzb3J0RmlsdGVyczogc3RyaW5nW10gPSBbJ3ByaWNlJywgJ29yZGVyLWFscGgnLCAncmVjZW50J11cclxuXHJcblx0LyoqXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZmlsdGVyc0NvZGUgYXJyZWdsbyBkZSBzdHJpbmdzIGNvbiBsb3MgY29kaWdvcyBkZSBsb3MgZmlsdHJvcy5cclxuXHQgKiBTaSBzZSBsZSBwYXNhIGVsIHBhcmFtZXRybyAqKmFsbCoqIGVzdGUgbW9zdHJhcmEgdG9kb3MuXHJcblx0ICogQGV4YW1wbGUgcHJpY2UgfCBvcmRlci1hbHBoIHwgcmVjZW50IHwgdXBkYXRlIHwgYWxsXHJcblx0ICogQHJldHVybnNcclxuXHQgKi9cclxuXHRzZXRTb3J0RmlsdGVycyA9IChmaWx0ZXJzQ29kZTogc3RyaW5nW10gPSBbJ2FsbCddKSA9PiB0aGlzLnNvcnRGaWx0ZXJzID0gZmlsdGVyc0NvZGU7XHJcblxyXG5cdGdldFNvcnRGaWx0ZXJzID0gKCkgPT4gdGhpcy5zb3J0RmlsdGVycztcclxuXHJcblx0Ly8gQUJPVVQgUFJPRFVDVFMgXHJcblx0cHJpdmF0ZSBwcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50OiBib29sZWFuID0gZmFsc2U7XHJcblx0c2V0UHJvZHVjdFdpdGhVbmlxdWVWYXJpYW50KHZhbHVlOiBib29sZWFuKSB7IHRoaXMucHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHZhbHVlOyB9XHJcblx0Z2V0UHJvZHVjdFdpdGhVbmlxdWVWYXJpYW50KCkgeyByZXR1cm4gdGhpcy5wcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50IH1cclxuXHJcblx0LyoqXHJcblx0KiBAZGVzY3JpcHRpb24gZXN0YSB2YXJpYWJsZSBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBsb3MgcGFyYW1ldHJvcyBjdWFuZG8gc2UgZGVzZWEgbW9zdHJhclxyXG5cdCogdmFyaWFudGVzIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxyXG5cdCogQHBhcmFtIHtzdHJpbmd9dHlwZSB0aXBvIGRlIG9wdGlvbnNcclxuXHQqIEBwYXJhbSB7c3RyaW5nfWNvZGUgY29kaWdvIGRlIG9wdGlvbnNcclxuXHQqIEBwYXJhbSB7Ym9vbGVhbn1kZWZhdWx0Rmlyc3RPcHRpb24gYHRydWVgIHRvbWEgZWwgcHJpbWVyIG9wdGlvbiBkZWwgcHJvZHVjdG8gZW4gZ2VuZXJhbFxyXG5cdCogQHBhcmFtIHtib29sZWFufWNoZWNrSWZTdG9jayBgdHJ1ZWAgc2UgcmVhbGl6YSB1biBjaGVxdWVvIGRlIHNpIGxhIHZhcmlhbnRlIHRpZW5lIHN0b2NrIHBhcmEgbW9zdHJhcmxhXHJcblx0KiBAZXhhbXBsZSAgYGBgamF2YXNjcmlwdFxyXG5cdCoge1xyXG5cdCAgIHR5cGU6ICdjb2xvcicsXHJcblx0ICAgY29kZTogJ2NvbG9yJyxcclxuXHQgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlICxcclxuXHQgICBjaGVja0lmU3RvY2s6dHJ1ZVxyXG5cdCAgIH0gYGBgXHJcblx0Ki9cclxuXHRwcml2YXRlIHBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XHJcblx0XHR0eXBlOiAnY29sb3InLFxyXG5cdFx0Y29kZTogJ2NvbG9yJyxcclxuXHRcdGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UsXHJcblx0XHRjaGVja0lmU3RvY2s6IHRydWVcclxuXHR9XHJcblxyXG5cdHNldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAodmFsdWU6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpID0+IHtcclxuXHRcdHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHtcclxuXHRcdFx0Li4udGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50LFxyXG5cdFx0XHQuLi52YWx1ZVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICgpID0+IHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudFxyXG5cdFxyXG5cdHB1YmxpYyBnZXRDaGFubmVsKCl7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmb3JtX3NlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcbiJdfQ==
@@ -102,9 +102,8 @@ export class ProductDetailEcComponent {
102
102
  this._meta.updateTag({ property: 'og:type', content: 'product' });
103
103
  }
104
104
  decodeHtml(html) {
105
- const txt = document.createElement('textarea');
106
- txt.innerHTML = html;
107
- return txt.value;
105
+ // Usar he.decode en lugar de document para compatibilidad SSR
106
+ return he.decode(html);
108
107
  }
109
108
  sanitizedHtml(html) {
110
109
  const decodedHtml = this.decodeHtml(html);
@@ -153,12 +152,14 @@ export class ProductDetailEcComponent {
153
152
  }
154
153
  goToSection(section) {
155
154
  this.showFormContact = true;
156
- setTimeout(() => {
157
- const element = document.getElementById(section);
158
- if (element) {
159
- element.scrollIntoView({ behavior: 'smooth' });
160
- }
161
- }, 500);
155
+ if (typeof document !== 'undefined') {
156
+ setTimeout(() => {
157
+ const element = document.getElementById(section);
158
+ if (element) {
159
+ element.scrollIntoView({ behavior: 'smooth' });
160
+ }
161
+ }, 500);
162
+ }
162
163
  }
163
164
  resetForm = () => {
164
165
  this.reset = !this.reset;
@@ -214,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
214
215
  type: Component,
215
216
  args: [{ selector: 'app-product-detail-ec', standalone: true, imports: [VariantsEcComponent], template: "" }]
216
217
  }], ctorParameters: () => [] });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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LFNBQWM7UUFDNUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLCtEQUErRDtRQUMvRCxJQUFJLE9BQVEsSUFBWSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxJQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzt3R0FsT1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IsaUZDMUJyQyxFQUFBOzs0RkQwQmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RvciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UsIENoYW5uZWxTZXJ2aWNlLCBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCBQTEFURk9STV9JRCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlLCBQcm9kdWN0c1NlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcclxuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFZhcmlhbnRzRWNDb21wb25lbnQgfSBmcm9tICcuLi92YXJpYW50cy1lYy92YXJpYW50cy1lYy5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1kZXRhaWwtZWMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1ZhcmlhbnRzRWNDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERldGFpbEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSlcclxuICBwcml2YXRlIF9vcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UgPSBpbmplY3QoT3B0aW9uc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3Byb2R1Y3REZXRhaWxTZXJ2aWNlOiBQcm9kdWN0RGV0YWlsU2VydmljZSA9IGluamVjdChQcm9kdWN0RGV0YWlsU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgX2FjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XHJcbiAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIHBhcmFtZXRlcnNTZXJ2aWNlID0gaW5qZWN0KFBhcmFtZXRlcnNTZXJ2aWNlKTtcclxuICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBwcml2YXRlIF9tZXRhOiBNZXRhID0gaW5qZWN0KE1ldGEpO1xyXG4gIHByaXZhdGUgX3RpdGxlOiBUaXRsZSA9IGluamVjdChUaXRsZSk7XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICBwdWJsaWMgcHJvZHVjdCQ6IE9ic2VydmFibGU8UHJvZHVjdCB8IG51bGw+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UucHJvZHVjdCQ7XHJcbiAgcHVibGljIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5vcHRpb25zJDtcclxuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFzc29jaWF0ZWREYXRhJDtcclxuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgY3VycmVudFByb2R1Y3RJZD86IHN0cmluZztcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1lZGlhVXJsID0gdGhpcy5fY29uc3RzLm1lZGlhVXJsKCk7XHJcbiAgcHVibGljIGNvZGU6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBzaG93Rm9ybUNvbnRhY3QgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1Jldmlld3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcXVhbnRpdHk6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMSk7XHJcbiAgcHVibGljIGlzQWRkaW5nVG9DYXJ0OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgcHVibGljIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmdldFBhcmFtZXRlcnMoKTtcclxuICBwdWJsaWMgaGFzUGFyYW1zID0gdGhpcy5wYXJhbWV0ZXJzU2VydmljZS5oYXNQYXJhbXNcclxuICBwdWJsaWMgY3JlZGl0QWNjb3VudFNob3dQcmljZXM6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuICAvLyBBZ3JlZ2FyIGVzdGEgcHJvcGllZGFkIGFsIGluaWNpbyBkZSBsYSBjbGFzZVxyXG4gIHByaXZhdGUgcHJvZHVjdFNpZ25hbCA9IHNpZ25hbDxQcm9kdWN0IHwgbnVsbD4obnVsbCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2FjdGl2ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHF1ZXJ5UGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5jb2RlID0gcXVlcnlQYXJhbXNbXCJpZFwiXTtcclxuICAgICAgdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UubG9hZFByb2R1Y3QodGhpcy5jb2RlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xyXG4gICAgICB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5sb2FkUHJvZHVjdCh0aGlzLmNvZGUpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxTZXJ2aWNlKS5jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1Jldmlld3MgPSBjaGFubmVsLnNob3dSZXZpZXdzO1xyXG4gICAgICB0aGlzLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyA9ICEhY2hhbm5lbC5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XHJcbiAgICAgIHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9vcHRpb25zU2VydmljZS5nZXRDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcztcclxuICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLl9jYXJ0U2VydmljZS5zaG93UHJpY2UkLnN1YnNjcmliZSgoc2hvd1ByaWNlKSA9PiB7XHJcbiAgICAgIHRoaXMuY3JlZGl0QWNjb3VudFNob3dQcmljZXMgPSBzaG93UHJpY2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnByb2R1Y3QkLnN1YnNjcmliZShwcm9kdWN0ID0+IHtcclxuICAgICAgdGhpcy5wcm9kdWN0U2lnbmFsLnNldChwcm9kdWN0KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wcm9kdWN0JC5zdWJzY3JpYmUocHJvZHVjdCA9PiB7XHJcbiAgICAgIGlmIChwcm9kdWN0KSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhVGFncyhwcm9kdWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBTdXNjcmliaXJzZSBhIGxvcyBjYW1iaW9zIGRlIHBhcsOhbWV0cm9zIGRlIGxhIHJ1dGFcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgbmV3UHJvZHVjdElkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICBpZiAobmV3UHJvZHVjdElkICYmIG5ld1Byb2R1Y3RJZCAhPT0gdGhpcy5jdXJyZW50UHJvZHVjdElkKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UHJvZHVjdElkID0gbmV3UHJvZHVjdElkO1xyXG5cclxuICAgICAgICAvLyBSZXNldGVhciBlbCBlc3RhZG8gZGVsIG1vZGFsIGRlIHJlc2XDsWFzIGN1YW5kbyBjYW1iaWUgZWwgcHJvZHVjdG9cclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3TW9kYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0YVRhZ3MocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgY29uc3QgZGVzY3JpcGNpb25MaW1waWEgPSBoZS5kZWNvZGUocHJvZHVjdC5kZXNjcmlwdGlvbiB8fCAnJykucmVwbGFjZSgvPFtePl0qPi9nLCAnICcpLnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5fY29uc3RzLmdldEZyb250ZW5kVXJsKCkgKyB0aGlzLl9yb3V0ZXIudXJsOyAgLy8gVVJMIGFic29sdXRhIGRlbCBwcm9kdWN0b1xyXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLl9jb25zdHMuZ2V0QWJzb2x1dGVJbWFnZVVybChBcnJheS5pc0FycmF5KHByb2R1Y3QucGljdHVyZXNkZWZhdWx0KSA/IHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdIDogcHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpO1xyXG5cclxuXHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dGl0bGUnLCBjb250ZW50OiBwcm9kdWN0Lm5hbWUgfHwgJycgfSk7XHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwY2lvbkxpbXBpYSB8fCAnJyB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzppbWFnZScsIGNvbnRlbnQ6IGltYWdlVXJsIHx8ICcnIH0pO1xyXG4gICAgLy8gdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IGN1cnJlbnRVcmwgfSk7XHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICdwcm9kdWN0JyB9KTtcclxuICB9XHJcbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdHh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHR4dC5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgcmV0dXJuIHR4dC52YWx1ZTtcclxuXHJcbiAgfVxyXG4gIHNhbml0aXplZEh0bWwoaHRtbDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgY29uc3QgZGVjb2RlZEh0bWwgPSB0aGlzLmRlY29kZUh0bWwoaHRtbCk7XHJcbiAgICByZXR1cm4gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRlY29kZWRIdG1sKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCgpIHtcclxuICAgIGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldCh0cnVlKTtcclxuICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLnF1YW50aXR5KCkpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldChmYWxzZSk7XHJcbiAgICB9LCAyMDAwKTtcclxuICB9XHJcblxyXG4gIHBsdXMoc3RvY2s/OiBudW1iZXIsIG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcclxuICBjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXHJcbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcclxuICAgIHN0b2NrXHJcbiAgICAgID8gKGN1cnJlbnQgPCBzdG9ja1xyXG4gICAgICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcclxuICAgICAgICAgIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxyXG4gICAgICA6IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyBtdWx0aXBsZVF1YW50aXR5KTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3RvY2tcclxuICAgICAgPyAoY3VycmVudCA8IHN0b2NrXHJcbiAgICAgICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKVxyXG4gICAgICAgICAgOiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5JykpXHJcbiAgICAgIDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpO1xyXG4gIH1cclxufVxyXG5cclxubGVzcyhtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XHJcbiAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLnF1YW50aXR5KCkpOyAvLyA8LS0gZnVlcnphIGEgbsO6bWVyb1xyXG4gIGlmIChtdWx0aXBsZVF1YW50aXR5ICYmIG11bHRpcGxlUXVhbnRpdHkgPiAwKSB7XHJcbiAgICBjdXJyZW50ID4gbXVsdGlwbGVRdWFudGl0eVxyXG4gICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSBtdWx0aXBsZVF1YW50aXR5KVxyXG4gICAgICA6IG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIGN1cnJlbnQgPiAxID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIDEpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbiAgY2hlY2tTdG9jayhzdG9jazogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxyXG4gICAgICB0aGlzLnF1YW50aXR5LnNldChzdG9jayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ29Ub1NlY3Rpb24oc2VjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dGb3JtQ29udGFjdCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb24pO1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlc2V0ID0gIXRoaXMucmVzZXRcclxuICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcclxuICB9XHJcblxyXG4gIC8vIENvbXB1dGVkIHNpZ25hbHMgbcOhcyBlZmljaWVudGVzXHJcbiAgcHVibGljIGhhc0Rpc2NvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xyXG4gICAgaWYgKCFwcm9kdWN0Py5zYWxlcHJpY2UgfHwgIXByb2R1Y3Q/LnByaWNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlLnRvU3RyaW5nKCkpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZS50b1N0cmluZygpKTtcclxuXHJcbiAgICByZXR1cm4gc2FsZVByaWNlID4gMCAmJiBvcmlnaW5hbFByaWNlID4gc2FsZVByaWNlO1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgZGlzY291bnRQZXJjZW50YWdlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmhhc0Rpc2NvdW50KCkpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLnByb2R1Y3RTaWduYWwoKTtcclxuICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IHBhcnNlRmxvYXQocHJvZHVjdC5wcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG5cclxuICAgIGlmIChvcmlnaW5hbFByaWNlIDw9IDAgfHwgc2FsZVByaWNlIDw9IDAgfHwgc2FsZVByaWNlID49IG9yaWdpbmFsUHJpY2UpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChkaXNjb3VudCk7XHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAgKiBNw6l0b2RvIHBhcmEgdHJhY2tlYXIgY2FtYmlvcyBlbiBlbCBwcm9kdWN0SWQgeSBmb3J6YXIgbGEgcmVjcmVhY2nDs24gZGVsIGNvbXBvbmVudGUgcmVsYWNpb25hZG9zXHJcbiAgICAqL1xyXG4gIHRyYWNrQnlQcm9kdWN0SWQoaW5kZXg6IG51bWJlciwgcHJvZHVjdElkOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHByb2R1Y3RJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0ZWEgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7Fhc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRSZXZpZXdNb2RhbCgpOiB2b2lkIHtcclxuICAgIC8vIFNpIGV4aXN0ZSB1biBtw6l0b2RvIHJlc2V0Rm9ybSBkZWwgY29tcG9uZW50ZSBwYWRyZSwgbGxhbWFybG9cclxuICAgIGlmICh0eXBlb2YgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaSBleGlzdGUgdW5hIHByb3BpZWRhZCBzdWNjZXNzLCByZXNldGVhcmxhXHJcbiAgICBpZiAoJ3N1Y2Nlc3MnIGluIHRoaXMpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsK0RBQStEO1FBQy9ELElBQUksT0FBUSxJQUFZLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pELElBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsOENBQThDO1FBQzlDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO3dHQWxPVSx3QkFBd0I7NEZBQXhCLHdCQUF3QixpRkMxQnJDLEVBQUE7OzRGRDBCYSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdG9yLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwsIFBMQVRGT1JNX0lELCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUHJvZHVjdERldGFpbFNlcnZpY2UsIFByb2R1Y3RzU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0ICogYXMgaGUgZnJvbSAnaGUnO1xyXG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgVmFyaWFudHNFY0NvbXBvbmVudCB9IGZyb20gJy4uL3ZhcmlhbnRzLWVjL3ZhcmlhbnRzLWVjLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWRldGFpbC1lYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbVmFyaWFudHNFY0NvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKVxyXG4gIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSA9IGluamVjdChPcHRpb25zU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3REZXRhaWxTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9wcm9kdWN0U2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcclxuICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcclxuICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcGFyYW1ldGVyc1NlcnZpY2UgPSBpbmplY3QoUGFyYW1ldGVyc1NlcnZpY2UpO1xyXG4gIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIHByaXZhdGUgX21ldGE6IE1ldGEgPSBpbmplY3QoTWV0YSk7XHJcbiAgcHJpdmF0ZSBfdGl0bGU6IFRpdGxlID0gaW5qZWN0KFRpdGxlKTtcclxuICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gIHB1YmxpYyBwcm9kdWN0JDogT2JzZXJ2YWJsZTxQcm9kdWN0IHwgbnVsbD4gPSB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5wcm9kdWN0JDtcclxuICBwdWJsaWMgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLm9wdGlvbnMkO1xyXG4gIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UuYXNzb2NpYXRlZERhdGEkO1xyXG4gIHByaXZhdGUgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UHJvZHVjdElkPzogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWVkaWFVcmwgPSB0aGlzLl9jb25zdHMubWVkaWFVcmwoKTtcclxuICBwdWJsaWMgY29kZTogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHNob3dGb3JtQ29udGFjdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UmV2aWV3czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdWNjZXNzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBxdWFudGl0eTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgxKTtcclxuICBwdWJsaWMgaXNBZGRpbmdUb0NhcnQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgcGFyYW1ldGVycyQ6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpO1xyXG4gIHB1YmxpYyBoYXNQYXJhbXMgPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmhhc1BhcmFtc1xyXG4gIHB1YmxpYyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlczogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG4gIC8vIEFncmVnYXIgZXN0YSBwcm9waWVkYWQgYWwgaW5pY2lvIGRlIGxhIGNsYXNlXHJcbiAgcHJpdmF0ZSBwcm9kdWN0U2lnbmFsID0gc2lnbmFsPFByb2R1Y3QgfCBudWxsPihudWxsKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xyXG4gICAgICB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5sb2FkUHJvZHVjdCh0aGlzLmNvZGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuY29kZSA9IHF1ZXJ5UGFyYW1zW1wiaWRcIl07XHJcbiAgICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmxvYWRQcm9kdWN0KHRoaXMuY29kZSk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcclxuICAgICAgdGhpcy5zaG93UmV2aWV3cyA9IGNoYW5uZWwuc2hvd1Jldmlld3M7XHJcbiAgICAgIHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycztcclxuICAgICAgdGhpcy5oaWRlUHJpY2VzID0gISFjaGFubmVsLmhpZGVQcmljZXM7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX29wdGlvbnNTZXJ2aWNlLmdldENhdGVnb3JpZXMoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzO1xyXG4gICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuX2NhcnRTZXJ2aWNlLnNob3dQcmljZSQuc3Vic2NyaWJlKChzaG93UHJpY2UpID0+IHtcclxuICAgICAgdGhpcy5jcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA9IHNob3dQcmljZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucHJvZHVjdCQuc3Vic2NyaWJlKHByb2R1Y3QgPT4ge1xyXG4gICAgICB0aGlzLnByb2R1Y3RTaWduYWwuc2V0KHByb2R1Y3QpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnByb2R1Y3QkLnN1YnNjcmliZShwcm9kdWN0ID0+IHtcclxuICAgICAgaWYgKHByb2R1Y3QpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZU1ldGFUYWdzKHByb2R1Y3QpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZGUgcGFyw6FtZXRyb3MgZGUgbGEgcnV0YVxyXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCBuZXdQcm9kdWN0SWQgPSBwYXJhbXNbJ2lkJ107XHJcbiAgICAgIGlmIChuZXdQcm9kdWN0SWQgJiYgbmV3UHJvZHVjdElkICE9PSB0aGlzLmN1cnJlbnRQcm9kdWN0SWQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQcm9kdWN0SWQgPSBuZXdQcm9kdWN0SWQ7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0ZWFyIGVsIGVzdGFkbyBkZWwgbW9kYWwgZGUgcmVzZcOxYXMgY3VhbmRvIGNhbWJpZSBlbCBwcm9kdWN0b1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdNb2RhbCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVNZXRhVGFncyhwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICBjb25zdCBkZXNjcmlwY2lvbkxpbXBpYSA9IGhlLmRlY29kZShwcm9kdWN0LmRlc2NyaXB0aW9uIHx8ICcnKS5yZXBsYWNlKC88W14+XSo+L2csICcgJykucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLl9jb25zdHMuZ2V0RnJvbnRlbmRVcmwoKSArIHRoaXMuX3JvdXRlci51cmw7ICAvLyBVUkwgYWJzb2x1dGEgZGVsIHByb2R1Y3RvXHJcbiAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMuX2NvbnN0cy5nZXRBYnNvbHV0ZUltYWdlVXJsKEFycmF5LmlzQXJyYXkocHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpID8gcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF0gOiBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCk7XHJcblxyXG5cclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHByb2R1Y3QubmFtZSB8fCAnJyB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXBjaW9uTGltcGlhIHx8ICcnIH0pO1xyXG4gICAgdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmltYWdlJywgY29udGVudDogaW1hZ2VVcmwgfHwgJycgfSk7XHJcbiAgICAvLyB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dXJsJywgY29udGVudDogY3VycmVudFVybCB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0eXBlJywgY29udGVudDogJ3Byb2R1Y3QnIH0pO1xyXG4gIH1cclxuICBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBVc2FyIGhlLmRlY29kZSBlbiBsdWdhciBkZSBkb2N1bWVudCBwYXJhIGNvbXBhdGliaWxpZGFkIFNTUlxyXG4gICAgcmV0dXJuIGhlLmRlY29kZShodG1sKTtcclxuICB9XHJcbiAgc2FuaXRpemVkSHRtbChodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBjb25zdCBkZWNvZGVkSHRtbCA9IHRoaXMuZGVjb2RlSHRtbChodG1sKTtcclxuICAgIHJldHVybiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZEh0bWwpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9DYXJ0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNBZGRpbmdUb0NhcnQoKSB8fCB0aGlzLnF1YW50aXR5KCkgPD0gMCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMucXVhbnRpdHkoKSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KGZhbHNlKTtcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgcGx1cyhzdG9jaz86IG51bWJlciwgbXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xyXG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cclxuICBpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xyXG4gICAgc3RvY2tcclxuICAgICAgPyAoY3VycmVudCA8IHN0b2NrXHJcbiAgICAgICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyBtdWx0aXBsZVF1YW50aXR5KVxyXG4gICAgICAgICAgOiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5JykpXHJcbiAgICAgIDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzdG9ja1xyXG4gICAgICA/IChjdXJyZW50IDwgc3RvY2tcclxuICAgICAgICAgID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpXHJcbiAgICAgICAgICA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcclxuICAgICAgOiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgMSk7XHJcbiAgfVxyXG59XHJcblxyXG5sZXNzKG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcclxuICBjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXHJcbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcclxuICAgIGN1cnJlbnQgPiBtdWx0aXBsZVF1YW50aXR5XHJcbiAgICAgID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIG11bHRpcGxlUXVhbnRpdHkpXHJcbiAgICAgIDogbnVsbDtcclxuICB9IGVsc2Uge1xyXG4gICAgY3VycmVudCA+IDEgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gMSkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuICBjaGVja1N0b2NrKHN0b2NrOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnF1YW50aXR5KCkgPj0gc3RvY2spXHJcbiAgICAgIHRoaXMucXVhbnRpdHkuc2V0KHN0b2NrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnb1RvU2VjdGlvbihzZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0Zvcm1Db250YWN0ID0gdHJ1ZTtcclxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uKTtcclxuICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlc2V0ID0gIXRoaXMucmVzZXRcclxuICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcclxuICB9XHJcblxyXG4gIC8vIENvbXB1dGVkIHNpZ25hbHMgbcOhcyBlZmljaWVudGVzXHJcbiAgcHVibGljIGhhc0Rpc2NvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xyXG4gICAgaWYgKCFwcm9kdWN0Py5zYWxlcHJpY2UgfHwgIXByb2R1Y3Q/LnByaWNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlLnRvU3RyaW5nKCkpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZS50b1N0cmluZygpKTtcclxuXHJcbiAgICByZXR1cm4gc2FsZVByaWNlID4gMCAmJiBvcmlnaW5hbFByaWNlID4gc2FsZVByaWNlO1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgZGlzY291bnRQZXJjZW50YWdlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmhhc0Rpc2NvdW50KCkpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLnByb2R1Y3RTaWduYWwoKTtcclxuICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IHBhcnNlRmxvYXQocHJvZHVjdC5wcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG5cclxuICAgIGlmIChvcmlnaW5hbFByaWNlIDw9IDAgfHwgc2FsZVByaWNlIDw9IDAgfHwgc2FsZVByaWNlID49IG9yaWdpbmFsUHJpY2UpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChkaXNjb3VudCk7XHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAgKiBNw6l0b2RvIHBhcmEgdHJhY2tlYXIgY2FtYmlvcyBlbiBlbCBwcm9kdWN0SWQgeSBmb3J6YXIgbGEgcmVjcmVhY2nDs24gZGVsIGNvbXBvbmVudGUgcmVsYWNpb25hZG9zXHJcbiAgICAqL1xyXG4gIHRyYWNrQnlQcm9kdWN0SWQoaW5kZXg6IG51bWJlciwgcHJvZHVjdElkOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHByb2R1Y3RJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0ZWEgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7Fhc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRSZXZpZXdNb2RhbCgpOiB2b2lkIHtcclxuICAgIC8vIFNpIGV4aXN0ZSB1biBtw6l0b2RvIHJlc2V0Rm9ybSBkZWwgY29tcG9uZW50ZSBwYWRyZSwgbGxhbWFybG9cclxuICAgIGlmICh0eXBlb2YgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaSBleGlzdGUgdW5hIHByb3BpZWRhZCBzdWNjZXNzLCByZXNldGVhcmxhXHJcbiAgICBpZiAoJ3N1Y2Nlc3MnIGluIHRoaXMpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
@@ -1,4 +1,5 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, PLATFORM_ID, Inject } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
2
3
  import { filter } from 'rxjs/operators';
3
4
  import { ComponentHelper } from '../../classes/component-helper';
4
5
  import { skipWhile } from 'rxjs/operators';
@@ -12,6 +13,7 @@ export class StoresEcComponent extends ComponentHelper {
12
13
  storesService;
13
14
  consts;
14
15
  sanitizer;
16
+ platformId;
15
17
  stores = new BehaviorSubject([]);
16
18
  filterStores = null;
17
19
  storesAll = null;
@@ -24,11 +26,12 @@ export class StoresEcComponent extends ComponentHelper {
24
26
  markers = [];
25
27
  locations = [];
26
28
  ultimoElementoSeleccionado = null;
27
- constructor(storesService, consts, sanitizer) {
29
+ constructor(storesService, consts, sanitizer, platformId) {
28
30
  super();
29
31
  this.storesService = storesService;
30
32
  this.consts = consts;
31
33
  this.sanitizer = sanitizer;
34
+ this.platformId = platformId;
32
35
  this.urlmap = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.google.com/maps/embed?pb=!1m10!1m8!1m3!1d13137.519688957545!2d-58.3888163!3d-34.5945533!3m2!1i1024!2i768!4f13.1!5e0!3m2!1ses-419!2sar!4v1523889204148');
33
36
  this.storesService.stores
34
37
  .pipe(filter((stores) => Array.isArray(stores) && stores.length > 0))
@@ -101,6 +104,8 @@ export class StoresEcComponent extends ComponentHelper {
101
104
  return true;
102
105
  };
103
106
  initMap() {
107
+ if (!isPlatformBrowser(this.platformId))
108
+ return;
104
109
  this.storesService.stores.pipe(skipWhile(stores => !stores || stores.length === 0) // Omitir valores vacíos
105
110
  ).subscribe((res) => {
106
111
  // this.stores.next(res ?? []); // Eliminado para no sobrescribir el listado principal
@@ -121,7 +126,10 @@ export class StoresEcComponent extends ComponentHelper {
121
126
  });
122
127
  const center = bounds.getCenter();
123
128
  const style = [{ "elementType": "geometry", "stylers": [{ "color": "#212121" }] }, { "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "elementType": "labels.text.stroke", "stylers": [{ "color": "#212121" }] }, { "featureType": "administrative", "elementType": "geometry", "stylers": [{ "color": "#757575" }] }, { "featureType": "administrative.country", "elementType": "labels.text.fill", "stylers": [{ "color": "#9e9e9e" }] }, { "featureType": "administrative.locality", "elementType": "labels.text.fill", "stylers": [{ "color": "#bdbdbd" }] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "poi.business", "stylers": [{ "visibility": "off" }] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [{ "color": "#181818" }] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "poi.park", "elementType": "labels.text.stroke", "stylers": [{ "color": "#1b1b1b" }] }, { "featureType": "road", "elementType": "geometry.fill", "stylers": [{ "color": "#2c2c2c" }] }, { "featureType": "road", "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "road", "elementType": "labels.text.fill", "stylers": [{ "color": "#8a8a8a" }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#373737" }] }, { "featureType": "road.arterial", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [{ "color": "#3c3c3c" }] }, { "featureType": "road.highway", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway.controlled_access", "elementType": "geometry", "stylers": [{ "color": "#4e4e4e" }] }, { "featureType": "road.local", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "transit", "stylers": [{ "visibility": "off" }] }, { "featureType": "transit", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "water", "elementType": "geometry", "stylers": [{ "color": "#000000" }] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [{ "color": "#3d3d3d" }] }];
124
- this.map = new google.maps.Map(document.getElementById('map'), {
129
+ const mapElement = document.getElementById('map');
130
+ if (!mapElement)
131
+ return;
132
+ this.map = new google.maps.Map(mapElement, {
125
133
  zoom: 12,
126
134
  center: center, // Centrar el mapa en el centro calculado
127
135
  styles: style // Aplica los estilos personalizados
@@ -139,6 +147,8 @@ export class StoresEcComponent extends ComponentHelper {
139
147
  marker.set('id', location.id); // Associate marker with its ID
140
148
  this.markers.push(marker);
141
149
  marker.addListener('click', () => {
150
+ if (typeof document === 'undefined')
151
+ return;
142
152
  const elemento = document.getElementById(location.id);
143
153
  const contenedor = document.getElementById('home');
144
154
  if (elemento && contenedor) {
@@ -166,6 +176,8 @@ export class StoresEcComponent extends ComponentHelper {
166
176
  });
167
177
  }
168
178
  showStoreOnMap(storeCode) {
179
+ if (!isPlatformBrowser(this.platformId))
180
+ return;
169
181
  this.stopBounce();
170
182
  const marker = this.markers.find(m => m.get('id') === storeCode);
171
183
  const elemento = document.getElementById(storeCode);
@@ -187,11 +199,14 @@ export class StoresEcComponent extends ComponentHelper {
187
199
  marker.setAnimation(null);
188
200
  });
189
201
  }
190
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, deps: [{ token: i1.StoresService }, { token: i2.CoreConstantsService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
202
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, deps: [{ token: i1.StoresService }, { token: i2.CoreConstantsService }, { token: i3.DomSanitizer }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
191
203
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoresEcComponent, isStandalone: true, selector: "app-store-ec", usesInheritance: true, ngImport: i0, template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }] });
192
204
  }
193
205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, decorators: [{
194
206
  type: Component,
195
207
  args: [{ selector: 'app-store-ec', standalone: true, imports: [TranslateModule], template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"] }]
196
- }], ctorParameters: () => [{ type: i1.StoresService }, { type: i2.CoreConstantsService }, { type: i3.DomSanitizer }] });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQWNoQztJQUFxQztJQUF5QztJQWJ6RixNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsWUFBWSxHQUFtQixJQUFJLENBQUE7SUFDbkMsU0FBUyxHQUFtQixJQUFJLENBQUE7SUFDaEMsZUFBZSxHQUFtQixJQUFJLENBQUE7SUFDdEMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUNmLE1BQU0sQ0FBQztJQUNQLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDYixHQUFHLENBQVU7SUFDYixHQUFHLENBQU07SUFDVCxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdkIsMEJBQTBC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RUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGdDQUFnQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFD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LFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztRQUM3QyxDQUFDO1FBQ0YsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7d0dBeE1TLGlCQUFpQjs0RkFBakIsaUJBQWlCLCtGQ25COUIsMjNFQXdEa0IsaVdEdkNKLGVBQWU7OzRGQUVoQixpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL3N0b3Jlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtc3RvcmUtZWMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdzdG9yZXMtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJ3N0b3Jlcy1lYy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZXNFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciAge1xyXG4gICAgcHVibGljIHN0b3JlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RvcmVbXT4oW10pO1xyXG4gICAgcHVibGljIGZpbHRlclN0b3JlczogU3RvcmVbXSB8IG51bGwgPSBudWxsXHJcbiAgICBwdWJsaWMgc3RvcmVzQWxsOiBTdG9yZVtdIHwgbnVsbCA9IG51bGxcclxuICAgIHB1YmxpYyBleGNsdXNpdmVTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxyXG4gICAgcHVibGljIGltYWdlTWFwID0gdHJ1ZVxyXG4gICAgcHVibGljIHVybG1hcDtcclxuICAgIHB1YmxpYyBwcm92aW5jZXMgPSBbXVxyXG4gICAgcHJpdmF0ZSB1cmwhOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIG1hcDogYW55O1xyXG4gICAgcHJpdmF0ZSBtYXJrZXJzOiBhbnlbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgdWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG86IGFueSA9IG51bGw7XHJcblxyXG4gICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSwgcHVibGljIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgLCBwcm90ZWN0ZWQgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnKTtcclxuICAgIHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXNcclxuICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoc3RvcmVzOiBTdG9yZVtdIHwgbnVsbCk6IHN0b3JlcyBpcyBTdG9yZVtdID0+IEFycmF5LmlzQXJyYXkoc3RvcmVzKSAmJiBzdG9yZXMubGVuZ3RoID4gMClcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoc3RvcmVzID0+IHtcclxuICAgICAgICB0aGlzLnN0b3Jlc0FsbCA9IHN0b3JlcztcclxuICAgICAgICBpZiAoc3RvcmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLm5leHQoc3RvcmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leGNsdXNpdmVTdG9yZXMgPSBzdG9yZXMgPyBzdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmV4Y2x1c2l2ZSApIDogbnVsbDtcclxuICAgICAgICAvLyB0aGlzLnNlbGVjdENoYW5nZSgnJyk7XHJcbi8vICAgIGNvbnNvbGUubG9nKCdTdG9yZXM6Jywgc3RvcmVzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lY09uQ29uc3RydWN0KCk7XHJcbn1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVNYXAodXJsOnN0cmluZykge1xyXG4gICAgICAgIHVybCA9IHVybC5pbmNsdWRlcyAoJ2VtYmVkJykgPyB1cmwgOiAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnXHJcbiAgICAgICAgdGhpcy51cmxtYXAgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgdG9kYXMgbGEgcHJvdmluY2lhcyBxdWUgZmlndXJlbiBlbiBlbCBhcnJlZ2xvXHJcbiAgICAgKiBAcGFyYW0gc3RvcmVzIEFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHJldHVybnMge0FycmF5fSBBcnJlZ2xvIGRlIHByb3ZpbmNpYXNcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvdmljZXMgPSAoc3RvcmVzOiBTdG9yZVtdKSA9PiB7XHJcbiAgICAgICAgbGV0IHByb3ZpbmNlc09wdDogYW55W10gPSBbXVxyXG4gICAgICAgIHN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3ZpbmNlc09wdC5maW5kKHMgPT4gcy5jb2RlID09IHN0b3JlLnByb3ZpbmNlLmNvZGUpID09ICB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpbmNlc09wdC5wdXNoKHN0b3JlLnByb3ZpbmNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb3ZpbmNlc09wdFxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW4gYXJyZWdsbyBkZSBvYmpldG9zIGZvcm1hZG8gcG9yIGxhcyBjbGF2ZXNcclxuICAgICAqICAgICAgXCJwcm92aW5jZVwiKGNvbnRpZW5lIHVuIG9iamV0byBwcm92aW5jaWEpIHlcclxuICAgICAqICAgICAgXCJzdG9yZXNcIiAoY29udGllbmUgdW4gYXJyZWdsbyBkZSB0aWVuZGFzIHBlcnRlbmVjaWVudGVzIGEgbGEgcHJvdmluY2lhKVxyXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzIGEgbGEgcXVlIHNlIGxlIHF1aWVyZSBhcGxpY2FyIGxhIGRpdmlzaW9uIHBvciBwcm92aW5jaWFcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTx7XCJwcm92aW5jZVwiLCBcInN0b3Jlc1wifT59XHJcbiAgICAgKi9cclxuICAgIGdldFN0b3Jlc0J5UHJvdmluY2VzID0gKHN0b3JlczogU3RvcmVbXSA9IHRoaXMuc3RvcmVzLnZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0b3Jlc0J5UHJvdmluY2VzOiB7IHByb3ZpbmNlOiBhbnksIHN0b3JlczogU3RvcmVbXSB9W10gPSBbXVxyXG4gICAgICAgIGlmKHN0b3Jlcyl7XHJcbiAgICAgICAgICAgIGxldCBwcm92aW5jZXMgPSB0aGlzLmdldFByb3ZpY2VzKHN0b3JlcylcclxuICAgICAgICAgICAgcHJvdmluY2VzLmZvckVhY2goIGVsZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHN0b3Jlcz8uZmlsdGVyKHN0b3JlID0+ICBzdG9yZS5wcm92aW5jZS5jb2RlID09IGVsZW0uY29kZSlcclxuICAgICAgICAgICAgICAgIHN0b3Jlc0J5UHJvdmluY2VzLnB1c2goe3Byb3ZpbmNlOmVsZW0sc3RvcmVzOmF1eH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdG9yZXNCeVByb3ZpbmNlc1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgbGFzIHRpZW5kYXMgY29uL3NpbiByZXRpcm8gZW4gZWwgbG9jYWxcclxuICAgICAqIEBwYXJhbSBzdG9yZXMgT3BjaW9uYWwsIGFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHBhcmFtIGNvbmQgT3BjaW9uYWwsIFNpIGVzIFwidHJ1ZVwiIG9idGllbmUgbGFzIHRpZW5kYXMgY29uIHJldGlybyBsb2NhbCBjYXNvIGNvbnRyYXJpbyBcImZhbHNlXCJcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcclxuICAgICAqL1xyXG4gICAgZ2V0UGlja3VwU3RvcmVzID0gKHN0b3JlcyA9IHRoaXMuc3RvcmVzLnZhbHVlLCBjb25kOkJvb2xlYW4gPSB0cnVlKSA9PiBzdG9yZXMgJiYgc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBjb25kID09IHN0b3JlLnBpY2t1cFN0b3JlKVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1ldG9kbyBxdWUgZGV2dWVsdmUgbGFzIHRpZW5kYXMgcXVlIE5PIHNvbiBleGNsdXNpdmFzLlxyXG4gICAgICogQHJldHVybnMge0FycmF5PFN0b3JlPn0gQXJyZWdsbyBkZSBTdG9yZVxyXG4gICAgICovXHJcbiAgICBnZXROb25FeGNsdXNpdmVTdG9yZXMgPSAoKSA9PiB0aGlzLnN0b3Jlcy52YWx1ZS5maWx0ZXIoc3RvcmUgPT4gIXN0b3JlLmV4Y2x1c2l2ZSApXHJcblxyXG4gICAgc2VsZWN0Q2hhbmdlID0gKHNlbGVjdDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdG9yZXMgPSBzZWxlY3QgIT09ICcnICYmIHRoaXMuc3RvcmVzQWxsXHJcbiAgICAgICAgICAgID8gdGhpcy5zdG9yZXNBbGwuZmlsdGVyKHN0b3JlID0+IHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gc2VsZWN0KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RvcmVzQWxsO1xyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE1hcCgpOiB2b2lkIHtcclxuXHJcbiAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKFxyXG4gICAgICAgICBza2lwV2hpbGUoc3RvcmVzID0+ICFzdG9yZXMgfHwgc3RvcmVzLmxlbmd0aCA9PT0gMCkgLy8gT21pdGlyIHZhbG9yZXMgdmFjw61vc1xyXG4gICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAvLyB0aGlzLnN0b3Jlcy5uZXh0KHJlcyA/PyBbXSk7IC8vIEVsaW1pbmFkbyBwYXJhIG5vIHNvYnJlc2NyaWJpciBlbCBsaXN0YWRvIHByaW5jaXBhbFxyXG5cclxuICAgICAgICAgICB0aGlzLnN0b3Jlcy52YWx1ZS5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgIGxldCBkYXRvcyA9IHtcclxuICAgICAgICAgICAgICAgaWQ6IHN0b3JlLmNvZGUsXHJcbiAgICAgICAgICAgICAgIGxhdDogcGFyc2VGbG9hdChzdG9yZS5sYXRpdHVkZSAhPT0gdW5kZWZpbmVkID8gc3RvcmUubGF0aXR1ZGUudG9TdHJpbmcoKSA6ICcwJyksXHJcbiAgICAgICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChzdG9yZS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxvbmdpdHVkZS50b1N0cmluZygpIDogJzAnKSxcclxuICAgICAgICAgICAgICAgdGl0bGU6IHN0b3JlLm5hbWUgKyAnIC0gJyArIHN0b3JlLmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdG9yZS5waG9uZSxcclxuICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhkYXRvcylcclxuICAgICAgICAgICAgIHRoaXMubG9jYXRpb25zLnB1c2goZGF0b3MpO1xyXG5cclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpKTtcclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBbe1wiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMjEyMTIxXCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LnN0cm9rZVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmNvdW50cnlcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjOWU5ZTllXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmxvY2FsaXR5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiI2JkYmRiZFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2lcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5idXNpbmVzc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzE4MTgxOFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kucGFya1wiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxYjFiMWJcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyYzJjMmNcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzhhOGE4YVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmFydGVyaWFsXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzNzM3MzdcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzYzNjM2NcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmhpZ2h3YXkuY29udHJvbGxlZF9hY2Nlc3NcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzRlNGU0ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzYxNjE2MVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMDAwMDAwXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcIndhdGVyXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzNkM2QzZFwifV19XTtcclxuICAgICAgICAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7XHJcbiAgICAgICAgICAgICB6b29tOiAxMixcclxuICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xyXG4gICAgICAgICAgICAgc3R5bGVzOiBzdHlsZSAvLyBBcGxpY2EgbG9zIGVzdGlsb3MgcGVyc29uYWxpemFkb3NcclxuICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXHJcbiAgICAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgICAgICAgICAgIHRpdGxlOiBsb2NhdGlvbi50aXRsZSxcclxuICAgICAgICAgICAgICAgaWNvbjoge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi4uLy4uLy4uL2Fzc2V0cy9sb2NhdGlvbi5zdmdcIixcclxuICAgICAgICAgICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDMwLCAzMClcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICBtYXJrZXIuc2V0KCdpZCcsIGxvY2F0aW9uLmlkKTsgLy8gQXNzb2NpYXRlIG1hcmtlciB3aXRoIGl0cyBJRFxyXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgICAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsb2NhdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgICAgY29uc3QgY29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgIGlmIChlbGVtZW50byAmJiBjb250ZW5lZG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbmVkb3Iuc2Nyb2xsVG8oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBlbGVtZW50by5vZmZzZXRUb3AgLSBjb250ZW5lZG9yLm9mZnNldFRvcCArIGNvbnRlbmVkb3Iuc2Nyb2xsVG9wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgLy8gUXVpdGFyIGxhIGNsYXNlIGRlbCDDumx0aW1vIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAvLyBBZ3JlZ2FyIHVuYSBjbGFzZSBhbCBudWV2byBlbGVtZW50byBzZWxlY2Npb25hZG9cclxuICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcclxuICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvID0gZWxlbWVudG87XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICB0aGlzLnN0b3BCb3VuY2UoKTtcclxuICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xyXG4gICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcyk7XHJcbiAgICAgICAgIH0sXHJcbiAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgb2J0ZW5lciBsYXMgdGllbmRhczonLCBlcnJvcik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICk7XHJcbiAgICAgICB9KTtcclxuXHJcbiAgICAgfVxyXG5cclxuICAgc2hvd1N0b3JlT25NYXAoc3RvcmVDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xyXG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcclxuICAgICAgIGNvbnN0IGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3RvcmVDb2RlKTtcclxuICAgICAgIGlmICh0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cclxuICAgICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkby5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWdyZWdhciB1bmEgY2xhc2UgYWwgbnVldm8gZWxlbWVudG8gc2VsZWNjaW9uYWRvXHJcbiAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbyA9IGVsZW1lbnRvO1xyXG4gICAgICAgIH1cclxuICAgICAgIGlmIChtYXJrZXIpIHtcclxuICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xyXG4gICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBzdG9wQm91bmNlKCl7XHJcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xyXG4gICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG5cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbXgtYXV0byBteS00IHB4LTMgYmItcyBidC1tZC1zIHB5LTFcIj5cclxuICAgIDxzdHJvbmc+e3sgJ3N0b3JlcycgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cclxuPC9kaXY+XHJcbkBpZihzdG9yZXMpe1xyXG48ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImV4YW1wbGVGb3JtQ29udHJvbFNlbGVjdDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIFt2YWx1ZV09XCInJ1wiPlNlbGVjY2lvbmUgcHJvdmluY2lhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBzY3JvbGxlYWJsZVwiICpuZ0lmPVwiZmlsdGVyU3RvcmVzICYmIGZpbHRlclN0b3Jlcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0xXCIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIGZpbHRlclN0b3JlczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIlwiPjxzdHJvbmc+e3sgc3RvcmUubmFtZSB9fTwvc3Ryb25nPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IHN0b3JlLmFkZHJlc3MgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cInN0b3JlLm5vdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJzdG9yZS51cmxNYXBcIiAoY2xpY2spPVwidXBkYXRlTWFwIChzdG9yZS51cmxNYXApXCIgY2xhc3M9XCJjdXN0b20tYVwiPlZlciBtYXBhPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IG9yZGVyLTIgb3JkZXItbWQtMyBteS00IG10LW1kLTBcIj5cclxuXHJcbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG59QGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktNSBhbGlnbi1pdGVtcy1jZW50ZXIgYWx0by10b3RhbFwiPlxyXG4gICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyAnbm8tc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
208
+ }], ctorParameters: () => [{ type: i1.StoresService }, { type: i2.CoreConstantsService }, { type: i3.DomSanitizer }, { type: Object, decorators: [{
209
+ type: Inject,
210
+ args: [PLATFORM_ID]
211
+ }] }] });
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBVXRELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBZTNDO0lBQ0E7SUFDRztJQUNxQjtJQWpCeEIsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFlBQVksR0FBbUIsSUFBSSxDQUFBO0lBQ25DLFNBQVMsR0FBbUIsSUFBSSxDQUFBO0lBQ2hDLGVBQWUsR0FBbUIsSUFBSSxDQUFBO0lBQ3RDLFFBQVEsR0FBRyxJQUFJLENBQUE7SUFDZixNQUFNLENBQUM7SUFDUCxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ2IsR0FBRyxDQUFVO0lBQ2IsR0FB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RUFBQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsVUFBVSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsVUFBVSxFQUFDLGFBQWEsRUFBQyxvQkFBb0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxlQUFlLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsYUFBYSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGNBQWMsRUFBQyxhQUFhLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFD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QU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsbURBQW1EO1lBQ25ELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUM7UUFDN0MsQ0FBQztRQUNGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO3dHQXJOUyxpQkFBaUIsK0dBa0JsQixXQUFXOzRGQWxCVixpQkFBaUIsK0ZDcEI5QiwyM0VBd0RrQixpV0R0Q0osZUFBZTs7NEZBRWhCLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDSSxjQUFjLGNBR1osSUFBSSxXQUNQLENBQUMsZUFBZSxDQUFDOzswQkFvQnpCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUExBVEZPUk1fSUQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvc3RvcmVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1zdG9yZS1lYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnc3RvcmVzLWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3Jlc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyICB7XHJcbiAgICBwdWJsaWMgc3RvcmVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdG9yZVtdPihbXSk7XHJcbiAgICBwdWJsaWMgZmlsdGVyU3RvcmVzOiBTdG9yZVtdIHwgbnVsbCA9IG51bGxcclxuICAgIHB1YmxpYyBzdG9yZXNBbGw6IFN0b3JlW10gfCBudWxsID0gbnVsbFxyXG4gICAgcHVibGljIGV4Y2x1c2l2ZVN0b3JlczogU3RvcmVbXSB8IG51bGwgPSBudWxsXHJcbiAgICBwdWJsaWMgaW1hZ2VNYXAgPSB0cnVlXHJcbiAgICBwdWJsaWMgdXJsbWFwO1xyXG4gICAgcHVibGljIHByb3ZpbmNlcyA9IFtdXHJcbiAgICBwcml2YXRlIHVybCE6IHN0cmluZztcclxuICAgIHByaXZhdGUgbWFwOiBhbnk7XHJcbiAgICBwcml2YXRlIG1hcmtlcnM6IGFueVtdID0gW107XHJcbiAgICBwcml2YXRlIGxvY2F0aW9uczogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyB1bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbzogYW55ID0gbnVsbDtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHN0b3Jlc1NlcnZpY2U6IFN0b3Jlc1NlcnZpY2UsIFxyXG4gICAgcHVibGljIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UsIFxyXG4gICAgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnKTtcclxuICAgIHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXNcclxuICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoc3RvcmVzOiBTdG9yZVtdIHwgbnVsbCk6IHN0b3JlcyBpcyBTdG9yZVtdID0+IEFycmF5LmlzQXJyYXkoc3RvcmVzKSAmJiBzdG9yZXMubGVuZ3RoID4gMClcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoc3RvcmVzID0+IHtcclxuICAgICAgICB0aGlzLnN0b3Jlc0FsbCA9IHN0b3JlcztcclxuICAgICAgICBpZiAoc3RvcmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLm5leHQoc3RvcmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leGNsdXNpdmVTdG9yZXMgPSBzdG9yZXMgPyBzdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmV4Y2x1c2l2ZSApIDogbnVsbDtcclxuICAgICAgICAvLyB0aGlzLnNlbGVjdENoYW5nZSgnJyk7XHJcbi8vICAgIGNvbnNvbGUubG9nKCdTdG9yZXM6Jywgc3RvcmVzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lY09uQ29uc3RydWN0KCk7XHJcbn1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVNYXAodXJsOnN0cmluZykge1xyXG4gICAgICAgIHVybCA9IHVybC5pbmNsdWRlcyAoJ2VtYmVkJykgPyB1cmwgOiAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnXHJcbiAgICAgICAgdGhpcy51cmxtYXAgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgdG9kYXMgbGEgcHJvdmluY2lhcyBxdWUgZmlndXJlbiBlbiBlbCBhcnJlZ2xvXHJcbiAgICAgKiBAcGFyYW0gc3RvcmVzIEFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHJldHVybnMge0FycmF5fSBBcnJlZ2xvIGRlIHByb3ZpbmNpYXNcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvdmljZXMgPSAoc3RvcmVzOiBTdG9yZVtdKSA9PiB7XHJcbiAgICAgICAgbGV0IHByb3ZpbmNlc09wdDogYW55W10gPSBbXVxyXG4gICAgICAgIHN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3ZpbmNlc09wdC5maW5kKHMgPT4gcy5jb2RlID09IHN0b3JlLnByb3ZpbmNlLmNvZGUpID09ICB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpbmNlc09wdC5wdXNoKHN0b3JlLnByb3ZpbmNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb3ZpbmNlc09wdFxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW4gYXJyZWdsbyBkZSBvYmpldG9zIGZvcm1hZG8gcG9yIGxhcyBjbGF2ZXNcclxuICAgICAqICAgICAgXCJwcm92aW5jZVwiKGNvbnRpZW5lIHVuIG9iamV0byBwcm92aW5jaWEpIHlcclxuICAgICAqICAgICAgXCJzdG9yZXNcIiAoY29udGllbmUgdW4gYXJyZWdsbyBkZSB0aWVuZGFzIHBlcnRlbmVjaWVudGVzIGEgbGEgcHJvdmluY2lhKVxyXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzIGEgbGEgcXVlIHNlIGxlIHF1aWVyZSBhcGxpY2FyIGxhIGRpdmlzaW9uIHBvciBwcm92aW5jaWFcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTx7XCJwcm92aW5jZVwiLCBcInN0b3Jlc1wifT59XHJcbiAgICAgKi9cclxuICAgIGdldFN0b3Jlc0J5UHJvdmluY2VzID0gKHN0b3JlczogU3RvcmVbXSA9IHRoaXMuc3RvcmVzLnZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0b3Jlc0J5UHJvdmluY2VzOiB7IHByb3ZpbmNlOiBhbnksIHN0b3JlczogU3RvcmVbXSB9W10gPSBbXVxyXG4gICAgICAgIGlmKHN0b3Jlcyl7XHJcbiAgICAgICAgICAgIGxldCBwcm92aW5jZXMgPSB0aGlzLmdldFByb3ZpY2VzKHN0b3JlcylcclxuICAgICAgICAgICAgcHJvdmluY2VzLmZvckVhY2goIGVsZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHN0b3Jlcz8uZmlsdGVyKHN0b3JlID0+ICBzdG9yZS5wcm92aW5jZS5jb2RlID09IGVsZW0uY29kZSlcclxuICAgICAgICAgICAgICAgIHN0b3Jlc0J5UHJvdmluY2VzLnB1c2goe3Byb3ZpbmNlOmVsZW0sc3RvcmVzOmF1eH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdG9yZXNCeVByb3ZpbmNlc1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgbGFzIHRpZW5kYXMgY29uL3NpbiByZXRpcm8gZW4gZWwgbG9jYWxcclxuICAgICAqIEBwYXJhbSBzdG9yZXMgT3BjaW9uYWwsIGFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHBhcmFtIGNvbmQgT3BjaW9uYWwsIFNpIGVzIFwidHJ1ZVwiIG9idGllbmUgbGFzIHRpZW5kYXMgY29uIHJldGlybyBsb2NhbCBjYXNvIGNvbnRyYXJpbyBcImZhbHNlXCJcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcclxuICAgICAqL1xyXG4gICAgZ2V0UGlja3VwU3RvcmVzID0gKHN0b3JlcyA9IHRoaXMuc3RvcmVzLnZhbHVlLCBjb25kOkJvb2xlYW4gPSB0cnVlKSA9PiBzdG9yZXMgJiYgc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBjb25kID09IHN0b3JlLnBpY2t1cFN0b3JlKVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1ldG9kbyBxdWUgZGV2dWVsdmUgbGFzIHRpZW5kYXMgcXVlIE5PIHNvbiBleGNsdXNpdmFzLlxyXG4gICAgICogQHJldHVybnMge0FycmF5PFN0b3JlPn0gQXJyZWdsbyBkZSBTdG9yZVxyXG4gICAgICovXHJcbiAgICBnZXROb25FeGNsdXNpdmVTdG9yZXMgPSAoKSA9PiB0aGlzLnN0b3Jlcy52YWx1ZS5maWx0ZXIoc3RvcmUgPT4gIXN0b3JlLmV4Y2x1c2l2ZSApXHJcblxyXG4gICAgc2VsZWN0Q2hhbmdlID0gKHNlbGVjdDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdG9yZXMgPSBzZWxlY3QgIT09ICcnICYmIHRoaXMuc3RvcmVzQWxsXHJcbiAgICAgICAgICAgID8gdGhpcy5zdG9yZXNBbGwuZmlsdGVyKHN0b3JlID0+IHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gc2VsZWN0KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RvcmVzQWxsO1xyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE1hcCgpOiB2b2lkIHtcclxuICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKFxyXG4gICAgICAgICBza2lwV2hpbGUoc3RvcmVzID0+ICFzdG9yZXMgfHwgc3RvcmVzLmxlbmd0aCA9PT0gMCkgLy8gT21pdGlyIHZhbG9yZXMgdmFjw61vc1xyXG4gICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAvLyB0aGlzLnN0b3Jlcy5uZXh0KHJlcyA/PyBbXSk7IC8vIEVsaW1pbmFkbyBwYXJhIG5vIHNvYnJlc2NyaWJpciBlbCBsaXN0YWRvIHByaW5jaXBhbFxyXG5cclxuICAgICAgICAgICB0aGlzLnN0b3Jlcy52YWx1ZS5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgIGxldCBkYXRvcyA9IHtcclxuICAgICAgICAgICAgICAgaWQ6IHN0b3JlLmNvZGUsXHJcbiAgICAgICAgICAgICAgIGxhdDogcGFyc2VGbG9hdChzdG9yZS5sYXRpdHVkZSAhPT0gdW5kZWZpbmVkID8gc3RvcmUubGF0aXR1ZGUudG9TdHJpbmcoKSA6ICcwJyksXHJcbiAgICAgICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChzdG9yZS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxvbmdpdHVkZS50b1N0cmluZygpIDogJzAnKSxcclxuICAgICAgICAgICAgICAgdGl0bGU6IHN0b3JlLm5hbWUgKyAnIC0gJyArIHN0b3JlLmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdG9yZS5waG9uZSxcclxuICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhkYXRvcylcclxuICAgICAgICAgICAgIHRoaXMubG9jYXRpb25zLnB1c2goZGF0b3MpO1xyXG5cclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpKTtcclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBbe1wiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMjEyMTIxXCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LnN0cm9rZVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmNvdW50cnlcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjOWU5ZTllXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmxvY2FsaXR5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiI2JkYmRiZFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2lcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5idXNpbmVzc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzE4MTgxOFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kucGFya1wiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxYjFiMWJcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyYzJjMmNcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzhhOGE4YVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmFydGVyaWFsXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzNzM3MzdcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzYzNjM2NcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmhpZ2h3YXkuY29udHJvbGxlZF9hY2Nlc3NcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzRlNGU0ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzYxNjE2MVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMDAwMDAwXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcIndhdGVyXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzNkM2QzZFwifV19XTtcclxuICAgICAgICAgICBjb25zdCBtYXBFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpO1xyXG4gICAgICAgICAgIGlmICghbWFwRWxlbWVudCkgcmV0dXJuO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcChtYXBFbGVtZW50LCB7XHJcbiAgICAgICAgICAgICB6b29tOiAxMixcclxuICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xyXG4gICAgICAgICAgICAgc3R5bGVzOiBzdHlsZSAvLyBBcGxpY2EgbG9zIGVzdGlsb3MgcGVyc29uYWxpemFkb3NcclxuICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXHJcbiAgICAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgICAgICAgICAgIHRpdGxlOiBsb2NhdGlvbi50aXRsZSxcclxuICAgICAgICAgICAgICAgaWNvbjoge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi4uLy4uLy4uL2Fzc2V0cy9sb2NhdGlvbi5zdmdcIixcclxuICAgICAgICAgICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDMwLCAzMClcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICBtYXJrZXIuc2V0KCdpZCcsIGxvY2F0aW9uLmlkKTsgLy8gQXNzb2NpYXRlIG1hcmtlciB3aXRoIGl0cyBJRFxyXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgICAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxvY2F0aW9uLmlkKTtcclxuICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW5lZG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvbWUnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvICYmIGNvbnRlbmVkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgY29udGVuZWRvci5zY3JvbGxUbyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGVsZW1lbnRvLm9mZnNldFRvcCAtIGNvbnRlbmVkb3Iub2Zmc2V0VG9wICsgY29udGVuZWRvci5zY3JvbGxUb3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcclxuICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICBpZiAodGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAvLyBRdWl0YXIgbGEgY2xhc2UgZGVsIMO6bHRpbW8gZWxlbWVudG8gc2VsZWNjaW9uYWRvXHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgIGlmIChlbGVtZW50bykge1xyXG4gICAgICAgICAgICAgICAgICAgZWxlbWVudG8uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgIG1hcmtlci5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7XHJcbiAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICB0aGlzLm1hcC5maXRCb3VuZHMoYm91bmRzKTtcclxuICAgICAgICAgfSxcclxuICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBvYnRlbmVyIGxhcyB0aWVuZGFzOicsIGVycm9yKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgKTtcclxuICAgICAgIH0pO1xyXG5cclxuICAgICB9XHJcblxyXG4gICBzaG93U3RvcmVPbk1hcChzdG9yZUNvZGU6IHN0cmluZykge1xyXG4gICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICAgICBcclxuICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xyXG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcclxuICAgICAgIGNvbnN0IGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3RvcmVDb2RlKTtcclxuICAgICAgIGlmICh0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cclxuICAgICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkby5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWdyZWdhciB1bmEgY2xhc2UgYWwgbnVldm8gZWxlbWVudG8gc2VsZWNjaW9uYWRvXHJcbiAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbyA9IGVsZW1lbnRvO1xyXG4gICAgICAgIH1cclxuICAgICAgIGlmIChtYXJrZXIpIHtcclxuICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xyXG4gICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBzdG9wQm91bmNlKCl7XHJcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xyXG4gICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG5cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbXgtYXV0byBteS00IHB4LTMgYmItcyBidC1tZC1zIHB5LTFcIj5cclxuICAgIDxzdHJvbmc+e3sgJ3N0b3JlcycgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cclxuPC9kaXY+XHJcbkBpZihzdG9yZXMpe1xyXG48ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImV4YW1wbGVGb3JtQ29udHJvbFNlbGVjdDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIFt2YWx1ZV09XCInJ1wiPlNlbGVjY2lvbmUgcHJvdmluY2lhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBzY3JvbGxlYWJsZVwiICpuZ0lmPVwiZmlsdGVyU3RvcmVzICYmIGZpbHRlclN0b3Jlcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0xXCIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIGZpbHRlclN0b3JlczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIlwiPjxzdHJvbmc+e3sgc3RvcmUubmFtZSB9fTwvc3Ryb25nPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IHN0b3JlLmFkZHJlc3MgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cInN0b3JlLm5vdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJzdG9yZS51cmxNYXBcIiAoY2xpY2spPVwidXBkYXRlTWFwIChzdG9yZS51cmxNYXApXCIgY2xhc3M9XCJjdXN0b20tYVwiPlZlciBtYXBhPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IG9yZGVyLTIgb3JkZXItbWQtMyBteS00IG10LW1kLTBcIj5cclxuXHJcbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG59QGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktNSBhbGlnbi1pdGVtcy1jZW50ZXIgYWx0by10b3RhbFwiPlxyXG4gICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyAnbm8tc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19