@ethlete/query 4.9.2 → 4.11.0

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgUXVlcnlBcmdzT2YsIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlciB7XG4gIC8qKlxuICAgKiBUaGUgdXAgdG8gZGF0ZSBhdXRoIGhlYWRlci5cbiAgICogVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IGluamVjdGVkIGludG8gZXZlcnkgcXVlcnkgdGhhdCBoYXMgdGhlIGBzZWN1cmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBoZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENsZWFudXAgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBvbmNlIHRoZSBhdXRoIHByb3ZpZGVyIGdldHMgZGVzdHJveWVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNsZWFuVXAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUHJvdmlkZXJCYXNpY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHVzZXJuYW1lXG4gICAqL1xuICB1c2VybmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHBhc3N3b3JkXG4gICAqL1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIGhlYWRlciBuYW1lXG4gICAqIEBleGFtcGxlIGBYLUFwaS1LZXlgXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gaGVhZGVyIHZhbHVlXG4gICAqIEBleGFtcGxlIGBteUFwaUtleWBcbiAgICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFByb3ZpZGVyQmVhcmVyQ29uZmlnPFQgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3I+IHtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIGp3dFxuICAgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdG9rZW4gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVmcmVzaENvbmZpZz86IEJlYXJlclJlZnJlc2hDb25maWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmVhcmVyUmVmcmVzaENvbmZpZzxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPiB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgdXNlZCB0byB0cmFkZSB0aGUgcmVmcmVzaCB0b2tlbiBmb3IgYSBuZXcgdG9rZW4gcmVzcG9uc2UuXG4gICAqL1xuICBxdWVyeUNyZWF0b3I6IFQ7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRva2VuIHNob3VsZCBiZSByZWZyZXNoZWQgaWYgKiphbnkqKiBxdWVyeSByZXR1cm5zIGEgNDAxIHJlc3BvbnNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHJlZnJlc2ggdG9rZW5cbiAgICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29va2llIG5hbWUgd2hlcmUgdGhlIHJlZnJlc2ggdG9rZW4gaXMgc3RvcmVkXG4gICAqL1xuICBjb29raWVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgY29va2llXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNvb2tpZUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSB0b2tlbiBleHBpcmVzIHdoZW4gdGhlIHJlZnJlc2ggc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICogQGRlZmF1bHQgMzAwMDAwICg1IG1pbnV0ZXMpXG4gICAqL1xuICByZWZyZXNoQnVmZmVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwaXJlcyBpbiBwcm9wZXJ0eSBuYW1lIGluc2lkZSB0aGUgand0IGJvZHlcbiAgICogQGRlZmF1bHQgJ2V4cCdcbiAgICovXG4gIGV4cGlyZXNJblByb3BlcnR5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGVuIHRoZSB0b2tlbiBzaG91bGQgYmUgcmVmcmVzaGVkLlxuICAgKiBAZGVmYXVsdCBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb25cbiAgICovXG4gIHN0cmF0ZWd5PzogQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneTtcblxuICAvKipcbiAgICogQWRhcHRlciBmdW5jdGlvbiB1c2VkIHRvIGJ1aWxkIHRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSByZWZyZXNoIHJlcXVlc3QuXG4gICAqIEBkZWZhdWx0IHsgYm9keTogeyByZWZyZXNoVG9rZW46IFwicmVmcmVzaFRva2VuXCIgfSB9XG4gICAqL1xuICByZXF1ZXN0QXJnc0FkYXB0ZXI/OiAodG9rZW5zOiB7IHRva2VuOiBzdHJpbmcgfCBudWxsOyByZWZyZXNoVG9rZW46IHN0cmluZyB9KSA9PiBRdWVyeUFyZ3NPZjxUPjtcblxuICAvKipcbiAgICogQWRhcHRlciBmdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3QgdGhlIHRva2VuIGFuZCByZWZyZXNoVG9rZW4gZnJvbSB0aGUgcmVzcG9uc2UuXG4gICAqIEBkZWZhdWx0IHsgdG9rZW46IFwidG9rZW5cIiwgcmVmcmVzaFRva2VuOiBcInJlZnJlc2hUb2tlblwiIH1cbiAgICovXG4gIHJlc3BvbnNlQWRhcHRlcj86IChyZXNwb25zZTogTm9uTnVsbGFibGU8UXVlcnlSZXNwb25zZU9mPFQ+PikgPT4gVG9rZW5SZXNwb25zZTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlZnJlc2ggdGhlIHRva2VuIDUgbWludXRlcyBiZWZvcmUgZXhwaXJhdGlvbi5cbiAgICogVGhlIHRpbWUgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgYHJlZnJlc2hCdWZmZXJgIHByb3BlcnR5LlxuICAgKi9cbiAgQmVmb3JlRXhwaXJhdGlvbiA9ICdiZWZvcmVFeHBpcmF0aW9uJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlblJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBhY2Nlc3MgdG9rZW4gdXNlZCBpbnNpZGUgdGhlIGF1dGhvcml6YXRpb24gaHR0cCBoZWFkZXIuXG4gICAqL1xuICB0b2tlbjogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHJlZnJlc2ggdG9rZW4gdXNlZCBmb3IgcmVxdWVzdGluZyBhIG5ldyB0b2tlbiByZXNwb25zZSBvbmNlIHRoZSBjdXJyZW50IHRva2VzIGlzIGV4cGlyZWQuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgaWYgdGhlIGJlYXJlciByZWZyZXNoIGNvbmZpZyBpcyBzZXQuXG4gICAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgUXVlcnlBcmdzT2YsIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlciB7XG4gIC8qKlxuICAgKiBUaGUgdXAgdG8gZGF0ZSBhdXRoIGhlYWRlci5cbiAgICogVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IGluamVjdGVkIGludG8gZXZlcnkgcXVlcnkgdGhhdCBoYXMgdGhlIGBzZWN1cmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBoZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENsZWFudXAgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBvbmNlIHRoZSBhdXRoIHByb3ZpZGVyIGdldHMgZGVzdHJveWVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNsZWFuVXAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUHJvdmlkZXJCYXNpY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHVzZXJuYW1lXG4gICAqL1xuICB1c2VybmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHBhc3N3b3JkXG4gICAqL1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIGhlYWRlciBuYW1lXG4gICAqIEBleGFtcGxlIGBYLUFwaS1LZXlgXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gaGVhZGVyIHZhbHVlXG4gICAqIEBleGFtcGxlIGBteUFwaUtleWBcbiAgICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFByb3ZpZGVyQmVhcmVyQ29uZmlnPFQgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3I+IHtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIGp3dFxuICAgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdG9rZW4gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVmcmVzaENvbmZpZz86IEJlYXJlclJlZnJlc2hDb25maWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmVhcmVyUmVmcmVzaENvbmZpZzxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPiB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgdXNlZCB0byB0cmFkZSB0aGUgcmVmcmVzaCB0b2tlbiBmb3IgYSBuZXcgdG9rZW4gcmVzcG9uc2UuXG4gICAqL1xuICBxdWVyeUNyZWF0b3I6IFQ7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRva2VuIHNob3VsZCBiZSByZWZyZXNoZWQgaWYgKiphbnkqKiBxdWVyeSByZXR1cm5zIGEgNDAxIHJlc3BvbnNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHJlZnJlc2ggdG9rZW5cbiAgICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29va2llIG5hbWUgd2hlcmUgdGhlIHJlZnJlc2ggdG9rZW4gaXMgc3RvcmVkXG4gICAqL1xuICBjb29raWVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG9mIHRoZSBjb29raWUuIElmIG5vdCBzZXQsIHRoZSBjdXJyZW50IG9yaWdpbiB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiIC0+IFwiZXhhbXBsZS5jb21cIlxuICAgKiBcImh0dHBzOi8vc3ViLmV4YW1wbGUuY29tXCIgLT4gXCJleGFtcGxlLmNvbVwiXG4gICAqL1xuICBjb29raWVEb21haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXlzIHVudGlsIHRoZSBjb29raWUgZXhwaXJlc1xuICAgKiBAZGVmYXVsdCAzMFxuICAgKi9cbiAgY29va2llRXhwaXJlc0luRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGNvb2tpZVxuICAgKiBAZGVmYXVsdCAnLydcbiAgICovXG4gIGNvb2tpZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBjb29raWVcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY29va2llRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHRva2VuIGV4cGlyZXMgd2hlbiB0aGUgcmVmcmVzaCBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICAgKiBAZGVmYXVsdCAzMDAwMDAgKDUgbWludXRlcylcbiAgICovXG4gIHJlZnJlc2hCdWZmZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBpcmVzIGluIHByb3BlcnR5IG5hbWUgaW5zaWRlIHRoZSBqd3QgYm9keVxuICAgKiBAZGVmYXVsdCAnZXhwJ1xuICAgKi9cbiAgZXhwaXJlc0luUHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZW4gdGhlIHRva2VuIHNob3VsZCBiZSByZWZyZXNoZWQuXG4gICAqIEBkZWZhdWx0IEF1dGhCZWFyZXJSZWZyZXNoU3RyYXRlZ3kuQmVmb3JlRXhwaXJhdGlvblxuICAgKi9cbiAgc3RyYXRlZ3k/OiBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBBZGFwdGVyIGZ1bmN0aW9uIHVzZWQgdG8gYnVpbGQgdGhlIHJlcXVlc3QgYm9keSBmb3IgdGhlIHJlZnJlc2ggcmVxdWVzdC5cbiAgICogQGRlZmF1bHQgeyBib2R5OiB7IHJlZnJlc2hUb2tlbjogXCJyZWZyZXNoVG9rZW5cIiB9IH1cbiAgICovXG4gIHJlcXVlc3RBcmdzQWRhcHRlcj86ICh0b2tlbnM6IHsgdG9rZW46IHN0cmluZyB8IG51bGw7IHJlZnJlc2hUb2tlbjogc3RyaW5nIH0pID0+IFF1ZXJ5QXJnc09mPFQ+O1xuXG4gIC8qKlxuICAgKiBBZGFwdGVyIGZ1bmN0aW9uIHVzZWQgdG8gZXh0cmFjdCB0aGUgdG9rZW4gYW5kIHJlZnJlc2hUb2tlbiBmcm9tIHRoZSByZXNwb25zZS5cbiAgICogQGRlZmF1bHQgeyB0b2tlbjogXCJ0b2tlblwiLCByZWZyZXNoVG9rZW46IFwicmVmcmVzaFRva2VuXCIgfVxuICAgKi9cbiAgcmVzcG9uc2VBZGFwdGVyPzogKHJlc3BvbnNlOiBOb25OdWxsYWJsZTxRdWVyeVJlc3BvbnNlT2Y8VD4+KSA9PiBUb2tlblJlc3BvbnNlO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgcmVmcmVzaCB0aGUgdG9rZW4gNSBtaW51dGVzIGJlZm9yZSBleHBpcmF0aW9uLlxuICAgKiBUaGUgdGltZSBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSBgcmVmcmVzaEJ1ZmZlcmAgcHJvcGVydHkuXG4gICAqL1xuICBCZWZvcmVFeHBpcmF0aW9uID0gJ2JlZm9yZUV4cGlyYXRpb24nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICAvKipcbiAgICogVGhlIGFjY2VzcyB0b2tlbiB1c2VkIGluc2lkZSB0aGUgYXV0aG9yaXphdGlvbiBodHRwIGhlYWRlci5cbiAgICovXG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVmcmVzaCB0b2tlbiB1c2VkIGZvciByZXF1ZXN0aW5nIGEgbmV3IHRva2VuIHJlc3BvbnNlIG9uY2UgdGhlIGN1cnJlbnQgdG9rZXMgaXMgZXhwaXJlZC5cbiAgICogVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCBpZiB0aGUgYmVhcmVyIHJlZnJlc2ggY29uZmlnIGlzIHNldC5cbiAgICovXG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nIHwgbnVsbDtcbn1cbiJdfQ==
@@ -46,7 +46,7 @@ export class BearerAuthProvider {
46
46
  if (this.tokens.token) {
47
47
  this._prepareForRefresh();
48
48
  if (this.tokens.refreshToken && this._config.refreshConfig?.cookieName && cookieEnabled) {
49
- setCookie(this._config.refreshConfig.cookieName, this.tokens.refreshToken);
49
+ this._setCookie();
50
50
  }
51
51
  }
52
52
  else if (this.tokens.refreshToken) {
@@ -58,7 +58,7 @@ export class BearerAuthProvider {
58
58
  this._destroy$.unsubscribe();
59
59
  this._currentRefreshQuery$.next(null);
60
60
  if (this._config.refreshConfig?.cookieName) {
61
- deleteCookie(this._config.refreshConfig.cookieName, '/');
61
+ this._deleteCookie();
62
62
  }
63
63
  }
64
64
  enableCookie() {
@@ -69,14 +69,24 @@ export class BearerAuthProvider {
69
69
  throw new Error('No refresh token was provided');
70
70
  }
71
71
  this._config.refreshConfig.cookieEnabled = true;
72
- setCookie(this._config.refreshConfig.cookieName, this.tokens.refreshToken);
72
+ this._setCookie();
73
73
  }
74
74
  disableCookie() {
75
75
  if (!this._config.refreshConfig?.cookieName) {
76
76
  throw new Error('No cookie name was provided');
77
77
  }
78
78
  this._config.refreshConfig.cookieEnabled = false;
79
- deleteCookie(this._config.refreshConfig.cookieName, '/');
79
+ this._deleteCookie();
80
+ }
81
+ _setCookie() {
82
+ if (!this._config.refreshConfig?.cookieName || !this.tokens.refreshToken)
83
+ return;
84
+ setCookie(this._config.refreshConfig.cookieName, this.tokens.refreshToken, this._config.refreshConfig.cookieExpiresInDays, this._config.refreshConfig.cookieDomain, this._config.refreshConfig.cookiePath);
85
+ }
86
+ _deleteCookie() {
87
+ if (!this._config.refreshConfig?.cookieName)
88
+ return;
89
+ deleteCookie(this._config.refreshConfig.cookieName, this._config.refreshConfig.cookiePath, this._config.refreshConfig.cookieDomain);
80
90
  }
81
91
  _prepareForRefresh() {
82
92
  if (!this.tokens.token || !this._config.refreshConfig) {
@@ -140,14 +150,14 @@ export class BearerAuthProvider {
140
150
  }
141
151
  const cookieEnabled = this._config.refreshConfig?.cookieEnabled ?? true;
142
152
  if (this._config.refreshConfig?.cookieName && this.tokens.refreshToken && cookieEnabled) {
143
- setCookie(this._config.refreshConfig.cookieName, this.tokens.refreshToken);
153
+ this._setCookie();
144
154
  }
145
155
  this._prepareForRefresh();
146
156
  }
147
157
  else if (isQueryStateFailure(state)) {
148
158
  this._tokens$.next({ token: null, refreshToken: null });
149
159
  if (this._config.refreshConfig?.cookieName) {
150
- deleteCookie(this._config.refreshConfig.cookieName, '/');
160
+ this._deleteCookie();
151
161
  }
152
162
  }
153
163
  }), takeUntilResponse(), takeUntil(this._destroy$))
