Comparing version 1.4.0 to 1.4.1
{ | ||
"name": "slopes", | ||
"version": "1.4.0", | ||
"version": "1.4.1", | ||
"description": "AVA Platform JS Library", | ||
@@ -5,0 +5,0 @@ "main": "typings/src/index.js", |
@@ -495,3 +495,3 @@ /** | ||
let n12345_contracts = Object.assign({}, n2_contracts); | ||
n12345_platform["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw"; | ||
n12345_contracts["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw"; | ||
@@ -498,0 +498,0 @@ export class Defaults { |
@@ -370,3 +370,3 @@ "use strict"; | ||
let n12345_contracts = Object.assign({}, n2_contracts); | ||
n12345_platform["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw"; | ||
n12345_contracts["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw"; | ||
class Defaults { | ||
@@ -400,2 +400,2 @@ } | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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ckIsbURBQW1ELEVBQUUsZ0JBQWdCO0tBQ3hFO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBVdGlsc1xuICovXG5pbXBvcnQgU2xvcGVzQ29yZSBmcm9tICcuLi9zbG9wZXMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCBEQiBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgU3RvcmVBUEkgfSBmcm9tICdzdG9yZTInO1xuaW1wb3J0IEJpblRvb2xzICBmcm9tICcuL2JpbnRvb2xzJztcbmltcG9ydCB7IENsaWVudFJlcXVlc3QgfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IHsgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZm9yIEhUVFAgcmVxdWVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmVzcG9uc2VEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmcgfCBvYmplY3QgfCBBcnJheTxvYmplY3Q+O1xuICAgIGhlYWRlcnM6b2JqZWN0O1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICByZXF1ZXN0OkNsaWVudFJlcXVlc3QgfCBYTUxIdHRwUmVxdWVzdDtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBhIGdlbmVyaWMgZW5kcG9pbnQgdGhhdCBhbGwgZW5kcG9pbnRzIG11c3QgaW1wbGVtZW50IChleHRlbmQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVBJQmFzZSB7XG4gICAgcHJvdGVjdGVkIGNvcmU6U2xvcGVzQ29yZTtcbiAgICBwcm90ZWN0ZWQgYmFzZXVybDpzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRiOlN0b3JlQVBJO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggb2YgdGhlIEFQSXMgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKi9cbiAgICBzZXRCYXNlVVJMID0gKGJhc2V1cmw6c3RyaW5nKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZGIgJiYgdGhpcy5iYXNldXJsICE9PSBiYXNldXJsKXtcbiAgICAgICAgICAgIGxldCBiYWNrdXAgPSB0aGlzLmRiLmdldEFsbCgpO1xuICAgICAgICAgICAgdGhpcy5kYi5jbGVhckFsbCgpO1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgICAgICB0aGlzLmRiLnNldEFsbChiYWNrdXAsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgIH1cbiAgICB9IFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIHBhdGguIFxuICAgICAqL1xuICAgIGdldEJhc2VVUkwgPSAoKSA6IHN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2V1cmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIGdldERCID0gKCk6U3RvcmVBUEkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29yZSBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBpbnN0YW5jZSB1c2luZyB0aGlzIGJhc2V1cmxcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIHRvIHRoZSBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlID0gY29yZTtcbiAgICAgICAgdGhpcy5zZXRCYXNlVVJMKGJhc2V1cmwpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEpSUENBUEkgZXh0ZW5kcyBBUElCYXNlIHtcbiAgICBwcm90ZWN0ZWQganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIjtcbiAgICBwcm90ZWN0ZWQgcnBjaWQgPSAxO1xuICAgIGNhbGxNZXRob2QgPSBhc3luYyAobWV0aG9kOnN0cmluZywgcGFyYW1zPzpBcnJheTxvYmplY3Q+IHwgb2JqZWN0LCBiYXNldXJsPzpzdHJpbmcpOlByb21pc2U8UmVxdWVzdFJlc3BvbnNlRGF0YT4gPT4ge1xuICAgICAgICBsZXQgZXAgPSBiYXNldXJsID8gYmFzZXVybCA6IHRoaXMuYmFzZXVybDtcbiAgICAgICAgbGV0IHJwYzpvYmplY3QgPSB7fTtcbiAgICAgICAgcnBjW1wiaWRcIl0gPSB0aGlzLnJwY2lkO1xuICAgICAgICBycGNbXCJtZXRob2RcIl0gPSBtZXRob2Q7XG5cbiAgICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgaWYgZXhpc3RzXG4gICAgICAgIGlmKHBhcmFtcyl7XG4gICAgICAgICAgICBycGNbJ3BhcmFtcyddID0gcGFyYW1zO1xuICAgICAgICB9IGVsc2UgaWYodGhpcy5qcnBjVmVyc2lvbiA9PSBcIjEuMFwiKXtcbiAgICAgICAgICAgIHJwY1tcInBhcmFtc1wiXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5qcnBjVmVyc2lvbiAhPSBcIjEuMFwiKSB7XG4gICAgICAgICAgICBycGNbXCJqc29ucnBjXCJdID0gdGhpcy5qcnBjVmVyc2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzOm9iamVjdCA9IHtcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwifTtcblxuICAgICAgICBsZXQgYXhDb25mOkF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgICAgICAgIGJhc2VVUkw6dGhpcy5jb3JlLmdldFByb3RvY29sKCkrXCI6Ly9cIit0aGlzLmNvcmUuZ2V0SVAoKStcIjpcIit0aGlzLmNvcmUuZ2V0UG9ydCgpLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb3JlLnBvc3QoZXAsIHt9LCBKU09OLnN0cmluZ2lmeShycGMpLCBoZWFkZXJzLCBheENvbmYpLnRoZW4oIChyZXNwOlJlcXVlc3RSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmKHJlc3Auc3RhdHVzID49IDIwMCAmJiByZXNwLnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ycGNpZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiByZXNwLmRhdGEgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEgPSBKU09OLnBhcnNlKHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcmVzcC5kYXRhID09PSAnb2JqZWN0JyAmJiAnZXJyb3InIGluIHJlc3AuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciByZXR1cm5lZDogXCIgKyBKU09OLnN0cmluZ2lmeShyZXNwLmRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICogQHBhcmFtIGpycGNWZXJzaW9uIFRoZSBqcnBjIHZlcnNpb24gdG8gdXNlLCBkZWZhdWx0IFwiMi4wXCIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZywganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIikge1xuICAgICAgICBzdXBlcihjb3JlLCBiYXNldXJsKTtcbiAgICAgICAgdGhpcy5qcnBjVmVyc2lvbiA9IGpycGNWZXJzaW9uO1xuICAgICAgICB0aGlzLnJwY2lkID0gMTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHByaXZhdGUgYW5kIHB1YmxpYyBrZXlwYWlyIGluIFNsb3Blcy4gXG4gKiBBbGwgQVBJcyB0aGF0IG5lZWQga2V5IHBhaXJzIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIge1xuICAgIHByb3RlY3RlZCBwdWJrOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgcHJpdms6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBjaGFpbmlkOnN0cmluZyA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcga2V5cGFpci5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKi9cbiAgICBnZW5lcmF0ZUtleTooZW50cm9weT86QnVmZmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgYSBwcml2YXRlIGtleSBhbmQgZ2VuZXJhdGVzIHRoZSBhcHByb3ByaWF0ZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgaW1wb3J0S2V5Oihwcml2azpCdWZmZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1lc3NhZ2UsIHNpZ25zIGl0LCBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2lnbjoobXNnOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgdGhlIHB1YmxpYyBrZXkgb2YgYSBtZXNzYWdlIHNpZ25lciBmcm9tIGEgbWVzc2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdGhhdCdzIHNpZ25lZFxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSB0aGF0J3Mgc2lnbmVkIG9uIHRoZSBtZXNzYWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICAgKi9cbiAgICByZWNvdmVyOihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBwcml2YXRlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgcHJvZHVjZXMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZVxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVkIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcHViayBUaGUgcHVibGljIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2Ugc2lnbmF0dXJlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgdmVyaWZ5Oihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyLCBwdWJrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5ID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJpdms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wdWJrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleVN0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzOigpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MncyBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleVBhaXJdXSdzIGNoYWluSURcbiAgICAgKi9cbiAgICBnZXRDaGFpbklEID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5pZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2hhaW5pZCBTdHJpbmcgZm9yIHRoZSBjaGFpbklEXG4gICAgICovXG4gICAgc2V0Q2hhaW5JRCA9IChjaGFpbmlkOnN0cmluZyk6dm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY2hhaW5pZDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZFxuICAgIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEga2V5IGNoYWluIGluIFNsb3Blcy4gXG4gKiBBbGwgZW5kcG9pbnRzIHRoYXQgbmVlZCBrZXkgY2hhaW5zIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqIFxuICogQHR5cGVwYXJhbSBLUENsYXNzIGV4dGVuZGluZyBbW0tleVBhaXJdXSB3aGljaCBpcyB1c2VkIGFzIHRoZSBrZXkgaW4gW1tLZXlDaGFpbl1dXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlDaGFpbjxLUENsYXNzIGV4dGVuZHMgS2V5UGFpcj4ge1xuICAgIHByb3RlY3RlZCBrZXlzOntbYWRkcmVzczogc3RyaW5nXTogS1BDbGFzc30gPSB7fTtcbiAgICBwcm90ZWN0ZWQgY2hhaW5pZDpzdHJpbmcgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcgW1tLZXlQYWlyXV0sIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IFtbS2V5UGFpcl1dXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weT86QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBbW0tleVBhaXJdXSwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBbW0tleVBhaXJdXVxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzZXMgPSAoKTpBcnJheTxCdWZmZXI+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5rZXlzKS5tYXAoa3AgPT4ga3AuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5ncyA9ICgpOkFycmF5PHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLm1hcChrcCA9PiBrcC5nZXRBZGRyZXNzU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGtleSBwYWlyIHRvIHRoZSBsaXN0IG9mIHRoZSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmV3S2V5IEEga2V5IHBhaXIgb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBbW0tleUNoYWluXV1cbiAgICAgKi9cbiAgICBhZGRLZXkgPSAobmV3S2V5OktQQ2xhc3MpID0+IHtcbiAgICAgICAgbmV3S2V5LnNldENoYWluSUQodGhpcy5jaGFpbmlkKTtcbiAgICAgICAgdGhpcy5rZXlzW25ld0tleS5nZXRBZGRyZXNzKCkudG9TdHJpbmcoXCJoZXhcIildID0gbmV3S2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIGtleSBwYWlyIGZyb20gdGhlIGxpc3Qgb2YgdGhleSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gZm9yIHRoZSBhZGRyZXNzIG9yIEtQQ2xhc3MgdG8gcmVtb3ZlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGJvb2xlYW4gdHJ1ZSBpZiBhIGtleSB3YXMgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICByZW1vdmVLZXkgPSAoa2V5OktQQ2xhc3MgfCBCdWZmZXIpID0+IHtcbiAgICAgICAgbGV0IGthZGRyOnN0cmluZztcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgQnVmZmVyKXtcbiAgICAgICAgICAgIGthZGRyID0ga2V5LnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2FkZHIgPSBrZXkuZ2V0QWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGthZGRyIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5rZXlzW2thZGRyXTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBoYXNLZXkgPSAoYWRkcmVzczpCdWZmZXIpOmJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gKGFkZHJlc3MudG9TdHJpbmcoXCJoZXhcIikgaW4gdGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBbW0tleVBhaXJdXSBsaXN0ZWQgdW5kZXIgdGhlIHByb3ZpZGVkIGFkZHJlc3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb2YgdGhlIGFkZHJlc3MgdG8gcmV0cmlldmUgZnJvbSB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBbW0tleVBhaXJdXSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqL1xuICAgIGdldEtleSA9IChhZGRyZXNzOkJ1ZmZlcik6IEtQQ2xhc3MgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW2FkZHJlc3MudG9TdHJpbmcoXCJoZXhcIildO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleUNoYWluXV0ncyBjaGFpbklEXG4gICAgICovXG4gICAgZ2V0Q2hhaW5JRCA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYWluaWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBbW0tleUNoYWluXV0gYW5kIGFsbCBhc3NvY2lhdGVkIGtleXBhaXJzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjaGFpbmlkIFN0cmluZyBmb3IgdGhlIGNoYWluSURcbiAgICAgKi9cbiAgICBzZXRDaGFpbklEID0gKGNoYWluaWQ6c3RyaW5nKTp2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICAgICAgZm9yKGxldCBhZGRyZXNzIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICB0aGlzLmtleXNbYWRkcmVzc10uc2V0Q2hhaW5JRChjaGFpbmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgW1tLZXlDaGFpbl1dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNoYWluaWQ6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIGFuIGV4YWN0IGxlbmd0aC5cbiAqIFxuICogQ3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoaXMgb25lIGFuZCBvdmVycmlkZSBic2l6ZSB0byBtYWtlIGl0IHZhbGlkYXRlIGZvciBleGFjdGx5IHRoZSBjb3JyZWN0IGxlbmd0aC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5CeXRlcyB7XG4gICAgcHJvdGVjdGVkIGJ5dGVzOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgYnNpemU6bnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgZXhhY3QgbGVuZ3RoIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBnZXRTaXplID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGJhc2UtNTggZW5jb2RlZCBzdHJpbmcsIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbVN0cmluZyhiNThzdHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGI1OHN0cikpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbVN0cmluZzogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIFtbQnVmZmVyXV0sIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuIFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21CdWZmZXIoYnVmZjpCdWZmZXIpOm51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZihidWZmLmxlbmd0aCAhPSB0aGlzLmJzaXplKXtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBsZW5ndGggbXVzdCBiZSBleGFjdGx5IFwiICsgdGhpcy5ic2l6ZSArIFwiIGJ5dGVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tQnVmZmVyOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpOnN0cmluZyB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnRvQnVmZmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbTkJ5dGVzXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5sZXQgbjJfYXZtOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIjRrdFJqc0FLeGdNcjJhRXp2OVNXbXJVN1hrNUZuaUhVclZDWDRQMVRaU2ZUTFpXRk1cIixcbiAgICBcImFsaWFzXCI6IFwiWFwiLFxuICAgIFwidm1cIjogXCJhdm1cIlxufTtcblxubGV0IG4yX3BsYXRmb3JtOm9iamVjdCA9ICB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCIsXG4gICAgXCJhbGlhc1wiOiBcIlBcIixcbiAgICBcInZtXCI6IFwicGxhdGZvcm1cIlxufTtcblxubGV0IG4yX2NvbnRyYWN0czpvYmplY3QgPSB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCIybVVZU1hmTHJEdGlnd2J6ajFMeEtWc0h3RUxnaGM1c2lzb1hyekp3THFBQVFIRjRpXCIsXG4gICAgXCJhbGlhc1wiOiBcIkNcIixcbiAgICBcInZtXCI6IFwiY29udHJhY3RzXCJcbn1cblxubGV0IG4xMjM0NV9hdm06b2JqZWN0ID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfYXZtKTtcbm4xMjM0NV9hdm1bXCJibG9ja2NoYWluSURcIl0gPSBcIjRSNXAyUlhER0xxYWlmWkU0aEhXSDlvd2UzNHBmb0JVTG4xRHJRVFdpdmpnOG80YUhcIjtcbmxldCBuMTIzNDVfcGxhdGZvcm0gPSBPYmplY3QuYXNzaWduKHt9LCBuMl9wbGF0Zm9ybSk7XG5uMTIzNDVfcGxhdGZvcm1bXCJibG9ja2NoYWluSURcIl0gPSBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIjtcbmxldCBuMTIzNDVfY29udHJhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfY29udHJhY3RzKTtcbm4xMjM0NV9wbGF0Zm9ybVtcImJsb2NrY2hhaW5JRFwiXSA9IFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdHMge1xuICAgIHN0YXRpYyBuZXR3b3JrID0ge1xuICAgICAgICBcIjFcIjoge30sIC8vdXBkYXRlIGJlZm9yZSBtYWlubmV0XG4gICAgICAgIFwiMlwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjJfYXZtLFxuICAgICAgICAgICAgXCI0a3RSanNBS3hnTXIyYUV6djlTV21yVTdYazVGbmlIVXJWQ1g0UDFUWlNmVExaV0ZNXCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcImNvbnRyYWN0c1wiOiBuMl9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjJfY29udHJhY3RzLFxuICAgICAgICAgICAgXCIybVVZU1hmTHJEdGlnd2J6ajFMeEtWc0h3RUxnaGM1c2lzb1hyekp3THFBQVFIRjRpXCI6IG4yX2NvbnRyYWN0c1xuICAgICAgICB9LFxuICAgICAgICBcIjEyMzQ1XCI6IHtcbiAgICAgICAgICAgIFwiYXZtXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwiNFI1cDJSWERHTHFhaWZaRTRoSFdIOW93ZTM0cGZvQlVMbjFEclFUV2l2amc4bzRhSFwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJwbGF0Zm9ybVwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjEyMzQ1X3BsYXRmb3JtLFxuICAgICAgICAgICAgXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiY29udHJhY3RzXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjEyMzQ1X2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiOiBuMTIzNDVfY29udHJhY3RzXG4gICAgICAgIH1cbiAgICB9O1xufSJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsVUFBSyxHQUFHLEdBQVksRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFBO1FBUUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBQ0o7QUE5Q0QsMEJBOENDO0FBRUQsTUFBYSxPQUFRLFNBQVEsT0FBTztJQWlEaEM7Ozs7O09BS0c7SUFDSCxZQUFZLElBQWUsRUFBRSxPQUFjLEVBQUUsY0FBcUIsS0FBSztRQUNuRSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBdkRmLGdCQUFXLEdBQVUsS0FBSyxDQUFDO1FBQzNCLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDcEIsZUFBVSxHQUFHLENBQU8sTUFBYSxFQUFFLE1BQThCLEVBQUUsT0FBZSxFQUErQixFQUFFO1lBQy9HLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFDLElBQUksR0FBRyxHQUFVLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBRXZCLDJCQUEyQjtZQUMzQixJQUFHLE1BQU0sRUFBQztnQkFDTixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO2FBQzFCO2lCQUFNLElBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLEVBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDdEI7WUFFRCxJQUFHLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxFQUFFO2dCQUMxQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUNyQztZQUVELElBQUksT0FBTyxHQUFVLEVBQUMsY0FBYyxFQUFFLGdDQUFnQyxFQUFDLENBQUM7WUFFeEUsSUFBSSxNQUFNLEdBQXNCO2dCQUM1QixPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQy9FLFlBQVksRUFBRSxNQUFNO2FBQ3ZCLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUMsSUFBd0IsRUFBRSxFQUFFO2dCQUNuRyxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFDO29CQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsSUFBRyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFDO3dCQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUVyQztvQkFDRCxJQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7d0JBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztxQkFDbkU7b0JBQ0QsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQSxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxhQUFRLEdBQUcsR0FBVSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QixDQUFDLENBQUE7UUFVRyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUE1REQsMEJBNERDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxPQUFPO0lBa0hoQixZQUFZLE9BQWM7UUEvR2hCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUErQzlCOzs7O1dBSUc7UUFDSCxrQkFBYSxHQUFHLEdBQVUsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFBO1FBRUQ7Ozs7V0FJRztRQUNILGlCQUFZLEdBQUcsR0FBVSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUE7UUE4QkQ7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxHQUFVLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtRQUVEOzs7O1dBSUc7UUFDSCxlQUFVLEdBQUcsQ0FBQyxPQUFjLEVBQU8sRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUMzQixDQUFDLENBQUE7UUFHRyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUMxQixDQUFDO0NBQ0o7QUFySEQsMEJBcUhDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLFFBQVE7SUFtSGpCOztPQUVHO0lBQ0gsWUFBWSxPQUFjO1FBckhoQixTQUFJLEdBQWdDLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBb0I5Qjs7OztXQUlHO1FBQ0gsaUJBQVksR0FBRyxHQUFpQixFQUFFO1lBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFBO1FBRUQ7Ozs7V0FJRztRQUNILHNCQUFpQixHQUFHLEdBQWlCLEVBQUU7WUFDbkMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQTtRQUVEOzs7O1dBSUc7UUFDSCxXQUFNLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUN4QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUQsQ0FBQyxDQUFBO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsY0FBUyxHQUFHLENBQUMsR0FBb0IsRUFBRSxFQUFFO1lBQ2pDLElBQUksS0FBWSxDQUFDO1lBQ2pCLElBQUcsR0FBRyxZQUFZLGVBQU0sRUFBQztnQkFDckIsS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0gsS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUM7WUFDRCxJQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDO2dCQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDaEI7UUFDTCxDQUFDLENBQUE7UUFFRDs7Ozs7O1dBTUc7UUFDSCxXQUFNLEdBQUcsQ0FBQyxPQUFjLEVBQVUsRUFBRTtZQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFBO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsV0FBTSxHQUFHLENBQUMsT0FBYyxFQUFXLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUE7UUFFRDs7OztXQUlHO1FBQ0gsZUFBVSxHQUFHLEdBQVUsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDdkIsQ0FBQyxDQUFBO1FBRUQ7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBTyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLEtBQUksSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBQztnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUM7UUFDTCxDQUFDLENBQUE7UUFNRyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0NBQ0o7QUF6SEQsNEJBeUhDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQXNCLE1BQU07SUFvRXhCOztPQUVHO0lBQ0g7UUFuRUE7Ozs7V0FJRztRQUNILFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFBO0lBNERjLENBQUM7SUExRGhCOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsTUFBYTtRQUNwQixJQUFJO1lBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDakQ7UUFBQyxPQUFNLENBQUMsRUFBQztZQUNOLDBCQUEwQjtZQUMxQixJQUFJLElBQUksR0FBVSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7WUFDcEQsMEJBQTBCO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsSUFBVztRQUNsQixJQUFJO1lBQ0EsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUM7Z0JBQ3pCLDBCQUEwQjtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO1FBQUMsT0FBTSxDQUFDLEVBQUU7WUFDUCwwQkFBMEI7WUFDMUIsSUFBSSxJQUFJLEdBQVUsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELDBCQUEwQjtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDSixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUtKO0FBeEVELHdCQXdFQztBQUVELElBQUksTUFBTSxHQUFVO0lBQ2hCLGNBQWMsRUFBRSxtREFBbUQ7SUFDbkUsT0FBTyxFQUFFLEdBQUc7SUFDWixJQUFJLEVBQUUsS0FBSztDQUNkLENBQUM7QUFFRixJQUFJLFdBQVcsR0FBVztJQUN0QixjQUFjLEVBQUUsdUNBQXVDO0lBQ3ZELE9BQU8sRUFBRSxHQUFHO0lBQ1osSUFBSSxFQUFFLFVBQVU7Q0FDbkIsQ0FBQztBQUVGLElBQUksWUFBWSxHQUFVO0lBQ3RCLGNBQWMsRUFBRSxtREFBbUQ7SUFDbkUsT0FBTyxFQUFFLEdBQUc7SUFDWixJQUFJLEVBQUUsV0FBVztDQUNwQixDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQVUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1EQUFtRCxDQUFDO0FBQ2pGLElBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3JELGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyx1Q0FBdUMsQ0FBQztBQUMxRSxJQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3ZELGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxHQUFHLG1EQUFtRCxDQUFDO0FBRXZGLE1BQWEsUUFBUTs7QUFBckIsNEJBMEJDO0FBekJVLGdCQUFPLEdBQUc7SUFDYixHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRTtRQUNELEtBQUssRUFBRSxNQUFNO1FBQ2IsR0FBRyxFQUFFLE1BQU07UUFDWCxtREFBbUQsRUFBRSxNQUFNO1FBQzNELFVBQVUsRUFBRSxXQUFXO1FBQ3ZCLEdBQUcsRUFBRSxXQUFXO1FBQ2hCLHVDQUF1QyxFQUFFLFdBQVc7UUFDcEQsV0FBVyxFQUFFLFlBQVk7UUFDekIsR0FBRyxFQUFFLFlBQVk7UUFDakIsbURBQW1ELEVBQUUsWUFBWTtLQUNwRTtJQUNELE9BQU8sRUFBRTtRQUNMLEtBQUssRUFBRSxVQUFVO1FBQ2pCLEdBQUcsRUFBRSxVQUFVO1FBQ2YsbURBQW1ELEVBQUUsVUFBVTtRQUMvRCxVQUFVLEVBQUUsZUFBZTtRQUMzQixHQUFHLEVBQUUsZUFBZTtRQUNwQix1Q0FBdUMsRUFBRSxlQUFlO1FBQ3hELFdBQVcsRUFBRSxnQkFBZ0I7UUFDN0IsR0FBRyxFQUFFLGdCQUFnQjtRQUNyQixtREFBbUQsRUFBRSxnQkFBZ0I7S0FDeEU7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIFV0aWxzXG4gKi9cbmltcG9ydCBTbG9wZXNDb3JlIGZyb20gJy4uL3Nsb3Blcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwiYnVmZmVyL1wiO1xuaW1wb3J0IERCIGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBTdG9yZUFQSSB9IGZyb20gJ3N0b3JlMic7XG5pbXBvcnQgQmluVG9vbHMgIGZyb20gJy4vYmludG9vbHMnO1xuaW1wb3J0IHsgQ2xpZW50UmVxdWVzdCB9IGZyb20gXCJodHRwXCI7XG5pbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBiaW50b29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG5cbi8qKlxuICogUmVzcG9uc2UgZGF0YSBmb3IgSFRUUCByZXF1ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXNwb25zZURhdGEge1xuICAgIGRhdGE6IHN0cmluZyB8IG9iamVjdCB8IEFycmF5PG9iamVjdD47XG4gICAgaGVhZGVyczpvYmplY3Q7XG4gICAgc3RhdHVzOiBudW1iZXI7XG4gICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgIHJlcXVlc3Q6Q2xpZW50UmVxdWVzdCB8IFhNTEh0dHBSZXF1ZXN0O1xufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGRlZmluaW5nIGEgZ2VuZXJpYyBlbmRwb2ludCB0aGF0IGFsbCBlbmRwb2ludHMgbXVzdCBpbXBsZW1lbnQgKGV4dGVuZCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBUElCYXNlIHtcbiAgICBwcm90ZWN0ZWQgY29yZTpTbG9wZXNDb3JlO1xuICAgIHByb3RlY3RlZCBiYXNldXJsOnN0cmluZztcbiAgICBwcm90ZWN0ZWQgZGI6U3RvcmVBUEk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwuXG4gICAgICogXG4gICAgICogQHBhcmFtIGJhc2V1cmwgUGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqL1xuICAgIHNldEJhc2VVUkwgPSAoYmFzZXVybDpzdHJpbmcpID0+IHtcbiAgICAgICAgaWYodGhpcy5kYiAmJiB0aGlzLmJhc2V1cmwgIT09IGJhc2V1cmwpe1xuICAgICAgICAgICAgbGV0IGJhY2t1cCA9IHRoaXMuZGIuZ2V0QWxsKCk7XG4gICAgICAgICAgICB0aGlzLmRiLmNsZWFyQWxsKCk7XG4gICAgICAgICAgICB0aGlzLmJhc2V1cmwgPSBiYXNldXJsO1xuICAgICAgICAgICAgdGhpcy5kYiA9IERCLmdldE5hbWVzcGFjZShiYXNldXJsKTtcbiAgICAgICAgICAgIHRoaXMuZGIuc2V0QWxsKGJhY2t1cCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJhc2V1cmwgPSBiYXNldXJsO1xuICAgICAgICAgICAgdGhpcy5kYiA9IERCLmdldE5hbWVzcGFjZShiYXNldXJsKTtcbiAgICAgICAgfVxuICAgIH0gXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiYXNldXJsJ3MgcGF0aC4gXG4gICAgICovXG4gICAgZ2V0QmFzZVVSTCA9ICgpIDogc3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZXVybDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiYXNldXJsJ3MgZGF0YWJhc2UuXG4gICAgICovXG4gICAgZ2V0REIgPSAoKTpTdG9yZUFQSSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgYmFzZXVybFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggdG8gdGhlIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLnNldEJhc2VVUkwoYmFzZXVybCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSlJQQ0FQSSBleHRlbmRzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBqcnBjVmVyc2lvbjpzdHJpbmcgPSBcIjIuMFwiO1xuICAgIHByb3RlY3RlZCBycGNpZCA9IDE7XG4gICAgY2FsbE1ldGhvZCA9IGFzeW5jIChtZXRob2Q6c3RyaW5nLCBwYXJhbXM/OkFycmF5PG9iamVjdD4gfCBvYmplY3QsIGJhc2V1cmw/OnN0cmluZyk6UHJvbWlzZTxSZXF1ZXN0UmVzcG9uc2VEYXRhPiA9PiB7XG4gICAgICAgIGxldCBlcCA9IGJhc2V1cmwgPyBiYXNldXJsIDogdGhpcy5iYXNldXJsO1xuICAgICAgICBsZXQgcnBjOm9iamVjdCA9IHt9O1xuICAgICAgICBycGNbXCJpZFwiXSA9IHRoaXMucnBjaWQ7XG4gICAgICAgIHJwY1tcIm1ldGhvZFwiXSA9IG1ldGhvZDtcblxuICAgICAgICAvLyBTZXQgcGFyYW1ldGVycyBpZiBleGlzdHNcbiAgICAgICAgaWYocGFyYW1zKXtcbiAgICAgICAgICAgIHJwY1sncGFyYW1zJ10gPSBwYXJhbXM7XG4gICAgICAgIH0gZWxzZSBpZih0aGlzLmpycGNWZXJzaW9uID09IFwiMS4wXCIpe1xuICAgICAgICAgICAgcnBjW1wicGFyYW1zXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLmpycGNWZXJzaW9uICE9IFwiMS4wXCIpIHtcbiAgICAgICAgICAgIHJwY1tcImpzb25ycGNcIl0gPSB0aGlzLmpycGNWZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnM6b2JqZWN0ID0ge1wiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCJ9O1xuXG4gICAgICAgIGxldCBheENvbmY6QXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgYmFzZVVSTDp0aGlzLmNvcmUuZ2V0UHJvdG9jb2woKStcIjovL1wiK3RoaXMuY29yZS5nZXRJUCgpK1wiOlwiK3RoaXMuY29yZS5nZXRQb3J0KCksXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvcmUucG9zdChlcCwge30sIEpTT04uc3RyaW5naWZ5KHJwYyksIGhlYWRlcnMsIGF4Q29uZikudGhlbiggKHJlc3A6UmVxdWVzdFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYocmVzcC5zdGF0dXMgPj0gMjAwICYmIHJlc3Auc3RhdHVzIDwgMzAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLnJwY2lkICs9IDE7XG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHJlc3AuZGF0YSA9PT0gXCJzdHJpbmdcIil7XG4gICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YSA9IEpTT04ucGFyc2UocmVzcC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiByZXNwLmRhdGEgPT09ICdvYmplY3QnICYmICdlcnJvcicgaW4gcmVzcC5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIHJldHVybmVkOiBcIiArIEpTT04uc3RyaW5naWZ5KHJlc3AuZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSAgIFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcnBjaWQsIGEgc3RyaWN0bHktaW5jcmVhc2luZyBudW1iZXIsIHN0YXJ0aW5nIGZyb20gMSwgaW5kaWNhdGluZyB0aGUgbmV4dCByZXF1ZXN0IElEIHRoYXQgd2lsbCBiZSBzZW50LlxuICAgICAqL1xuICAgIGdldFJQQ0lEID0gKCk6bnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucnBjaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvcmUgUmVmZXJlbmNlIHRvIHRoZSBTbG9wZXMgaW5zdGFuY2UgdXNpbmcgdGhpcyBlbmRwb2ludFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggb2YgdGhlIEFQSXMgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKiBAcGFyYW0ganJwY1ZlcnNpb24gVGhlIGpycGMgdmVyc2lvbiB0byB1c2UsIGRlZmF1bHQgXCIyLjBcIi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb3JlOlNsb3Blc0NvcmUsIGJhc2V1cmw6c3RyaW5nLCBqcnBjVmVyc2lvbjpzdHJpbmcgPSBcIjIuMFwiKSB7XG4gICAgICAgIHN1cGVyKGNvcmUsIGJhc2V1cmwpO1xuICAgICAgICB0aGlzLmpycGNWZXJzaW9uID0ganJwY1ZlcnNpb247XG4gICAgICAgIHRoaXMucnBjaWQgPSAxO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgcHJpdmF0ZSBhbmQgcHVibGljIGtleXBhaXIgaW4gU2xvcGVzLiBcbiAqIEFsbCBBUElzIHRoYXQgbmVlZCBrZXkgcGFpcnMgc2hvdWxkIGV4dGVuZCBvbiB0aGlzIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgS2V5UGFpciB7XG4gICAgcHJvdGVjdGVkIHB1Yms6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBwcml2azpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIGNoYWluaWQ6c3RyaW5nID0gXCJcIjtcblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBrZXlwYWlyLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqL1xuICAgIGdlbmVyYXRlS2V5OihlbnRyb3B5PzpCdWZmZXIpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBhIHByaXZhdGUga2V5IGFuZCBnZW5lcmF0ZXMgdGhlIGFwcHJvcHJpYXRlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICBpbXBvcnRLZXk6KHByaXZrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWVzc2FnZSwgc2lnbnMgaXQsIGFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byBzaWduXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcbiAgICAgKi9cbiAgICBzaWduOihtc2c6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyB0aGUgcHVibGljIGtleSBvZiBhIG1lc3NhZ2Ugc2lnbmVyIGZyb20gYSBtZXNzYWdlIGFuZCBpdHMgYXNzb2NpYXRlZCBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0aGF0J3Mgc2lnbmVkXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIHRoYXQncyBzaWduZWQgb24gdGhlIG1lc3NhZ2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lclxuICAgICAqL1xuICAgIHJlY292ZXI6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIHByaXZhdGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcHVibGljIGtleSBwcm9kdWNlcyB0aGUgc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZWQgbWVzc2FnZVxuICAgICAqIEBwYXJhbSBwdWJrIFRoZSBwdWJsaWMga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBzaWduYXR1cmVcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICB2ZXJpZnk6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIsIHB1Yms6QnVmZmVyKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwcml2YXRlIGtleVxuICAgICAqL1xuICAgIGdldFByaXZhdGVLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcml2aztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFB1YmxpY0tleSA9ICgpOkJ1ZmZlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1Yms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXlTdHJpbmc6KCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9ICByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3M6KCkgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWRkcmVzcydzIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3NTdHJpbmc6KCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIFtbS2V5UGFpcl1dJ3MgY2hhaW5JRFxuICAgICAqL1xuICAgIGdldENoYWluSUQgPSAoKTpzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFpbmlkXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjaGFpbmlkIFN0cmluZyBmb3IgdGhlIGNoYWluSURcbiAgICAgKi9cbiAgICBzZXRDaGFpbklEID0gKGNoYWluaWQ6c3RyaW5nKTp2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFpbmlkOnN0cmluZykge1xuICAgICAgICB0aGlzLmNoYWluaWQgPSBjaGFpbmlkXG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBrZXkgY2hhaW4gaW4gU2xvcGVzLiBcbiAqIEFsbCBlbmRwb2ludHMgdGhhdCBuZWVkIGtleSBjaGFpbnMgc2hvdWxkIGV4dGVuZCBvbiB0aGlzIGNsYXNzLlxuICogXG4gKiBAdHlwZXBhcmFtIEtQQ2xhc3MgZXh0ZW5kaW5nIFtbS2V5UGFpcl1dIHdoaWNoIGlzIHVzZWQgYXMgdGhlIGtleSBpbiBbW0tleUNoYWluXV1cbiAqL1xuZXhwb3J0IGNsYXNzIEtleUNoYWluPEtQQ2xhc3MgZXh0ZW5kcyBLZXlQYWlyPiB7XG4gICAgcHJvdGVjdGVkIGtleXM6e1thZGRyZXNzOiBzdHJpbmddOiBLUENsYXNzfSA9IHt9O1xuICAgIHByb3RlY3RlZCBjaGFpbmlkOnN0cmluZyA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIG5ldyBbW0tleVBhaXJdXSwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBZGRyZXNzIG9mIHRoZSBuZXcgW1tLZXlQYWlyXV1cbiAgICAgKi9cbiAgICBtYWtlS2V5OihlbnRyb3B5PzpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcHJpdmF0ZSBrZXksIG1ha2VzIGEgbmV3IFtbS2V5UGFpcl1dLCByZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IFtbS2V5UGFpcl1dXG4gICAgICovXG4gICAgaW1wb3J0S2V5Oihwcml2azpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYW4gYXJyYXkgb2YgYWRkcmVzc2VzIHN0b3JlZCBpbiB0aGUgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9ICByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGFkZHJlc3Nlc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3NlcyA9ICgpOkFycmF5PEJ1ZmZlcj4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLm1hcChrcCA9PiBrcC5nZXRBZGRyZXNzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYW4gYXJyYXkgb2YgYWRkcmVzc2VzIHN0b3JlZCBpbiB0aGUgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGFkZHJlc3Nlc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3NTdHJpbmdzID0gKCk6QXJyYXk8c3RyaW5nPiA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMua2V5cykubWFwKGtwID0+IGtwLmdldEFkZHJlc3NTdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUga2V5IHBhaXIgdG8gdGhlIGxpc3Qgb2YgdGhlIGtleXMgbWFuYWdlZCBpbiB0aGUgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBuZXdLZXkgQSBrZXkgcGFpciBvZiB0aGUgYXBwcm9wcmlhdGUgY2xhc3MgdG8gYmUgYWRkZWQgdG8gdGhlIFtbS2V5Q2hhaW5dXVxuICAgICAqL1xuICAgIGFkZEtleSA9IChuZXdLZXk6S1BDbGFzcykgPT4ge1xuICAgICAgICBuZXdLZXkuc2V0Q2hhaW5JRCh0aGlzLmNoYWluaWQpO1xuICAgICAgICB0aGlzLmtleXNbbmV3S2V5LmdldEFkZHJlc3MoKS50b1N0cmluZyhcImhleFwiKV0gPSBuZXdLZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUga2V5IHBhaXIgZnJvbSB0aGUgbGlzdCBvZiB0aGV5IGtleXMgbWFuYWdlZCBpbiB0aGUgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBrZXkgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBmb3IgdGhlIGFkZHJlc3Mgb3IgS1BDbGFzcyB0byByZW1vdmVcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgYm9vbGVhbiB0cnVlIGlmIGEga2V5IHdhcyByZW1vdmVkLlxuICAgICAqL1xuICAgIHJlbW92ZUtleSA9IChrZXk6S1BDbGFzcyB8IEJ1ZmZlcikgPT4ge1xuICAgICAgICBsZXQga2FkZHI6c3RyaW5nO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBCdWZmZXIpe1xuICAgICAgICAgICAga2FkZHIgPSBrZXkudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrYWRkciA9IGtleS5nZXRBZGRyZXNzKCkudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYoa2FkZHIgaW4gdGhpcy5rZXlzKXtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmtleXNba2FkZHJdO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlcmUgaXMgYSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gdGhlIGtleXMgZGF0YWJhc2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGhhc0tleSA9IChhZGRyZXNzOkJ1ZmZlcik6Ym9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiAoYWRkcmVzcy50b1N0cmluZyhcImhleFwiKSBpbiB0aGlzLmtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIFtbS2V5UGFpcl1dIGxpc3RlZCB1bmRlciB0aGUgcHJvdmlkZWQgYWRkcmVzc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZGRyZXNzIFRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBvZiB0aGUgYWRkcmVzcyB0byByZXRyaWV2ZSBmcm9tIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIFtbS2V5UGFpcl1dIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICovXG4gICAgZ2V0S2V5ID0gKGFkZHJlc3M6QnVmZmVyKTogS1BDbGFzcyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleXNbYWRkcmVzcy50b1N0cmluZyhcImhleFwiKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBbW0tleUNoYWluXV0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIFtbS2V5Q2hhaW5dXSdzIGNoYWluSURcbiAgICAgKi9cbiAgICBnZXRDaGFpbklEID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5pZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFtbS2V5Q2hhaW5dXSBhbmQgYWxsIGFzc29jaWF0ZWQga2V5cGFpcnMuXG4gICAgICogXG4gICAgICogQHBhcmFtIGNoYWluaWQgU3RyaW5nIGZvciB0aGUgY2hhaW5JRFxuICAgICAqL1xuICAgIHNldENoYWluSUQgPSAoY2hhaW5pZDpzdHJpbmcpOnZvaWQgPT4ge1xuICAgICAgICB0aGlzLmNoYWluaWQgPSBjaGFpbmlkO1xuICAgICAgICBmb3IobGV0IGFkZHJlc3MgaW4gdGhpcy5rZXlzKXtcbiAgICAgICAgICAgIHRoaXMua2V5c1thZGRyZXNzXS5zZXRDaGFpbklEKGNoYWluaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiBbW0tleUNoYWluXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2hhaW5pZDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICB9XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgZm9yIG1hbmFnaW5nIGEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb2YgYW4gZXhhY3QgbGVuZ3RoLlxuICogXG4gKiBDcmVhdGUgYSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhpcyBvbmUgYW5kIG92ZXJyaWRlIGJzaXplIHRvIG1ha2UgaXQgdmFsaWRhdGUgZm9yIGV4YWN0bHkgdGhlIGNvcnJlY3QgbGVuZ3RoLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTkJ5dGVzIHtcbiAgICBwcm90ZWN0ZWQgYnl0ZXM6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBic2l6ZTpudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBleGFjdCBsZW5ndGggcmVxdWlyZW1lbnQgb2YgdGhpcyBjbGFzc1xuICAgICAqL1xuICAgIGdldFNpemUgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgYmFzZS01OCBlbmNvZGVkIHN0cmluZywgdmVyaWZpZXMgaXRzIGxlbmd0aCwgYW5kIHN0b3JlcyBpdC5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICBmcm9tU3RyaW5nKGI1OHN0cjpzdHJpbmcpOm51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmZyb21CdWZmZXIoYmludG9vbHMuYjU4VG9CdWZmZXIoYjU4c3RyKSk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tU3RyaW5nOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgW1tCdWZmZXJdXSwgdmVyaWZpZXMgaXRzIGxlbmd0aCwgYW5kIHN0b3JlcyBpdC4gXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbUJ1ZmZlcihidWZmOkJ1ZmZlcik6bnVtYmVyIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmKGJ1ZmYubGVuZ3RoICE9IHRoaXMuYnNpemUpe1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgXCIgKyB0aGlzLmJzaXplICsgXCIgYnl0ZXMuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ieXRlcyA9IEJ1ZmZlci5mcm9tKGJ1ZmYpO1xuICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBsZXQgZW1zZzpzdHJpbmcgPSBcIkVycm9yIC0gTkJ5dGVzLmZyb21CdWZmZXI6IFwiICsgZTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZW1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b0J1ZmZlcigpOkJ1ZmZlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5dGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBiYXNlLTU4IHN0cmluZyBvZiB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCk6c3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGJpbnRvb2xzLmJ1ZmZlclRvQjU4KHRoaXMudG9CdWZmZXIoKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgW1tOQnl0ZXNdXS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbmxldCBuMl9hdm06b2JqZWN0ID0ge1xuICAgIFwiYmxvY2tjaGFpbklEXCI6IFwiNGt0UmpzQUt4Z01yMmFFenY5U1dtclU3WGs1Rm5pSFVyVkNYNFAxVFpTZlRMWldGTVwiLFxuICAgIFwiYWxpYXNcIjogXCJYXCIsXG4gICAgXCJ2bVwiOiBcImF2bVwiXG59O1xuXG5sZXQgbjJfcGxhdGZvcm06b2JqZWN0ID0gIHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIixcbiAgICBcImFsaWFzXCI6IFwiUFwiLFxuICAgIFwidm1cIjogXCJwbGF0Zm9ybVwiXG59O1xuXG5sZXQgbjJfY29udHJhY3RzOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIjJtVVlTWGZMckR0aWd3YnpqMUx4S1ZzSHdFTGdoYzVzaXNvWHJ6SndMcUFBUUhGNGlcIixcbiAgICBcImFsaWFzXCI6IFwiQ1wiLFxuICAgIFwidm1cIjogXCJjb250cmFjdHNcIlxufVxuXG5sZXQgbjEyMzQ1X2F2bTpvYmplY3QgPSBPYmplY3QuYXNzaWduKHt9LCBuMl9hdm0pO1xubjEyMzQ1X2F2bVtcImJsb2NrY2hhaW5JRFwiXSA9IFwiNFI1cDJSWERHTHFhaWZaRTRoSFdIOW93ZTM0cGZvQlVMbjFEclFUV2l2amc4bzRhSFwiO1xubGV0IG4xMjM0NV9wbGF0Zm9ybSA9IE9iamVjdC5hc3NpZ24oe30sIG4yX3BsYXRmb3JtKTtcbm4xMjM0NV9wbGF0Zm9ybVtcImJsb2NrY2hhaW5JRFwiXSA9IFwiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFMcG9ZWVwiO1xubGV0IG4xMjM0NV9jb250cmFjdHMgPSBPYmplY3QuYXNzaWduKHt9LCBuMl9jb250cmFjdHMpO1xubjEyMzQ1X2NvbnRyYWN0c1tcImJsb2NrY2hhaW5JRFwiXSA9IFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdHMge1xuICAgIHN0YXRpYyBuZXR3b3JrID0ge1xuICAgICAgICBcIjFcIjoge30sIC8vdXBkYXRlIGJlZm9yZSBtYWlubmV0XG4gICAgICAgIFwiMlwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjJfYXZtLFxuICAgICAgICAgICAgXCI0a3RSanNBS3hnTXIyYUV6djlTV21yVTdYazVGbmlIVXJWQ1g0UDFUWlNmVExaV0ZNXCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcImNvbnRyYWN0c1wiOiBuMl9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjJfY29udHJhY3RzLFxuICAgICAgICAgICAgXCIybVVZU1hmTHJEdGlnd2J6ajFMeEtWc0h3RUxnaGM1c2lzb1hyekp3THFBQVFIRjRpXCI6IG4yX2NvbnRyYWN0c1xuICAgICAgICB9LFxuICAgICAgICBcIjEyMzQ1XCI6IHtcbiAgICAgICAgICAgIFwiYXZtXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwiNFI1cDJSWERHTHFhaWZaRTRoSFdIOW93ZTM0cGZvQlVMbjFEclFUV2l2amc4bzRhSFwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJwbGF0Zm9ybVwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjEyMzQ1X3BsYXRmb3JtLFxuICAgICAgICAgICAgXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiY29udHJhY3RzXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjEyMzQ1X2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiOiBuMTIzNDVfY29udHJhY3RzXG4gICAgICAgIH1cbiAgICB9O1xufSJdfQ== |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
9893619