@@ -155,4 +165,4 @@ export class BearerAuthProvider {
155
165
  return query;
156
166
  }
157
167
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhcmVyLWF1dGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9iZWFyZXItYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxVQUFVLENBQUM7QUFRbEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxtQ0FBbUM7UUFDckMsT0FBTyxDQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDNUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsS0FBSyxTQUFTO2dCQUNyRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQW9CLE9BQW9DO1FBQXBDLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBcEN2QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNuQywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFFNUUsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQjtZQUM3RCxLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQStCRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUM7UUFDbkUsTUFBTSxXQUFXLEdBQ2YsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVsSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJO1lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssSUFBSSxXQUFXLElBQUksSUFBSTtTQUNsRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQ1gsb0pBQW9KLENBQ3JKLENBQUM7YUFDSDtZQUVELE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLElBQUksYUFBYSxFQUFFO2dCQUN2RixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDNUU7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUU7WUFDMUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRTtZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUVoRCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFakQsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JELE9BQU87U0FDUjtRQUVELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPO1NBQ1I7UUFFRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixJQUFJLEtBQUssQ0FBQztRQUN4RixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQXVCLENBQUM7UUFDdEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLFdBQVcsQ0FBQztRQUU5RSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMscUJBQXFCLFlBQVksQ0FBQyxDQUFDO1NBQ3pGO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLGFBQWEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWxHLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsdUVBQThDLENBQUM7UUFFbkcsUUFBUSxRQUFRLEVBQUU7WUFDaEI7Z0JBQ0UsS0FBSyxDQUFDLGFBQWEsQ0FBQztxQkFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztnQkFDekMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzRCxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRTtZQUMvQyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFckQsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDdkQsT0FBTztTQUNSO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLFlBQVksRUFBRSxtQkFBbUI7U0FDbEMsQ0FBQyxJQUFJO1lBQ0osSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFO1NBQzVDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBMEIsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxxQkFBcUI7YUFDdkIsSUFBSSxDQUNILGdCQUFnQixFQUFFLEVBQ2xCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUU7b0JBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBOEIsQ0FBQyxDQUFDO29CQUVoRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDNUI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLDhEQUE4RDt3QkFDOUQsS0FBSyxFQUFHLEtBQUssQ0FBQyxRQUFnQixDQUFDLE9BQU8sQ0FBQzt3QkFDdkMsOERBQThEO3dCQUM5RCxZQUFZLEVBQUcsS0FBSyxDQUFDLFFBQWdCLENBQUMsY0FBYyxDQUFDO3FCQUN0RCxDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQztnQkFFeEUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksYUFBYSxFQUFFO29CQUN2RixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQzVFO2dCQUVELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO2lCQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFeEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUU7b0JBQzFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzFEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsRUFDRixpQkFBaUIsRUFBRSxFQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxldGVDb29raWUsIGdldENvb2tpZSwgc2V0Q29va2llIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgc3dpdGNoUXVlcnlTdGF0ZSxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHtcbiAgQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneSxcbiAgQXV0aFByb3ZpZGVyLFxuICBBdXRoUHJvdmlkZXJCZWFyZXJDb25maWcsXG4gIFRva2VuUmVzcG9uc2UsXG59IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5pbXBvcnQgeyBkZWNyeXB0QmVhcmVyIH0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIEJlYXJlckF1dGhQcm92aWRlcjxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPiBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFJlZnJlc2hRdWVyeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbnN0cnVjdFF1ZXJ5PFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9rZW5SZXNwb25zZT4oe1xuICAgIHRva2VuOiBudWxsLFxuICAgIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgfSk7XG5cbiAgZ2V0IGhlYWRlcigpIHtcbiAgICByZXR1cm4geyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5fdG9rZW5zJC5nZXRWYWx1ZSgpLnRva2VufWAgfTtcbiAgfVxuXG4gIGdldCB0b2tlbnMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b2tlbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHRva2VucygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5zJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZWZyZXNoUXVlcnkkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVmcmVzaFF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFJlZnJlc2hPblVuYXV0aG9yaXplZFJlc3BvbnNlKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnICYmXG4gICAgICAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVmcmVzaE9uVW5hdXRob3JpemVkUmVzcG9uc2UgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5yZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZSlcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlnOiBBdXRoUHJvdmlkZXJCZWFyZXJDb25maWc8VD4pIHtcbiAgICBjb25zdCBjb29raWVFbmFibGVkID0gX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVFbmFibGVkID8/IHRydWU7XG4gICAgY29uc3QgY29va2llVG9rZW4gPVxuICAgICAgX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lICYmIGNvb2tpZUVuYWJsZWQgPyBnZXRDb29raWUoX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZU5hbWUpID8/IG51bGwgOiBudWxsO1xuXG4gICAgdGhpcy5fdG9rZW5zJC5uZXh0KHtcbiAgICAgIHRva2VuOiBfY29uZmlnLnRva2VuIHx8IG51bGwsXG4gICAgICByZWZyZXNoVG9rZW46IF9jb25maWcucmVmcmVzaENvbmZpZz8udG9rZW4gfHwgY29va2llVG9rZW4gfHwgbnVsbCxcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy50b2tlbnMudG9rZW4gJiYgIXRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbikge1xuICAgICAgaWYgKCFfY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnQSBCZWFyZXJBdXRoUHJvdmlkZXIgd2FzIGNyZWF0ZWQgd2l0aG91dCB0b2tlbiBvciByZWZyZXNoIHRva2VuLiBZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYSBjb29raWVOYW1lIHdoZXJlIHRoZSByZWZyZXNoIHRva2VuIG1pZ2h0IGJlIHN0b3JlZC4nLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLnRva2VuKSB7XG4gICAgICB0aGlzLl9wcmVwYXJlRm9yUmVmcmVzaCgpO1xuXG4gICAgICBpZiAodGhpcy50b2tlbnMucmVmcmVzaFRva2VuICYmIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lICYmIGNvb2tpZUVuYWJsZWQpIHtcbiAgICAgICAgc2V0Q29va2llKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZU5hbWUsIHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRoaXMuX3JlZnJlc2hRdWVyeSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFuVXAoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLl9kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2N1cnJlbnRSZWZyZXNoUXVlcnkkLm5leHQobnVsbCk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgIGRlbGV0ZUNvb2tpZSh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lLCAnLycpO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZUNvb2tpZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvb2tpZSBuYW1lIHdhcyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50b2tlbnMucmVmcmVzaFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlZnJlc2ggdG9rZW4gd2FzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llRW5hYmxlZCA9IHRydWU7XG5cbiAgICBzZXRDb29raWUodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llTmFtZSwgdGhpcy50b2tlbnMucmVmcmVzaFRva2VuKTtcbiAgfVxuXG4gIGRpc2FibGVDb29raWUoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb29raWUgbmFtZSB3YXMgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVFbmFibGVkID0gZmFsc2U7XG5cbiAgICBkZWxldGVDb29raWUodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llTmFtZSwgJy8nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVGb3JSZWZyZXNoKCkge1xuICAgIGlmICghdGhpcy50b2tlbnMudG9rZW4gfHwgIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmVhcmVyID0gZGVjcnlwdEJlYXJlcih0aGlzLnRva2Vucy50b2tlbik7XG5cbiAgICBpZiAoIWJlYXJlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyZXNJblByb3BlcnR5TmFtZSA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmV4cGlyZXNJblByb3BlcnR5TmFtZSB8fCAnZXhwJztcbiAgICBjb25zdCBleHBpcmVzSW4gPSBiZWFyZXJbZXhwaXJlc0luUHJvcGVydHlOYW1lXSBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZml2ZU1pbnV0ZXMgPSA1ICogNjAgKiAxMDAwO1xuICAgIGNvbnN0IHJlZnJlc2hCdWZmZXIgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5yZWZyZXNoQnVmZmVyID8/IGZpdmVNaW51dGVzO1xuXG4gICAgaWYgKGV4cGlyZXNJbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJlYXJlciB0b2tlbiBkb2VzIG5vdCBjb250YWluIGFuICcke2V4cGlyZXNJblByb3BlcnR5TmFtZX0nIHByb3BlcnR5YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVtYWluaW5nVGltZSA9IG5ldyBEYXRlKGV4cGlyZXNJbiAqIDEwMDApLmdldFRpbWUoKSAtIHJlZnJlc2hCdWZmZXIgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuc3RyYXRlZ3kgPz8gQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneS5CZWZvcmVFeHBpcmF0aW9uO1xuXG4gICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgY2FzZSBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb246XG4gICAgICAgIHRpbWVyKHJlbWFpbmluZ1RpbWUpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2hRdWVyeSgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlZnJlc2hRdWVyeSgpIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnkgPSB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5nZXRWYWx1ZSgpO1xuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcoY3VycmVudFF1ZXJ5Py5yYXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50UXVlcnk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbjtcblxuICAgIGlmICghY3VycmVudFJlZnJlc2hUb2tlbiB8fCAhdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVxdWVzdEFyZ3NBZGFwdGVyPy4oe1xuICAgICAgdG9rZW46IHRoaXMudG9rZW5zLnRva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiBjdXJyZW50UmVmcmVzaFRva2VuLFxuICAgIH0pID8/IHtcbiAgICAgIGJvZHk6IHsgcmVmcmVzaFRva2VuOiBjdXJyZW50UmVmcmVzaFRva2VuIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucXVlcnlDcmVhdG9yLnByZXBhcmUoYXJncykuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuX2N1cnJlbnRSZWZyZXNoUXVlcnkkLm5leHQocXVlcnkgYXMgQ29uc3RydWN0UXVlcnk8VD4pO1xuXG4gICAgdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hRdWVyeVN0YXRlKCksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8ucmVzcG9uc2VBZGFwdGVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRva2VucyA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLnJlc3BvbnNlQWRhcHRlcihzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlT2Y8VD4pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3Rva2VucyQubmV4dCh0b2tlbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fdG9rZW5zJC5uZXh0KHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIHRva2VuOiAoc3RhdGUucmVzcG9uc2UgYXMgYW55KVsndG9rZW4nXSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogKHN0YXRlLnJlc3BvbnNlIGFzIGFueSlbJ3JlZnJlc2hUb2tlbiddLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNvb2tpZUVuYWJsZWQgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llRW5hYmxlZCA/PyB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUgJiYgdGhpcy50b2tlbnMucmVmcmVzaFRva2VuICYmIGNvb2tpZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgc2V0Q29va2llKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZU5hbWUsIHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVGb3JSZWZyZXNoKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdG9rZW5zJC5uZXh0KHsgdG9rZW46IG51bGwsIHJlZnJlc2hUb2tlbjogbnVsbCB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSB7XG4gICAgICAgICAgICAgIGRlbGV0ZUNvb2tpZSh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lLCAnLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbFJlc3BvbnNlKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhcmVyLWF1dGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9iZWFyZXItYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxVQUFVLENBQUM7QUFRbEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxtQ0FBbUM7UUFDckMsT0FB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QUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDakIsOERBQThEO3dCQUM5RCxLQUFLLEVBQUcsS0FBSyxDQUFDLFFBQWdCLENBQUMsT0FBTyxDQUFDO3dCQUN2Qyw4REFBOEQ7d0JBQzlELFlBQVksRUFBRyxLQUFLLENBQUMsUUFBZ0IsQ0FBQyxjQUFjLENBQUM7cUJBQ3RELENBQUMsQ0FBQztpQkFDSjtnQkFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDO2dCQUV4RSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxhQUFhLEVBQUU7b0JBQ3ZGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDbkI7Z0JBRUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7aUJBQU0sSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRTtvQkFDMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVsZXRlQ29va2llLCBnZXRDb29raWUsIHNldENvb2tpZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIHN3aXRjaFF1ZXJ5U3RhdGUsXG4gIHRha2VVbnRpbFJlc3BvbnNlLFxufSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIENvbnN0cnVjdFF1ZXJ5LCBRdWVyeVJlc3BvbnNlT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7XG4gIEF1dGhCZWFyZXJSZWZyZXNoU3RyYXRlZ3ksXG4gIEF1dGhQcm92aWRlcixcbiAgQXV0aFByb3ZpZGVyQmVhcmVyQ29uZmlnLFxuICBUb2tlblJlc3BvbnNlLFxufSBmcm9tICcuL2F1dGgtcHJvdmlkZXIudHlwZXMnO1xuaW1wb3J0IHsgZGVjcnlwdEJlYXJlciB9IGZyb20gJy4vYXV0aC1wcm92aWRlci51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBCZWFyZXJBdXRoUHJvdmlkZXI8VCBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcj4gaW1wbGVtZW50cyBBdXRoUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRSZWZyZXNoUXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25zdHJ1Y3RRdWVyeTxUPiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuUmVzcG9uc2U+KHtcbiAgICB0b2tlbjogbnVsbCxcbiAgICByZWZyZXNoVG9rZW46IG51bGwsXG4gIH0pO1xuXG4gIGdldCBoZWFkZXIoKSB7XG4gICAgcmV0dXJuIHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuX3Rva2VucyQuZ2V0VmFsdWUoKS50b2tlbn1gIH07XG4gIH1cblxuICBnZXQgdG9rZW5zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5zJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VucyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVmcmVzaFF1ZXJ5JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFJlZnJlc2hRdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBzaG91bGRSZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgISF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZyAmJlxuICAgICAgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLnJlZnJlc2hPblVuYXV0aG9yaXplZFJlc3BvbnNlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVmcmVzaE9uVW5hdXRob3JpemVkUmVzcG9uc2UpXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogQXV0aFByb3ZpZGVyQmVhcmVyQ29uZmlnPFQ+KSB7XG4gICAgY29uc3QgY29va2llRW5hYmxlZCA9IF9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llRW5hYmxlZCA/PyB0cnVlO1xuICAgIGNvbnN0IGNvb2tpZVRva2VuID1cbiAgICAgIF9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSAmJiBjb29raWVFbmFibGVkID8gZ2V0Q29va2llKF9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lKSA/PyBudWxsIDogbnVsbDtcblxuICAgIHRoaXMuX3Rva2VucyQubmV4dCh7XG4gICAgICB0b2tlbjogX2NvbmZpZy50b2tlbiB8fCBudWxsLFxuICAgICAgcmVmcmVzaFRva2VuOiBfY29uZmlnLnJlZnJlc2hDb25maWc/LnRva2VuIHx8IGNvb2tpZVRva2VuIHx8IG51bGwsXG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMudG9rZW5zLnRva2VuICYmICF0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIGlmICghX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ0EgQmVhcmVyQXV0aFByb3ZpZGVyIHdhcyBjcmVhdGVkIHdpdGhvdXQgdG9rZW4gb3IgcmVmcmVzaCB0b2tlbi4gWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGEgY29va2llTmFtZSB3aGVyZSB0aGUgcmVmcmVzaCB0b2tlbiBtaWdodCBiZSBzdG9yZWQuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2Vucy50b2tlbikge1xuICAgICAgdGhpcy5fcHJlcGFyZUZvclJlZnJlc2goKTtcblxuICAgICAgaWYgKHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbiAmJiB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSAmJiBjb29raWVFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuX3NldENvb2tpZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMucmVmcmVzaFRva2VuKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICBjbGVhblVwKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5uZXh0KG51bGwpO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSB7XG4gICAgICB0aGlzLl9kZWxldGVDb29raWUoKTtcbiAgICB9XG4gIH1cblxuICBlbmFibGVDb29raWUoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb29raWUgbmFtZSB3YXMgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWZyZXNoIHRva2VuIHdhcyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZUVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fc2V0Q29va2llKCk7XG4gIH1cblxuICBkaXNhYmxlQ29va2llKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY29va2llIG5hbWUgd2FzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llRW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5fZGVsZXRlQ29va2llKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRDb29raWUoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSB8fCAhdGhpcy50b2tlbnMucmVmcmVzaFRva2VuKSByZXR1cm47XG5cbiAgICBzZXRDb29raWUoXG4gICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lLFxuICAgICAgdGhpcy50b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llRXhwaXJlc0luRGF5cyxcbiAgICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZURvbWFpbixcbiAgICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGV0ZUNvb2tpZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSByZXR1cm47XG5cbiAgICBkZWxldGVDb29raWUoXG4gICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lLFxuICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llUGF0aCxcbiAgICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZURvbWFpbixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUZvclJlZnJlc2goKSB7XG4gICAgaWYgKCF0aGlzLnRva2Vucy50b2tlbiB8fCAhdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiZWFyZXIgPSBkZWNyeXB0QmVhcmVyKHRoaXMudG9rZW5zLnRva2VuKTtcblxuICAgIGlmICghYmVhcmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwaXJlc0luUHJvcGVydHlOYW1lID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuZXhwaXJlc0luUHJvcGVydHlOYW1lIHx8ICdleHAnO1xuICAgIGNvbnN0IGV4cGlyZXNJbiA9IGJlYXJlcltleHBpcmVzSW5Qcm9wZXJ0eU5hbWVdIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDUgKiA2MCAqIDEwMDA7XG4gICAgY29uc3QgcmVmcmVzaEJ1ZmZlciA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLnJlZnJlc2hCdWZmZXIgPz8gZml2ZU1pbnV0ZXM7XG5cbiAgICBpZiAoZXhwaXJlc0luID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmVhcmVyIHRva2VuIGRvZXMgbm90IGNvbnRhaW4gYW4gJyR7ZXhwaXJlc0luUHJvcGVydHlOYW1lfScgcHJvcGVydHlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZW1haW5pbmdUaW1lID0gbmV3IERhdGUoZXhwaXJlc0luICogMTAwMCkuZ2V0VGltZSgpIC0gcmVmcmVzaEJ1ZmZlciAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5zdHJhdGVneSA/PyBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb247XG5cbiAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEF1dGhCZWFyZXJSZWZyZXNoU3RyYXRlZ3kuQmVmb3JlRXhwaXJhdGlvbjpcbiAgICAgICAgdGltZXIocmVtYWluaW5nVGltZSlcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFF1ZXJ5KCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfcmVmcmVzaFF1ZXJ5KCkge1xuICAgIGNvbnN0IGN1cnJlbnRRdWVyeSA9IHRoaXMuX2N1cnJlbnRSZWZyZXNoUXVlcnkkLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyhjdXJyZW50UXVlcnk/LnJhd1N0YXRlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRRdWVyeTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50UmVmcmVzaFRva2VuID0gdGhpcy50b2tlbnMucmVmcmVzaFRva2VuO1xuXG4gICAgaWYgKCFjdXJyZW50UmVmcmVzaFRva2VuIHx8ICF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5yZXF1ZXN0QXJnc0FkYXB0ZXI/Lih7XG4gICAgICB0b2tlbjogdGhpcy50b2tlbnMudG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IGN1cnJlbnRSZWZyZXNoVG9rZW4sXG4gICAgfSkgPz8ge1xuICAgICAgYm9keTogeyByZWZyZXNoVG9rZW46IGN1cnJlbnRSZWZyZXNoVG9rZW4gfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5xdWVyeUNyZWF0b3IucHJlcGFyZShhcmdzKS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSQubmV4dChxdWVyeSBhcyBDb25zdHJ1Y3RRdWVyeTxUPik7XG5cbiAgICB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaFF1ZXJ5U3RhdGUoKSxcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5yZXNwb25zZUFkYXB0ZXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVzcG9uc2VBZGFwdGVyKHN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5UmVzcG9uc2VPZjxUPik7XG5cbiAgICAgICAgICAgICAgdGhpcy5fdG9rZW5zJC5uZXh0KHRva2Vucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl90b2tlbnMkLm5leHQoe1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgdG9rZW46IChzdGF0ZS5yZXNwb25zZSBhcyBhbnkpWyd0b2tlbiddLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuOiAoc3RhdGUucmVzcG9uc2UgYXMgYW55KVsncmVmcmVzaFRva2VuJ10sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29va2llRW5hYmxlZCA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVFbmFibGVkID8/IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSAmJiB0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4gJiYgY29va2llRW5hYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLl9zZXRDb29raWUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUZvclJlZnJlc2goKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUoc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl90b2tlbnMkLm5leHQoeyB0b2tlbjogbnVsbCwgcmVmcmVzaFRva2VuOiBudWxsIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQ29va2llKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsUmVzcG9uc2UoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
@@ -199,13 +199,13 @@ export class QueryDevtoolsComponent {
199
199
  clearQueryHistory() {
200
200
  this.queryHistory.set([]);
201
201
  }
202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
204
204
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
206
206
  type: Component,
207
207
  args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
208
208
  class: 'et-query-devtools',
209
- }, imports: [NgIf, NgFor, AsyncPipe, JsonPipe, ReactiveFormsModule, NgClass, QueryShortNamePipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"] }]
209
+ }, imports: [NgIf, NgFor, AsyncPipe, JsonPipe, ReactiveFormsModule, NgClass, QueryShortNamePipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"] }]
210
210
  }], ctorParameters: function () { return []; } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV2dG9vbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRGLE9BQU8sRUFBWSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQThCLE1B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LHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxTQUFTLFFBRXBDO3dCQUNKLEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCLFdBQ1EsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLGtCQUM3RSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBKc29uUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3ksIG5leHRGcmFtZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIG9mLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZW50aXR5JztcbmltcG9ydCB7IEFueVF1ZXJ5LCBpc0dxbFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlTaG9ydE5hbWVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgUVVFUllfQ0xJRU5UX0RFVlRPT0xTX1RPS0VOLCBRdWVyeUNsaWVudERldnRvb2xzT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxudHlwZSBRdWVyeURldnRvb2xzU25hcExheW91dCA9ICdmdWxsJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICd0b3AnO1xudHlwZSBRdWVyeUxpc3RNb2RlID0gJ2xpdmUnIHwgJ2hpc3RvcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1xdWVyeS1kZXZ0b29scycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1kZXZ0b29scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWRldnRvb2xzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1xdWVyeS1kZXZ0b29scycsXG4gIH0sXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgQXN5bmNQaXBlLCBKc29uUGlwZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdDbGFzcywgUXVlcnlTaG9ydE5hbWVQaXBlXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeURldnRvb2xzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlDbGllbnRDb25maWdzID0gaW5qZWN0KFFVRVJZX0NMSUVOVF9ERVZUT09MU19UT0tFTik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1RyYW5zbHVjZW50ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNuYXBMYXlvdXQgPSBzaWduYWw8UXVlcnlEZXZ0b29sc1NuYXBMYXlvdXQ+KCdmdWxsJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeUxpc3RNb2RlID0gc2lnbmFsPFF1ZXJ5TGlzdE1vZGU+KCdsaXZlJyk7XG5cbiAgcHJvdGVjdGVkIHNob3dSZXNwb25zZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93UmF3UmVzcG9uc2UgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1F1ZXJ5Q29uZmlnID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dFbnRpdHlTdG9yZVZhbHVlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dBcmd1bWVudHMgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZENsaWVudElkQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRDbGllbnRJZCA9IHRvU2lnbmFsKFxuICAgIHRoaXMuc2VsZWN0ZWRDbGllbnRJZEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuc2VsZWN0ZWRDbGllbnRJZEN0cmwudmFsdWUpKSxcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnlJZCA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRDbGllbnRDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucXVlcnlDbGllbnRDb25maWdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnlDbGllbnRDb25maWdzWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZENsaWVudElkKCkgPz8gMDtcblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5Q2xpZW50Q29uZmlnc1tpbmRleF07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeVN0b3JlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2VsZWN0ZWRDbGllbnRDb25maWcoKTtcblxuICAgIHJldHVybiBjb25maWcuY2xpZW50Ll9zdG9yZTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5U3RvcmUkID0gdG9PYnNlcnZhYmxlKHRoaXMucXVlcnlTdG9yZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcmllcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFueVF1ZXJ5W10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJpZXMgPSB0b1NpZ25hbCh0aGlzLl9xdWVyaWVzJCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnNlbGVjdGVkUXVlcnlJZCgpO1xuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnF1ZXJ5TGlzdE1vZGUoKTtcblxuICAgIGlmIChpZCA9PT0gbnVsbCB8fCAhbW9kZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT09ICdsaXZlJykge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcmllcygpPy5maW5kKChxKSA9PiBxLl9pZCA9PT0gaWQpID8/IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucXVlcnlIaXN0b3J5KCk/LmZpbmQoKHEpID0+IHEuX2lkID09PSBpZCkgPz8gbnVsbDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2VsZWN0ZWRRdWVyeSgpO1xuXG4gICAgaWYgKCFxdWVyeSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gcXVlcnkuc3RvcmUgYXMgRW50aXR5U3RvcmU8dW5rbm93bj4gfCBudWxsO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRRdWVyeUVudGl0eVN0b3JlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZVZhbHVlJCA9IHRoaXMuc2VsZWN0ZWRRdWVyeUVudGl0eVN0b3JlJC5waXBlKFxuICAgIHN3aXRjaE1hcChcbiAgICAgIChzKSA9PlxuICAgICAgICBzPy5fY2hhbmdlJC5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghcy5fZGljdGlvbmFyeSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHMuX2RpY3Rpb25hcnkpLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSA/PyBvZihudWxsKSxcbiAgICApLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeUhpc3RvcnkgPSBzaWduYWw8QW55UXVlcnlbXT4oW10pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdHJpbmdpZmllZFF1ZXJ5Q29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5zZWxlY3RlZFF1ZXJ5KCk7XG5cbiAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGNmZyA9IHF1ZXJ5Ll9xdWVyeUNvbmZpZztcbiAgICBjb25zdCByb3V0ZSA9XG4gICAgICB0eXBlb2YgY2ZnLnJvdXRlID09PSAnc3RyaW5nJyA/IGNmZy5yb3V0ZSA6IGNmZy5yb3V0ZSA/IGNmZy5yb3V0ZSh7fSkucmVwbGFjZSgvdW5kZWZpbmVkL2csICc6cGFyYW0nKSA6IG51bGw7XG5cbiAgICBjb25zdCBzaGFyZWRDZmcgPSB7XG4gICAgICBtZXRob2Q6IGNmZy5tZXRob2QsXG4gICAgICBzZWN1cmU6IGNmZy5zZWN1cmUsXG4gICAgICByb3V0ZSxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiBjZmcucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IGNmZy5yZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGNmZy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBhdXRvUmVmcmVzaE9uOiBjZmcuYXV0b1JlZnJlc2hPbixcbiAgICAgIGVuYWJsZVNtYXJ0UG9sbGluZzogY2ZnLmVuYWJsZVNtYXJ0UG9sbGluZyxcbiAgICAgIGhhc0VudGl0eVN0b3JlOiAhIWNmZy5lbnRpdHksXG4gICAgfTtcblxuICAgIGlmIChpc0dxbFF1ZXJ5Q29uZmlnKGNmZykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNoYXJlZENmZyxcbiAgICAgICAgcXVlcnk6IGNmZy5xdWVyeSxcbiAgICAgICAgdHJhbnNmZXJWaWE6IGNmZy50cmFuc2ZlclZpYSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYXJlZENmZyxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2xpZW50SWRDdHJsLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmNsZWFyUXVlcnlIaXN0b3J5KCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5xdWVyeVN0b3JlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocykgPT5cbiAgICAgICAgICBzLnN0b3JlQ2hhbmdlJC5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiBzLl9zdG9yZSksXG4gICAgICAgICAgICB0YXAoKHMpID0+IHRoaXMuX3F1ZXJpZXMkLm5leHQoQXJyYXkuZnJvbShzLnZhbHVlcygpKSkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5xdWVyeVN0b3JlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocykgPT5cbiAgICAgICAgICBzLnF1ZXJ5Q3JlYXRlZCQucGlwZShcbiAgICAgICAgICAgIHRhcCgocXVlcnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLnF1ZXJ5SGlzdG9yeSgpO1xuXG4gICAgICAgICAgICAgIGlmICghY3VycmVudEhpc3RvcnkpIHJldHVybjtcblxuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SGlzdG9yeUNsb25lID0gWy4uLmN1cnJlbnRIaXN0b3J5XTtcblxuICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRIaXN0b3J5LnNvbWUoKHEpID0+IHEuX2lkID09PSBxdWVyeS5faWQpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEhpc3RvcnlDbG9uZS51bnNoaWZ0KHF1ZXJ5KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGN1cnJlbnRIaXN0b3J5Q2xvbmUuc3BsaWNlKDUwKTtcblxuICAgICAgICAgICAgICB0aGlzLnF1ZXJ5SGlzdG9yeS5zZXQoY3VycmVudEhpc3RvcnlDbG9uZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3F1ZXJpZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChxdWVyaWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLnF1ZXJ5SGlzdG9yeSgpO1xuXG4gICAgICAgICAgaWYgKCFxdWVyaWVzIHx8ICFjdXJyZW50SGlzdG9yeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudEhpc3RvcnlDbG9uZSA9IFsuLi5jdXJyZW50SGlzdG9yeV07XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIHF1ZXJpZXMpIHtcbiAgICAgICAgICAgIGlmICghY3VycmVudEhpc3RvcnlDbG9uZS5zb21lKChxKSA9PiBxLl9pZCA9PT0gcXVlcnkuX2lkKSkge1xuICAgICAgICAgICAgICBjdXJyZW50SGlzdG9yeUNsb25lLnVuc2hpZnQocXVlcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRIaXN0b3J5Q2xvbmUuc3BsaWNlKDUwKTtcblxuICAgICAgICAgIHRoaXMucXVlcnlIaXN0b3J5LnNldChjdXJyZW50SGlzdG9yeUNsb25lKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGV2dG9vbENvbmZpZyA9IHtcbiAgICAgICAgaXNPcGVuOiB0aGlzLmlzT3BlbigpLFxuICAgICAgICBpc1RyYW5zbHVjZW50OiB0aGlzLmlzVHJhbnNsdWNlbnQoKSxcbiAgICAgICAgc25hcExheW91dDogdGhpcy5zbmFwTGF5b3V0KCksXG4gICAgICAgIHNob3dSZXNwb25zZTogdGhpcy5zaG93UmVzcG9uc2UoKSxcbiAgICAgICAgc2hvd1Jhd1Jlc3BvbnNlOiB0aGlzLnNob3dSYXdSZXNwb25zZSgpLFxuICAgICAgICBzaG93UXVlcnlDb25maWc6IHRoaXMuc2hvd1F1ZXJ5Q29uZmlnKCksXG4gICAgICAgIHNob3dFbnRpdHlTdG9yZVZhbHVlOiB0aGlzLnNob3dFbnRpdHlTdG9yZVZhbHVlKCksXG4gICAgICAgIHNob3dBcmd1bWVudHM6IHRoaXMuc2hvd0FyZ3VtZW50cygpLFxuICAgICAgICBzZWxlY3RlZENsaWVudElkOiB0aGlzLnNlbGVjdGVkQ2xpZW50SWQoKSxcbiAgICAgICAgc2VsZWN0ZWRRdWVyeVBhdGg6IHRoaXMuc2VsZWN0ZWRRdWVyeUlkKCksXG4gICAgICAgIHF1ZXJ5TGlzdE1vZGU6IHRoaXMucXVlcnlMaXN0TW9kZSgpLFxuICAgICAgfTtcblxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdldGhsZXRlOnF1ZXJ5OmRldnRvb2xzJywgSlNPTi5zdHJpbmdpZnkoZGV2dG9vbENvbmZpZykpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5pdGlhbENvbmZpZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXRobGV0ZTpxdWVyeTpkZXZ0b29scycpO1xuXG4gICAgaWYgKGluaXRpYWxDb25maWcpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoaW5pdGlhbENvbmZpZyk7XG5cbiAgICAgIHRoaXMuaXNPcGVuLnNldChwYXJzZWQuaXNPcGVuID8/IGZhbHNlKTtcbiAgICAgIHRoaXMuaXNUcmFuc2x1Y2VudC5zZXQocGFyc2VkLmlzVHJhbnNsdWNlbnQgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zbmFwTGF5b3V0LnNldChwYXJzZWQuc25hcExheW91dCA/PyAnZnVsbCcpO1xuICAgICAgdGhpcy5zaG93UmVzcG9uc2Uuc2V0KHBhcnNlZC5zaG93UmVzcG9uc2UgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zaG93UmF3UmVzcG9uc2Uuc2V0KHBhcnNlZC5zaG93UmF3UmVzcG9uc2UgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zaG93UXVlcnlDb25maWcuc2V0KHBhcnNlZC5zaG93UXVlcnlDb25maWcgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zaG93RW50aXR5U3RvcmVWYWx1ZS5zZXQocGFyc2VkLnNob3dFbnRpdHlTdG9yZVZhbHVlID8/IGZhbHNlKTtcbiAgICAgIHRoaXMuc2hvd0FyZ3VtZW50cy5zZXQocGFyc2VkLnNob3dBcmd1bWVudHMgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zZWxlY3RlZENsaWVudElkQ3RybC5zZXRWYWx1ZShwYXJzZWQuc2VsZWN0ZWRDbGllbnRJZCA/PyAwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWVyeUlkLnNldChwYXJzZWQuc2VsZWN0ZWRRdWVyeVBhdGggPz8gbnVsbCk7XG4gICAgICB0aGlzLnF1ZXJ5TGlzdE1vZGUuc2V0KHBhcnNlZC5xdWVyeUxpc3RNb2RlID8/ICdsaXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlDbGllbnQ6IFRyYWNrQnlGdW5jdGlvbjxRdWVyeUNsaWVudERldnRvb2xzT3B0aW9ucz4gPSAoXywgeyBjbGllbnQgfSkgPT4gY2xpZW50LmNvbmZpZy5iYXNlUm91dGU7XG4gIHByb3RlY3RlZCB0cmFja0J5UXVlcnk6IFRyYWNrQnlGdW5jdGlvbjxBbnlRdWVyeT4gPSAoXywgeyBfaWQgfSkgPT4gX2lkO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVPcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlVHJhbnNsdWNlbnQoKSB7XG4gICAgdGhpcy5pc1RyYW5zbHVjZW50LnNldCghdGhpcy5pc1RyYW5zbHVjZW50KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dSZXNwb25zZSgpIHtcbiAgICB0aGlzLnNob3dSZXNwb25zZS5zZXQoIXRoaXMuc2hvd1Jlc3BvbnNlKCkpO1xuXG4gICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93UXVlcnlDb25maWcoKSB7XG4gICAgdGhpcy5zaG93UXVlcnlDb25maWcuc2V0KCF0aGlzLnNob3dRdWVyeUNvbmZpZygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93UmF3UmVzcG9uc2UoKSB7XG4gICAgdGhpcy5zaG93UmF3UmVzcG9uc2Uuc2V0KCF0aGlzLnNob3dSYXdSZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93RW50aXR5U3RvcmVWYWx1ZSgpIHtcbiAgICB0aGlzLnNob3dFbnRpdHlTdG9yZVZhbHVlLnNldCghdGhpcy5zaG93RW50aXR5U3RvcmVWYWx1ZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93QXJndW1lbnRzKCkge1xuICAgIHRoaXMuc2hvd0FyZ3VtZW50cy5zZXQoIXRoaXMuc2hvd0FyZ3VtZW50cygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RTbmFwTGF5b3V0KGxheW91dDogUXVlcnlEZXZ0b29sc1NuYXBMYXlvdXQpIHtcbiAgICB0aGlzLnNuYXBMYXlvdXQuc2V0KGxheW91dCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0UXVlcnlMaXN0TW9kZShtb2RlOiBRdWVyeUxpc3RNb2RlKSB7XG4gICAgdGhpcy5xdWVyeUxpc3RNb2RlLnNldChtb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RRdWVyeShxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUXVlcnlJZC5zZXQocXVlcnkuX2lkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhclF1ZXJ5SGlzdG9yeSgpIHtcbiAgICB0aGlzLnF1ZXJ5SGlzdG9yeS5zZXQoW10pO1xuICB9XG59XG4iLCI8YnV0dG9uICpuZ0lmPVwiIWlzT3BlbigpXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtb3Blbi1idG4gZXQtcWQtY2hpcFwiPk9wZW4gRGV2dG9vbHM8L2J1dHRvbj5cblxuPGRpdlxuICAqbmdJZj1cImlzT3BlbigpXCJcbiAgW2NsYXNzLmV0LXF1ZXJ5LWRldnRvb2xzLWNvbnRhaW5lci0tdHJhbnNwYXJlbnRdPVwiaXNUcmFuc2x1Y2VudCgpXCJcbiAgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1jb250YWluZXIgZXQtcXVlcnktZGV2dG9vbHMtY29udGFpbmVyLS1zbmFwLXt7IHNuYXBMYXlvdXQoKSB9fVwiXG4+XG4gIDxoZWFkZXIgY2xhc3M9XCJldC1xZC1oZWFkZXJcIj5cbiAgICA8aDMgY2xhc3M9XCJldC1xZC1oZWFkZXJfX3RpdGxlXCI+UXVlcnkgRGV2dG9vbHM8L2gzPlxuXG4gICAgPGRpdiBjbGFzcz1cImV0LXFkLWhlYWRlcl9fc2VsZWN0XCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZXQtcXVlcnktY2xpZW50LWluc3RhbmNlXCI+Q2xpZW50IGluc3RhbmNlPC9sYWJlbD5cbiAgICAgIDxzZWxlY3QgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkQ2xpZW50SWRDdHJsXCIgaWQ9XCJldC1xdWVyeS1jbGllbnQtaW5zdGFuY2VcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY2xpZW50Q29uZmlnIG9mIHF1ZXJ5Q2xpZW50Q29uZmlnczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUNsaWVudFwiIFt2YWx1ZV09XCJpXCI+XG4gICAgICAgICAge3sgY2xpZW50Q29uZmlnLmRpc3BsYXlOYW1lID8/IGNsaWVudENvbmZpZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCIgY2xhc3M9XCJldC1xZC1idG4gZXQtcWQtYnRuLXNlY29uZGFyeVwiPkNsb3NlPC9idXR0b24+XG4gIDwvaGVhZGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJldC1xZC1zdWItaGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhaXNUcmFuc2x1Y2VudCgpIH1cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVRyYW5zbHVjZW50KClcIlxuICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLXRyYW5zbHVjZW50LWNsaWNrYWJsZVwiXG4gICAgPlxuICAgICAgVHJhbnNsdWNlbnRcbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtc3ViLWhlYWRlcl9fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5Jzogc25hcExheW91dCgpICE9PSAnZnVsbCcgfVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0U25hcExheW91dCgnZnVsbCcpXCJcbiAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcFwiXG4gICAgPlxuICAgICAgRnVsbHNjcmVlblxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5Jzogc25hcExheW91dCgpICE9PSAndG9wJyB9XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCd0b3AnKVwiXG4gICAgICBjbGFzcz1cImV0LXFkLWNoaXBcIlxuICAgID5cbiAgICAgIFRvcFxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5Jzogc25hcExheW91dCgpICE9PSAnYm90dG9tJyB9XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCdib3R0b20nKVwiXG4gICAgICBjbGFzcz1cImV0LXFkLWNoaXBcIlxuICAgID5cbiAgICAgIEJvdHRvbVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5Jzogc25hcExheW91dCgpICE9PSAnbGVmdCcgfVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0U25hcExheW91dCgnbGVmdCcpXCJcbiAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcFwiXG4gICAgPlxuICAgICAgTGVmdFxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5Jzogc25hcExheW91dCgpICE9PSAncmlnaHQnIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ3JpZ2h0JylcIlxuICAgICAgY2xhc3M9XCJldC1xZC1jaGlwXCJcbiAgICA+XG4gICAgICBSaWdodFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRDbGllbnRDb25maWcoKSBhcyBjZmdcIiBjbGFzcz1cImV0LXFkLWNsaWVudFwiPlxuICAgIDxwIGNsYXNzPVwiZXQtcWQtY2xpZW50X190aXRsZVwiPnt7IGNmZy5kaXNwbGF5TmFtZSA/PyBjZmcuY2xpZW50LmNvbmZpZy5iYXNlUm91dGUgfX08L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtY2xpZW50X19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjZmcuY2xpZW50Ll9zdG9yZS5yZWZyZXNoUXVlcmllc0luVXNlKClcIiBjbGFzcz1cImV0LXFkLWNoaXBcIj5SZWZyZXNoIGFsbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2ZnLmNsaWVudC5fc3RvcmUucmVmcmVzaFF1ZXJpZXNJblVzZSh7IGlnbm9yZUNhY2hlVmFsaWRpdHk6IHRydWUgfSlcIiBjbGFzcz1cImV0LXFkLWNoaXBcIj5cbiAgICAgICAgUmVmcmVzaCBhbGwgKGlnbm9yZSBjYWNoZXMpXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImNmZy5jbGllbnQuX3N0b3JlLnJlZnJlc2hRdWVyaWVzSW5Vc2UoeyBpZ25vcmVDYWNoZVZhbGlkaXR5OiB0cnVlLCBwdXJnZVVudXNlZDogdHJ1ZSB9KVwiXG4gICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcFwiXG4gICAgICA+XG4gICAgICAgIFJlZnJlc2ggYWxsIChpZ25vcmUgY2FjaGVzICYgcHVyZ2UgdW51c2VkKVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENsaWVudENvbmZpZygpIGFzIGNmZ1wiIGNsYXNzPVwiZXQtcWQtcXVlcmllc1wiPlxuICAgIDxwIGNsYXNzPVwiZXQtcWQtcXVlcmllc19fdGl0bGVcIj5RdWVyeSBicm93c2VyPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJldC1xZC1xdWVyaWVzX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5JzogcXVlcnlMaXN0TW9kZSgpICE9PSAnbGl2ZScgfVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RRdWVyeUxpc3RNb2RlKCdsaXZlJylcIlxuICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICA+XG4gICAgICAgIExpdmUgKHt7IHF1ZXJpZXMoKT8ubGVuZ3RoID8/IDAgfX0pXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBxdWVyeUxpc3RNb2RlKCkgIT09ICdoaXN0b3J5JyB9XCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFF1ZXJ5TGlzdE1vZGUoJ2hpc3RvcnknKVwiXG4gICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCJcbiAgICAgID5cbiAgICAgICAgSGlzdG9yeSAoe3sgcXVlcnlIaXN0b3J5KCkubGVuZ3RoIH19LzUwKVxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlMaXN0TW9kZSgpID09PSAnaGlzdG9yeSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2RpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJRdWVyeUhpc3RvcnkoKVwiIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCI+Q2xlYXIgaGlzdG9yeTwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYnJvd3NlclwiPlxuICAgICAgPHVsICpuZ0lmPVwicXVlcnlMaXN0TW9kZSgpID09PSAnbGl2ZSdcIiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2Jyb3dzZXItbGlzdFwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHF1ZXJ5IG9mIHF1ZXJpZXMoKTsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5XCI+XG4gICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZXQtcWQtcXVlcnktLWFjdGl2ZV09XCJzZWxlY3RlZFF1ZXJ5KCk/Ll9pZCA9PT0gcXVlcnkuX2lkXCIgKGNsaWNrKT1cInNlbGVjdFF1ZXJ5KHF1ZXJ5KVwiPlxuICAgICAgICAgICAgPHNwYW4+IHt7IHF1ZXJ5Ll9xdWVyeUNvbmZpZy5tZXRob2QgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgcXVlcnkgfCBxdWVyeVNob3J0TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8dWwgKm5nSWY9XCJxdWVyeUxpc3RNb2RlKCkgPT09ICdoaXN0b3J5J1wiIGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYnJvd3Nlci1saXN0XCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcXVlcnkgb2YgcXVlcnlIaXN0b3J5KCk7IHRyYWNrQnk6IHRyYWNrQnlRdWVyeVwiPlxuICAgICAgICAgIDxidXR0b24gW2NsYXNzLmV0LXFkLXF1ZXJ5LS1hY3RpdmVdPVwic2VsZWN0ZWRRdWVyeSgpPy5faWQgPT09IHF1ZXJ5Ll9pZFwiIChjbGljayk9XCJzZWxlY3RRdWVyeShxdWVyeSlcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBxdWVyeS5fcXVlcnlDb25maWcubWV0aG9kIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+IHt7IHF1ZXJ5IHwgcXVlcnlTaG9ydE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2Jyb3dzZXItZGV0YWlsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFF1ZXJ5KCkgYXMgcXVlcnlcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2Jyb3dzZXItZGV0YWlsX190aXRsZVwiPlxuICAgICAgICAgICAge3sgcXVlcnkuX3F1ZXJ5Q29uZmlnLm1ldGhvZCB9fSB7eyBxdWVyeS5fcm91dGVXaXRoUGFyYW1zIH19XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInF1ZXJ5LmV4ZWN1dGUoKVwiIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCI+RXhlY3V0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSB9KVwiIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCI+XG4gICAgICAgICAgICAgIEV4ZWN1dGUgKGlnbm9yZSBjYWNoZSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5hYm9ydCgpXCIgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIj5BYm9ydDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2RpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhcXVlcnkuaXNQb2xsaW5nIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicXVlcnkucG9sbCh7IGludGVydmFsOiA1MDAwLCB0YWtlVW50aWw6IF9kZXN0cm95JCB9KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUG9sbFxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBxdWVyeS5pc1BvbGxpbmcgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJxdWVyeS5zdG9wUG9sbGluZygpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBTdG9wIHBvbGxpbmdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5LmlzUG9sbGluZyB8fCBxdWVyeS5faXNQb2xsaW5nUGF1c2VkXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInF1ZXJ5LnBhdXNlUG9sbGluZygpXCIgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtc2Vjb25kYXJ5IGV0LXFkLWNoaXAtYm9yZGVyZWRcIj5cbiAgICAgICAgICAgICAgICBQYXVzZSBwb2xsaW5nXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5yZXN1bWVQb2xsaW5nKClcIiBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1zZWNvbmRhcnkgZXQtcWQtY2hpcC1ib3JkZXJlZFwiPlxuICAgICAgICAgICAgICAgIFJlc3VtZSBwb2xsaW5nXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5TdGF0ZSB0eXBlPC9wPlxuICAgICAgICAgICAgICA8cHJlPnt7IHF1ZXJ5LnJhd1N0YXRlLnR5cGUgfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPklzIGV4cGlyZWQ8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkuaXNFeHBpcmVkIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5JcyBpbiB1c2U8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkuaXNJblVzZSB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+U3Vic2NyaWJlciBjb3VudDwvcD5cbiAgICAgICAgICAgICAgPHByZT57eyBxdWVyeS5fc3Vic2NyaWJlckNvdW50IH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5JcyBwb2xsaW5nPC9wPlxuICAgICAgICAgICAgICA8cHJlPnt7IHF1ZXJ5LmlzUG9sbGluZyB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+SXMgcG9sbGluZyBwYXVzZWQ8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkuX2lzUG9sbGluZ1BhdXNlZCB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+RW5hYmxlIHNtYXJ0IHBvbGxpbmc8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkuX2VuYWJsZVNtYXJ0UG9sbGluZyB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+QXJndW1lbnRzPC9wPlxuXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhc2hvd0FyZ3VtZW50cygpIH1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBcmd1bWVudHMoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgVG9nZ2xlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwic2hvd0FyZ3VtZW50cygpXCI+e3sgcXVlcnkuX2FyZ3VtZW50cyB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPlN0YXRlPC9wPlxuICAgICAgICAgICAgICA8cD48aT4gV2FybmluZywgdGhpcyB3aWxsIGNhdXNlIGEgc3Vic2NyaXB0aW9uIGlmIHNob3duITwvaT48L3A+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhc2hvd1Jlc3BvbnNlKCkgfVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd1Jlc3BvbnNlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRvZ2dsZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHByZSAqbmdJZj1cInNob3dSZXNwb25zZSgpXCI+e3sgcXVlcnkuc3RhdGUkIHwgYXN5bmMgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5SYXcgc3RhdGU8L3A+XG4gICAgICAgICAgICAgIDxwPjxpPiBUaGUgcXVlcnkgc3RhdGUgdW5hZmZlY3RlZCBieSBlbnRpdHkgc3RvcmVzPC9pPjwvcD5cblxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5JzogIXNob3dSYXdSZXNwb25zZSgpIH1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dSYXdSZXNwb25zZSgpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBUb2dnbGVcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwcmUgKm5nSWY9XCJzaG93UmF3UmVzcG9uc2UoKVwiPnt7IHF1ZXJ5LnJhd1N0YXRlIHwganNvbiB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+UXVlcnkgY29uZmlnPC9wPlxuXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhc2hvd1F1ZXJ5Q29uZmlnKCkgfVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd1F1ZXJ5Q29uZmlnKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRvZ2dsZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHByZSAqbmdJZj1cInNob3dRdWVyeUNvbmZpZygpXCI+e3sgc3RyaW5naWZpZWRRdWVyeUNvbmZpZygpIHwganNvbiB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhIXF1ZXJ5Ll9xdWVyeUNvbmZpZy5lbnRpdHlcIiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5FbnRpdHkgc3RvcmUgdmFsdWU8L3A+XG5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFzaG93RW50aXR5U3RvcmVWYWx1ZSgpIH1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dFbnRpdHlTdG9yZVZhbHVlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRvZ2dsZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHByZSAqbmdJZj1cInNob3dFbnRpdHlTdG9yZVZhbHVlKClcIj57eyBzZWxlY3RlZFF1ZXJ5RW50aXR5U3RvcmVWYWx1ZSQgfCBhc3luYyB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV2dG9vbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRGLE9BQU8sRUFBWSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQThCLE1B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RixzQkFBc0I7a0JBZGxDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsU0FBUyxRQUVwQzt3QkFDSixLQUFLLEVBQUUsbUJBQW1CO3FCQUMzQixXQUNRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxrQkFDN0UsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95LCBuZXh0RnJhbWUgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2VudGl0eSc7XG5pbXBvcnQgeyBBbnlRdWVyeSwgaXNHcWxRdWVyeUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5U2hvcnROYW1lUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IFFVRVJZX0NMSUVOVF9ERVZUT09MU19UT0tFTiwgUXVlcnlDbGllbnREZXZ0b29sc09wdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbnR5cGUgUXVlcnlEZXZ0b29sc1NuYXBMYXlvdXQgPSAnZnVsbCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAndG9wJztcbnR5cGUgUXVlcnlMaXN0TW9kZSA9ICdsaXZlJyB8ICdoaXN0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtcXVlcnktZGV2dG9vbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1kZXZ0b29scy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtcXVlcnktZGV2dG9vbHMnLFxuICB9LFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3IsIEFzeW5jUGlwZSwgSnNvblBpcGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nQ2xhc3MsIFF1ZXJ5U2hvcnROYW1lUGlwZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlEZXZ0b29sc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5Q2xpZW50Q29uZmlncyA9IGluamVjdChRVUVSWV9DTElFTlRfREVWVE9PTFNfVE9LRU4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNUcmFuc2x1Y2VudCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzbmFwTGF5b3V0ID0gc2lnbmFsPFF1ZXJ5RGV2dG9vbHNTbmFwTGF5b3V0PignZnVsbCcpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlMaXN0TW9kZSA9IHNpZ25hbDxRdWVyeUxpc3RNb2RlPignbGl2ZScpO1xuXG4gIHByb3RlY3RlZCBzaG93UmVzcG9uc2UgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1Jhd1Jlc3BvbnNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dRdWVyeUNvbmZpZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93RW50aXR5U3RvcmVWYWx1ZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93QXJndW1lbnRzID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDbGllbnRJZEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woMCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkQ2xpZW50SWQgPSB0b1NpZ25hbChcbiAgICB0aGlzLnNlbGVjdGVkQ2xpZW50SWRDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnNlbGVjdGVkQ2xpZW50SWRDdHJsLnZhbHVlKSksXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFF1ZXJ5SWQgPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkQ2xpZW50Q29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnF1ZXJ5Q2xpZW50Q29uZmlncy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5Q2xpZW50Q29uZmlnc1swXTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDbGllbnRJZCgpID8/IDA7XG5cbiAgICByZXR1cm4gdGhpcy5xdWVyeUNsaWVudENvbmZpZ3NbaW5kZXhdO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlTdG9yZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnNlbGVjdGVkQ2xpZW50Q29uZmlnKCk7XG5cbiAgICByZXR1cm4gY29uZmlnLmNsaWVudC5fc3RvcmU7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeVN0b3JlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnF1ZXJ5U3RvcmUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1ZXJpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBbnlRdWVyeVtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzID0gdG9TaWduYWwodGhpcy5fcXVlcmllcyQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFF1ZXJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlkID0gdGhpcy5zZWxlY3RlZFF1ZXJ5SWQoKTtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5xdWVyeUxpc3RNb2RlKCk7XG5cbiAgICBpZiAoaWQgPT09IG51bGwgfHwgIW1vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtb2RlID09PSAnbGl2ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJpZXMoKT8uZmluZCgocSkgPT4gcS5faWQgPT09IGlkKSA/PyBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5SGlzdG9yeSgpPy5maW5kKChxKSA9PiBxLl9pZCA9PT0gaWQpID8/IG51bGw7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZFF1ZXJ5RW50aXR5U3RvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnNlbGVjdGVkUXVlcnkoKTtcblxuICAgIGlmICghcXVlcnkpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHF1ZXJ5LnN0b3JlIGFzIEVudGl0eVN0b3JlPHVua25vd24+IHwgbnVsbDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZSQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZFF1ZXJ5RW50aXR5U3RvcmUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFF1ZXJ5RW50aXR5U3RvcmVWYWx1ZSQgPSB0aGlzLnNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoXG4gICAgICAocykgPT5cbiAgICAgICAgcz8uX2NoYW5nZSQucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXMuX2RpY3Rpb25hcnkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzLl9kaWN0aW9uYXJ5KS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChvYmosIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICApID8/IG9mKG51bGwpLFxuICAgICksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5SGlzdG9yeSA9IHNpZ25hbDxBbnlRdWVyeVtdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmluZ2lmaWVkUXVlcnlDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnNlbGVjdGVkUXVlcnkoKTtcblxuICAgIGlmICghcXVlcnkpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgY2ZnID0gcXVlcnkuX3F1ZXJ5Q29uZmlnO1xuICAgIGNvbnN0IHJvdXRlID1cbiAgICAgIHR5cGVvZiBjZmcucm91dGUgPT09ICdzdHJpbmcnID8gY2ZnLnJvdXRlIDogY2ZnLnJvdXRlID8gY2ZnLnJvdXRlKHt9KS5yZXBsYWNlKC91bmRlZmluZWQvZywgJzpwYXJhbScpIDogbnVsbDtcblxuICAgIGNvbnN0IHNoYXJlZENmZyA9IHtcbiAgICAgIG1ldGhvZDogY2ZnLm1ldGhvZCxcbiAgICAgIHNlY3VyZTogY2ZnLnNlY3VyZSxcbiAgICAgIHJvdXRlLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGNmZy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogY2ZnLnJlc3BvbnNlVHlwZSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogY2ZnLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGF1dG9SZWZyZXNoT246IGNmZy5hdXRvUmVmcmVzaE9uLFxuICAgICAgZW5hYmxlU21hcnRQb2xsaW5nOiBjZmcuZW5hYmxlU21hcnRQb2xsaW5nLFxuICAgICAgaGFzRW50aXR5U3RvcmU6ICEhY2ZnLmVudGl0eSxcbiAgICB9O1xuXG4gICAgaWYgKGlzR3FsUXVlcnlDb25maWcoY2ZnKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2hhcmVkQ2ZnLFxuICAgICAgICBxdWVyeTogY2ZnLnF1ZXJ5LFxuICAgICAgICB0cmFuc2ZlclZpYTogY2ZnLnRyYW5zZmVyVmlhLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2hhcmVkQ2ZnLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDbGllbnRJZEN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2xlYXJRdWVyeUhpc3RvcnkoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnF1ZXJ5U3RvcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzKSA9PlxuICAgICAgICAgIHMuc3RvcmVDaGFuZ2UkLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHMuX3N0b3JlKSxcbiAgICAgICAgICAgIHRhcCgocykgPT4gdGhpcy5fcXVlcmllcyQubmV4dChBcnJheS5mcm9tKHMudmFsdWVzKCkpKSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnF1ZXJ5U3RvcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzKSA9PlxuICAgICAgICAgIHMucXVlcnlDcmVhdGVkJC5waXBlKFxuICAgICAgICAgICAgdGFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SGlzdG9yeSA9IHRoaXMucXVlcnlIaXN0b3J5KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCFjdXJyZW50SGlzdG9yeSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRIaXN0b3J5Q2xvbmUgPSBbLi4uY3VycmVudEhpc3RvcnldO1xuXG4gICAgICAgICAgICAgIGlmICghY3VycmVudEhpc3Rvcnkuc29tZSgocSkgPT4gcS5faWQgPT09IHF1ZXJ5Ll9pZCkpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SGlzdG9yeUNsb25lLnVuc2hpZnQocXVlcnkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY3VycmVudEhpc3RvcnlDbG9uZS5zcGxpY2UoNTApO1xuXG4gICAgICAgICAgICAgIHRoaXMucXVlcnlIaXN0b3J5LnNldChjdXJyZW50SGlzdG9yeUNsb25lKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fcXVlcmllcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHF1ZXJpZXMpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50SGlzdG9yeSA9IHRoaXMucXVlcnlIaXN0b3J5KCk7XG5cbiAgICAgICAgICBpZiAoIXF1ZXJpZXMgfHwgIWN1cnJlbnRIaXN0b3J5KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBjdXJyZW50SGlzdG9yeUNsb25lID0gWy4uLmN1cnJlbnRIaXN0b3J5XTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgcXVlcmllcykge1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SGlzdG9yeUNsb25lLnNvbWUoKHEpID0+IHEuX2lkID09PSBxdWVyeS5faWQpKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRIaXN0b3J5Q2xvbmUudW5zaGlmdChxdWVyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudEhpc3RvcnlDbG9uZS5zcGxpY2UoNTApO1xuXG4gICAgICAgICAgdGhpcy5xdWVyeUhpc3Rvcnkuc2V0KGN1cnJlbnRIaXN0b3J5Q2xvbmUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkZXZ0b29sQ29uZmlnID0ge1xuICAgICAgICBpc09wZW46IHRoaXMuaXNPcGVuKCksXG4gICAgICAgIGlzVHJhbnNsdWNlbnQ6IHRoaXMuaXNUcmFuc2x1Y2VudCgpLFxuICAgICAgICBzbmFwTGF5b3V0OiB0aGlzLnNuYXBMYXlvdXQoKSxcbiAgICAgICAgc2hvd1Jlc3BvbnNlOiB0aGlzLnNob3dSZXNwb25zZSgpLFxuICAgICAgICBzaG93UmF3UmVzcG9uc2U6IHRoaXMuc2hvd1Jhd1Jlc3BvbnNlKCksXG4gICAgICAgIHNob3dRdWVyeUNvbmZpZzogdGhpcy5zaG93UXVlcnlDb25maWcoKSxcbiAgICAgICAgc2hvd0VudGl0eVN0b3JlVmFsdWU6IHRoaXMuc2hvd0VudGl0eVN0b3JlVmFsdWUoKSxcbiAgICAgICAgc2hvd0FyZ3VtZW50czogdGhpcy5zaG93QXJndW1lbnRzKCksXG4gICAgICAgIHNlbGVjdGVkQ2xpZW50SWQ6IHRoaXMuc2VsZWN0ZWRDbGllbnRJZCgpLFxuICAgICAgICBzZWxlY3RlZFF1ZXJ5UGF0aDogdGhpcy5zZWxlY3RlZFF1ZXJ5SWQoKSxcbiAgICAgICAgcXVlcnlMaXN0TW9kZTogdGhpcy5xdWVyeUxpc3RNb2RlKCksXG4gICAgICB9O1xuXG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2V0aGxldGU6cXVlcnk6ZGV2dG9vbHMnLCBKU09OLnN0cmluZ2lmeShkZXZ0b29sQ29uZmlnKSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbml0aWFsQ29uZmlnID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdldGhsZXRlOnF1ZXJ5OmRldnRvb2xzJyk7XG5cbiAgICBpZiAoaW5pdGlhbENvbmZpZykge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShpbml0aWFsQ29uZmlnKTtcblxuICAgICAgdGhpcy5pc09wZW4uc2V0KHBhcnNlZC5pc09wZW4gPz8gZmFsc2UpO1xuICAgICAgdGhpcy5pc1RyYW5zbHVjZW50LnNldChwYXJzZWQuaXNUcmFuc2x1Y2VudCA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNuYXBMYXlvdXQuc2V0KHBhcnNlZC5zbmFwTGF5b3V0ID8/ICdmdWxsJyk7XG4gICAgICB0aGlzLnNob3dSZXNwb25zZS5zZXQocGFyc2VkLnNob3dSZXNwb25zZSA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNob3dSYXdSZXNwb25zZS5zZXQocGFyc2VkLnNob3dSYXdSZXNwb25zZSA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNob3dRdWVyeUNvbmZpZy5zZXQocGFyc2VkLnNob3dRdWVyeUNvbmZpZyA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNob3dFbnRpdHlTdG9yZVZhbHVlLnNldChwYXJzZWQuc2hvd0VudGl0eVN0b3JlVmFsdWUgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zaG93QXJndW1lbnRzLnNldChwYXJzZWQuc2hvd0FyZ3VtZW50cyA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50SWRDdHJsLnNldFZhbHVlKHBhcnNlZC5zZWxlY3RlZENsaWVudElkID8/IDApO1xuICAgICAgdGhpcy5zZWxlY3RlZFF1ZXJ5SWQuc2V0KHBhcnNlZC5zZWxlY3RlZFF1ZXJ5UGF0aCA/PyBudWxsKTtcbiAgICAgIHRoaXMucXVlcnlMaXN0TW9kZS5zZXQocGFyc2VkLnF1ZXJ5TGlzdE1vZGUgPz8gJ2xpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUNsaWVudDogVHJhY2tCeUZ1bmN0aW9uPFF1ZXJ5Q2xpZW50RGV2dG9vbHNPcHRpb25zPiA9IChfLCB7IGNsaWVudCB9KSA9PiBjbGllbnQuY29uZmlnLmJhc2VSb3V0ZTtcbiAgcHJvdGVjdGVkIHRyYWNrQnlRdWVyeTogVHJhY2tCeUZ1bmN0aW9uPEFueVF1ZXJ5PiA9IChfLCB7IF9pZCB9KSA9PiBfaWQ7XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZU9wZW4oKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KCF0aGlzLmlzT3BlbigpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVUcmFuc2x1Y2VudCgpIHtcbiAgICB0aGlzLmlzVHJhbnNsdWNlbnQuc2V0KCF0aGlzLmlzVHJhbnNsdWNlbnQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU2hvd1Jlc3BvbnNlKCkge1xuICAgIHRoaXMuc2hvd1Jlc3BvbnNlLnNldCghdGhpcy5zaG93UmVzcG9uc2UoKSk7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dRdWVyeUNvbmZpZygpIHtcbiAgICB0aGlzLnNob3dRdWVyeUNvbmZpZy5zZXQoIXRoaXMuc2hvd1F1ZXJ5Q29uZmlnKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dSYXdSZXNwb25zZSgpIHtcbiAgICB0aGlzLnNob3dSYXdSZXNwb25zZS5zZXQoIXRoaXMuc2hvd1Jhd1Jlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dFbnRpdHlTdG9yZVZhbHVlKCkge1xuICAgIHRoaXMuc2hvd0VudGl0eVN0b3JlVmFsdWUuc2V0KCF0aGlzLnNob3dFbnRpdHlTdG9yZVZhbHVlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dBcmd1bWVudHMoKSB7XG4gICAgdGhpcy5zaG93QXJndW1lbnRzLnNldCghdGhpcy5zaG93QXJndW1lbnRzKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFNuYXBMYXlvdXQobGF5b3V0OiBRdWVyeURldnRvb2xzU25hcExheW91dCkge1xuICAgIHRoaXMuc25hcExheW91dC5zZXQobGF5b3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RRdWVyeUxpc3RNb2RlKG1vZGU6IFF1ZXJ5TGlzdE1vZGUpIHtcbiAgICB0aGlzLnF1ZXJ5TGlzdE1vZGUuc2V0KG1vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFF1ZXJ5KHF1ZXJ5OiBBbnlRdWVyeSkge1xuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeUlkLnNldChxdWVyeS5faWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyUXVlcnlIaXN0b3J5KCkge1xuICAgIHRoaXMucXVlcnlIaXN0b3J5LnNldChbXSk7XG4gIH1cbn1cbiIsIjxidXR0b24gKm5nSWY9XCIhaXNPcGVuKClcIiAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCIgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1vcGVuLWJ0biBldC1xZC1jaGlwXCI+T3BlbiBEZXZ0b29sczwvYnV0dG9uPlxuXG48ZGl2XG4gICpuZ0lmPVwiaXNPcGVuKClcIlxuICBbY2xhc3MuZXQtcXVlcnktZGV2dG9vbHMtY29udGFpbmVyLS10cmFuc3BhcmVudF09XCJpc1RyYW5zbHVjZW50KClcIlxuICBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLWNvbnRhaW5lciBldC1xdWVyeS1kZXZ0b29scy1jb250YWluZXItLXNuYXAte3sgc25hcExheW91dCgpIH19XCJcbj5cbiAgPGhlYWRlciBjbGFzcz1cImV0LXFkLWhlYWRlclwiPlxuICAgIDxoMyBjbGFzcz1cImV0LXFkLWhlYWRlcl9fdGl0bGVcIj5RdWVyeSBEZXZ0b29sczwvaDM+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtaGVhZGVyX19zZWxlY3RcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJldC1xdWVyeS1jbGllbnQtaW5zdGFuY2VcIj5DbGllbnQgaW5zdGFuY2U8L2xhYmVsPlxuICAgICAgPHNlbGVjdCBbZm9ybUNvbnRyb2xdPVwic2VsZWN0ZWRDbGllbnRJZEN0cmxcIiBpZD1cImV0LXF1ZXJ5LWNsaWVudC1pbnN0YW5jZVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjbGllbnRDb25maWcgb2YgcXVlcnlDbGllbnRDb25maWdzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5Q2xpZW50XCIgW3ZhbHVlXT1cImlcIj5cbiAgICAgICAgICB7eyBjbGllbnRDb25maWcuZGlzcGxheU5hbWUgPz8gY2xpZW50Q29uZmlnLmNsaWVudC5jb25maWcuYmFzZVJvdXRlIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIiBjbGFzcz1cImV0LXFkLWJ0biBldC1xZC1idG4tc2Vjb25kYXJ5XCI+Q2xvc2U8L2J1dHRvbj5cbiAgPC9oZWFkZXI+XG5cbiAgPGRpdiBjbGFzcz1cImV0LXFkLXN1Yi1oZWFkZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFpc1RyYW5zbHVjZW50KCkgfVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVHJhbnNsdWNlbnQoKVwiXG4gICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtdHJhbnNsdWNlbnQtY2xpY2thYmxlXCJcbiAgICA+XG4gICAgICBUcmFuc2x1Y2VudFxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJldC1xZC1zdWItaGVhZGVyX19kaXZpZGVyXCI+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBzbmFwTGF5b3V0KCkgIT09ICdmdWxsJyB9XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCdmdWxsJylcIlxuICAgICAgY2xhc3M9XCJldC1xZC1jaGlwXCJcbiAgICA+XG4gICAgICBGdWxsc2NyZWVuXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBzbmFwTGF5b3V0KCkgIT09ICd0b3AnIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ3RvcCcpXCJcbiAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcFwiXG4gICAgPlxuICAgICAgVG9wXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBzbmFwTGF5b3V0KCkgIT09ICdib3R0b20nIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ2JvdHRvbScpXCJcbiAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcFwiXG4gICAgPlxuICAgICAgQm90dG9tXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBzbmFwTGF5b3V0KCkgIT09ICdsZWZ0JyB9XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCdsZWZ0JylcIlxuICAgICAgY2xhc3M9XCJldC1xZC1jaGlwXCJcbiAgICA+XG4gICAgICBMZWZ0XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBzbmFwTGF5b3V0KCkgIT09ICdyaWdodCcgfVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0U25hcExheW91dCgncmlnaHQnKVwiXG4gICAgICBjbGFzcz1cImV0LXFkLWNoaXBcIlxuICAgID5cbiAgICAgIFJpZ2h0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENsaWVudENvbmZpZygpIGFzIGNmZ1wiIGNsYXNzPVwiZXQtcWQtY2xpZW50XCI+XG4gICAgPHAgY2xhc3M9XCJldC1xZC1jbGllbnRfX3RpdGxlXCI+e3sgY2ZnLmRpc3BsYXlOYW1lID8/IGNmZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fTwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJldC1xZC1jbGllbnRfX2FjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNmZy5jbGllbnQuX3N0b3JlLnJlZnJlc2hRdWVyaWVzSW5Vc2UoKVwiIGNsYXNzPVwiZXQtcWQtY2hpcFwiPlJlZnJlc2ggYWxsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjZmcuY2xpZW50Ll9zdG9yZS5yZWZyZXNoUXVlcmllc0luVXNlKHsgaWdub3JlQ2FjaGVWYWxpZGl0eTogdHJ1ZSB9KVwiIGNsYXNzPVwiZXQtcWQtY2hpcFwiPlxuICAgICAgICBSZWZyZXNoIGFsbCAoaWdub3JlIGNhY2hlcylcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY2ZnLmNsaWVudC5fc3RvcmUucmVmcmVzaFF1ZXJpZXNJblVzZSh7IGlnbm9yZUNhY2hlVmFsaWRpdHk6IHRydWUsIHB1cmdlVW51c2VkOiB0cnVlIH0pXCJcbiAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwXCJcbiAgICAgID5cbiAgICAgICAgUmVmcmVzaCBhbGwgKGlnbm9yZSBjYWNoZXMgJiBwdXJnZSB1bnVzZWQpXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ2xpZW50Q29uZmlnKCkgYXMgY2ZnXCIgY2xhc3M9XCJldC1xZC1xdWVyaWVzXCI+XG4gICAgPHAgY2xhc3M9XCJldC1xZC1xdWVyaWVzX190aXRsZVwiPlF1ZXJ5IGJyb3dzZXI8L3A+XG4gICAgPGRpdiBjbGFzcz1cImV0LXFkLXF1ZXJpZXNfX2FjdGlvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiBxdWVyeUxpc3RNb2RlKCkgIT09ICdsaXZlJyB9XCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFF1ZXJ5TGlzdE1vZGUoJ2xpdmUnKVwiXG4gICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCJcbiAgICAgID5cbiAgICAgICAgTGl2ZSAoe3sgcXVlcmllcygpPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6IHF1ZXJ5TGlzdE1vZGUoKSAhPT0gJ2hpc3RvcnknIH1cIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UXVlcnlMaXN0TW9kZSgnaGlzdG9yeScpXCJcbiAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgPlxuICAgICAgICBIaXN0b3J5ICh7eyBxdWVyeUhpc3RvcnkoKS5sZW5ndGggfX0vNTApXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUxpc3RNb2RlKCkgPT09ICdoaXN0b3J5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtcXVlcmllc19fZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhclF1ZXJ5SGlzdG9yeSgpXCIgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIj5DbGVhciBoaXN0b3J5PC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJldC1xZC1xdWVyaWVzX19icm93c2VyXCI+XG4gICAgICA8dWwgKm5nSWY9XCJxdWVyeUxpc3RNb2RlKCkgPT09ICdsaXZlJ1wiIGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYnJvd3Nlci1saXN0XCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcXVlcnkgb2YgcXVlcmllcygpOyB0cmFja0J5OiB0cmFja0J5UXVlcnlcIj5cbiAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5ldC1xZC1xdWVyeS0tYWN0aXZlXT1cInNlbGVjdGVkUXVlcnkoKT8uX2lkID09PSBxdWVyeS5faWRcIiAoY2xpY2spPVwic2VsZWN0UXVlcnkocXVlcnkpXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgcXVlcnkuX3F1ZXJ5Q29uZmlnLm1ldGhvZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBxdWVyeSB8IHF1ZXJ5U2hvcnROYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDx1bCAqbmdJZj1cInF1ZXJ5TGlzdE1vZGUoKSA9PT0gJ2hpc3RvcnknXCIgY2xhc3M9XCJldC1xZC1xdWVyaWVzX19icm93c2VyLWxpc3RcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBxdWVyeSBvZiBxdWVyeUhpc3RvcnkoKTsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5XCI+XG4gICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZXQtcWQtcXVlcnktLWFjdGl2ZV09XCJzZWxlY3RlZFF1ZXJ5KCk/Ll9pZCA9PT0gcXVlcnkuX2lkXCIgKGNsaWNrKT1cInNlbGVjdFF1ZXJ5KHF1ZXJ5KVwiPlxuICAgICAgICAgICAgPHNwYW4+IHt7IHF1ZXJ5Ll9xdWVyeUNvbmZpZy5tZXRob2QgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgcXVlcnkgfCBxdWVyeVNob3J0TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYnJvd3Nlci1kZXRhaWxcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkUXVlcnkoKSBhcyBxdWVyeVwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYnJvd3Nlci1kZXRhaWxfX3RpdGxlXCI+XG4gICAgICAgICAgICB7eyBxdWVyeS5fcXVlcnlDb25maWcubWV0aG9kIH19IHt7IHF1ZXJ5Ll9yb3V0ZVdpdGhQYXJhbXMgfX1cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtcXVlcmllc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuZXhlY3V0ZSgpXCIgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIj5FeGVjdXRlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pXCIgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIj5cbiAgICAgICAgICAgICAgRXhlY3V0ZSAoaWdub3JlIGNhY2hlKVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInF1ZXJ5LmFib3J0KClcIiBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiPkFib3J0PC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtcXVlcmllc19fZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFxdWVyeS5pc1BvbGxpbmcgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJxdWVyeS5wb2xsKHsgaW50ZXJ2YWw6IDUwMDAsIHRha2VVbnRpbDogX2Rlc3Ryb3kkIH0pXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQb2xsXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6IHF1ZXJ5LmlzUG9sbGluZyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInF1ZXJ5LnN0b3BQb2xsaW5nKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFN0b3AgcG9sbGluZ1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnkuaXNQb2xsaW5nIHx8IHF1ZXJ5Ll9pc1BvbGxpbmdQYXVzZWRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkucGF1c2VQb2xsaW5nKClcIiBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1zZWNvbmRhcnkgZXQtcWQtY2hpcC1ib3JkZXJlZFwiPlxuICAgICAgICAgICAgICAgIFBhdXNlIHBvbGxpbmdcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInF1ZXJ5LnJlc3VtZVBvbGxpbmcoKVwiIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLXNlY29uZGFyeSBldC1xZC1jaGlwLWJvcmRlcmVkXCI+XG4gICAgICAgICAgICAgICAgUmVzdW1lIHBvbGxpbmdcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPlN0YXRlIHR5cGU8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkucmF3U3RhdGUudHlwZSB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+SXMgZXhwaXJlZDwvcD5cbiAgICAgICAgICAgICAgPHByZT57eyBxdWVyeS5pc0V4cGlyZWQgfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPklzIGluIHVzZTwvcD5cbiAgICAgICAgICAgICAgPHByZT57eyBxdWVyeS5pc0luVXNlIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5TdWJzY3JpYmVyIGNvdW50PC9wPlxuICAgICAgICAgICAgICA8cHJlPnt7IHF1ZXJ5Ll9zdWJzY3JpYmVyQ291bnQgfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPklzIHBvbGxpbmc8L3A+XG4gICAgICAgICAgICAgIDxwcmU+e3sgcXVlcnkuaXNQb2xsaW5nIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5JcyBwb2xsaW5nIHBhdXNlZDwvcD5cbiAgICAgICAgICAgICAgPHByZT57eyBxdWVyeS5faXNQb2xsaW5nUGF1c2VkIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5FbmFibGUgc21hcnQgcG9sbGluZzwvcD5cbiAgICAgICAgICAgICAgPHByZT57eyBxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5Bcmd1bWVudHM8L3A+XG5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFzaG93QXJndW1lbnRzKCkgfVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0FyZ3VtZW50cygpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXQtcWQtY2hpcCBldC1xZC1jaGlwLWJvcmRlcmVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBUb2dnbGVcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwcmUgKm5nSWY9XCJzaG93QXJndW1lbnRzKClcIj57eyBxdWVyeS5fYXJndW1lbnRzIHwganNvbiB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldC1xZC1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHA+U3RhdGU8L3A+XG4gICAgICAgICAgICAgIDxwPjxpPiBXYXJuaW5nLCB0aGlzIHdpbGwgY2F1c2UgYSBzdWJzY3JpcHRpb24gaWYgc2hvd24hPC9pPjwvcD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFzaG93UmVzcG9uc2UoKSB9XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93UmVzcG9uc2UoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgVG9nZ2xlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwic2hvd1Jlc3BvbnNlKClcIj57eyBxdWVyeS5zdGF0ZSQgfCBhc3luYyB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPlJhdyBzdGF0ZTwvcD5cbiAgICAgICAgICAgICAgPHA+PGk+IFRoZSBxdWVyeSBzdGF0ZSB1bmFmZmVjdGVkIGJ5IGVudGl0eSBzdG9yZXM8L2k+PC9wPlxuXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXQtcWQtY2hpcC1zZWNvbmRhcnknOiAhc2hvd1Jhd1Jlc3BvbnNlKCkgfVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd1Jhd1Jlc3BvbnNlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldC1xZC1jaGlwIGV0LXFkLWNoaXAtYm9yZGVyZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRvZ2dsZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHByZSAqbmdJZj1cInNob3dSYXdSZXNwb25zZSgpXCI+e3sgcXVlcnkucmF3U3RhdGUgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV0LXFkLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8cD5RdWVyeSBjb25maWc8L3A+XG5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdldC1xZC1jaGlwLXNlY29uZGFyeSc6ICFzaG93UXVlcnlDb25maWcoKSB9XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93UXVlcnlDb25maWcoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgVG9nZ2xlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwic2hvd1F1ZXJ5Q29uZmlnKClcIj57eyBzdHJpbmdpZmllZFF1ZXJ5Q29uZmlnKCkgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEhcXVlcnkuX3F1ZXJ5Q29uZmlnLmVudGl0eVwiIGNsYXNzPVwiZXQtcWQtbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxwPkVudGl0eSBzdG9yZSB2YWx1ZTwvcD5cblxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2V0LXFkLWNoaXAtc2Vjb25kYXJ5JzogIXNob3dFbnRpdHlTdG9yZVZhbHVlKCkgfVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0VudGl0eVN0b3JlVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImV0LXFkLWNoaXAgZXQtcWQtY2hpcC1ib3JkZXJlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgVG9nZ2xlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwic2hvd0VudGl0eVN0b3JlVmFsdWUoKVwiPnt7IHNlbGVjdGVkUXVlcnlFbnRpdHlTdG9yZVZhbHVlJCB8IGFzeW5jIHwganNvbiB9fTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -15,10 +15,10 @@ export class QueryShortNamePipe {
15
15
  console.log(route);
16
16
  return route;
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
19
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
19
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.3", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: QueryShortNamePipe, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: QueryShortNamePipe, decorators: [{
22
22
  type: Pipe,
23
23
  args: [{ name: 'queryShortName', standalone: true }]
24
24
  }] });
@@ -38,10 +38,10 @@ export class InfinityQueryTriggerDirective {
38
38
  });
39
39
  this._observer.observe(this._elementRef.nativeElement);
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
45
45
  type: Directive,
46
46
  args: [{
47
47
  // eslint-disable-next-line @angular-eslint/directive-selector