@cubist-labs/cubesigner-sdk 0.3.8 → 0.3.13

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.
@@ -3,4 +3,4 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgYnkgb3BlbmFwaS10eXBlc2NyaXB0LlxuICogRG8gbm90IG1ha2UgZGlyZWN0IGNoYW5nZXMgdG8gdGhlIGZpbGUuXG4gKi9cblxuLyoqIE9uZU9mIHR5cGUgaGVscGVycyAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG50eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcbnR5cGUgT25lT2Y8VCBleHRlbmRzIGFueVtdPiA9IFQgZXh0ZW5kcyBbaW5mZXIgT25seV1cbiAgPyBPbmx5XG4gIDogVCBleHRlbmRzIFtpbmZlciBBLCBpbmZlciBCLCAuLi5pbmZlciBSZXN0XVxuICAgID8gT25lT2Y8W1hPUjxBLCBCPiwgLi4uUmVzdF0+XG4gICAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBwYXRocyB7XG4gIFwiL3YwL2Fib3V0X21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F2YS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImF2YVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJ0Y1NpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9kZXJpdmVfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDE5MS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwMTkxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXA3MTIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDcxMlNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mQ3ViZVNpZ25lclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZk9pZGNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKlxuICAgICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5UHJvb2ZcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzL3trZXlfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleSBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgICAqXG4gICAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEtleVJvbGVzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLFxuICAgICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUNzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlVG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIExvZ2luIHdpdGggT0lEQ1xuICAgICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKlxuICAgICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9pZGNBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfa2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICAgKlxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRLZXlzVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF91c2VyL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICAgKlxuICAgICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZFVzZXJUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICAgKlxuICAgICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVLZXlGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBhY2Nlc3MgdG9rZW5zIGZvciBhIGdpdmVuIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVRva2Vuc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgVG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlVG9rZW5cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFsbCBhY2Nlc3MgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQWxsUm9sZVRva2Vuc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnMve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1gXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFuIGFjY2VzcyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVJvbGVUb2tlblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVXNlcnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVVc2VyRnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHNlc3Npb25zXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXR1cm5lZFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RTZXNzaW9uc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXNcbiAgICAgKiB0byBiZSBhdCBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlU2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXZva2VkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25zXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi9zZWxmXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQ3VycmVudFNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRTZXNzaW9uXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc29sYW5hL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzb2xhbmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdG9rZW4va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleXMgdGhhdCB0aGUgcm9sZSB0b2tlbiBjYW4gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RUb2tlbktleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9leHBvcnRcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRMaXN0XCJdO1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAgICpcbiAgICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckV4cG9ydERlbGV0ZVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlckV4cG9ydENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0luaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG8ve2ZpZG9faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVGaWRvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZVRvdHBcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyVmVyaWZ5VG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RVc2Vyc0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0luaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlc2V0VG90cEluaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wicmVzZXRUb3RwQ29tcGxldGVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVRvdHBMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ibG9iL3NpZ24ve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gUmF3IEJsb2JcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgICAqXG4gICAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKlxuICAgICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgICAqXG4gICAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJsb2JTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vY3ViZTNzaWduZXIvaGVhcnRiZWF0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgaXMgY2FsbGVkIGJ5IHRoZSBjdWJlM3NpZ25lciBwcm94eSB0byByZWNvcmQgdmFyaW91cyBtZXRyaWNzIHRvIENsb3VkV2F0Y2guXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImN1YmUzc2lnbmVySGVhcnRiZWF0XCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhbiBldGgyIHZhbGlkYXRvciByZXF1ZXN0IHdpdGggYSBnaXZlbiBCTFMga2V5LlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDJTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zdGFrZVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgICAqXG4gICAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi91bnN0YWtlL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqXG4gICAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVuc3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS90b2tlbi9yZWZyZXNoXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInNpZ25lclNlc3Npb25SZWZyZXNoXCJdO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSB3ZWJob29rcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBjb21wb25lbnRzIHtcbiAgc2NoZW1hczoge1xuICAgIEFjY2VwdGVkUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlmZmVyZW50IHJlc3BvbnNlcyB3ZSByZXR1cm4gZm9yIHN0YXR1cyBjb2RlIFwiMjAyIEFjY2VwdGVkXCIuXG4gICAgICpcbiAgICAgKiBFdmVuIHRob3VnaCBcIjIwMiBBY2NlcHRlZFwiIGlzIGEgc3VjY2Vzc2Z1bCByZXNwb25zZSwgd2UgcmVwcmVzZW50XG4gICAgICogaXQgYXMgYSBSdXN0IGVycm9yIGJlY2F1c2UgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIGhhdmUgcm91dGUgaGFuZGxlcnNcbiAgICAgKiByZXR1cm4gYFJlc3VsdDxULCBTaWduZXJFcnJvcj5gIHdoZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiByZXNwb25zZSBmb3IgdGhlIHN0YXR1cyBjb2RlIFwiMjAwIE9rXCIuXG4gICAgICovXG4gICAgQWNjZXB0ZWRWYWx1ZToge1xuICAgICAgTWZhUmVxdWlyZWQ6IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcmVxdWVzdCBpZCAqL1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9yZ2FuaXphdGlvbiBpZCAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2Vzc2lvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBY2NlcHRlZFZhbHVlQ29kZTogXCJNZmFSZXF1aXJlZFwiO1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGlkZW50aXR5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbG9naW4gTUZBIHBvbGljeSAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSByZXF1aXJlZCBmb3IgYm90aCBgYXV0aGVudGljYXRlYCBhbmQgYHJlZnJlc2hgLiAqL1xuICAgIEF1dGhEYXRhOiB7XG4gICAgICAvKiogRm9ybWF0OiBpbnQzMiAqL1xuICAgICAgZXBvY2hfbnVtOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICBvdGhlcl90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGFzc2VydGlvbiByZXNwb25zZSB1c2VkIGJ5IGNsaWVudHMgd2hlbiBhdHRlbXB0aW5nIHRvIGxvZyBpbiB3aXRoIGEga25vd24gY3JlZGVudGlhbFxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNhdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRhaW5zIHRoZSBzdGFuZGFyZCBDVEFQMiBhdXRoZW50aWNhdG9yIGRhdGEuIE11c3QgYmUgYSB2YWxpZCBbYEF1dGhlbnRpY2F0b3JEYXRhYF0uXG4gICAgICAgKiBUaGlzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyBrZXkgd2FzIGludm9rZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1hdXRoZW50aWNhdG9yZGF0YVxuICAgICAgICovXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgVVRGOCBlbmNvZGVkIEpTT04gd2hpY2ggbXVzdCBiZSBhIHZhbGlkIFtgQ2xpZW50RGF0YWBdXG4gICAgICAgKiBUaGlzIGRhdGEgaXMgY29tYmluZWQgd2l0aCBgYXV0aGVudGljYXRvcl9kYXRhYCB0byBwcm9kdWNlIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIG1lYW5pbmcgdGhlIGNsaWVudCBhdHRlc3RzIHRvIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGRhdGEuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JyZXNwb25zZS1jbGllbnRkYXRhanNvblxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBvZiB0aGUgY29uY2F0ZW5hdGVkIGBhdXRoZW50aWNhdG9yRGF0YSB8fCBoYXNoYCB3aGVyZVxuICAgICAgICogYGhhc2hgIGlzIHRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgYGNsaWVudERhdGFKU09OYCBidWZmZXI6XG4gICAgICAgKlxuICAgICAgICogRmllbGQgRGVmaW5pdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2Utc2lnbmF0dXJlXG4gICAgICAgKiBTdGVwIDExIG9mIGBnZXRBc3NlcnRpb25gIHNwZWNpZmllcyB0aGUgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tb3AtZ2V0LWFzc2VydGlvblxuICAgICAgICogUmVxdWlyZW1lbnQgZm9yIFNIQS0yNTY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNjb2xsZWN0ZWRjbGllbnRkYXRhLWhhc2gtb2YtdGhlLXNlcmlhbGl6ZWQtY2xpZW50LWRhdGFcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdGhlIGF1dGhlbnRpY2F0b3IgdG8gb3B0aW9uYWxseSBkZWNsYXJlIHRoZSBjcmVkZW50aWFsIGlkZW50aWZpZXIgdGhleSB1c2VkLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2UtdXNlcmhhbmRsZVxuICAgICAgICovXG4gICAgICB1c2VySGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgYXV0aGVudGljYXRvcnMnIGF0dGFjaG1lbnQgbW9kYWxpdGllcy5cbiAgICAgKiBSZWx5aW5nIFBhcnRpZXMgdXNlIHRoaXMgdG8gZXhwcmVzcyBhIHByZWZlcnJlZCBhdXRoZW50aWNhdG9yIGF0dGFjaG1lbnRcbiAgICAgKiBtb2RhbGl0eSB3aGVuIGNhbGxpbmcgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIHRvIGNyZWF0ZSBhIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9yYXR0YWNobWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6IFwicGxhdGZvcm1cIiB8IFwiY3Jvc3MtcGxhdGZvcm1cIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBhdXRoZW50aWNhdG9yJ3NcbiAgICAgKiByZXNwb25zZSB0byBhIGNsaWVudOKAmXMgcmVxdWVzdCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsLiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGNyZWRlbnRpYWwgdGhhdCBjYW4gYmVcbiAgICAgKiB1c2VkIHRvIGlkZW50aWZ5IGl0IGZvciBsYXRlciB1c2UsIGFuZCBtZXRhZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZVxuICAgICAqIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgdG8gYXNzZXNzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLWF1dGhlbnRpY2F0b3JhdHRlc3RhdGlvbnJlc3BvbnNlXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGF0dGVzdGF0aW9uIG9iamVjdCwgd2hpY2ggaXMgb3BhcXVlIHRvLCBhbmRcbiAgICAgICAqIGNyeXB0b2dyYXBoaWNhbGx5IHByb3RlY3RlZCBhZ2FpbnN0IHRhbXBlcmluZyBieSwgdGhlIGNsaWVudC4gVGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QgY29udGFpbnMgYm90aCBhdXRoZW50aWNhdG9yIGRhdGEgYW5kIGFuIGF0dGVzdGF0aW9uXG4gICAgICAgKiBzdGF0ZW1lbnQuIFRoZSBmb3JtZXIgY29udGFpbnMgdGhlIEFBR1VJRCwgYSB1bmlxdWUgY3JlZGVudGlhbCBJRCwgYW5kXG4gICAgICAgKiB0aGUgY3JlZGVudGlhbCBwdWJsaWMga2V5LiBUaGUgY29udGVudHMgb2YgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIEl0IGFsc28gY29udGFpbnMgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHkncyBzZXJ2ZXIgcmVxdWlyZXMgdG8gdmFsaWRhdGUgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCxcbiAgICAgICAqIGFzIHdlbGwgYXMgdG8gZGVjb2RlIGFuZCB2YWxpZGF0ZSB0aGUgYXV0aGVudGljYXRvciBkYXRhIGFsb25nIHdpdGggdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YS4gRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICAgICAgKiDCp+KArzYuNSBBdHRlc3RhdGlvbiwgwqfigK82LjUuNCBHZW5lcmF0aW5nIGFuIEF0dGVzdGF0aW9uIE9iamVjdCwgYW5kIEZpZ3VyZVxuICAgICAgICogNi5cbiAgICAgICAqL1xuICAgICAgYXR0ZXN0YXRpb25PYmplY3Q6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlLCBpbmhlcml0ZWQgZnJvbSBBdXRoZW50aWNhdG9yUmVzcG9uc2UsIGNvbnRhaW5zIHRoZVxuICAgICAgICogSlNPTi1jb21wYXRpYmxlIHNlcmlhbGl6YXRpb24gb2YgY2xpZW50IGRhdGEgKHNlZSDCp+KArzYuNSBBdHRlc3RhdGlvbilcbiAgICAgICAqIHBhc3NlZCB0byB0aGUgYXV0aGVudGljYXRvciBieSB0aGUgY2xpZW50IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoaXNcbiAgICAgICAqIGNyZWRlbnRpYWwuIFRoZSBleGFjdCBKU09OIHNlcmlhbGl6YXRpb24gTVVTVCBiZSBwcmVzZXJ2ZWQsIGFzIHRoZSBoYXNoXG4gICAgICAgKiBvZiB0aGUgc2VyaWFsaXplZCBjbGllbnQgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBvdmVyIGl0LlxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIHRoZSBBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcbiAgICAgKiBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgdGhlaXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyBhdXRoZW50aWNhdG9yXG4gICAgICogYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYToge1xuICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkF1dGhuIExldmVsXG4gICAgICAgKiAxIGFuZCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXRzIG5hbWluZyByZXRhaW5zIHRoZSBkZXByZWNhdGVkXG4gICAgICAgKiDigJxyZXNpZGVudOKAnSB0ZXJtaW5vbG9neSBmb3IgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBzZXQgaXQgdG8gdHJ1ZSBpZiwgYW5kIG9ubHkgaWYsIHJlc2lkZW50S2V5IGlzIHNldCB0byByZXF1aXJlZC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYS1yZXF1aXJlcmVzaWRlbnRrZXlcbiAgICAgICAqL1xuICAgICAgcmVxdWlyZVJlc2lkZW50S2V5PzogYm9vbGVhbjtcbiAgICAgIHJlc2lkZW50S2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNpZGVudEtleVJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyBtYXkgaW1wbGVtZW50IHZhcmlvdXMgdHJhbnNwb3J0cyBmb3IgY29tbXVuaWNhdGluZyB3aXRoXG4gICAgICogY2xpZW50cy4gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGhpbnRzIGFzIHRvIGhvdyBjbGllbnRzIG1pZ2h0IGNvbW11bmljYXRlXG4gICAgICogd2l0aCBhIHBhcnRpY3VsYXIgYXV0aGVudGljYXRvciBpbiBvcmRlciB0byBvYnRhaW4gYW4gYXNzZXJ0aW9uIGZvciBhXG4gICAgICogc3BlY2lmaWMgY3JlZGVudGlhbC4gTm90ZSB0aGF0IHRoZXNlIGhpbnRzIHJlcHJlc2VudCB0aGUgV2ViQXV0aG4gUmVseWluZ1xuICAgICAqIFBhcnR5J3MgYmVzdCBiZWxpZWYgYXMgdG8gaG93IGFuIGF1dGhlbnRpY2F0b3IgbWF5IGJlIHJlYWNoZWQuIEEgUmVseWluZ1xuICAgICAqIFBhcnR5IHdpbGwgdHlwaWNhbGx5IGxlYXJuIG9mIHRoZSBzdXBwb3J0ZWQgdHJhbnNwb3J0cyBmb3IgYSBwdWJsaWMga2V5XG4gICAgICogY3JlZGVudGlhbCB2aWEgZ2V0VHJhbnNwb3J0cygpLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXV0aGVudGljYXRvcnRyYW5zcG9ydFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclRyYW5zcG9ydDogXCJ1c2JcIiB8IFwibmZjXCIgfCBcImJsZVwiIHwgXCJpbnRlcm5hbFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGFuIEF2YWxhbmNoZSB0cmFuc2FjdGlvbnMgKi9cbiAgICBBdmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEF2YVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGEgemVyb2l6aW5nIDMyLWJ5dGUgZml4ZWQtc2l6ZSBhcnJheSAqL1xuICAgIEIzMjogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJhZFJlcXVlc3RFcnJvckNvZGU6XG4gICAgICB8IFwiR2VuZXJpY0JhZFJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRCb2R5XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5UmVkdW5kYW50UnVsZVwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ05hbWVUYWtlblwiXG4gICAgICB8IFwiUm9sZU5hbWVUYWtlblwiXG4gICAgICB8IFwiQWRkS2V5VG9Sb2xlQ291bnRUb29IaWdoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5SWRcIlxuICAgICAgfCBcIkludmFsaWRLZXlNZXRhZGF0YUxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZXJpdmVkS2V5XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydEluUHJvZ3Jlc3NcIlxuICAgICAgfCBcIlJvbGVOb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRPcmdJZE1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0SW52YWxpZE9yZ0lkXCJcbiAgICAgIHwgXCJNZmFSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRLZXlUeXBlXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxcIlxuICAgICAgfCBcIkludmFsaWRIZXhWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2UzMlZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTU4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRGb3JrVmVyc2lvbkxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEV0aEFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRTdGVsbGFyQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZE9yZ05hbWVPcklkXCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2VEZXBvc2l0XCJcbiAgICAgIHwgXCJJbnZhbGlkQmxvYlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU29sYW5hU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFaXA3MTJTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGVyaXZlS2V5UmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtpbmdBbW91bnRcIlxuICAgICAgfCBcIkN1c3RvbVN0YWtpbmdBbW91bnROb3RBbGxvd2VkRm9yV3JhcHBlckNvbnRyYWN0XCJcbiAgICAgIHwgXCJJbnZhbGlkVW5zdGFrZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVVc2VyUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIlVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5UnVsZUtleU1pc21hdGNoXCJcbiAgICAgIHwgXCJFbXB0eVNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFNjb3Blc0ZvclJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTGlmZXRpbWVcIlxuICAgICAgfCBcIk5vU2luZ2xlS2V5Rm9yVXNlclwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJ1bGVcIlxuICAgICAgfCBcIlNvdXJjZUlwQWxsb3dsaXN0RW1wdHlcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSZXBlYXRlZFJ1bGVcIlxuICAgICAgfCBcIkF2YVNpZ25IYXNoRXJyb3JcIlxuICAgICAgfCBcIkF2YVNpZ25FcnJvclwiXG4gICAgICB8IFwiQnRjU2Vnd2l0SGFzaEVycm9yXCJcbiAgICAgIHwgXCJCdGNTaWduRXJyb3JcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25FcnJvclwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblVzZXJBZGRcIlxuICAgICAgfCBcIlRoaXJkUGFydHlVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJFcnJvclwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVNaXNtYXRjaFwiXG4gICAgICB8IFwiSW52YWxpZE9pZGNUb2tlblwiXG4gICAgICB8IFwiT2lkY0lzc3VlclVuc3VwcG9ydGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vQXBwbGljYWJsZUp3a1wiXG4gICAgICB8IFwiRmlkb0NyZWRlbnRpYWxNaXNzaW5nXCJcbiAgICAgIHwgXCJGaWRvS2V5QWxyZWFkeVJlZ2lzdGVyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlTaWduQ291bnRUb29Mb3dcIlxuICAgICAgfCBcIkZpZG9WZXJpZmljYXRpb25GYWlsZWRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VNZmFNaXNtYXRjaFwiXG4gICAgICB8IFwiVW5zdXBwb3J0ZWRMZWdhY3lDb2duaXRvU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZElkZW50aXR5UHJvb2ZcIlxuICAgICAgfCBcIlBhZ2luYXRpb25EYXRhRXhwaXJlZFwiXG4gICAgICB8IFwiRXhpc3RpbmdLZXlzVmlvbGF0ZUV4Y2x1c2l2ZUtleUFjY2Vzc1wiXG4gICAgICB8IFwiRXhwb3J0RGVsYXlUb29TaG9ydFwiXG4gICAgICB8IFwiRXhwb3J0V2luZG93VG9vTG9uZ1wiXG4gICAgICB8IFwiSW52YWxpZFRvdHBGYWlsdXJlTGltaXRcIlxuICAgICAgfCBcIkludmFsaWRFaXAxOTFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiQ2Fubm90UmVzZW5kVXNlckludml0YXRpb25cIjtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWG94TWpNME5UWUtcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBCbG9iU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9iIHRvIHNpZ24sIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICpcbiAgICAgICAqIE5vdGUgdGhhdCBjZXJ0YWluIHNpZ25pbmcga2V5cyBpbXBvc2UgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgb24gdGhlIGNvbnRlbnRzIG9mXG4gICAgICAgKiB0aGUgbWVzc2FnZS4gRm9yIGV4YW1wbGUsIFNlY3AyNTZrMSBrZXlzIHJlcXVpcmUgdGhhdCB0aGUgbWVzc2FnZSBpcyAzMiBieXRlcyBsb25nLlxuICAgICAgICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgQmxvYlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCdGNTaWdoYXNoVHlwZTpcbiAgICAgIHwgXCJBbGxcIlxuICAgICAgfCBcIk5vbmVcIlxuICAgICAgfCBcIlNpbmdsZVwiXG4gICAgICB8IFwiQWxsUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiTm9uZVBsdXNBbnlvbmVDYW5QYXlcIlxuICAgICAgfCBcIlNpbmdsZVBsdXNBbnlvbmVDYW5QYXlcIjtcbiAgICBCdGNTaWduUmVxdWVzdDoge1xuICAgICAgc2lnX2tpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnbmF0dXJlS2luZFwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJpdGNvaW4gdHJhbnNhY3Rpb24gdG8gc2lnbiAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEJ0Y1NpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZSBpbiBjb21wYWN0IGZvcm1hdC5cbiAgICAgICAqIEBleGFtcGxlIDB4NDU0YWVmMjdjMjFkZjdkZDhmNTM3ZGM4NjlmNGNkNjUyODZjZTIzOWE1MmQzNjQ3MGY0ZDg1YmU4NWE4OTFiMDI3ODllNWZmZDg1NjBiMzJhOTgxMTBlNWQwMDk2ODAyZTRjMTQxNDVjZjZjNDRmMTBhNzY4Yzg3NzU1ZWFhNDgwMFxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIEJ0Y1NpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VncmVnYXRlZCBXaXRuZXNzICovXG4gICAgICBTZWd3aXQ6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBpbnB1dCBpbmRleFxuICAgICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgICAqL1xuICAgICAgICBpbnB1dF9pbmRleDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFNjcmlwdFxuICAgICAgICAgKiBAZXhhbXBsZSAweDc2YTkxNDc5MDkxOTcyMTg2YzQ0OWViMWRlZDIyYjc4ZTQwZDAwOWJkZjAwODk4OGFjXG4gICAgICAgICAqL1xuICAgICAgICBzY3JpcHRfY29kZTogc3RyaW5nO1xuICAgICAgICBzaWdoYXNoX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnaGFzaFR5cGVcIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbW91bnQgaW4gc2F0b3NoaXNcbiAgICAgICAgICogQGV4YW1wbGUgMTAwMDAwMFxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlc2NyaWJlcyBob3cgdG8gZGVyaXZlIGEgV2ViQXV0aG4gY2hhbGxlbmdlIHZhbHVlLiAqL1xuICAgIENoYWxsZW5nZVBpZWNlczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgVVRGOCBKU09OLiBUaGUgZGF0YSBpbiB0aGF0IEpTT04gaXMgZW5kcG9pbnQgc3BlY2lmaWMsIGFuZCBkZXNjcmliZXMgd2hhdCB0aGlzIEZJRE8gY2hhbGxlbmdlIHdpbGwgYmUgdXNlZCBmb3IuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBjYW4gdXNlIGBwcmVpbWFnZWAgYWxvbmcgd2l0aCBgcmFuZG9tX3NlZWRgIHRvIHJlY29uc3RydWN0IHRoZSBjaGFsbGVuZ2UgbGlrZSBzbzpcbiAgICAgICAqXG4gICAgICAgKiBgY2hhbGxlbmdlID0gSE1BQy1TSEEyNTYoa2V5PXJhbmRvbV9zZWVkLCBtZXNzYWdlPXByZWltYWdlKWBcbiAgICAgICAqL1xuICAgICAgcHJlaW1hZ2U6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSByYW5kb20gc2VlZCB0aGF0IHByZXZlbnRzIHJlcGxheSBhdHRhY2tzICovXG4gICAgICByYW5kb21fc2VlZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gaW5mb3JtYXRpb24gc2VudCB0byB0aGUgY2xpZW50LlxuICAgICAqIFRoaXMgc3RydWN0IHdvcmtzIGluIHRhbmRlbSB3aXRoIGl0cyBzZXJ2ZXItc2lkZSBjb3VudGVycGFydCBbYFNlc3Npb25EYXRhYF0uXG4gICAgICovXG4gICAgQ2xpZW50U2Vzc2lvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciBhdXRob3JpemF0aW9uLiAqL1xuICAgICAgYXV0aF90b2tlbjogc3RyaW5nO1xuICAgICAgYXV0aF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGF0IHdoaWNoIHRoZSB0b2tlbiB3YXMgbGFzdCByZWZyZXNoZWRcbiAgICAgICAqL1xuICAgICAgZXBvY2g6IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciByZWZyZXNoaW5nIHRoZSBgKGF1dGgsIHJlZnJlc2gpYCB0b2tlbiBwYWlyICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICByZWZyZXNoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElEICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDb25maWd1cmVkTWZhOlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdHlwZTogXCJ0b3RwXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgY3JlZGVudGlhbCBpZCAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZ2l2ZW4gdG8gdGhlIGtleSAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcImZpZG9cIjtcbiAgICAgICAgfTtcbiAgICBDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICogUlNBIHNpZ25pbmcga2V5IHVzZWQgdG8gc2lnbiB0aGUgY29udGVudHMgb2YgdGhpcyBtZXNzYWdlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIENoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlc1xuICAgICAgICogQGV4YW1wbGUgNVxuICAgICAgICovXG4gICAgICBjaGFpbl9pZD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2Yga2V5cyB0byBjcmVhdGVcbiAgICAgICAqIEBleGFtcGxlIDFcbiAgICAgICAqL1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdXNlcnMgdG8gc3BlY2lmeSBhIHVzZXIgb3RoZXIgdGhhbiB0aGVtc2VsdmVzIHRvIHJlY2VpdmUgdGhlIGtleVxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGNyZWF0ZSByb2xlIHJlcXVlc3QgYm9keSAqL1xuICAgIENyZWF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZVNlc3Npb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXNzaW9uJ3MgcHVycG9zZVxuICAgICAgICogQGV4YW1wbGUgTWFuYWdlIGtleXMgb24gc2VydmVyIGZvby5iYXJcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJtYW5hZ2U6a2V5OipcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzY29wZXM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgQ3JlYXRlVG9rZW5SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFZhbGlkYXRvciBTaWduaW5nXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuIEJ5IGRlZmF1bHQsIGl0IGhhcyBhbGxcbiAgICAgICAqIHNpZ25pbmcgY2FwYWJpbGl0aWVzLCBpLmUuLCBqdXN0IHRoZSAnc2lnbjoqJyBzY29wZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJzaWduOipcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzY29wZXM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0ZW5kZWQgZm9ybSBvZiBgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBDcmVhdGlvbk9wdGlvbnNXaXRoSGFzaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgfTtcbiAgICBDdWJlU2lnbmVyVXNlckluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgY29uZmlndXJlZF9tZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXQgb25jZSB0aGUgdXNlciBzdWNjZXNzZnVsbHkgbG9ncyBpbnRvIEN1YmVTaWduZXIgKi9cbiAgICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBodW1hbiBuYW1lIGZvciB0aGUgdXNlciAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEN1YmVTaWduZXIncyB1c2VyIGlkZW50aWZpZXIgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBwcm9kdWNlZCBieSBhIHN1Y2Nlc3NmdWwgZGVwb3NpdFxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNSxcbiAgICAgKiAgIFwiZGVwb3NpdF90eG5cIjoge1xuICAgICAqICAgICBcImRhdGFcIjogXCIweC4uLlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmZjUwZWQzZDBlYzAzYWMwMWQ0Yzc5YWFkNzQ5MjhiZmY0OGE3YjJiXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDFiYzE2ZDY3NGVjODAwMDAwXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ld192YWxpZGF0b3JfcGtcIjogXCI5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBEZXBvc2l0VHhuOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCBmb3Igd2hpY2ggdGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24uIEluY2x1ZGVzIG9ubHkgYHRvYCwgYHZhbHVlYCwgYW5kIGBkYXRhYCBmaWVsZHMuICovXG4gICAgICBkZXBvc2l0X3R4bjogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgY29tcHJlc3NlZCBmb3JtIG9mIHRoZSBuZXcgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5ICovXG4gICAgICBuZXdfdmFsaWRhdG9yX3BrOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgZGVwb3NpdCB0byBwZXJmb3JtXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBEZXBvc2l0VHlwZTogXCJDYW5vbmljYWxcIiB8IFwiV3JhcHBlclwiO1xuICAgIERlcml2ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9uZSBvciBtb3JlIGRlcml2YXRpb24gcGF0aHMgZnJvbSB3aGljaCB0byBkZXJpdmUga2V5cy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJtLzQ0Jy82MCcvMCcvMC8wXCIsXG4gICAgICAgKiAgIFwibS80NCcvOTAwMCcvMCcvMC8wXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmdbXTtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbC1pZCBvZiB0aGUgbW5lbW9uaWMgdG8gdXNlIGZvciBkZXJpdmF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSAweDlmMDdiZTgyZDkzNGZjYjVkMGY3NWRkMjRjMmRmZWE4YTg1YTRkMGMyODlkNTg4MjhiMzUzN2ZhZTI0ZDMyYjhcbiAgICAgICAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBzaWduYXR1cmUgY29tcHJpc2luZyA2NSBieXRlcyBpbiB0aGUgZm9ybWF0IHJlcXVpcmVkXG4gICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICogd2hpY2ggaXMgZWl0aGVyIDI3IG9yIDI4LlxuICAgICAgICogQGV4YW1wbGUgMHg0MzU1YzQ3ZDYzOTI0ZThhNzJlNTA5YjY1MDI5MDUyZWI2YzI5OWQ1M2EwNGUxNjdjNTc3NWZkNDY2NzUxYzlkMDcyOTk5MzZkMzA0YzE1M2Y2NDQzZGZhMDVmNDBmZjAwN2Q3MjkxMWI2ZjcyMzA3Zjk5NjIzMTYwNWI5MTU2MjFjXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgRWlwMTkxU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0xOTEgZGF0YSB0byBzaWduIGFzIGhleC1lbmNvZGVkIGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogMTMzNyxcbiAgICAgKiAgIFwidHlwZWRfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZG9tYWluXCI6IHtcbiAgICAgKiAgICAgICBcImNoYWluSWRcIjogMTMzNyxcbiAgICAgKiAgICAgICBcIm5hbWVcIjogXCJFdGhlciBNYWlsXCIsXG4gICAgICogICAgICAgXCJ2ZXJpZnlpbmdDb250cmFjdFwiOiBcIjB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1wiLFxuICAgICAqICAgICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAqICAgICAgIFwiY29udGVudHNcIjogXCJIZWxsbywgQm9iIVwiLFxuICAgICAqICAgICAgIFwiZnJvbVwiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJDb3dcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhDRDJhM2Q5RjkzOEUxM0NEOTQ3RWMwNUFiQzdGRTczNERmOEREODI2XCIsXG4gICAgICogICAgICAgICAgIFwiMHhEZWFEYmVlZmRFQWRiZWVmZEVhZGJFRUZkZWFkYmVFRmRFYURiZWVGXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwidG9cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQm9iXCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4YkJiQkJCQmJiQkJCYmJiQmJiQmJiYmJCQmJCYmJiYkJiQmJiQkJiQlwiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCZGFCZWE1N0IwQkRBQmVBNTdiMGJkQUJFQTU3YjBCRGFiRWE1N1wiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCMGIwYjBiMGIwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfVxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInByaW1hcnlUeXBlXCI6IFwiTWFpbFwiLFxuICAgICAqICAgICBcInR5cGVzXCI6IHtcbiAgICAgKiAgICAgICBcIkVJUDcxMkRvbWFpblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcnNpb25cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNoYWluSWRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDI1NlwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJpZnlpbmdDb250cmFjdFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiR3JvdXBcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJtZW1iZXJzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvbltdXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiTWFpbFwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImZyb21cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInRvXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjb250ZW50c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJQZXJzb25cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ3YWxsZXRzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcImFkZHJlc3NbXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXVxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEVpcDcxMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4taWQgdG8gd2hpY2ggdGhpcyB0eXBlZCBkYXRhIHdpbGwgYmUgc2VudFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFSVAtNzEyIHR5cGVkIGRhdGEuIFJlZmVyIHRvIHRoZSBKU09OIHNjaGVtYSBkZWZpbmVkIGluIEVJUC03MTIuICovXG4gICAgICB0eXBlZF9kYXRhOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICAvKiogQGRlZmF1bHQgbnVsbCAqL1xuICAgIEVtcHR5OiB1bmtub3duO1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggaXMgYSBxdW90ZWQgYHVpbnQ2NGAuXG4gICAgICogQGV4YW1wbGUgMjU2XG4gICAgICovXG4gICAgRXBvY2g6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIERhdGVUaW1lIG1lYXN1cmVkIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBbYFN5c3RlbVRpbWVgXSBhcyBhIFtgdTY0YF1cbiAgICAgKiByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIFtgU3lzdGVtVGltZTo6VU5JWF9FUE9DSGBdLlxuICAgICAqL1xuICAgIEVwb2NoRGF0ZVRpbWU6IG51bWJlcjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdHJ1Y3R1cmUgb2YgRXJyb3JSZXNwb25zZSBtdXN0IG1hdGNoIHRoZSByZXNwb25zZSB0ZW1wbGF0ZSB0aGF0IEFXUyB1c2VzICovXG4gICAgRXJyb3JSZXNwb25zZToge1xuICAgICAgYWNjZXB0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVcIl0gfCBudWxsO1xuICAgICAgZXJyb3JfY29kZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvckNvZGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBpZGVudGlmaWVyICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA0MzExMyxcbiAgICAgKiAgIFwidHhcIjoge1xuICAgICAqICAgICBcImNoYWluX2lkXCI6IFwiMHhhODY5XCIsXG4gICAgICogICAgIFwiZ2FzXCI6IFwiMHg2MWE4MFwiLFxuICAgICAqICAgICBcIm1heEZlZVBlckdhc1wiOiBcIjB4OTUwMkY5MDBcIixcbiAgICAgKiAgICAgXCJtYXhQcmlvcml0eUZlZVBlckdhc1wiOiBcIjB4NTBcIixcbiAgICAgKiAgICAgXCJub25jZVwiOiBcIjB4YlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmMDBiYTEyZjAwMDAwMDAwYjQxMjEyMDAwMDBmMDBjMGZmZWVmMDBkXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIjB4MDJcIixcbiAgICAgKiAgICAgXCJ2YWx1ZVwiOiBcIjB4MTAwMDAwMDAwMDBcIlxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgxU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCB0byBzZXQgaW4gdGhlIGdpdmVuIHRyYW5zYWN0aW9uLlxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRUlQLTI3MTggdHlwZWQgdHJhbnNhY3Rpb24gKHNlZSB0aGUgW2V0aGVycy1yc1xuICAgICAgICogaW50ZXJmYWNlXShodHRwczovL2RvY3MucnMvZXRoZXJzL2xhdGVzdC9ldGhlcnMvdHlwZXMvc3RydWN0LkVpcDE1NTlUcmFuc2FjdGlvblJlcXVlc3QuaHRtbCkpIHR5cGVzLCBpbmNsdWRpbmcgRUlQLTE1NTkgdHJhbnNhY3Rpb25zIChgeyBcInR5cGVcIjogXCIweDAyXCIgLi4uIH1gKSwgYW5kIGxlZ2FjeVxuICAgICAgICogdHJhbnNhY3Rpb25zIChgeyBcInR5cGVcIjogXCIweDAwXCIgLi4uIH1gKS4gQWxsIHZhbHVlcyBpbiB0aGUgdHJhbnNhY3Rpb24gYXJlIGV4cGVjdGVkXG4gICAgICAgKiB0byBiZSAoMHgtcHJlZml4ZWQgb3Igbm90KSBoZXggc3RyaW5ncyBvciBieXRlIGFycmF5cy5cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEV0aDFTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgKi9cbiAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXRoMl9zaWduX3JlcXVlc3RcIjoge1xuICAgICAqICAgICBcImFnZ3JlZ2F0aW9uX3Nsb3RcIjoge1xuICAgICAqICAgICAgIFwic2xvdFwiOiBcIjM2XCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJmb3JrX2luZm9cIjoge1xuICAgICAqICAgICAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgICAgICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4NDI0MjQyNDJcIixcbiAgICAgKiAgICAgICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCJcbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDlkMTNkNjEyMTJjMDY3ZTAyY2U4ZTYwOGE3MDA3ZTJjM2IwMjU3MWU5ZTZmMjdmZjQ1ZGZhOTFiZjI3Yzg3MGJcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInNpZ25pbmdSb290XCI6IFwiMHg5YzU3ZTc3YzQ5NjU3Mjc1NDJiOTMzN2RmNjc1NmY5NDg0NjRiY2EzODU5YmVhNmVkM2MwZWM2NjAwZDg5ODJhXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIkFHR1JFR0FUSU9OX1NMT1RcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcIm1haW5uZXRcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFN1YnNldCBvZiB0aGUgV2ViM1NpZ25lciBFdGgyIEJMUyBzaWduaW5nIHJlcXVlc3Qgd2hvc2Ugc2NoZW1hIGlzIGRlZmluZWRcbiAgICAgICAqIFtoZXJlXShodHRwczovL2NvbnNlbnN5cy5naXRodWIuaW8vd2ViM3NpZ25lci93ZWIzc2lnbmVyLWV0aDIuaHRtbCN0YWcvU2lnbmluZy9vcGVyYXRpb24vRVRIMl9TSUdOKS5cbiAgICAgICAqIFdlIGhhbmRsZSBkZXBvc2l0cyBhbmQgdm9sdW50YXJ5IGV4aXRzIHNlcGFyYXRlbHkuXG4gICAgICAgKi9cbiAgICAgIGV0aDJfc2lnbl9yZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgfTtcbiAgICBFdGgyU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXggZW5jb2RlZCBzaWduYXR1cmUgcHJlZml4ZWQgd2l0aCAweCBlLmcuIFwiMHgwMDAwLi4uXCJcbiAgICAgICAqIEBleGFtcGxlIDB4YjRmMmVmOWQxMmE1NGUxZjU2OTU5NmMwN2M5N2Q2ZDczMDUzNWI2ZmZjMGQyODc3NjFkYzc4MTAzYTg2MzI2NzgyNDcxYTA0Yzc1Y2U3YTZmYWVhMDhjYTlhNGEwODMwMDMxY2RjYjg5M2RhODcxMWQ1NGFhMjI2MTlmMWE3ZTcxYjgxODVkZGY0YzZiZmQ5YmFiYmQ3MzU5NjBlMzVlNTZiZDZlZWI4OTYyNWIwNDg1MGU3YTllZjg4NDZlNTQ5XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRXZtVHhEZXBvc2l0RXJyb3JDb2RlOlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5RGF0YVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlDaGFpbklkXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eVJlY2VpdmVyXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkVmFsdWVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWREYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0FiaVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0Tm9EZXBvc2l0RnVuY3Rpb25cIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRGdW5jdGlvbk5hbWVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWxpZGF0b3JLZXlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWRWYWxpZGF0b3JLZXlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE1pc3NpbmdEZXBvc2l0QXJnXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRXcm9uZ0RlcG9zaXRBcmdUeXBlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRXcm9uZ1ZhbGlkYXRvckFyZ1ZhbHVlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRWYWxpZGF0b3JLZXlOb3RJblJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRXaXRoZHJhd2FsQ3JlZGVudGlhbHNcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVucmVzb2x2ZWRSb2xlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRJbnZhbGlkRGVwb3NpdEVuY29kaW5nXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0Fzc2VydEFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIEZpZG9Bc3NlcnRDaGFsbGVuZ2U6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgZmlkbyBjaGFsbGVuZ2UgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgY3JlZGVudGlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVjbGFyZXMgaW50ZW50IHRvIHJlZ2lzdGVyIGEgbmV3IEZJRE8ga2V5ICovXG4gICAgRmlkb0NyZWF0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG5ldyBmaWRvIGNyZWRlbnRpYWxcbiAgICAgICAqIEBleGFtcGxlIFdvcmsgWXViaWtleVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBGb3JiaWRkZW5FcnJvckNvZGU6XG4gICAgICB8IFwiRmlkb1JlcXVpcmVkVG9SZW1vdmVUb3RwXCJcbiAgICAgIHwgXCJNZmFDaGFsbGVuZ2VFeHBpcmVkXCJcbiAgICAgIHwgXCJDaGFpbklkTm90QWxsb3dlZFwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1wiXG4gICAgICB8IFwiU2Vzc2lvbkZvcldyb25nT3JnXCJcbiAgICAgIHwgXCJPcmdEaXNhYmxlZFwiXG4gICAgICB8IFwiT3JnTm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ1dpdGhvdXRPd25lclwiXG4gICAgICB8IFwiT3JwaGFuZWRVc2VyXCJcbiAgICAgIHwgXCJPaWRjVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyTm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJOb3RPcmdPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEtleU93bmVyXCJcbiAgICAgIHwgXCJJbnZhbGlkUm9sZVwiXG4gICAgICB8IFwiRGlzYWJsZWRSb2xlXCJcbiAgICAgIHwgXCJLZXlEaXNhYmxlZFwiXG4gICAgICB8IFwiUm9sZU5vdEluT3JnXCJcbiAgICAgIHwgXCJLZXlOb3RJblJvbGVcIlxuICAgICAgfCBcIktleU5vdEluT3JnXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UmVxdWVzdE5vdEluT3JnXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UmVxdWVzdEludmFsaWRcIlxuICAgICAgfCBcIlVzZXJOb3RPcmlnaW5hbEtleU93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90SW5Sb2xlXCJcbiAgICAgIHwgXCJNdXN0QmVGdWxsTWVtYmVyXCJcbiAgICAgIHwgXCJTZXNzaW9uRXhwaXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvblJldm9rZWRcIlxuICAgICAgfCBcIkV4cGVjdGVkVXNlclNlc3Npb25cIlxuICAgICAgfCBcIlNlc3Npb25Sb2xlQ2hhbmdlZFwiXG4gICAgICB8IFwiU2NvcGVkTmFtZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEVwb2NoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkUmVmcmVzaFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uUmVmcmVzaFRva2VuRXhwaXJlZFwiXG4gICAgICB8IFwiSW52YWxpZEF1dGhIZWFkZXJcIlxuICAgICAgfCBcIlNlc3Npb25Ob3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZEFyblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRBdXRoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25BdXRoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJTZXNzaW9uUG9zc2libHlTdG9sZW5Ub2tlblwiXG4gICAgICB8IFwiTWZhRGlzYWxsb3dlZElkZW50aXR5XCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkQXBwcm92ZXJcIlxuICAgICAgfCBcIk1mYVR5cGVOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJNZmFOb3RBcHByb3ZlZFlldFwiXG4gICAgICB8IFwiTWZhQ29uZmlybWF0aW9uQ29kZU1pc21hdGNoXCJcbiAgICAgIHwgXCJNZmFIdHRwUmVxdWVzdE1pc21hdGNoXCJcbiAgICAgIHwgXCJNZmFBcHByb3ZhbEZyb21Vc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiTWZhUmVtb3ZlQmVsb3dNaW5cIlxuICAgICAgfCBcIlRvdHBBbHJlYWR5Q29uZmlndXJlZFwiXG4gICAgICB8IFwiVG90cENvbmZpZ3VyYXRpb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29uZmlndXJhdGlvblwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvZGVcIlxuICAgICAgfCBcIk1mYVRvdHBSYXRlTGltaXRcIlxuICAgICAgfCBcIkltcHJvcGVyU2Vzc2lvblNjb3BlXCJcbiAgICAgIHwgXCJGdWxsU2Vzc2lvblJlcXVpcmVkXCJcbiAgICAgIHwgXCJTZXNzaW9uV2l0aG91dEFueVNjb3BlVW5kZXJcIlxuICAgICAgfCBcIlVzZXJSb2xlVW5wcml2aWxlZ2VkXCJcbiAgICAgIHwgXCJNZmFOb3RDb25maWd1cmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyBhIGZvcmsgb2YgdGhlIGBCZWFjb25DaGFpbmAsIHRvIHByZXZlbnQgcmVwbGF5IGF0dGFja3MuXG4gICAgICogVGhlIHNjaGVtYSBvZiBgRm9ya2AgaXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBjaGFpblxuICAgICAqIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNmb3JrKS5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRm9yazoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNDM0MzQzXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQcmV2aW91cyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGRhdGEgYXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBBUElcbiAgICAgKiBzcGVjXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRHZW5lc2lzKS5cbiAgICAgKiBZb3UgY2FuIGdldCB0aGUgZ2VuZXNpcyBkYXRhIGZyb20gdGhlIEJlYWNvbiBub2RlJ3MgYC9ldGgvdjEvYmVhY29uL2dlbmVzaXNgIGVuZC1wb2ludC5cbiAgICAgKiBUaGlzIHN0cnVjdCBkZWZpbml0aW9uIGlzIG9yaWdpbmFsbHkgZnJvbSBsaWdodGhvdXNlJ3MgZXRoMi5cbiAgICAgKi9cbiAgICBHZW5lc2lzRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHRpbWVcbiAgICAgICAqIEBleGFtcGxlIDE2NzkzMjY0NDlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc190aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHZhbGlkYXRvcnMgcm9vdC5cbiAgICAgICAqIEBleGFtcGxlIDB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdDogc3RyaW5nO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJZEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU3RhdHMgcGVydGFpbmluZyB0aGUgdGhlIHNlbmRlciBgY3ViZTNzaWduZXJgIGluc3RhbmNlICovXG4gICAgSGVhcnRiZWF0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBhY3RpdmUgKHJlY2VpdmVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgYmVpbmcgcHJvY2Vzc2VkIHlldClcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfYWN0aXZlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBieSBjdWJlM3NpZ25lclxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19wcm9jZXNzaW5nOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCByZWNvcmQgbWV0cmljIGRhdGEgZnJvbSB0aGlzIGhlYXJ0YmVhdCAqL1xuICAgICAgaWdub3JlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBuZXcgcmVxdWVzdHMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19mYWlsZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB3ZXJlIHJldHJpZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfcmV0cmllZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJldHJpZXMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmV0cmllczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gd2FzIHJlZnJlc2hlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXM/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiByZWZyZXNoIGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXNfZmFpbGVkPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGUgcHJveHkgc2VuZGluZyB0aGUgaGVhcnQgYmVhdCByZXF1ZXN0XG4gICAgICAgKlxuICAgICAgICogVE9ETzogTWFrZSBub24tb3B0aW9uYWwgb25jZSB3ZSBkbyBub3Qgc3VwcG9ydCBwcm94aWVzIHdpdGhvdXQgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgICAgICovXG4gICAgICBwcm94eV92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGFsbCB0aGUgcmVsZXZhbnQgaW5mbyAoaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGJvZHkpIGFib3V0IHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBNRkEuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgcmVzdW1lZCAoYWZ0ZXIgb2J0YWluaW5nIG5lY2Vzc2FyeSBNRkEgYXBwcm92YWxzKVxuICAgICAqIGl0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgb3JpZ2luYWxseSB3YXMuXG4gICAgICovXG4gICAgSHR0cFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZXF1ZXN0IGJvZHkgKi9cbiAgICAgIGJvZHk/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCAoaW5jbHVkaW5nIGhvc3Qgb3Igbm90PykgKi9cbiAgICAgIHBhdGg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT0lEQyBhdWRpZW5jZTsgc2V0IG9ubHkgaWYgdGhlIHByb29mIHdhcyBvYnRhaW5lZCBieSB1c2luZyBPSURDIHRva2VuLlxuICAgICAgICpcbiAgICAgICAqIEluIG90aGVyIHdvcmRzLCBwcmVzZW5jZSBvZiB0aGlzIGZpZWxkIHRlc3RpZmllcyB0aGF0IGF1dGhvcml6YXRpb24gd2FzIG9idGFpbmVkIHZpYSBPSURDLlxuICAgICAgICovXG4gICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwcm9vZiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNldCBvZiBlbmNyeXB0ZWQga2V5cyB0byBiZSBpbXBvcnRlZCAqL1xuICAgICAga2V5X21hdGVyaWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFwiXVtdO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3RNYXRlcmlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNsaWVudCdzIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleS5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCwgU0VDMS1lbmNvZGVkIFAzODQgcHVibGljIGtleS5cbiAgICAgICAqL1xuICAgICAgY2xpZW50X3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQga2V5aW5nIG1hdGVyaWFsIHRvIGJlIGltcG9ydGVkLlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGNpcGhlcnRleHQuXG4gICAgICAgKi9cbiAgICAgIGlrbV9lbmM6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgc2FsdCB2YWx1ZSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIHNhbHQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEludGVybmFsRXJyb3JDb2RlOlxuICAgICAgfCBcIlN5c3RlbVRpbWVFcnJvclwiXG4gICAgICB8IFwiUmVxd2VzdEVycm9yXCJcbiAgICAgIHwgXCJEYlF1ZXJ5RXJyb3JcIlxuICAgICAgfCBcIkRiR2V0RXJyb3JcIlxuICAgICAgfCBcIkRiRGVsZXRlRXJyb3JcIlxuICAgICAgfCBcIkRiUHV0RXJyb3JcIlxuICAgICAgfCBcIkRiVXBkYXRlRXJyb3JcIlxuICAgICAgfCBcIlNlcmRlRXJyb3JcIlxuICAgICAgfCBcIlRlc3RBbmRTZXRFcnJvclwiXG4gICAgICB8IFwiRGJHZXRJdGVtc0Vycm9yXCJcbiAgICAgIHwgXCJEYldyaXRlRXJyb3JcIlxuICAgICAgfCBcIkN1YmlzdFNpZ25lckVycm9yXCJcbiAgICAgIHwgXCJDd1B1dE1ldHJpY0RhdGFFcnJvclwiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21FcnJvclwiXG4gICAgICB8IFwiTWFsZm9ybWVkVG90cEJ5dGVzXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbU5vUmVzcG9uc2VFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlS2V5RXJyb3JcIlxuICAgICAgfCBcIlBhcnNlRGVyaXZhdGlvblBhdGhFcnJvclwiXG4gICAgICB8IFwiU3BsaXRTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlSW1wb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkNvZ25pdG9EZWxldGVVc2VyRXJyb3JcIlxuICAgICAgfCBcIkNvZ25pdG9MaXN0VXNlcnNFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0dldFVzZXJFcnJvclwiXG4gICAgICB8IFwiTWlzc2luZ1VzZXJFbWFpbFwiXG4gICAgICB8IFwiQ29nbml0b1Jlc2VuZFVzZXJJbnZpdGF0aW9uXCJcbiAgICAgIHwgXCJDb2duaXRvU2V0VXNlclBhc3N3b3JkRXJyb3JcIlxuICAgICAgfCBcIkdlbmVyaWNJbnRlcm5hbEVycm9yXCJcbiAgICAgIHwgXCJPaWRjQXV0aFdpdGhvdXRPcmdcIlxuICAgICAgfCBcIk1pc3NpbmdLZXlNZXRhZGF0YVwiXG4gICAgICB8IFwiS21zS2V5V2l0aG91dElkXCJcbiAgICAgIHwgXCJLbXNFbmFibGVLZXlFcnJvclwiXG4gICAgICB8IFwiS21zRGlzYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJTZXJpYWxpemVFbmNyeXB0ZWRFeHBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiRGVzZXJpYWxpemVFbmNyeXB0ZWRFeHBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiUmVFbmNyeXB0VXNlckV4cG9ydFwiXG4gICAgICB8IFwiUzNVcGxvYWRFcnJvclwiXG4gICAgICB8IFwiUzNEb3dubG9hZEVycm9yXCJcbiAgICAgIHwgXCJNYW5hZ2VkU3RhdGVNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnRlcm5hbEhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRJbnRlcm5hbEhlYWRlclZhbHVlXCJcbiAgICAgIHwgXCJSZXF1ZXN0TG9jYWxTdGF0ZUFscmVhZHlTZXRcIlxuICAgICAgfCBcIk9pZGNPcmdNaXNtYXRjaFwiXG4gICAgICB8IFwiT3JwaGFuZWRSb2xlS2V5SWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJKd2tFbmRwb2ludFVuYXZhaWxhYmxlXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySW52YWxpZEp3a1wiXG4gICAgICB8IFwiSW52YWxpZFBrRm9yTWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiVW5jaGVja2VkT3JnXCJcbiAgICAgIHwgXCJBdmFTaWduQ3JlZHNNaXNzaW5nXCJcbiAgICAgIHwgXCJBdmFTaWduU2lnbmF0dXJlTWlzc2luZ1wiXG4gICAgICB8IFwiRXhwZWN0ZWRSb2xlU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZFRoaXJkUGFydHlJZGVudGl0eVwiXG4gICAgICB8IFwiQ29nbml0b0dldFVzZXJcIjtcbiAgICBJbnZpdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGFjbWUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTa2lwIHNlbmRpbmcgYW4gaW52aXRhdGlvbiBlbWFpbCB0byB0aGlzIHVzZXIgaWYgdHJ1ZS5cbiAgICAgICAqXG4gICAgICAgKiBOT1RFOiB0aGlzIGZpZWxkIGlzIGZvciBpbnRlcm5hbCB0ZXN0aW5nIHVzZSBPTkxZLiBJZiB5b3UgZG8gbm90XG4gICAgICAgKiBzZW5kIGFuIGludml0YXRpb24gZW1haWwsIHRoZSB1c2VyIHdpbGwgbmV2ZXIgYmUgYWJsZSB0byBsb2cgaW4uXG4gICAgICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgICAgICovXG4gICAgICBza2lwX2VtYWlsOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgW2BLZXlQYWNrYWdlYF0gc2VyaWFsaXplZCBpbnRvIGEgZm9ybWF0IHRoYXQgZ2l2ZXMgYSB0aWRpZXIgSlNPTlxuICAgICAqIHJlcHJlc2VudGF0aW9uIHN1aXRhYmxlIGZvciBlbmNyeXB0aW9uIGluIHRoZSB1c2VyLWV4cG9ydCBmbG93LlxuICAgICAqXG4gICAgICogV2UgY29uc3RydWN0IHZhbHVlcyBvZiB0aGlzIHR5cGUgcmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIGBzZXJkZV9qc29uOjpWYWx1ZWBzXG4gICAgICogZGlyZWN0bHkgd2l0aCBganNvbiEoKWAgYmVjYXVzZSB0aGlzIGFsbG93cyB1cyB0byB6ZXJvaXplIHZhbHVlcyBvbiBkcm9wLCB3aGljaFxuICAgICAqIGRvZXNuJ3Qgd29yayB3aXRoIGBzZXJkZV9qc29uOjpWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBFeGFtcGxlcyBvZiBzZXJpYWxpemVkIG1hdGVyaWFsOlxuICAgICAqXG4gICAgICogLSBgSnNvbktleU1hdGVyaWFsOjpFbmdsaXNoTW5lbW9uaWNgOlxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogdXNlIGN1YmlzdF9zaWduZXJfdXRpbHM6OntcbiAgICAgKiBEZXJpdmF0aW9uUGF0aCwgS2V5UGFja2FnZSwgTW5lbW9uaWMsIE1uZW1vbmljUGFja2FnZSwgU2VjcDI1NmsxUGtnLFxuICAgICAqIH07XG4gICAgICogdXNlIHNlcmRlX2pzb246Ompzb247XG4gICAgICpcbiAgICAgKiBjb25zdCBNTkVNT05JQzogJnN0ciA9IFwiZGVwb3NpdCBmaXNjYWwgYnJhaW4gc3dhcm0gc3Vycm91bmQgY291c2luIGhvcm4gZ2xhcmUgZml4IGxvdmUgcmVuZGVyIGJlbGlldmUgZ3VpZGUgc2h1ZmZsZSBzdGVtIGNyYW0gYnJvY2NvbGkgcmVzZW1ibGUgYmVhY2ggYXJ0ZWZhY3QgbGFuZ3VhZ2UgZ2lmdCBqYXIgcGVybWl0XCI7XG4gICAgICogY29uc3QgREVSX1BBVEg6ICZzdHIgPSBcIm0vNDQnLzYwJy8wJy8wLzBcIjtcbiAgICAgKiBjb25zdCBLRVlfVFlQRTogJnN0ciA9IFwiZWNkc2E6c2VjcDI1NmsxXCI7XG4gICAgICpcbiAgICAgKiBsZXQgbW5lID0gTW5lbW9uaWM6OnRyeV9mcm9tKE1ORU1PTklDKS5leHBlY3QoXCJnb29kIG1uZW1vbmljXCIpO1xuICAgICAqIGxldCBkZXJwID0gRGVyaXZhdGlvblBhdGg6OnRyeV9mcm9tKERFUl9QQVRIKS5leHBlY3QoXCJnb29kIGRlciBwYXRoXCIpO1xuICAgICAqIGxldCBtbmVfcGtnID0gTW5lbW9uaWNQYWNrYWdlOjpuZXcobW5lLCBcIlwiLCBkZXJwKTtcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpFbmdsaXNoTW5lbW9uaWMobW5lX3BrZyk7XG4gICAgICogbGV0IGpzb25fcGtnID0ga2V5X3BrZy5pbnRvX2pzb24oS0VZX1RZUEUpO1xuICAgICAqXG4gICAgICogbGV0IGpzb25fZXhwZWN0ID0ganNvbiEoe1xuICAgICAqIFwia2V5X3R5cGVcIjogS0VZX1RZUEUsXG4gICAgICogXCJtYXRlcmlhbF90eXBlXCI6IFwiZW5nbGlzaF9tbmVtb25pY1wiLFxuICAgICAqIFwibW5lbW9uaWNcIjogTU5FTU9OSUMsXG4gICAgICogXCJwYXNzd29yZFwiOiBcIlwiLFxuICAgICAqIFwiZGVyaXZhdGlvbl9wYXRoXCI6IERFUl9QQVRILFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogYXNzZXJ0X2VxIShcbiAgICAgKiBzZXJkZV9qc29uOjp0b192YWx1ZSgmanNvbl9wa2cpLmV4cGVjdChcImpzb24gc2VyaWFsaXphdGlvblwiKSxcbiAgICAgKiBqc29uX2V4cGVjdCxcbiAgICAgKiApO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogLSBgSnNvbktleU1hdGVyaWFsOjpSYXdTZWNyZXRgOlxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogdXNlIGN1YmlzdF9zaWduZXJfdXRpbHM6OntcbiAgICAgKiBnZXRfcmFuZG9tX2J5dGVfYXJyYXksIGhleF9lbmNvZGUsIEtleVBhY2thZ2UsIFJuZ0NvcmUsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogLy8gcmFuZG9tIDMyLWJ5dGUgc2VjcmV0XG4gICAgICogbGV0IHNrOiBbdTg7IDMyXSA9ICpnZXRfcmFuZG9tX2J5dGVfYXJyYXkoKTtcbiAgICAgKlxuICAgICAqIGxldCBrZXlfcGtnID0gS2V5UGFja2FnZTo6PFNlY3AyNTZrMVBrZz46OlNlY3JldChzayk7XG4gICAgICogbGV0IGpzb25fcGtnID0ga2V5X3BrZy5pbnRvX2pzb24oS0VZX1RZUEUpO1xuICAgICAqXG4gICAgICogbGV0IGpzb25fZXhwZWN0ID0ganNvbiEoe1xuICAgICAqIFwia2V5X3R5cGVcIjogS0VZX1RZUEUsXG4gICAgICogXCJtYXRlcmlhbF90eXBlXCI6IFwicmF3X3NlY3JldFwiLFxuICAgICAqIFwic2VjcmV0XCI6IGhleF9lbmNvZGUoJnNrKSxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBKc29uS2V5UGFja2FnZTogKFxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWF0ZXJpYWxfdHlwZTogXCJyYXdfc2VjcmV0XCI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgdGhlIHJhdyBzZWNyZXQgKi9cbiAgICAgICAgICBzZWNyZXQ6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoICovXG4gICAgICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWF0ZXJpYWxfdHlwZTogXCJlbmdsaXNoX21uZW1vbmljXCI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pYzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBhc3N3b3JkICh3aGljaCBtYXkgYmUgZW1wdHkpICovXG4gICAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgICAgfVxuICAgICkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGtleSB0aGlzIHBhY2thZ2UgcmVwcmVzZW50cyAqL1xuICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd3JhcHBlZCBrZXktaW1wb3J0IGtleSAqL1xuICAgIEtleUltcG9ydEtleToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHRvIHdoaWNoIGFuIGltcG9ydGVkIGtleSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJblJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBrZXkgaXMgZW5hYmxlZCAob25seSBlbmFibGVkIGtleXMgbWF5IGJlIHVzZWQgZm9yIHNpZ25pbmcpICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXk6IFwiS2V5I1wiIGZvbGxvd2VkIGJ5IGEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG9cbiAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyLWRlZmluZWQgbWV0YWRhdGEuIFdoZW4gcmVuZGVyaW5nIChlLmcuLCBpbiB0aGUgYnJvd3NlcikgeW91IHNob3VsZCB0cmVhdFxuICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgKiB1bnRydXN0ZWQgdXNlcnMgY2FuIGNyZWF0ZS91cGRhdGUga2V5cyAob3IgdGhlaXIgbWV0YWRhdGEpLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgcG9saWN5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvczoge1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBLZXlUeXBlOlxuICAgICAgfCBcIlNlY3BFdGhBZGRyXCJcbiAgICAgIHwgXCJTZWNwQnRjXCJcbiAgICAgIHwgXCJTZWNwQnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcEF2YUFkZHJcIlxuICAgICAgfCBcIlNlY3BBdmFUZXN0QWRkclwiXG4gICAgICB8IFwiQmxzUHViXCJcbiAgICAgIHwgXCJCbHNJbmFjdGl2ZVwiXG4gICAgICB8IFwiRWQyNTUxOVNvbGFuYUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWlBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5QXB0b3NBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FyZGFub0FkZHJWa1wiXG4gICAgICB8IFwiRWQyNTUxOVN0ZWxsYXJBZGRyXCJcbiAgICAgIHwgXCJNbmVtb25pY1wiXG4gICAgICB8IFwiU3RhcmtcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgZW5jcnlwdGVkIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSBieXRlcy5cbiAgICAgKlxuICAgICAqIFdlIHNlcmlhbGl6ZSB0aGlzIGludG8gYSBiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmcgYW5kIHJldHVybiB0byB0aGUgdXNlclxuICAgICAqIHNvIHRoYXQgdGhleSBjYW4gcGFzcyB0aGlzIGJhY2sgdG8gdXMgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIExhc3RFdmFsS2V5OiBzdHJpbmc7XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyAqL1xuICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIHRva2VuczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgd2hldGhlciBhIHVzZXIgaW4gYW4gb3JnIGlzIGFuIE93bmVyIG9yIGp1c3QgYSByZWd1bGFyIG1lbWJlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgTWVtYmVyUm9sZTogXCJBbGllblwiIHwgXCJNZW1iZXJcIiB8IFwiT3duZXJcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICB9O1xuICAgIE1mYVR5cGU6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkN1YmVTaWduZXJcIixcbiAgICAgICAgXCJUb3RwXCIsXG4gICAgICAgIFwiRmlkb1wiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbnN3ZXIgYSBGSURPIGNoYWxsZW5nZSB3aXRoIGEgc3BlY2lmaWMgRklETyBrZXkgKi9cbiAgICAgICAgICBGaWRvS2V5OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIEZJRE8ga2V5IHRoYXQgbXVzdCBiZSB1c2UgdG8gYXBwcm92ZSB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSNFdERkLi4uWlpjOD1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE1mYVZvdGU6IFwiYXBwcm92ZVwiIHwgXCJyZWplY3RcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTmV0d29yayBuYW1lICgnbWFpbm5ldCcsICdwcmF0ZXInLCAnZ29lcmxpJylcbiAgICAgKiBAZXhhbXBsZSBnb2VybGlcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE5ldHdvcms6IFwibWFpbm5ldFwiIHwgXCJwcmF0ZXJcIiB8IFwiZ29lcmxpXCIgfCBcImhvbGVza3lcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICovXG4gICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IHRva2VuIHRvIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uLiBSZXF1ZXN0cyB0byBzaWduaW5nIGVuZHBvaW50c1xuICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlclxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTm90Rm91bmRFcnJvckNvZGU6XG4gICAgICB8IFwiVXJpU2VnbWVudE1pc3NpbmdcIlxuICAgICAgfCBcIlVyaVNlZ21lbnRJbnZhbGlkXCJcbiAgICAgIHwgXCJUb3RwTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiRmlkb0tleU5vdEZvdW5kXCJcbiAgICAgIHwgXCJGaWRvQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlRvdHBDaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENpcGhlcnRleHROb3RGb3VuZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIGEgZ2xvYmFsbHkgdW5pcXVlIE9JREMtYXV0aG9yaXplZCB1c2VyIGJ5IGV4cHJlc3NpbmcgdGhlIGZ1bGwgXCJwYXRoXCIgdG8gYSB1c2VyLiBUaGF0IGlzOlxuICAgICAqXG4gICAgICogKGlzcykgICAgICAgKHN1YilcbiAgICAgKiBJc3N1ZXIgLT4gU3VicmVzb3VyY2VcbiAgICAgKi9cbiAgICBPSURDSWRlbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSByb290LWxldmVsIGlzc3VlciB3aG8gYWRtaW5pc3RyYXRlcyB0aGlzIHVzZXIuIEZyb21lIHRoZSBPSURDIHNwZWM6XG4gICAgICAgKiBJc3N1ZXIgSWRlbnRpZmllciBmb3IgdGhlIElzc3VlciBvZiB0aGUgcmVzcG9uc2UuIFRoZSBpc3NcbiAgICAgICAqIHZhbHVlIGlzIGEgY2FzZSBzZW5zaXRpdmUgVVJMIHVzaW5nIHRoZSBodHRwcyBzY2hlbWUgdGhhdCBjb250YWluc1xuICAgICAgICogc2NoZW1lLCBob3N0LCBhbmQgb3B0aW9uYWxseSwgcG9ydCBudW1iZXIgYW5kIHBhdGggY29tcG9uZW50cyBhbmRcbiAgICAgICAqIG5vIHF1ZXJ5IG9yIGZyYWdtZW50IGNvbXBvbmVudHMuXG4gICAgICAgKiBAZXhhbXBsZSBodHRwczovL2FjY291bnRzLmdvb2dsZS5jb21cbiAgICAgICAqL1xuICAgICAgaXNzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIHRoZSBPSURDIHNwZWM6XG4gICAgICAgKlxuICAgICAgICogQSBsb2NhbGx5IHVuaXF1ZSBhbmQgbmV2ZXIgcmVhc3NpZ25lZCBpZGVudGlmaWVyIHdpdGhpbiB0aGUgSXNzdWVyIGZvclxuICAgICAgICogdGhlIEVuZC1Vc2VyLCB3aGljaCBpcyBpbnRlbmRlZCB0byBiZSBjb25zdW1lZCBieSB0aGUgQ2xpZW50LCBlLmcuLFxuICAgICAgICogMjQ0MDAzMjAgb3IgQUl0T2F3bXd0V3djVDBrNTFCYXlld052dXRySlVxc3ZsNnFzN0E0LiBJdCBNVVNUIE5PVCBleGNlZWRcbiAgICAgICAqIDI1NSBBU0NJSSBjaGFyYWN0ZXJzIGluIGxlbmd0aC4gVGhlIHN1YiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlXG4gICAgICAgKiBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSAxMDc2OTE1MDM1MDAwNjE1MDcxNTExMzA4MjM2N1xuICAgICAgICovXG4gICAgICBzdWI6IHN0cmluZztcbiAgICB9O1xuICAgIE9pZGNMb2dpblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blczogc3RyaW5nW107XG4gICAgICB0b2tlbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICovXG4gICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAqL1xuICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAqIFRoaXMgdmFsdWUgY2FuIGJlIGJldHdlZW4gMSBhbmQgNSAoaW5jbHVzaXZlKS5cbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgKiBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIGEgdXNlci1leHBvcnQgaXMgaW5pdGlhdGVkIGFuZCB3aGVuXG4gICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAqIG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiB0aGUgdXNlci1leHBvcnQgZGVsYXkgaXMgY29tcGxldGVkIGFuZCB3aGVuXG4gICAgICAgKiB0aGUgdXNlciBleHBvcnQgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlXG4gICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9ja2V0IHF1ZXJ5IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHBhZ2UgZnJvbSB3aGljaCB0byBzdGFydCBhIHBhZ2luYXRlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIE1VU1QgYmUgbmFtZWQgYDxwYWdlPmAgaW4gcm9ja2V0IHVybCBzcGVjIHNvIHRoYXQgJ3NlcmRlKHJlbmFtZSA9IFwicGFnZS4qXCIpJyBiZWxvdyBjb250aW51ZXMgdG8gd29ya1xuICAgICAqL1xuICAgIFBhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBQb2xpY3lFcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVR4RGVwb3NpdEVycm9yQ29kZVwiXTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBQb2xpY3lFcnJvck93bkNvZGVzOlxuICAgICAgfCBcIkV2bVR4UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhTZW5kZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiUG9saWN5RGlzanVuY3Rpb25FcnJvclwiXG4gICAgICB8IFwiUG9saWN5TmVnYXRpb25FcnJvclwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRVbnN0YWtpbmdcIlxuICAgICAgfCBcIk5vdEluSXB2NEFsbG93bGlzdFwiXG4gICAgICB8IFwiTm90SW5PcmlnaW5BbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRTb3VyY2VJcFwiXG4gICAgICB8IFwiUmF3U2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjU291cmNlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTm9PaWRjQXV0aFNvdXJjZXNEZWZpbmVkXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJLZXlzQWxyZWFkeUluUm9sZVwiXG4gICAgICB8IFwiS2V5SW5NdWx0aXBsZVJvbGVzXCJcbiAgICAgIHwgXCJLZXlBY2Nlc3NFcnJvclwiXG4gICAgICB8IFwiRWlwMTkxU2lnbmluZ05vdEFsbG93ZWRcIjtcbiAgICBQcmVjb25kaXRpb25FcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yQ29kZVwiXTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBQcmVjb25kaXRpb25FcnJvck93bkNvZGVzOlxuICAgICAgfCBcIkV0aDJQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblNvdXJjZUVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQXR0ZXN0YXRpb25UYXJnZXRFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0VG9Ob25HZW5lcmF0ZWRLZXlcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRVbmtub3duSW5pdGlhbERlcG9zaXRcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRXaXRoZHJhd2FsQWRkcmVzc01pc21hdGNoXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgd2lyZS1lbmNvZGFibGUgZm9ybSBvZiB0aGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2VcbiAgICAgKiBDbGllbnRzIG1heSBuZWVkIHRvIG1hbnVhbGx5IGVuY29kZSBpbnRvIHRoaXMgZm9ybWF0IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZlclxuICAgICAqXG4gICAgICogVGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgaW50ZXJmYWNlIGluaGVyaXRzIGZyb20gQ3JlZGVudGlhbFxuICAgICAqIFtDUkVERU5USUFMLU1BTkFHRU1FTlQtMV0sIGFuZCBjb250YWlucyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSByZXR1cm5lZCB0b1xuICAgICAqIHRoZSBjYWxsZXIgd2hlbiBhIG5ldyBjcmVkZW50aWFsIGlzIGNyZWF0ZWQsIG9yIGEgbmV3IGFzc2VydGlvbiBpc1xuICAgICAqIHJlcXVlc3RlZC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNpZmFjZS1wa2NyZWRlbnRpYWxcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGludGVybmFsIHNsb3QgY29udGFpbnMgdGhlIHJlc3VsdHMgb2YgcHJvY2Vzc2luZyBjbGllbnQgZXh0ZW5zaW9uc1xuICAgICAgICogcmVxdWVzdGVkIGJ5IHRoZSBSZWx5aW5nIFBhcnR5IHVwb24gdGhlIFJlbHlpbmcgUGFydHkncyBpbnZvY2F0aW9uIG9mXG4gICAgICAgKiBlaXRoZXIgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIG9yIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQoKS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtY2xpZW50ZXh0ZW5zaW9uc3Jlc3VsdHMtc2xvdFxuICAgICAgICpcbiAgICAgICAqIElNUExFTUVOVEFUSU9OIE5PVEU6IFRoZSB0eXBlIGZvciB0aGlzIGZpZWxkIGNvbWVzIGZyb20gdGhlIHR5cGUgb2YgZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIHdoaWNoIGFzIHRoZSBmb2xsb3dpbmcgZG9jOlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgb3BlcmF0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIFtbY2xpZW50RXh0ZW5zaW9uc1Jlc3VsdHNdXSwgd2hpY2ggaXMgYSBtYXAgY29udGFpbmluZyBleHRlbnNpb24gaWRlbnRpZmllciDihpIgY2xpZW50IGV4dGVuc2lvbiBvdXRwdXQgZW50cmllcyBwcm9kdWNlZCBieSB0aGUgZXh0ZW5zaW9u4oCZcyBjbGllbnQgZXh0ZW5zaW9uIHByb2Nlc3NpbmcuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jcmVmLWZvci1kb20tcHVibGlja2V5Y3JlZGVudGlhbC1nZXRjbGllbnRleHRlbnNpb25yZXN1bHRzXG4gICAgICAgKi9cbiAgICAgIGNsaWVudEV4dGVuc2lvblJlc3VsdHM/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBpbnRlcm5hbCBzbG90IGNvbnRhaW5zIHRoZSBjcmVkZW50aWFsIElELCBjaG9zZW4gYnkgdGhlXG4gICAgICAgKiBhdXRoZW50aWNhdG9yLiBUaGUgY3JlZGVudGlhbCBJRCBpcyB1c2VkIHRvIGxvb2sgdXAgY3JlZGVudGlhbHMgZm9yIHVzZSxcbiAgICAgICAqIGFuZCBpcyB0aGVyZWZvcmUgZXhwZWN0ZWQgdG8gYmUgZ2xvYmFsbHkgdW5pcXVlIHdpdGggaGlnaCBwcm9iYWJpbGl0eVxuICAgICAgICogYWNyb3NzIGFsbCBjcmVkZW50aWFscyBvZiB0aGUgc2FtZSB0eXBlLCBhY3Jvc3MgYWxsIGF1dGhlbnRpY2F0b3JzLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1pZGVudGlmaWVyLXNsb3RcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXV0aGVudGljYXRvcnMgcmVzcG9uZCB0byBSZWx5aW5nIFBhcnR5IHJlcXVlc3RzIGJ5IHJldHVybmluZyBhbiBvYmplY3QgZGVyaXZlZCBmcm9tIHRoZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW50ZXJmYWNlICovXG4gICAgICByZXNwb25zZTpcbiAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlXCJdXG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6IHtcbiAgICAgIGF0dGVzdGF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlXCJdO1xuICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGEgY2hhbGxlbmdlIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICAgKiBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWzigJlzIGF0dGVzdGF0aW9uIG9iamVjdC4gU2VlIHRoZSDCp+KArzEzLjQuM1xuICAgICAgICogQ3J5cHRvZ3JhcGhpYyBDaGFsbGVuZ2VzIHNlY3VyaXR5IGNvbnNpZGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIGludGVuZGVkIGZvciB1c2UgYnkgUmVseWluZyBQYXJ0aWVzIHRoYXQgd2lzaCB0byBsaW1pdFxuICAgICAgICogdGhlIGNyZWF0aW9uIG9mIG11bHRpcGxlIGNyZWRlbnRpYWxzIGZvciB0aGUgc2FtZSBhY2NvdW50IG9uIGEgc2luZ2xlXG4gICAgICAgKiBhdXRoZW50aWNhdG9yLiBUaGUgY2xpZW50IGlzIHJlcXVlc3RlZCB0byByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIG5ld1xuICAgICAgICogY3JlZGVudGlhbCB3b3VsZCBiZSBjcmVhdGVkIG9uIGFuIGF1dGhlbnRpY2F0b3IgdGhhdCBhbHNvIGNvbnRhaW5zIG9uZVxuICAgICAgICogb2YgdGhlIGNyZWRlbnRpYWxzIGVudW1lcmF0ZWQgaW4gdGhpcyBwYXJhbWV0ZXIuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWV4Y2x1ZGVjcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBleGNsdWRlQ3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgcmVxdWVzdGluZyBhZGRpdGlvbmFsXG4gICAgICAgKiBwcm9jZXNzaW5nIGJ5IHRoZSBjbGllbnQgYW5kIGF1dGhlbnRpY2F0b3IuIEZvciBleGFtcGxlLCB0aGUgY2FsbGVyIG1heVxuICAgICAgICogcmVxdWVzdCB0aGF0IG9ubHkgYXV0aGVudGljYXRvcnMgd2l0aCBjZXJ0YWluIGNhcGFiaWxpdGllcyBiZSB1c2VkIHRvXG4gICAgICAgKiBjcmVhdGUgdGhlIGNyZWRlbnRpYWwsIG9yIHRoYXQgcGFydGljdWxhciBpbmZvcm1hdGlvbiBiZSByZXR1cm5lZCBpbiB0aGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdC4gU29tZSBleHRlbnNpb25zIGFyZSBkZWZpbmVkIGluIMKn4oCvOSBXZWJBdXRoblxuICAgICAgICogRXh0ZW5zaW9uczsgY29uc3VsdCB0aGUgSUFOQSBcIldlYkF1dGhuIEV4dGVuc2lvbiBJZGVudGlmaWVyc1wiIHJlZ2lzdHJ5XG4gICAgICAgKiBbSUFOQS1XZWJBdXRobi1SZWdpc3RyaWVzXSBlc3RhYmxpc2hlZCBieSBbUkZDODgwOV0gZm9yIGFuIHVwLXRvLWRhdGVcbiAgICAgICAqIGxpc3Qgb2YgcmVnaXN0ZXJlZCBXZWJBdXRobiBFeHRlbnNpb25zLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leHRlbnNpb25zXG4gICAgICAgKi9cbiAgICAgIGV4dGVuc2lvbnM/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGVcbiAgICAgICAqIGNyZWRlbnRpYWwgdG8gYmUgY3JlYXRlZC4gVGhlIHNlcXVlbmNlIGlzIG9yZGVyZWQgZnJvbSBtb3N0IHByZWZlcnJlZCB0b1xuICAgICAgICogbGVhc3QgcHJlZmVycmVkLiBUaGUgY2xpZW50IG1ha2VzIGEgYmVzdC1lZmZvcnQgdG8gY3JlYXRlIHRoZSBtb3N0XG4gICAgICAgKiBwcmVmZXJyZWQgY3JlZGVudGlhbCB0aGF0IGl0IGNhbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtcHVia2V5Y3JlZHBhcmFtc1xuICAgICAgICovXG4gICAgICBwdWJLZXlDcmVkUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzXCJdW107XG4gICAgICBycDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHlcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlciBpc1xuICAgICAgICogd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhpcyBpcyB0cmVhdGVkIGFzIGEgaGludCwgYW5kXG4gICAgICAgKiBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy10aW1lb3V0XG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdXNlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc3BlY2lmaWVkIGJ5IGEgY2FsbGVyIHdoZW5cbiAgICAgKiByZWZlcnJpbmcgdG8gYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgYXMgYW4gaW5wdXQgcGFyYW1ldGVyIHRvIHRoZSBjcmVhdGUoKVxuICAgICAqIG9yIGdldCgpIG1ldGhvZHMuIEl0IG1pcnJvcnMgdGhlIGZpZWxkcyBvZiB0aGUgUHVibGljS2V5Q3JlZGVudGlhbCBvYmplY3RcbiAgICAgKiByZXR1cm5lZCBieSB0aGUgbGF0dGVyIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLWRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQgb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbCB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxkZXNjcmlwdG9yLWlkXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGhpbnQgYXMgdG8gaG93IHRoZSBjbGllbnQgbWlnaHRcbiAgICAgICAqIGNvbW11bmljYXRlIHdpdGggdGhlIG1hbmFnaW5nIGF1dGhlbnRpY2F0b3Igb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAgICogdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uIFRoZSB2YWx1ZXMgU0hPVUxEIGJlIG1lbWJlcnMgb2ZcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgYnV0IGNsaWVudCBwbGF0Zm9ybXMgTVVTVCBpZ25vcmUgdW5rbm93biB2YWx1ZXMuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdldFRyYW5zcG9ydHMoKSBvcGVyYXRpb24gY2FuIHByb3ZpZGUgc3VpdGFibGUgdmFsdWVzIGZvciB0aGlzXG4gICAgICAgKiBtZW1iZXIuIFdoZW4gcmVnaXN0ZXJpbmcgYSBuZXcgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHkgU0hPVUxEXG4gICAgICAgKiBzdG9yZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBnZXRUcmFuc3BvcnRzKCkuIFdoZW4gY3JlYXRpbmcgYVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZm9yIHRoYXQgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCByZXRyaWV2ZSB0aGF0IHN0b3JlZCB2YWx1ZSBhbmQgc2V0IGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICAgICAqIHRyYW5zcG9ydHMgbWVtYmVyLlxuICAgICAgICovXG4gICAgICB0cmFuc3BvcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yVHJhbnNwb3J0XCJdW10gfCBudWxsO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHdoZW4gY3JlYXRpbmcgYSBuZXdcbiAgICAgKiBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIHRoZSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSBhbGdvcml0aG0gd2l0aCB3aGljaFxuICAgICAgICogdGhlIG5ld2x5IGdlbmVyYXRlZCBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZCwgYW5kIHRodXMgYWxzbyB0aGUgdHlwZSBvZlxuICAgICAgICogYXN5bW1ldHJpYyBrZXkgcGFpciB0byBiZSBnZW5lcmF0ZWQsIGUuZy4sIFJTQSBvciBFbGxpcHRpYyBDdXJ2ZS5cbiAgICAgICAqL1xuICAgICAgYWxnOiBudW1iZXI7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCBkaWN0aW9uYXJ5IHN1cHBsaWVzIGdldCgpIHdpdGggdGhlXG4gICAgICogZGF0YSBpdCBuZWVkcyB0byBnZW5lcmF0ZSBhbiBhc3NlcnRpb24uIEl0cyBjaGFsbGVuZ2UgbWVtYmVyIE1VU1QgYmVcbiAgICAgKiBwcmVzZW50LCB3aGlsZSBpdHMgb3RoZXIgbWVtYmVycyBhcmUgT1BUSU9OQUwuXG4gICAgICpcbiAgICAgKiBUaGlzIHN0cnVjdCBpcyBhbHNvIHVzZWQgYXMgcGFydCBvZiB0aGUgdmVyaWZpY2F0aW9uIHByb2NlZHVyZSBmb3IgYXNzZXJ0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBsaXN0IG9mIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXG4gICAgICAgKiBvYmplY3RzIHJlcHJlc2VudGluZyBwdWJsaWMga2V5IGNyZWRlbnRpYWxzIGFjY2VwdGFibGUgdG8gdGhlIGNhbGxlciwgaW5cbiAgICAgICAqIGRlc2NlbmRpbmcgb3JkZXIgb2YgdGhlIGNhbGxlcuKAmXMgcHJlZmVyZW5jZSAodGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAqIGlzIHRoZSBtb3N0IHByZWZlcnJlZCBjcmVkZW50aWFsLCBhbmQgc28gb24gZG93biB0aGUgbGlzdCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtYWxsb3djcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBhbGxvd0NyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgcmVwcmVzZW50cyBhIGNoYWxsZW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdG9yXG4gICAgICAgKiBzaWducywgYWxvbmcgd2l0aCBvdGhlciBkYXRhLCB3aGVuIHByb2R1Y2luZyBhbiBhdXRoZW50aWNhdGlvblxuICAgICAgICogYXNzZXJ0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIGV4dGVuc2lvbnM/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIHRoZSByZWx5aW5nIHBhcnR5IGlkZW50aWZpZXIgY2xhaW1lZCBieVxuICAgICAgICogdGhlIGNhbGxlci4gSWYgb21pdHRlZCwgaXRzIHZhbHVlIHdpbGwgYmUgdGhlIENyZWRlbnRpYWxzQ29udGFpbmVyXG4gICAgICAgKiBvYmplY3TigJlzIHJlbGV2YW50IHNldHRpbmdzIG9iamVjdCdzIG9yaWdpbidzIGVmZmVjdGl2ZSBkb21haW4uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtcnBpZFxuICAgICAgICovXG4gICAgICBycElkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIHNwZWNpZmllcyBhIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdGhhdCB0aGUgY2FsbGVyXG4gICAgICAgKiBpcyB3aWxsaW5nIHRvIHdhaXQgZm9yIHRoZSBjYWxsIHRvIGNvbXBsZXRlLiBUaGUgdmFsdWUgaXMgdHJlYXRlZCBhcyBhXG4gICAgICAgKiBoaW50LCBhbmQgTUFZIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNsaWVudC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy10aW1lb3V0XG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHkgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsXG4gICAgICogUmVseWluZyBQYXJ0eSBhdHRyaWJ1dGVzIHdoZW4gY3JlYXRpbmcgYSBuZXcgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LXJwLWNyZWRlbnRpYWwtcGFyYW1zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgUmVseWluZyBQYXJ0eSBlbnRpdHksIHdoaWNoIHNldHMgdGhlIFJQIElELlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJwZW50aXR5LWlkXG4gICAgICAgKi9cbiAgICAgIGlkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuIEl0cyBmdW5jdGlvbiBkZXBlbmRzIG9uIHdoYXQgdGhlXG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsRW50aXR5IHJlcHJlc2VudHM6IFdoZW4gaW5oZXJpdGVkIGJ5XG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHkgaXQgaXMgYSBodW1hbi1wYWxhdGFibGUgaWRlbnRpZmllciBmb3IgdGhlXG4gICAgICAgKiBSZWx5aW5nIFBhcnR5LCBpbnRlbmRlZCBvbmx5IGZvciBkaXNwbGF5LiBGb3IgZXhhbXBsZSwgXCJBQ01FXG4gICAgICAgKiBDb3Jwb3JhdGlvblwiLCBcIldvbmRlcmZ1bCBXaWRnZXRzLCBJbmMuXCIgb3IgXCLQntCQ0J4g0J/RgNC40LzQtdGA0YLQtdGFXCIuXG4gICAgICAgKlxuICAgICAgICogUmVseWluZyBQYXJ0aWVzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMi4zXG4gICAgICAgKiBvZiBbUkZDODI2Nl0gZm9yIHRoZSBOaWNrbmFtZSBQcm9maWxlIG9mIHRoZSBQUkVDSVMgRnJlZWZvcm1DbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgdGhlIHZhbGlkIGNyZWRlbnRpYWwgdHlwZXMuIEl0IGlzIGFuIGV4dGVuc2lvblxuICAgICAqIHBvaW50OyB2YWx1ZXMgY2FuIGJlIGFkZGVkIHRvIGl0IGluIHRoZSBmdXR1cmUsIGFzIG1vcmUgY3JlZGVudGlhbCB0eXBlcyBhcmVcbiAgICAgKiBkZWZpbmVkLiBUaGUgdmFsdWVzIG9mIHRoaXMgZW51bWVyYXRpb24gYXJlIHVzZWQgZm9yIHZlcnNpb25pbmcgdGhlXG4gICAgICogQXV0aGVudGljYXRpb24gQXNzZXJ0aW9uIGFuZCBhdHRlc3RhdGlvbiBzdHJ1Y3R1cmVzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZlxuICAgICAqIHRoZSBhdXRoZW50aWNhdG9yLiAgQ3VycmVudGx5IG9uZSBjcmVkZW50aWFsIHR5cGUgaXMgZGVmaW5lZCwgbmFtZWx5XG4gICAgICogXCJwdWJsaWMta2V5XCIuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1wdWJsaWNrZXljcmVkZW50aWFsdHlwZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6IFwicHVibGljLWtleVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHkgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsXG4gICAgICogdXNlciBhY2NvdW50IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXBhbGF0YWJsZSBuYW1lIGZvciB0aGUgdXNlciBhY2NvdW50LCBpbnRlbmRlZCBvbmx5IGZvciBkaXNwbGF5LlxuICAgICAgICogRm9yIGV4YW1wbGUsIFwiQWxleCBNw7xsbGVyXCIgb3IgXCLnlLDkuK3lgKtcIi4gVGhlIFJlbHlpbmcgUGFydHkgU0hPVUxEIGxldCB0aGVcbiAgICAgICAqIHVzZXIgY2hvb3NlIHRoaXMsIGFuZCBTSE9VTEQgTk9UIHJlc3RyaWN0IHRoZSBjaG9pY2UgbW9yZSB0aGFuXG4gICAgICAgKiBuZWNlc3NhcnkuXG4gICAgICAgKlxuICAgICAgICogUmVseWluZyBQYXJ0aWVzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMi4zXG4gICAgICAgKiBvZiBbUkZDODI2Nl0gZm9yIHRoZSBOaWNrbmFtZSBQcm9maWxlIG9mIHRoZSBQUkVDSVMgRnJlZWZvcm1DbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgZGlzcGxheU5hbWUncyB2YWx1ZSwgb3IgZGlzcGxheWluZyB0aGUgdmFsdWUgdG9cbiAgICAgICAqIHRoZSB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc3RyaW5nIE1BWSBjb250YWluIGxhbmd1YWdlIGFuZCBkaXJlY3Rpb24gbWV0YWRhdGEuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIGNvbnNpZGVyIHByb3ZpZGluZyB0aGlzIGluZm9ybWF0aW9uLiBTZWUgwqfigK82LjQuMiBMYW5ndWFnZSBhbmRcbiAgICAgICAqIERpcmVjdGlvbiBFbmNvZGluZyBhYm91dCBob3cgdGhpcyBtZXRhZGF0YSBpcyBlbmNvZGVkLlxuICAgICAgICpcbiAgICAgICAqIENsaWVudHMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjMgb2ZcbiAgICAgICAqIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIG9uIGRpc3BsYXlOYW1lJ3MgdmFsdWUgcHJpb3IgdG8gZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlXG4gICAgICAgKiB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlXG4gICAgICAgKiBhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwgb3BlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIFdoZW4gY2xpZW50cywgY2xpZW50IHBsYXRmb3Jtcywgb3IgYXV0aGVudGljYXRvcnMgZGlzcGxheSBhXG4gICAgICAgKiBkaXNwbGF5TmFtZSdzIHZhbHVlLCB0aGV5IHNob3VsZCBhbHdheXMgdXNlIFVJIGVsZW1lbnRzIHRvIHByb3ZpZGUgYVxuICAgICAgICogY2xlYXIgYm91bmRhcnkgYXJvdW5kIHRoZSBkaXNwbGF5ZWQgdmFsdWUsIGFuZCBub3QgYWxsb3cgb3ZlcmZsb3cgaW50b1xuICAgICAgICogb3RoZXIgZWxlbWVudHMgW2Nzcy1vdmVyZmxvdy0zXS5cbiAgICAgICAqXG4gICAgICAgKiBBdXRoZW50aWNhdG9ycyBNVVNUIGFjY2VwdCBhbmQgc3RvcmUgYSA2NC1ieXRlIG1pbmltdW0gbGVuZ3RoIGZvciBhXG4gICAgICAgKiBkaXNwbGF5TmFtZSBtZW1iZXLigJlzIHZhbHVlLiBBdXRoZW50aWNhdG9ycyBNQVkgdHJ1bmNhdGUgYSBkaXNwbGF5TmFtZVxuICAgICAgICogbWVtYmVy4oCZcyB2YWx1ZSBzbyB0aGF0IGl0IGZpdHMgd2l0aGluIDY0IGJ5dGVzLiBTZWUgwqfigK82LjQuMSBTdHJpbmdcbiAgICAgICAqIFRydW5jYXRpb24gYWJvdXQgdHJ1bmNhdGlvbiBhbmQgb3RoZXIgY29uc2lkZXJhdGlvbnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eS1kaXNwbGF5bmFtZVxuICAgICAgICovXG4gICAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIgaGFuZGxlIG9mIHRoZSB1c2VyIGFjY291bnQgZW50aXR5LiBBIHVzZXIgaGFuZGxlIGlzIGFuIG9wYXF1ZVxuICAgICAgICogYnl0ZSBzZXF1ZW5jZSB3aXRoIGEgbWF4aW11bSBzaXplIG9mIDY0IGJ5dGVzLCBhbmQgaXMgbm90IG1lYW50IHRvIGJlXG4gICAgICAgKiBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVG8gZW5zdXJlIHNlY3VyZSBvcGVyYXRpb24sIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGRlY2lzaW9uc1xuICAgICAgICogTVVTVCBiZSBtYWRlIG9uIHRoZSBiYXNpcyBvZiB0aGlzIGlkIG1lbWJlciwgbm90IHRoZSBkaXNwbGF5TmFtZSBub3JcbiAgICAgICAqIG5hbWUgbWVtYmVycy4gU2VlIFNlY3Rpb24gNi4xIG9mIFtSRkM4MjY2XS5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgdXNlciBoYW5kbGUgTVVTVCBOT1QgY29udGFpbiBwZXJzb25hbGx5IGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uXG4gICAgICAgKiBhYm91dCB0aGUgdXNlciwgc3VjaCBhcyBhIHVzZXJuYW1lIG9yIGUtbWFpbCBhZGRyZXNzOyBzZWUgwqfigK8xNC42LjEgVXNlclxuICAgICAgICogSGFuZGxlIENvbnRlbnRzIGZvciBkZXRhaWxzLiBUaGUgdXNlciBoYW5kbGUgTVVTVCBOT1QgYmUgZW1wdHksIHRob3VnaFxuICAgICAgICogaXQgTUFZIGJlIG51bGwuXG4gICAgICAgKlxuICAgICAgICogTm90ZTogdGhlIHVzZXIgaGFuZGxlIG91Z2h0IG5vdCBiZSBhIGNvbnN0YW50IHZhbHVlIGFjcm9zcyBkaWZmZXJlbnRcbiAgICAgICAqIGFjY291bnRzLCBldmVuIGZvciBub24tZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLCBiZWNhdXNlIHNvbWVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JzIGFsd2F5cyBjcmVhdGUgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBUaHVzIGEgY29uc3RhbnRcbiAgICAgICAqIHVzZXIgaGFuZGxlIHdvdWxkIHByZXZlbnQgYSB1c2VyIGZyb20gdXNpbmcgc3VjaCBhbiBhdXRoZW50aWNhdG9yIHdpdGhcbiAgICAgICAqIG1vcmUgdGhhbiBvbmUgYWNjb3VudCBhdCB0aGUgUmVseWluZyBQYXJ0eS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWlkXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIGluaGVyaXRlZCBieSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSwgaXQgaXMgYSBodW1hbi1wYWxhdGFibGVcbiAgICAgICAqIGlkZW50aWZpZXIgZm9yIGEgdXNlciBhY2NvdW50LiBJdCBpcyBpbnRlbmRlZCBvbmx5IGZvciBkaXNwbGF5LCBpLmUuLFxuICAgICAgICogYWlkaW5nIHRoZSB1c2VyIGluIGRldGVybWluaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdXNlciBhY2NvdW50cyB3aXRoXG4gICAgICAgKiBzaW1pbGFyIGRpc3BsYXlOYW1lcy4gRm9yIGV4YW1wbGUsIFwiYWxleG1cIiwgXCJhbGV4Lm11ZWxsZXJAZXhhbXBsZS5jb21cIlxuICAgICAgICogb3IgXCIrMTQyNTU1NTEyMzRcIi5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgUmVseWluZyBQYXJ0eSBNQVkgbGV0IHRoZSB1c2VyIGNob29zZSB0aGlzIHZhbHVlLiBUaGUgUmVseWluZyBQYXJ0eVxuICAgICAgICogU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAzLjQuMyBvZiBbUkZDODI2NV1cbiAgICAgICAqIGZvciB0aGUgVXNlcm5hbWVDYXNlUHJlc2VydmVkIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBJZGVudGlmaWVyQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIG5hbWUncyB2YWx1ZSwgb3IgZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlXG4gICAgICAgKiB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc3RyaW5nIE1BWSBjb250YWluIGxhbmd1YWdlIGFuZCBkaXJlY3Rpb24gbWV0YWRhdGEuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIGNvbnNpZGVyIHByb3ZpZGluZyB0aGlzIGluZm9ybWF0aW9uLiBTZWUgwqfigK82LjQuMiBMYW5ndWFnZSBhbmRcbiAgICAgICAqIERpcmVjdGlvbiBFbmNvZGluZyBhYm91dCBob3cgdGhpcyBtZXRhZGF0YSBpcyBlbmNvZGVkLlxuICAgICAgICpcbiAgICAgICAqIENsaWVudHMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAzLjQuMyBvZiBbUkZDODI2NV0gZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzcyBbUkZDODI2NF0sIG9uIG5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGUgdXNlciBvciBpbmNsdWRpbmcgdGhlIHZhbHVlIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwgb3BlcmF0aW9uLlxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICBSYXRjaGV0Q29uZmlnOiB7XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9hdXRoX2xpZmV0aW1lICovXG4gICAgICBhdXRoX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfZ3JhY2VfbGlmZXRpbWUgKi9cbiAgICAgIGdyYWNlX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfcmVmcmVzaF9saWZldGltZSAqL1xuICAgICAgcmVmcmVzaF9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X3Nlc3Npb25fbGlmZXRpbWUgKi9cbiAgICAgIHNlc3Npb25fbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlY2VpcHQgdGhhdCBhbiBNRkEgcmVxdWVzdCB3YXMgYXBwcm92ZWQuICovXG4gICAgUmVjZWlwdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIGNvZGUgdGhlIHVzZXIgbmVlZHMgdG8gcHJlc2VudCB3aGVuIHJlc3VtaW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICAgICAgICogQGV4YW1wbGUgYmExZDc1ZGQtZDk5OS00YzFiLTk0NGQtMjVjMjU0NDBjOGFmXG4gICAgICAgKi9cbiAgICAgIGNvbmZpcm1hdGlvbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGxvZ2dlZC1pbiB1c2VyIHdob3NlIGFjdGlvbiBjcmVhdGVkIHRoaXMgYXBwcm92YWwuICovXG4gICAgICBmaW5hbF9hcHByb3Zlcjogc3RyaW5nO1xuICAgICAgdGltZXN0YW1wOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0ZW5kZWQgZm9ybSBvZiBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIFJlcXVlc3RPcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBlbnVtZXJhdGlvbuKAmXMgdmFsdWVzIGRlc2NyaWJlIHRoZSBSZWx5aW5nIFBhcnR5J3MgcmVxdWlyZW1lbnRzIGZvclxuICAgICAqIGNsaWVudC1zaWRlIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscyAoZm9ybWVybHkga25vd24gYXMgcmVzaWRlbnQgY3JlZGVudGlhbHNcbiAgICAgKiBvciByZXNpZGVudCBrZXlzKTpcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXJlc2lkZW50a2V5cmVxdWlyZW1lbnRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFJlc2lkZW50S2V5UmVxdWlyZW1lbnQ6IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCIgfCBcInJlcXVpcmVkXCI7XG4gICAgUmV2b2tlVG9rZW5SZXNwb25zZToge1xuICAgICAgdG9rZW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXSB8IG51bGw7XG4gICAgfTtcbiAgICBSZXZva2VUb2tlbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgdGhhdCB3ZXJlIHJldm9rZWQuICovXG4gICAgICByZXZva2VkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXVtdO1xuICAgIH07XG4gICAgUm9sZUluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUgKi9cbiAgICAgIGtleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBvbGljeSB0aGF0IGlzIGNoZWNrZWQgd2hlbmV2ZXIgYSBrZXkgaXMgYWNjZXNzZWQgZm9yIHNpZ25pbmcgdmlhIHRoaXMgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIGxpc3Qgb2YgYXQgbW9zdCAxMDAgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gdGhlIHJvbGUuICovXG4gICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRHVyYXRpb24gbWVhc3VyZWQgaW4gc2Vjb25kc1xuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIGBEdXJhdGlvbmAgYXMgYSBgdTY0YCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzLlxuICAgICAqL1xuICAgIFNlY29uZHM6IG51bWJlcjtcbiAgICBTZXNzaW9uSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlc3Npb25cbiAgICAgICAqIEBleGFtcGxlIE9JREMgbG9naW4gc2Vzc2lvblxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgKi9cbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIGZyb20gYW55IG9wZXJhdGlvbiBvcGVyYXRpbmcgb24gbXVsdGlwbGUgc2Vzc2lvbnMgKi9cbiAgICBTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgIH07XG4gICAgU2lnbmVyRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lckVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFZhbHVlQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhZFJlcXVlc3RFcnJvckNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RGb3VuZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmJpZGRlbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuYXV0aG9yaXplZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludGVybmFsRXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFNpZ25lckVycm9yT3duQ29kZXM6IFwiVW5oYW5kbGVkRXJyb3JcIiB8IFwiUHJveHlTdGFydEVycm9yXCIgfCBcIkVuY2xhdmVFcnJvclwiO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJBUUFCQThPS1Z6TEVqc3RzdE40eFhyMzlrTEtIVDhkNThlUVkxUUVzNk1lWHdFRkJyeFRBbFVMWDF0cm9MYld4dUFYUXFnYlFvZkdpNno4ZkppN0tBQUlmN1lNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkswdG4zOWsyOHMrWDg2VzQ3RXZiUlJLbllCVlE4US9sMm0xRWJmVDcrdkFRSUNBQUVNQWdBQUFHUUFBQUFBQUFBQVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFNvbGFuYVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gb24gd2hpY2ggd2Ugd2lsbCBkZXBvc2l0XG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICBkZXBvc2l0X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBzdGFraW5nIGFtb3VudCBpbiBHV0VJLlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gMzJfMDAwXzAwMF8wMDAgKDMyIEVUSCkuXG4gICAgICAgKiBNdXN0IGJlIGJldHdlZW4gMSBFVEggYW5kIDMyIEVUSC5cbiAgICAgICAqIE11c3Qgbm90IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gJ2RlcG9zaXRfdHlwZScgaXMgXCJXcmFwcGVyXCIuXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfYW1vdW50X2d3ZWk/OiBudW1iZXI7XG4gICAgICB1bnNhZmVfY29uZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zYWZlQ29uZlwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5IHRvIHVzZSwgb3IgYE5vbmVgIHRvIGdlbmVyYXRlIGEgZnJlc2ggb25lLlxuICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXRoZXJldW0gYWRkcmVzcyB0byB3aGljaCB3aXRoZHJhd24gZnVuZHMgZ29cbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICB3aXRoZHJhd2FsX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAqL1xuICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfTtcbiAgICBTdGF0dXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIE11c3QgYmUgbm9uLWVtcHR5LiAqL1xuICAgICAgYWxsb3dlZF9hcHByb3ZlcnM6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIGFwcHJvdmFsIHR5cGVzLiBXaGVuIG9taXR0ZWQsIGRlZmF1bHRzIHRvIGFueS4gKi9cbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gaGF2ZSBhbHJlYWR5IGFwcHJvdmVkICovXG4gICAgICBhcHByb3ZlZF9ieToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBcHByb3ZhbEluZm9cIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgdXNlcnMgbXVzdCBhcHByb3ZlXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSBhdXRoIGZhY3RvcnMgdG8gcmVxdWlyZSBwZXIgdXNlclxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzOiBudW1iZXI7XG4gICAgfTtcbiAgICBUb2tlbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVXNlIGl0IHRvIHJldm9rZSBhIHNlc3Npb24uIENhbm5vdCBiZSB1c2VkIGZvciBhdXRoLiAqL1xuICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgcHVycG9zZSAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgIH07XG4gICAgVG90cEFwcHJvdmVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRPVFAgdmVyaWZpY2F0aW9uIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBUT1RQIGNoYWxsZW5nZSAqL1xuICAgIFRvdHBDaGFsbGVuZ2VBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgVE9UUCBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gcmVzZXQgVE9UUC4gKi9cbiAgICBUb3RwUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpc3N1ZXI7IGRlZmF1bHRzIHRvIFwiQ3ViaXN0XCIuICovXG4gICAgICBpc3N1ZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgVW5hdXRob3JpemVkRXJyb3JDb2RlOlxuICAgICAgfCBcIkNsYWltc0hlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eUhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eVBhcnNlRXJyb3JcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgbWVzc2FnZSByZXF1ZXN0LlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIyNTZcIixcbiAgICAgKiAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcImdlbmVzaXNfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZ2VuZXNpc19mb3JrX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICAgIFwiZ2VuZXNpc190aW1lXCI6IFwiMTY3OTU0MTY0MlwiLFxuICAgICAqICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJnb2VybGlcIixcbiAgICAgKiAgIFwidmFsaWRhdG9yX2luZGV4XCI6IFwiMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFVuc3Rha2VSZXF1ZXN0OiB7XG4gICAgICBlcG9jaD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl0gfCBudWxsO1xuICAgICAgZm9yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGb3JrXCJdO1xuICAgICAgZ2VuZXNpc19kYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkdlbmVzaXNEYXRhXCJdO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9yIGluZGV4IChgdWludDY0YCkgdG8gZXhpdC4gWW91IGNhbiBnZXQgdGhlIHZhbGlkYXRvciBpbmRleCBmcm9tIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICAgKiBgL2V0aC92MS9iZWFjb24vc3RhdGVzL2hlYWQvdmFsaWRhdG9ycy97cHVia2V5fWAgZW5kLXBvaW50LiBUaGlzIGVuZCBwb2ludCByZXR1cm5zIGFuXG4gICAgICAgKiBvYmplY3QgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWRhdG9yICh3aG9zZSBwdWJsaWMga2V5IGlzIGB7cHVia2V5fWApLFxuICAgICAgICogaW5jbHVkaW5nIHRoZSB2YWxpZGF0b3IgaW5kZXguIFRoZSBzY2hlbWEgb2YgdGhpcyBlbmQtcG9pbnQgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldFN0YXRlVmFsaWRhdG9yKS5cbiAgICAgICAqIEBleGFtcGxlIDMxMzM3XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgcmVzcG9uc2VzIGFyZSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZXMuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqIFRoaXMgbWVzc2FnZSBjYW4gYmUgZGlyZWN0bHkgUE9TVGVkIHRvIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICogYC9ldGgvdjEvYmVhY29uL3Bvb2wvdm9sdW50YXJ5X2V4aXRzYCBlbmQtcG9pbnQgKHNlZSBleHBlY3RlZCBzY2hlbWFcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vc3VibWl0UG9vbFZvbHVudGFyeUV4aXQpKS5cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5cydzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSBrZXkgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMga2V5J3MgbWV0YWRhdGEuIFZhbGlkYXRpb24gcmVnZXg6IF5bQS1aYS16MC05Xz0rLyBcXC1cXC5cXCxdezAsMTAyNH0kXG4gICAgICAgKiBAZXhhbXBsZSBDb250cmFjdCBhZG1pbiBrZXlcbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIGtleSdzIG93bmVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBUaGUgbmV3IG93bmVyIG11c3QgYmUgYW4gZXhpc3RpbmcgdXNlciB3aG8gaXMgYSBtZW1iZXIgb2YgdGhlIHNhbWUgb3JnLlxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBrZXkncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1JlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBgZW5hYmxlZGAgZmllbGQgdG8gdGhpcyB2YWx1ZS4gKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYWxpYXMuICBPcmcgYWxpYXNlcyBhcmUgZ2xvYmFsbHkgdW5pcXVlLlxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEwLjEuMi4zLzhcIixcbiAgICAgICAqICAgICAgIFwiMTY5LjI1NC4xNy4xLzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBUT1RQIGZhaWx1cmUgbGltaXQuIEFmdGVyIHRoaXMgbWFueSBmYWlsdXJlcyxcbiAgICAgICAqIHRoZSB1c2VyIGlzIHJhdGUgbGltaXRlZCB1bnRpbCB0aGUgbmV4dCAzMC1zZWNvbmQgVE9UUCB3aW5kb3cuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWVcbiAgICAgICAqIChpbiBzZWNvbmRzKSBiZXR3ZWVuIGEgdXNlcidzIGluaXRpYXRpbmcgYW4gZXhwb3J0IGFuZCB0aGUgdGltZSB3aGVuXG4gICAgICAgKiBleHBvcnQgaXMgYWxsb3dlZC4gRm9yIHNlY3VyaXR5LCB0aGlzIGRlbGF5IGNhbm5vdCBiZSBzZXQgdG8gbGVzcyB0aGFuXG4gICAgICAgKiAxNzI4MDAsIGkuZS4sIDIgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIHJvbGUncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEgcm9sZSBjYW5ub3QgYmUgdXNlZDsgYW5kIGl0J3MgdG9rZW5zIGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIHJvbGUncyBrZXkgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBPbmx5IFwiZGVueVwiIHN0eWxlIHBvbGljaWVzIG1heSBiZSBzZXQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gY29tcGxldGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGUga2V5LWlkIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb25lIGluXG4gICAgICAgKiB0aGUgc3BlY2lmaWVkIGV4cG9ydCByZXF1ZXN0LCBhbmQgdGhlIGNhbGxlciBtdXN0IG93biB0aGlzIGtleS5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbilcbiAgICAgICAqIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIGEgcHVibGljIGtleSB3YXMgcHJvdmlkZWQgd2hlblxuICAgICAgICogYHVzZXJfZXhwb3J0X2luaXRgIHdhcyBjYWxsZWQsIHRoaXMga2V5IG11c3QgbWF0Y2ggdGhhdCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhwb3J0ZWQga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCBBRVMtMjU2LUdDTSB1bmRlciBhIGtleVxuICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gYXMgYmFzZTY0LWVuY29kZWRcbiAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgKi9cbiAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBpbml0aWF0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhpcyBrZXkgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXRcbiAgICAgICAqIGNvbXByZXNzaW9uKSB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBwcm92aWRlZCwgdGhpc1xuICAgICAgICogcHVibGljIGtleSBNVVNUIGJlIHRoZSBvbmUgdXNlZCB0byBlbmNyeXB0IHRoZSBleHBvcnQgb25jZSB0aGUgZGVsYXkgaGFzXG4gICAgICAgKiBleHBpcmVkLiBPdGhlcndpc2UsIHRoZSB1c2VyIGNhbiBwcm92aWRlIGFueSBwdWJsaWMga2V5IHdoZW4gY29tcGxldGluZ1xuICAgICAgICogdGhlIGV4cG9ydCByZXF1ZXN0IHBvc3QgZGVsYXkuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcHRpb24gbWF5IHByb3ZpZGUgZXh0cmEgc2VjdXJpdHkgd2hlbiB0aGUgdXNlciBoYXMgYSBzZWN1cmUgaGFyZHdhcmVcbiAgICAgICAqIGRldmljZSAoZS5nLiwgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50IG9yIGEgWXViaUtleSkgaW4gd2hpY2ggYSBOSVNUIFAtMjU2XG4gICAgICAgKiBzZWNyZXQga2V5IGNhbiBiZSBnZW5lcmF0ZWQuIFByb3ZpZGluZyB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5IGhlcmVcbiAgICAgICAqIGVuc3VyZXMgdGhhdCBvbmx5IHRoYXQgc3BlY2lmaWMgZGV2aWNlIHdpbGwgYmUgY2FwYWJsZSBvZiBkZWNyeXB0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGNpcGhlcnRleHQuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gc2VjdXJlIGhhcmR3YXJlIGRldmljZSBpcyBhdmFpbGFibGUgdG8gc3RvcmUgdGhlIHNlY3JldCBrZXksIHRoaXNcbiAgICAgICAqIG9wdGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiBzZWNyZXQga2V5IHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCBiZWluZyByZXF1ZXN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3QgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gKi9cbiAgICBVc2VyRXhwb3J0UmVxdWVzdDoge1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnLWlkIGluIHdoaWNoIHRoZSBrZXkgaXMgaG91c2VkLlxuICAgICAgICogQGV4YW1wbGUgT3JnI2YzNjFlZDZiLTVkMTktNGNjZi1hNGQ1LWViYTkzNWRjMGI5MFxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sXG4gICAgICAgKiBpZiBhbnkuIElmIGEga2V5IHdhcyBwcm92aWRlZCwgb25seSB0aGF0IGtleSBjYW4gYmUgdXNlZCB0byBjb21wbGV0ZVxuICAgICAgICogdGhlIGV4cG9ydCBwcm9jZWR1cmUuIE90aGVyd2lzZSwgYW55IGtleSBjYW4gYmUgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBJTVBPUlRBTlQ6IGlmIGEgcHVibGljIGtleSBpcyBzdXBwbGllZCBhdCBleHBvcnQgaW5pdGlhdGlvbiwgaXQgaXNcbiAgICAgICAqIFNUUk9OR0xZIFJFQ09NTUVOREVEIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc2VjcmV0IGtleSBiZSBzdG9yZWQgaW5cbiAgICAgICAqIGEgc2VjdXJlIGhhcmR3YXJlIGRldmljZSwgZS5nLiwgYSBZdWJpS2V5IG9yIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudC5cbiAgICAgICAqIElmIG5vIHN1Y2ggaGFyZHdhcmUgaXMgYXZhaWxhYmxlLCBzdXBwbHlpbmcgYSBwdWJsaWMga2V5IGF0IGV4cG9ydFxuICAgICAgICogaW5pdGlhdGlvbiBpcyBTVFJPTkdMWSBESVNDT1VSQUdFRCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKlxuICAgICAgICogKFNlZSBhbHNvIHRoZSBjb21tZW50IGluIHRoZSBgcHVibGljX2tleWAgZmllbGQgb2YgYFVzZXJJbml0UmVxdWVzdGAuKVxuICAgICAgICogQGV4YW1wbGUgZGY0NTdhOThkNTUzODU0MGY1NGQxMzE2YjU5N2EwZjM5YjhkOTZmNDg4ZjEwYTJlMzFhOTU1YzE0NmZkZjFkM1xuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5X2hhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdmFsaWRfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIFVzZXJJZEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgV2ViQXV0aG4gUmVseWluZyBQYXJ0eSBtYXkgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbiBmb3Igc29tZSBvZiBpdHNcbiAgICAgKiBvcGVyYXRpb25zIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIG1heSB1c2UgdGhpcyB0eXBlIHRvIGV4cHJlc3MgaXRzIG5lZWRzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW0tdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6IFwicmVxdWlyZWRcIiB8IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHNpZ25hdHVyZSBjb21wcmlzaW5nIDY1IGJ5dGVzIGluIHRoZSBmb3JtYXQgcmVxdWlyZWRcbiAgICAgICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDQzNTVjNDdkNjM5MjRlOGE3MmU1MDliNjUwMjkwNTJlYjZjMjk5ZDUzYTA0ZTE2N2M1Nzc1ZmQ0NjY3NTFjOWQwNzI5OTkzNmQzMDRjMTUzZjY0NDNkZmEwNWY0MGZmMDA3ZDcyOTExYjZmNzIzMDdmOTk2MjMxNjA1YjkxNTYyMWNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBwcmVmaXhlZCB3aXRoIDB4IGUuZy4gXCIweDAwMDAuLi5cIlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4YjRmMmVmOWQxMmE1NGUxZjU2OTU5NmMwN2M5N2Q2ZDczMDUzNWI2ZmZjMGQyODc3NjFkYzc4MTAzYTg2MzI2NzgyNDcxYTA0Yzc1Y2U3YTZmYWVhMDhjYTlhNGEwODMwMDMxY2RjYjg5M2RhODcxMWQ1NGFhMjI2MTlmMWE3ZTcxYjgxODVkZGY0YzZiZmQ5YmFiYmQ3MzU5NjBlMzVlNTZiZDZlZWI4OTYyNWIwNDg1MGU3YTllZjg4NDZlNTQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRmlkb0Fzc2VydENoYWxsZW5nZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlcklkSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPSURDIGF1ZGllbmNlOyBzZXQgb25seSBpZiB0aGUgcHJvb2Ygd2FzIG9idGFpbmVkIGJ5IHVzaW5nIE9JREMgdG9rZW4uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPSURDSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAgICAgKiAtIFNlY3AyNTZrMSBrZXlzIHVzZSA2NS1ieXRlIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICAgICAqIC0gRWQyNTUxOSBrZXlzIHVzZSB0aGUgY2Fub25pY2FsIDMyLWJ5dGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFJGQyA4MDMyLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBFdGgyVmFsaWRhdG9yKDEpXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAxNzAxODc5NjQwXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICAgICAqIG9mIHRpbWVzIGEgdXNlciBjYW4gcHJvdmlkZSBhbiBpbmNvcnJlY3QgVE9UUCBjb2RlIGJlZm9yZSBiZWluZyByYXRlIGxpbWl0ZWQuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgbWluaW11bVxuICAgICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICAgICAqIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJldm9rZVRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSZXZva2VUb2tlbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHRoYXQgd2VyZSByZXZva2VkLiAqL1xuICAgICAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUm9sZUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUgKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNvbGFuYVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRva2VuSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVXNlIGl0IHRvIHJldm9rZSBhIHNlc3Npb24uIENhbm5vdCBiZSB1c2VkIGZvciBhdXRoLiAqL1xuICAgICAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyBwdXJwb3NlICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBVbnN0YWtlIHJlc3BvbnNlcyBhcmUgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VzLlxuICAgICAqIFRoZSBzY2hlbWEgZm9yIHRoaXMgbWVzc2FnZSBpcyBkZWZpbmVkXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNzaWduZWR2b2x1bnRhcnlleGl0KS5cbiAgICAgKiBUaGlzIG1lc3NhZ2UgY2FuIGJlIGRpcmVjdGx5IFBPU1RlZCB0byB0aGUgQmVhY29uIG5vZGUnc1xuICAgICAqIGAvZXRoL3YxL2JlYWNvbi9wb29sL3ZvbHVudGFyeV9leGl0c2AgZW5kLXBvaW50IChzZWUgZXhwZWN0ZWQgc2NoZW1hXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL3N1Ym1pdFBvb2xWb2x1bnRhcnlFeGl0KSkuXG4gICAgICovXG4gICAgVW5zdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBCTFMgc2lnbmF0dXJlLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiBvcmctd2lkZSBwb2xpY2llc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IHdpbmRvd1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBlbmNyeXB0ZWQgdXNlci1leHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhwb3J0ZWQga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCBBRVMtMjU2LUdDTSB1bmRlciBhIGtleVxuICAgICAgICAgICAqIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCB2aWEgSFBLRSAoUkZDOTE4MClcbiAgICAgICAgICAgKiB3aXRoIERIS0VNKFAtMjU2LCBIS0RGLVNIQTI1NikgYW5kIGJhc2U2NCBlbmNvZGVkLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF9rZXlfbWF0ZXJpYWw6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gYXMgYmFzZTY0LWVuY29kZWRcbiAgICAgICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlci1pZCB0byB3aGljaCB0aGlzIGtleSBiZWxvbmdzLiAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHN1Y2Nlc3NmdWwgdXNlci1leHBvcnQgaW5pdCByZXF1ZXN0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0UmVxdWVzdFwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCBiZWluZyByZXF1ZXN0ZWQuXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFVzZXJJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgICAgIG1mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgICAgIG1mYV9wb2xpY3k/OiB1bmtub3duO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgICAgICogQGV4YW1wbGUgQWxpY2VcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0b1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBwYXJhbWV0ZXJzOiBuZXZlcjtcbiAgcmVxdWVzdEJvZGllczogbmV2ZXI7XG4gIGhlYWRlcnM6IG5ldmVyO1xuICBwYXRoSXRlbXM6IG5ldmVyO1xufVxuXG5leHBvcnQgdHlwZSAkZGVmcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IHR5cGUgZXh0ZXJuYWwgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCBpbnRlcmZhY2Ugb3BlcmF0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWVMZWdhY3k6IHtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBPcmdcbiAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGdldE9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgKlxuICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICovXG4gIHVwZGF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBkYXRlT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGJlY2gzMiBhZGRyZXNzIGZvcm1hdCB3aXRob3V0IHRoZSBjaGFpbiBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgYXZheDFhbTR3NmhmcnZtaDNha2R1emtqdGhydGd0cWFmYWxjZTZhbjhjclxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJBdmFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIFNpZ25zIGEgQml0Y29pbiB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJ0Y1NpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIGJjMXE1cDVxa2FlNzdseTgwa3I0cHlmeXRkcW03cmYwOGRkaGRlamw5Z1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdGNTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlcml2ZSBLZXkgRnJvbSBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBEZXJpdmVzIGEga2V5IG9mIGEgc3BlY2lmaWVkIHR5cGUgdXNpbmcgYSBzdXBwbGllZCBkZXJpdmF0aW9uIHBhdGggYW5kIGFuXG4gICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAqL1xuICBkZXJpdmVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwMTkxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDE5MVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKlxuICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwNzEyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDcxMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mQ3ViZVNpZ25lcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKlxuICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAqL1xuICB2ZXJpZnlQcm9vZjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgKi9cbiAgY3JlYXRlS2V5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgKlxuICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgKi9cbiAgaW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbnZpdGUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gSW52aXRlIFVzZXJcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICovXG4gIGludml0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXlzXG4gICAqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygb3duZWQga2V5cyBpbiBhIGdpdmVuIG9yZy5cbiAgICovXG4gIGxpc3RLZXlzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSB0eXBlXG4gICAgICAgICAqIEBleGFtcGxlIFNlY3BFdGhBZGRyXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAqXG4gICAqIENyZWF0ZXMgb25lIG9yIG1vcmUgbmV3IGtleXMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgKi9cbiAgY3JlYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAqL1xuICBnZXRLZXlJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgKiBPbmx5IHRoZSBrZXkgb3duZXIgYW5kIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGtleXMuXG4gICAqL1xuICBkZWxldGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICpcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgdXBkYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleSBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICpcbiAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAqL1xuICBsaXN0S2V5Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXIsXG4gICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAqL1xuICBtZmFMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdE1mYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICovXG4gIG1mYUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICogYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlQ3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRklETy5cbiAgICovXG4gIG1mYUZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0Fzc2VydEFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICogYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExvZ2luIHdpdGggT0lEQ1xuICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAqL1xuICBvaWRjQXV0aDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjTG9naW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGVzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RSb2xlczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEb24ndCBpbmNsdWRlIGtleXMgYW5kIHVzZXJzIGZvciBlYWNoIHJvbGUgKi9cbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAqL1xuICBjcmVhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBib2R5IHRvIHNldCB0aGUgcm9sZSBuYW1lICovXG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVJvbGVSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVJvbGVSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGdldFJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICpcbiAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgZGVsZXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICpcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIHJvbGUgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlYCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgdXBkYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVSb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBleGlzdGluZyBrZXlzIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqL1xuICBhZGRLZXlzVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZEtleXNUb1JvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICpcbiAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgKi9cbiAgYWRkVXNlclRvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICovXG4gIHJlbW92ZUtleUZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAqXG4gICAqIFJldHVybnMgYWxsIGFjY2VzcyB0b2tlbnMgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICovXG4gIGxpc3RSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdFRva2Vuc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBUb2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgKi9cbiAgY3JlYXRlUm9sZVRva2VuOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAqXG4gICAqIFJldm9rZXMgYWxsIGFjY2VzcyB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VBbGxSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUmV2b2tlVG9rZW5zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfWBcbiAgICpcbiAgICogUmV2b2tlcyBhbiBhY2Nlc3MgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSZXZva2VUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlVXNlcnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgKlxuICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICovXG4gIHJlbW92ZVVzZXJGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgc2Vzc2lvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICpcbiAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldHVybmVkXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzXG4gICAqIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV2b2tlZC5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlQ3VycmVudFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAqL1xuICBnZXRTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byBnZXRcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHNvbGFuYVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U1OC1lbmNvZGVkIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgODZaUlBzekJwNUVvUGo3d1IzYkhuN3duQVo1aVlmcGFzUmM3REtGUFRVYVpcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU29sYW5hU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IHRoZSByb2xlIHRva2VuIGNhbiBhY2Nlc3MuXG4gICAqL1xuICBsaXN0VG9rZW5LZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb3NcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBhYm91dE1lOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKi9cbiAgdXNlckV4cG9ydExpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIEZJRE8ga2V5IGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiB0aGUga2V5IGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVGaWRvOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgRmlkb0tleVxuICAgICAgICAgKiBAZXhhbXBsZSBGaWRvS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgZmlkb19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICpcbiAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlclJlc2V0VG90cEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgKlxuICAgKiBEZWxldGVzIFRPVFAgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIFRPVFAgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlckRlbGV0ZVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBsaXN0VXNlcnNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkdldFVzZXJzSW5PcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKi9cbiAgY3JlYXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICovXG4gIGRlbGV0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZXNldFRvdHBJbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVzZXRUb3RwQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHZlcmlmeVRvdHBMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBSYXcgQmxvYlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgKlxuICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJsb2JTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICovXG4gIGN1YmUzc2lnbmVySGVhcnRiZWF0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIZWFydGJlYXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgZXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgc2VjcCBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdGgxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFdGgxU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXkgd2l0aCAweCBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgMHg5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqXG4gICAqIFNpZ25zIGEgZGVwb3NpdCB0cmFuc2FjdGlvbiB3aXRoIGEgYHZhbGlkYXRvcl9rZXlgLiBJZiBgdmFsaWRhdG9yX2tleWAgaXMgc2V0IHRvIGEgcHJlZ2VuZXJhdGVkIGtleSwgd2UgdXNlIHRoZVxuICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgYSBwcmVnZW5lcmF0ZWQga2V5LCB0aGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2VcbiAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKlxuICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgKlxuICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHVuc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuc3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVW5zdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqL1xuICBzaWduZXJTZXNzaW9uUmVmcmVzaDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgb3JnYW5pemF0aW9uIG93bmluZyB0aGUga2V5XG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgYnkgb3BlbmFwaS10eXBlc2NyaXB0LlxuICogRG8gbm90IG1ha2UgZGlyZWN0IGNoYW5nZXMgdG8gdGhlIGZpbGUuXG4gKi9cblxuLyoqIE9uZU9mIHR5cGUgaGVscGVycyAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG50eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcbnR5cGUgT25lT2Y8VCBleHRlbmRzIGFueVtdPiA9IFQgZXh0ZW5kcyBbaW5mZXIgT25seV1cbiAgPyBPbmx5XG4gIDogVCBleHRlbmRzIFtpbmZlciBBLCBpbmZlciBCLCAuLi5pbmZlciBSZXN0XVxuICAgID8gT25lT2Y8W1hPUjxBLCBCPiwgLi4uUmVzdF0+XG4gICAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBwYXRocyB7XG4gIFwiL3YwL2Fib3V0X21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F2YS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImF2YVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJ0Y1NpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9kZXJpdmVfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDE5MS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwMTkxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXA3MTIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDcxMlNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mQ3ViZVNpZ25lclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZk9pZGNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKlxuICAgICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5UHJvb2ZcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzL3trZXlfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleSBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgICAqXG4gICAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEtleVJvbGVzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLFxuICAgICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUNzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlVG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29hdXRoMi90d2l0dGVyXCI6IHtcbiAgICAvKipcbiAgICAgKiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFjdHMgaWRlbnRpY2FsbHkgdG8gVHdpdHRlcidzIFtgb2F1dGgyL3Rva2VuYF0oaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy9hdXRoZW50aWNhdGlvbi9hcGktcmVmZXJlbmNlL3Rva2VuKSBlbmRwb2ludCxcbiAgICAgKiBidXQgZXh0ZW5kcyB0aGUgb3V0cHV0IHdpdGggYW4gYGlkX3Rva2VuYC5cbiAgICAgKlxuICAgICAqIFRoaXMgYGlkX3Rva2VuYCBjYW4gdGhlbiBiZSB1c2VkIHdpdGggYW55IEN1YmVTaWduZXIgZW5kcG9pbnQgdGhhdCByZXF1aXJlcyBhbiBPSURDIHRva2VuLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IFRoaXMgZW5kcG9pbnQgd2lsbCBmYWlsIHVubGVzcyB0aGUgb3JnIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3R3aXR0ZXJgIGFuZCBjbGllbnQgSUQgYmVpbmcgdXNlZCBmb3IgVHdpdHRlci5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVHdpdHRlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIExvZ2luIHdpdGggT0lEQ1xuICAgICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKlxuICAgICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9pZGNBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfa2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICAgKlxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRLZXlzVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF91c2VyL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICAgKlxuICAgICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZFVzZXJUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICAgKlxuICAgICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVLZXlGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBhY2Nlc3MgdG9rZW5zIGZvciBhIGdpdmVuIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVRva2Vuc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgVG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlVG9rZW5cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFsbCBhY2Nlc3MgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQWxsUm9sZVRva2Vuc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnMve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1gXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFuIGFjY2VzcyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVJvbGVUb2tlblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVXNlcnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVVc2VyRnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHNlc3Npb25zXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXR1cm5lZFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RTZXNzaW9uc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXNcbiAgICAgKiB0byBiZSBhdCBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlU2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXZva2VkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25zXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi9zZWxmXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQ3VycmVudFNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRTZXNzaW9uXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc29sYW5hL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzb2xhbmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdG9rZW4va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleXMgdGhhdCB0aGUgcm9sZSB0b2tlbiBjYW4gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RUb2tlbktleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9leHBvcnRcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRMaXN0XCJdO1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAgICpcbiAgICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckV4cG9ydERlbGV0ZVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlckV4cG9ydENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0luaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG8ve2ZpZG9faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVGaWRvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZVRvdHBcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyVmVyaWZ5VG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RVc2Vyc0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0luaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlc2V0VG90cEluaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wicmVzZXRUb3RwQ29tcGxldGVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVRvdHBMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ibG9iL3NpZ24ve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gUmF3IEJsb2JcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgICAqXG4gICAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKlxuICAgICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgICAqXG4gICAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJsb2JTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vY3ViZTNzaWduZXIvaGVhcnRiZWF0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgaXMgY2FsbGVkIGJ5IHRoZSBjdWJlM3NpZ25lciBwcm94eSB0byByZWNvcmQgdmFyaW91cyBtZXRyaWNzIHRvIENsb3VkV2F0Y2guXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImN1YmUzc2lnbmVySGVhcnRiZWF0XCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhbiBldGgyIHZhbGlkYXRvciByZXF1ZXN0IHdpdGggYSBnaXZlbiBCTFMga2V5LlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDJTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zdGFrZVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgICAqXG4gICAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi91bnN0YWtlL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqXG4gICAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVuc3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS90b2tlbi9yZWZyZXNoXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInNpZ25lclNlc3Npb25SZWZyZXNoXCJdO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSB3ZWJob29rcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBjb21wb25lbnRzIHtcbiAgc2NoZW1hczoge1xuICAgIEFjY2VwdGVkUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlmZmVyZW50IHJlc3BvbnNlcyB3ZSByZXR1cm4gZm9yIHN0YXR1cyBjb2RlIFwiMjAyIEFjY2VwdGVkXCIuXG4gICAgICpcbiAgICAgKiBFdmVuIHRob3VnaCBcIjIwMiBBY2NlcHRlZFwiIGlzIGEgc3VjY2Vzc2Z1bCByZXNwb25zZSwgd2UgcmVwcmVzZW50XG4gICAgICogaXQgYXMgYSBSdXN0IGVycm9yIGJlY2F1c2UgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIGhhdmUgcm91dGUgaGFuZGxlcnNcbiAgICAgKiByZXR1cm4gYFJlc3VsdDxULCBTaWduZXJFcnJvcj5gIHdoZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiByZXNwb25zZSBmb3IgdGhlIHN0YXR1cyBjb2RlIFwiMjAwIE9rXCIuXG4gICAgICovXG4gICAgQWNjZXB0ZWRWYWx1ZToge1xuICAgICAgTWZhUmVxdWlyZWQ6IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcmVxdWVzdCBpZCAqL1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9yZ2FuaXphdGlvbiBpZCAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2Vzc2lvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBY2NlcHRlZFZhbHVlQ29kZTogXCJNZmFSZXF1aXJlZFwiO1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGlkZW50aXR5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbG9naW4gTUZBIHBvbGljeSAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSByZXF1aXJlZCBmb3IgYm90aCBgYXV0aGVudGljYXRlYCBhbmQgYHJlZnJlc2hgLiAqL1xuICAgIEF1dGhEYXRhOiB7XG4gICAgICAvKiogRm9ybWF0OiBpbnQzMiAqL1xuICAgICAgZXBvY2hfbnVtOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICBvdGhlcl90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGFzc2VydGlvbiByZXNwb25zZSB1c2VkIGJ5IGNsaWVudHMgd2hlbiBhdHRlbXB0aW5nIHRvIGxvZyBpbiB3aXRoIGEga25vd24gY3JlZGVudGlhbFxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNhdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRhaW5zIHRoZSBzdGFuZGFyZCBDVEFQMiBhdXRoZW50aWNhdG9yIGRhdGEuIE11c3QgYmUgYSB2YWxpZCBbYEF1dGhlbnRpY2F0b3JEYXRhYF0uXG4gICAgICAgKiBUaGlzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyBrZXkgd2FzIGludm9rZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1hdXRoZW50aWNhdG9yZGF0YVxuICAgICAgICovXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgVVRGOCBlbmNvZGVkIEpTT04gd2hpY2ggbXVzdCBiZSBhIHZhbGlkIFtgQ2xpZW50RGF0YWBdXG4gICAgICAgKiBUaGlzIGRhdGEgaXMgY29tYmluZWQgd2l0aCBgYXV0aGVudGljYXRvcl9kYXRhYCB0byBwcm9kdWNlIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIG1lYW5pbmcgdGhlIGNsaWVudCBhdHRlc3RzIHRvIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGRhdGEuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JyZXNwb25zZS1jbGllbnRkYXRhanNvblxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBvZiB0aGUgY29uY2F0ZW5hdGVkIGBhdXRoZW50aWNhdG9yRGF0YSB8fCBoYXNoYCB3aGVyZVxuICAgICAgICogYGhhc2hgIGlzIHRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgYGNsaWVudERhdGFKU09OYCBidWZmZXI6XG4gICAgICAgKlxuICAgICAgICogRmllbGQgRGVmaW5pdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2Utc2lnbmF0dXJlXG4gICAgICAgKiBTdGVwIDExIG9mIGBnZXRBc3NlcnRpb25gIHNwZWNpZmllcyB0aGUgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tb3AtZ2V0LWFzc2VydGlvblxuICAgICAgICogUmVxdWlyZW1lbnQgZm9yIFNIQS0yNTY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNjb2xsZWN0ZWRjbGllbnRkYXRhLWhhc2gtb2YtdGhlLXNlcmlhbGl6ZWQtY2xpZW50LWRhdGFcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdGhlIGF1dGhlbnRpY2F0b3IgdG8gb3B0aW9uYWxseSBkZWNsYXJlIHRoZSBjcmVkZW50aWFsIGlkZW50aWZpZXIgdGhleSB1c2VkLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2UtdXNlcmhhbmRsZVxuICAgICAgICovXG4gICAgICB1c2VySGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgYXV0aGVudGljYXRvcnMnIGF0dGFjaG1lbnQgbW9kYWxpdGllcy5cbiAgICAgKiBSZWx5aW5nIFBhcnRpZXMgdXNlIHRoaXMgdG8gZXhwcmVzcyBhIHByZWZlcnJlZCBhdXRoZW50aWNhdG9yIGF0dGFjaG1lbnRcbiAgICAgKiBtb2RhbGl0eSB3aGVuIGNhbGxpbmcgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIHRvIGNyZWF0ZSBhIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9yYXR0YWNobWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6IFwicGxhdGZvcm1cIiB8IFwiY3Jvc3MtcGxhdGZvcm1cIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBhdXRoZW50aWNhdG9yJ3NcbiAgICAgKiByZXNwb25zZSB0byBhIGNsaWVudOKAmXMgcmVxdWVzdCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsLiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGNyZWRlbnRpYWwgdGhhdCBjYW4gYmVcbiAgICAgKiB1c2VkIHRvIGlkZW50aWZ5IGl0IGZvciBsYXRlciB1c2UsIGFuZCBtZXRhZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZVxuICAgICAqIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgdG8gYXNzZXNzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLWF1dGhlbnRpY2F0b3JhdHRlc3RhdGlvbnJlc3BvbnNlXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGF0dGVzdGF0aW9uIG9iamVjdCwgd2hpY2ggaXMgb3BhcXVlIHRvLCBhbmRcbiAgICAgICAqIGNyeXB0b2dyYXBoaWNhbGx5IHByb3RlY3RlZCBhZ2FpbnN0IHRhbXBlcmluZyBieSwgdGhlIGNsaWVudC4gVGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QgY29udGFpbnMgYm90aCBhdXRoZW50aWNhdG9yIGRhdGEgYW5kIGFuIGF0dGVzdGF0aW9uXG4gICAgICAgKiBzdGF0ZW1lbnQuIFRoZSBmb3JtZXIgY29udGFpbnMgdGhlIEFBR1VJRCwgYSB1bmlxdWUgY3JlZGVudGlhbCBJRCwgYW5kXG4gICAgICAgKiB0aGUgY3JlZGVudGlhbCBwdWJsaWMga2V5LiBUaGUgY29udGVudHMgb2YgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIEl0IGFsc28gY29udGFpbnMgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHkncyBzZXJ2ZXIgcmVxdWlyZXMgdG8gdmFsaWRhdGUgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCxcbiAgICAgICAqIGFzIHdlbGwgYXMgdG8gZGVjb2RlIGFuZCB2YWxpZGF0ZSB0aGUgYXV0aGVudGljYXRvciBkYXRhIGFsb25nIHdpdGggdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YS4gRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICAgICAgKiDCp+KArzYuNSBBdHRlc3RhdGlvbiwgwqfigK82LjUuNCBHZW5lcmF0aW5nIGFuIEF0dGVzdGF0aW9uIE9iamVjdCwgYW5kIEZpZ3VyZVxuICAgICAgICogNi5cbiAgICAgICAqL1xuICAgICAgYXR0ZXN0YXRpb25PYmplY3Q6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlLCBpbmhlcml0ZWQgZnJvbSBBdXRoZW50aWNhdG9yUmVzcG9uc2UsIGNvbnRhaW5zIHRoZVxuICAgICAgICogSlNPTi1jb21wYXRpYmxlIHNlcmlhbGl6YXRpb24gb2YgY2xpZW50IGRhdGEgKHNlZSDCp+KArzYuNSBBdHRlc3RhdGlvbilcbiAgICAgICAqIHBhc3NlZCB0byB0aGUgYXV0aGVudGljYXRvciBieSB0aGUgY2xpZW50IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoaXNcbiAgICAgICAqIGNyZWRlbnRpYWwuIFRoZSBleGFjdCBKU09OIHNlcmlhbGl6YXRpb24gTVVTVCBiZSBwcmVzZXJ2ZWQsIGFzIHRoZSBoYXNoXG4gICAgICAgKiBvZiB0aGUgc2VyaWFsaXplZCBjbGllbnQgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBvdmVyIGl0LlxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIHRoZSBBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcbiAgICAgKiBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgdGhlaXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyBhdXRoZW50aWNhdG9yXG4gICAgICogYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYToge1xuICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkF1dGhuIExldmVsXG4gICAgICAgKiAxIGFuZCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXRzIG5hbWluZyByZXRhaW5zIHRoZSBkZXByZWNhdGVkXG4gICAgICAgKiDigJxyZXNpZGVudOKAnSB0ZXJtaW5vbG9neSBmb3IgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBzZXQgaXQgdG8gdHJ1ZSBpZiwgYW5kIG9ubHkgaWYsIHJlc2lkZW50S2V5IGlzIHNldCB0byByZXF1aXJlZC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYS1yZXF1aXJlcmVzaWRlbnRrZXlcbiAgICAgICAqL1xuICAgICAgcmVxdWlyZVJlc2lkZW50S2V5PzogYm9vbGVhbjtcbiAgICAgIHJlc2lkZW50S2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNpZGVudEtleVJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyBtYXkgaW1wbGVtZW50IHZhcmlvdXMgdHJhbnNwb3J0cyBmb3IgY29tbXVuaWNhdGluZyB3aXRoXG4gICAgICogY2xpZW50cy4gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGhpbnRzIGFzIHRvIGhvdyBjbGllbnRzIG1pZ2h0IGNvbW11bmljYXRlXG4gICAgICogd2l0aCBhIHBhcnRpY3VsYXIgYXV0aGVudGljYXRvciBpbiBvcmRlciB0byBvYnRhaW4gYW4gYXNzZXJ0aW9uIGZvciBhXG4gICAgICogc3BlY2lmaWMgY3JlZGVudGlhbC4gTm90ZSB0aGF0IHRoZXNlIGhpbnRzIHJlcHJlc2VudCB0aGUgV2ViQXV0aG4gUmVseWluZ1xuICAgICAqIFBhcnR5J3MgYmVzdCBiZWxpZWYgYXMgdG8gaG93IGFuIGF1dGhlbnRpY2F0b3IgbWF5IGJlIHJlYWNoZWQuIEEgUmVseWluZ1xuICAgICAqIFBhcnR5IHdpbGwgdHlwaWNhbGx5IGxlYXJuIG9mIHRoZSBzdXBwb3J0ZWQgdHJhbnNwb3J0cyBmb3IgYSBwdWJsaWMga2V5XG4gICAgICogY3JlZGVudGlhbCB2aWEgZ2V0VHJhbnNwb3J0cygpLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXV0aGVudGljYXRvcnRyYW5zcG9ydFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclRyYW5zcG9ydDogXCJ1c2JcIiB8IFwibmZjXCIgfCBcImJsZVwiIHwgXCJpbnRlcm5hbFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGFuIEF2YWxhbmNoZSB0cmFuc2FjdGlvbnMgKi9cbiAgICBBdmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEF2YVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGEgemVyb2l6aW5nIDMyLWJ5dGUgZml4ZWQtc2l6ZSBhcnJheSAqL1xuICAgIEIzMjogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJhZEdhdGV3YXlFcnJvckNvZGU6IFwiT0F1dGhQcm92aWRlckVycm9yXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkUmVxdWVzdEVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljQmFkUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEJvZHlcIlxuICAgICAgfCBcIlRva2VuUmVxdWVzdEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5UmVkdW5kYW50UnVsZVwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ05hbWVUYWtlblwiXG4gICAgICB8IFwiUm9sZU5hbWVUYWtlblwiXG4gICAgICB8IFwiQWRkS2V5VG9Sb2xlQ291bnRUb29IaWdoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5SWRcIlxuICAgICAgfCBcIkludmFsaWRLZXlNZXRhZGF0YUxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZXJpdmVkS2V5XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydEluUHJvZ3Jlc3NcIlxuICAgICAgfCBcIlJvbGVOb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRPcmdJZE1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0SW52YWxpZE9yZ0lkXCJcbiAgICAgIHwgXCJNZmFSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRLZXlUeXBlXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxcIlxuICAgICAgfCBcIkludmFsaWRIZXhWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2UzMlZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTU4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRGb3JrVmVyc2lvbkxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEV0aEFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRTdGVsbGFyQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZE9yZ05hbWVPcklkXCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2VEZXBvc2l0XCJcbiAgICAgIHwgXCJJbnZhbGlkQmxvYlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU29sYW5hU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFaXA3MTJTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGVyaXZlS2V5UmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtpbmdBbW91bnRcIlxuICAgICAgfCBcIkN1c3RvbVN0YWtpbmdBbW91bnROb3RBbGxvd2VkRm9yV3JhcHBlckNvbnRyYWN0XCJcbiAgICAgIHwgXCJJbnZhbGlkVW5zdGFrZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVVc2VyUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIlVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5UnVsZUtleU1pc21hdGNoXCJcbiAgICAgIHwgXCJFbXB0eVNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFNjb3Blc0ZvclJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTGlmZXRpbWVcIlxuICAgICAgfCBcIk5vU2luZ2xlS2V5Rm9yVXNlclwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJ1bGVcIlxuICAgICAgfCBcIlNvdXJjZUlwQWxsb3dsaXN0RW1wdHlcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSZXBlYXRlZFJ1bGVcIlxuICAgICAgfCBcIkF2YVNpZ25IYXNoRXJyb3JcIlxuICAgICAgfCBcIkF2YVNpZ25FcnJvclwiXG4gICAgICB8IFwiQnRjU2Vnd2l0SGFzaEVycm9yXCJcbiAgICAgIHwgXCJCdGNTaWduRXJyb3JcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25FcnJvclwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblVzZXJBZGRcIlxuICAgICAgfCBcIlRoaXJkUGFydHlVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJFcnJvclwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVNaXNtYXRjaFwiXG4gICAgICB8IFwiSW52YWxpZE9pZGNUb2tlblwiXG4gICAgICB8IFwiT2lkY0lzc3VlclVuc3VwcG9ydGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vQXBwbGljYWJsZUp3a1wiXG4gICAgICB8IFwiRmlkb0tleUFscmVhZHlSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJGaWRvS2V5U2lnbkNvdW50VG9vTG93XCJcbiAgICAgIHwgXCJGaWRvVmVyaWZpY2F0aW9uRmFpbGVkXCJcbiAgICAgIHwgXCJGaWRvQ2hhbGxlbmdlTWZhTWlzbWF0Y2hcIlxuICAgICAgfCBcIlVuc3VwcG9ydGVkTGVnYWN5Q29nbml0b1Nlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRJZGVudGl0eVByb29mXCJcbiAgICAgIHwgXCJQYWdpbmF0aW9uRGF0YUV4cGlyZWRcIlxuICAgICAgfCBcIkV4aXN0aW5nS2V5c1Zpb2xhdGVFeGNsdXNpdmVLZXlBY2Nlc3NcIlxuICAgICAgfCBcIkV4cG9ydERlbGF5VG9vU2hvcnRcIlxuICAgICAgfCBcIkV4cG9ydFdpbmRvd1Rvb0xvbmdcIlxuICAgICAgfCBcIkludmFsaWRUb3RwRmFpbHVyZUxpbWl0XCJcbiAgICAgIHwgXCJJbnZhbGlkRWlwMTkxU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkNhbm5vdFJlc2VuZFVzZXJJbnZpdGF0aW9uXCI7XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJtZXNzYWdlX2Jhc2U2NFwiOiBcIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhveE1qTTBOVFlLXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgQmxvYlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmxvYiB0byBzaWduLCBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgY2VydGFpbiBzaWduaW5nIGtleXMgaW1wb3NlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb250ZW50cyBvZlxuICAgICAgICogdGhlIG1lc3NhZ2UuIEZvciBleGFtcGxlLCBTZWNwMjU2azEga2V5cyByZXF1aXJlIHRoYXQgdGhlIG1lc3NhZ2UgaXMgMzIgYnl0ZXMgbG9uZy5cbiAgICAgICAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQnRjU2lnaGFzaFR5cGU6XG4gICAgICB8IFwiQWxsXCJcbiAgICAgIHwgXCJOb25lXCJcbiAgICAgIHwgXCJTaW5nbGVcIlxuICAgICAgfCBcIkFsbFBsdXNBbnlvbmVDYW5QYXlcIlxuICAgICAgfCBcIk5vbmVQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJTaW5nbGVQbHVzQW55b25lQ2FuUGF5XCI7XG4gICAgQnRjU2lnblJlcXVlc3Q6IHtcbiAgICAgIHNpZ19raW5kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBiaXRjb2luIHRyYW5zYWN0aW9uIHRvIHNpZ24gKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBCdGNTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgKiBAZXhhbXBsZSAweDQ1NGFlZjI3YzIxZGY3ZGQ4ZjUzN2RjODY5ZjRjZDY1Mjg2Y2UyMzlhNTJkMzY0NzBmNGQ4NWJlODVhODkxYjAyNzg5ZTVmZmQ4NTYwYjMyYTk4MTEwZTVkMDA5NjgwMmU0YzE0MTQ1Y2Y2YzQ0ZjEwYTc2OGM4Nzc1NWVhYTQ4MDBcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBCdGNTaWduYXR1cmVLaW5kOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlZ3JlZ2F0ZWQgV2l0bmVzcyAqL1xuICAgICAgU2Vnd2l0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gaW5wdXQgaW5kZXhcbiAgICAgICAgICogQGV4YW1wbGUgMFxuICAgICAgICAgKi9cbiAgICAgICAgaW5wdXRfaW5kZXg6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBTY3JpcHRcbiAgICAgICAgICogQGV4YW1wbGUgMHg3NmE5MTQ3OTA5MTk3MjE4NmM0NDllYjFkZWQyMmI3OGU0MGQwMDliZGYwMDg5ODhhY1xuICAgICAgICAgKi9cbiAgICAgICAgc2NyaXB0X2NvZGU6IHN0cmluZztcbiAgICAgICAgc2lnaGFzaF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ2hhc2hUeXBlXCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW1vdW50IGluIHNhdG9zaGlzXG4gICAgICAgICAqIEBleGFtcGxlIDEwMDAwMDBcbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgaG93IHRvIGRlcml2ZSBhIFdlYkF1dGhuIGNoYWxsZW5nZSB2YWx1ZS4gKi9cbiAgICBDaGFsbGVuZ2VQaWVjZXM6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgYmFzZTY0dXJsIGVuY29kaW5nIG9mIFVURjggSlNPTi4gVGhlIGRhdGEgaW4gdGhhdCBKU09OIGlzIGVuZHBvaW50IHNwZWNpZmljLCBhbmQgZGVzY3JpYmVzIHdoYXQgdGhpcyBGSURPIGNoYWxsZW5nZSB3aWxsIGJlIHVzZWQgZm9yLlxuICAgICAgICpcbiAgICAgICAqIENsaWVudHMgY2FuIHVzZSBgcHJlaW1hZ2VgIGFsb25nIHdpdGggYHJhbmRvbV9zZWVkYCB0byByZWNvbnN0cnVjdCB0aGUgY2hhbGxlbmdlIGxpa2Ugc286XG4gICAgICAgKlxuICAgICAgICogYGNoYWxsZW5nZSA9IEhNQUMtU0hBMjU2KGtleT1yYW5kb21fc2VlZCwgbWVzc2FnZT1wcmVpbWFnZSlgXG4gICAgICAgKi9cbiAgICAgIHByZWltYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmFuZG9tIHNlZWQgdGhhdCBwcmV2ZW50cyByZXBsYXkgYXR0YWNrcyAqL1xuICAgICAgcmFuZG9tX3NlZWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGNsaWVudC5cbiAgICAgKiBUaGlzIHN0cnVjdCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgc2VydmVyLXNpZGUgY291bnRlcnBhcnQgW2BTZXNzaW9uRGF0YWBdLlxuICAgICAqL1xuICAgIENsaWVudFNlc3Npb25JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgYXV0aG9yaXphdGlvbi4gKi9cbiAgICAgIGF1dGhfdG9rZW46IHN0cmluZztcbiAgICAgIGF1dGhfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBhdCB3aGljaCB0aGUgdG9rZW4gd2FzIGxhc3QgcmVmcmVzaGVkXG4gICAgICAgKi9cbiAgICAgIGVwb2NoOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgcmVmcmVzaGluZyB0aGUgYChhdXRoLCByZWZyZXNoKWAgdG9rZW4gcGFpciAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgcmVmcmVzaF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRCAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ29uZmlndXJlZE1mYTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwidG90cFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGNyZWRlbnRpYWwgaWQgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGdpdmVuIHRvIHRoZSBrZXkgKi9cbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdHlwZTogXCJmaWRvXCI7XG4gICAgICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gUlNBLVBTUy1TSEEyNTYgc2lnbmF0dXJlIG9uIHRoZSBwdWJsaWMga2V5IGFuZCBlbmNyeXB0ZWRcbiAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXNcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIHVzZXJzIHRvIHNwZWNpZnkgYSB1c2VyIG90aGVyIHRoYW4gdGhlbXNlbHZlcyB0byByZWNlaXZlIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBjcmVhdGUgcm9sZSByZXF1ZXN0IGJvZHkgKi9cbiAgICBDcmVhdGVSb2xlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVTZXNzaW9uUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgc2Vzc2lvbidzIHB1cnBvc2VcbiAgICAgICAqIEBleGFtcGxlIE1hbmFnZSBrZXlzIG9uIHNlcnZlciBmb28uYmFyXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibWFuYWdlOmtleToqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIENyZWF0ZVRva2VuUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBWYWxpZGF0b3IgU2lnbmluZ1xuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLiBCeSBkZWZhdWx0LCBpdCBoYXMgYWxsXG4gICAgICAgKiBzaWduaW5nIGNhcGFiaWxpdGllcywgaS5lLiwganVzdCB0aGUgJ3NpZ246Kicgc2NvcGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgQ3JlYXRpb25PcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH07XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICBEZXJpdmVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPbmUgb3IgbW9yZSBkZXJpdmF0aW9uIHBhdGhzIGZyb20gd2hpY2ggdG8gZGVyaXZlIGtleXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvblxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFaXAxOTFPcjcxMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgc2lnbmF0dXJlIGNvbXByaXNpbmcgNjUgYnl0ZXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZFxuICAgICAgICogYnkgZWNyZWNvdmVyOiAzMi1ieXRlIHIsIDMyLWJ5dGUgcywgYW5kIG9uZS1ieXRlIHJlY292ZXJ5LWlkIHZcbiAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM1NWM0N2Q2MzkyNGU4YTcyZTUwOWI2NTAyOTA1MmViNmMyOTlkNTNhMDRlMTY3YzU3NzVmZDQ2Njc1MWM5ZDA3Mjk5OTM2ZDMwNGMxNTNmNjQ0M2RmYTA1ZjQwZmYwMDdkNzI5MTFiNmY3MjMwN2Y5OTYyMzE2MDViOTE1NjIxY1xuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFSVAtMTkxIGRhdGEgdG8gc2lnbiBhcyBoZXgtZW5jb2RlZCBieXRlcy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDEzMzcsXG4gICAgICogICBcInR5cGVkX2RhdGFcIjoge1xuICAgICAqICAgICBcImRvbWFpblwiOiB7XG4gICAgICogICAgICAgXCJjaGFpbklkXCI6IDEzMzcsXG4gICAgICogICAgICAgXCJuYW1lXCI6IFwiRXRoZXIgTWFpbFwiLFxuICAgICAqICAgICAgIFwidmVyaWZ5aW5nQ29udHJhY3RcIjogXCIweENjQ0NjY2NjQ0NDQ2NDQ0NDQ0NjQ2NDY2NDY0NDQ2NDY2NjY2NjY0NcIixcbiAgICAgKiAgICAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJtZXNzYWdlXCI6IHtcbiAgICAgKiAgICAgICBcImNvbnRlbnRzXCI6IFwiSGVsbG8sIEJvYiFcIixcbiAgICAgKiAgICAgICBcImZyb21cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQ293XCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4Q0QyYTNkOUY5MzhFMTNDRDk0N0VjMDVBYkM3RkU3MzREZjhERDgyNlwiLFxuICAgICAqICAgICAgICAgICBcIjB4RGVhRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRlwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcInRvXCI6IHtcbiAgICAgKiAgICAgICAgIFwibmFtZVwiOiBcIkJvYlwiLFxuICAgICAqICAgICAgICAgXCJ3YWxsZXRzXCI6IFtcbiAgICAgKiAgICAgICAgICAgXCIweGJCYkJCQkJiYkJCQmJiYkJiYkJiYmJiQkJiQmJiYmJCYkJiYkJCYkJcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQmRhQmVhNTdCMEJEQUJlQTU3YjBiZEFCRUE1N2IwQkRhYkVhNTdcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQjBiMGIwYjBiMEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAqICAgICAgICAgXVxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJwcmltYXJ5VHlwZVwiOiBcIk1haWxcIixcbiAgICAgKiAgICAgXCJ0eXBlc1wiOiB7XG4gICAgICogICAgICAgXCJFSVA3MTJEb21haW5cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJzaW9uXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjaGFpbklkXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInVpbnQyNTZcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidmVyaWZ5aW5nQ29udHJhY3RcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1wiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluLWlkIHRvIHdoaWNoIHRoaXMgdHlwZWQgZGF0YSB3aWxsIGJlIHNlbnRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRUlQLTcxMiB0eXBlZCBkYXRhLiBSZWZlciB0byB0aGUgSlNPTiBzY2hlbWEgZGVmaW5lZCBpbiBFSVAtNzEyLiAqL1xuICAgICAgdHlwZWRfZGF0YTogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgLyoqIEBkZWZhdWx0IG51bGwgKi9cbiAgICBFbXB0eTogdW5rbm93bjtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGlzIGEgcXVvdGVkIGB1aW50NjRgLlxuICAgICAqIEBleGFtcGxlIDI1NlxuICAgICAqL1xuICAgIEVwb2NoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlVGltZSBtZWFzdXJlZCBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgW2BTeXN0ZW1UaW1lYF0gYXMgYSBbYHU2NGBdXG4gICAgICogcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBbYFN5c3RlbVRpbWU6OlVOSVhfRVBPQ0hgXS5cbiAgICAgKi9cbiAgICBFcG9jaERhdGVUaW1lOiBudW1iZXI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RydWN0dXJlIG9mIEVycm9yUmVzcG9uc2UgbXVzdCBtYXRjaCB0aGUgcmVzcG9uc2UgdGVtcGxhdGUgdGhhdCBBV1MgdXNlcyAqL1xuICAgIEVycm9yUmVzcG9uc2U6IHtcbiAgICAgIGFjY2VwdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFZhbHVlXCJdIHwgbnVsbDtcbiAgICAgIGVycm9yX2NvZGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JDb2RlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgaWRlbnRpZmllciAqL1xuICAgICAgcmVxdWVzdF9pZD86IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNDMxMTMsXG4gICAgICogICBcInR4XCI6IHtcbiAgICAgKiAgICAgXCJjaGFpbl9pZFwiOiBcIjB4YTg2OVwiLFxuICAgICAqICAgICBcImdhc1wiOiBcIjB4NjFhODBcIixcbiAgICAgKiAgICAgXCJtYXhGZWVQZXJHYXNcIjogXCIweDk1MDJGOTAwXCIsXG4gICAgICogICAgIFwibWF4UHJpb3JpdHlGZWVQZXJHYXNcIjogXCIweDUwXCIsXG4gICAgICogICAgIFwibm9uY2VcIjogXCIweGJcIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZjAwYmExMmYwMDAwMDAwMGI0MTIxMjAwMDAwZjAwYzBmZmVlZjAwZFwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCIweDAyXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDEwMDAwMDAwMDAwXCJcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0yNzE4IHR5cGVkIHRyYW5zYWN0aW9uIChzZWUgdGhlIFtldGhlcnMtcnNcbiAgICAgICAqIGludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLnJzL2V0aGVycy9sYXRlc3QvZXRoZXJzL3R5cGVzL3N0cnVjdC5FaXAxNTU5VHJhbnNhY3Rpb25SZXF1ZXN0Lmh0bWwpKSB0eXBlcywgaW5jbHVkaW5nIEVJUC0xNTU5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMlwiIC4uLiB9YCksIGFuZCBsZWdhY3lcbiAgICAgICAqIHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZFxuICAgICAgICogdG8gYmUgKDB4LXByZWZpeGVkIG9yIG5vdCkgaGV4IHN0cmluZ3Mgb3IgYnl0ZSBhcnJheXMuXG4gICAgICAgKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICovXG4gICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImV0aDJfc2lnbl9yZXF1ZXN0XCI6IHtcbiAgICAgKiAgICAgXCJhZ2dyZWdhdGlvbl9zbG90XCI6IHtcbiAgICAgKiAgICAgICBcInNsb3RcIjogXCIzNlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwiZm9ya19pbmZvXCI6IHtcbiAgICAgKiAgICAgICBcImZvcmtcIjoge1xuICAgICAqICAgICAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCIsXG4gICAgICogICAgICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHg5ZDEzZDYxMjEyYzA2N2UwMmNlOGU2MDhhNzAwN2UyYzNiMDI1NzFlOWU2ZjI3ZmY0NWRmYTkxYmYyN2M4NzBiXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJzaWduaW5nUm9vdFwiOiBcIjB4OWM1N2U3N2M0OTY1NzI3NTQyYjkzMzdkZjY3NTZmOTQ4NDY0YmNhMzg1OWJlYTZlZDNjMGVjNjYwMGQ4OTgyYVwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCJBR0dSRUdBVElPTl9TTE9UXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJtYWlubmV0XCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdWJzZXQgb2YgdGhlIFdlYjNTaWduZXIgRXRoMiBCTFMgc2lnbmluZyByZXF1ZXN0IHdob3NlIHNjaGVtYSBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9jb25zZW5zeXMuZ2l0aHViLmlvL3dlYjNzaWduZXIvd2ViM3NpZ25lci1ldGgyLmh0bWwjdGFnL1NpZ25pbmcvb3BlcmF0aW9uL0VUSDJfU0lHTikuXG4gICAgICAgKiBXZSBoYW5kbGUgZGVwb3NpdHMgYW5kIHZvbHVudGFyeSBleGl0cyBzZXBhcmF0ZWx5LlxuICAgICAgICovXG4gICAgICBldGgyX3NpZ25fcmVxdWVzdDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgIH07XG4gICAgRXRoMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4IGVuY29kZWQgc2lnbmF0dXJlIHByZWZpeGVkIHdpdGggMHggZS5nLiBcIjB4MDAwMC4uLlwiXG4gICAgICAgKiBAZXhhbXBsZSAweGI0ZjJlZjlkMTJhNTRlMWY1Njk1OTZjMDdjOTdkNmQ3MzA1MzViNmZmYzBkMjg3NzYxZGM3ODEwM2E4NjMyNjc4MjQ3MWEwNGM3NWNlN2E2ZmFlYTA4Y2E5YTRhMDgzMDAzMWNkY2I4OTNkYTg3MTFkNTRhYTIyNjE5ZjFhN2U3MWI4MTg1ZGRmNGM2YmZkOWJhYmJkNzM1OTYwZTM1ZTU2YmQ2ZWViODk2MjViMDQ4NTBlN2E5ZWY4ODQ2ZTU0OVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEV2bVR4RGVwb3NpdEVycm9yQ29kZTpcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eURhdGFcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5Q2hhaW5JZFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlSZWNlaXZlclwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbHVlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRGF0YUxlbmd0aFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0Tm9BYmlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vRGVwb3NpdEZ1bmN0aW9uXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRnVuY3Rpb25OYW1lXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRJbnZhbGlkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRNaXNzaW5nRGVwb3NpdEFyZ1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdEZXBvc2l0QXJnVHlwZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdWYWxpZGF0b3JBcmdWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VmFsaWRhdG9yS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkV2l0aGRyYXdhbENyZWRlbnRpYWxzXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbnJlc29sdmVkUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZERlcG9zaXRFbmNvZGluZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBuZXcgZmlkbyBjcmVkZW50aWFsXG4gICAgICAgKiBAZXhhbXBsZSBXb3JrIFl1YmlrZXlcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiT3JnRGlzYWJsZWRcIlxuICAgICAgfCBcIk9yZ05vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdXaXRob3V0T3duZXJcIlxuICAgICAgfCBcIk9ycGhhbmVkVXNlclwiXG4gICAgICB8IFwiT2lkY1VzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlck5vdEluT3JnXCJcbiAgICAgIHwgXCJVc2VyTm90T3JnT3duZXJcIlxuICAgICAgfCBcIlVzZXJOb3RLZXlPd25lclwiXG4gICAgICB8IFwiSW52YWxpZFJvbGVcIlxuICAgICAgfCBcIkRpc2FibGVkUm9sZVwiXG4gICAgICB8IFwiS2V5RGlzYWJsZWRcIlxuICAgICAgfCBcIlJvbGVOb3RJbk9yZ1wiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlOb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3RJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25SZXZva2VkXCJcbiAgICAgIHwgXCJFeHBlY3RlZFVzZXJTZXNzaW9uXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZUNoYW5nZWRcIlxuICAgICAgfCBcIlNjb3BlZE5hbWVOb3RGb3VuZFwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRFcG9jaFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZFJlZnJlc2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvblJlZnJlc2hUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIkludmFsaWRBdXRoSGVhZGVyXCJcbiAgICAgIHwgXCJTZXNzaW9uTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRBcm5cIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkQXV0aFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uQXV0aFRva2VuRXhwaXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvblBvc3NpYmx5U3RvbGVuVG9rZW5cIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRJZGVudGl0eVwiXG4gICAgICB8IFwiTWZhRGlzYWxsb3dlZEFwcHJvdmVyXCJcbiAgICAgIHwgXCJNZmFUeXBlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTWZhTm90QXBwcm92ZWRZZXRcIlxuICAgICAgfCBcIk1mYUNvbmZpcm1hdGlvbkNvZGVNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhSHR0cFJlcXVlc3RNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhUmVtb3ZlQmVsb3dNaW5cIlxuICAgICAgfCBcIlRvdHBBbHJlYWR5Q29uZmlndXJlZFwiXG4gICAgICB8IFwiVG90cENvbmZpZ3VyYXRpb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29uZmlndXJhdGlvblwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvZGVcIlxuICAgICAgfCBcIk1mYVRvdHBSYXRlTGltaXRcIlxuICAgICAgfCBcIkltcHJvcGVyU2Vzc2lvblNjb3BlXCJcbiAgICAgIHwgXCJGdWxsU2Vzc2lvblJlcXVpcmVkXCJcbiAgICAgIHwgXCJTZXNzaW9uV2l0aG91dEFueVNjb3BlVW5kZXJcIlxuICAgICAgfCBcIlVzZXJSb2xlVW5wcml2aWxlZ2VkXCJcbiAgICAgIHwgXCJNZmFOb3RDb25maWd1cmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyBhIGZvcmsgb2YgdGhlIGBCZWFjb25DaGFpbmAsIHRvIHByZXZlbnQgcmVwbGF5IGF0dGFja3MuXG4gICAgICogVGhlIHNjaGVtYSBvZiBgRm9ya2AgaXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBjaGFpblxuICAgICAqIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNmb3JrKS5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRm9yazoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNDM0MzQzXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQcmV2aW91cyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGRhdGEgYXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBBUElcbiAgICAgKiBzcGVjXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRHZW5lc2lzKS5cbiAgICAgKiBZb3UgY2FuIGdldCB0aGUgZ2VuZXNpcyBkYXRhIGZyb20gdGhlIEJlYWNvbiBub2RlJ3MgYC9ldGgvdjEvYmVhY29uL2dlbmVzaXNgIGVuZC1wb2ludC5cbiAgICAgKiBUaGlzIHN0cnVjdCBkZWZpbml0aW9uIGlzIG9yaWdpbmFsbHkgZnJvbSBsaWdodGhvdXNlJ3MgZXRoMi5cbiAgICAgKi9cbiAgICBHZW5lc2lzRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHRpbWVcbiAgICAgICAqIEBleGFtcGxlIDE2NzkzMjY0NDlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc190aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHZhbGlkYXRvcnMgcm9vdC5cbiAgICAgICAqIEBleGFtcGxlIDB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdDogc3RyaW5nO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJZEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU3RhdHMgcGVydGFpbmluZyB0aGUgdGhlIHNlbmRlciBgY3ViZTNzaWduZXJgIGluc3RhbmNlICovXG4gICAgSGVhcnRiZWF0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBhY3RpdmUgKHJlY2VpdmVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgYmVpbmcgcHJvY2Vzc2VkIHlldClcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfYWN0aXZlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBieSBjdWJlM3NpZ25lclxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19wcm9jZXNzaW5nOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCByZWNvcmQgbWV0cmljIGRhdGEgZnJvbSB0aGlzIGhlYXJ0YmVhdCAqL1xuICAgICAgaWdub3JlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBuZXcgcmVxdWVzdHMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19mYWlsZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB3ZXJlIHJldHJpZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfcmV0cmllZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJldHJpZXMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmV0cmllczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gd2FzIHJlZnJlc2hlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXM/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiByZWZyZXNoIGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXNfZmFpbGVkPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGUgcHJveHkgc2VuZGluZyB0aGUgaGVhcnQgYmVhdCByZXF1ZXN0XG4gICAgICAgKlxuICAgICAgICogVE9ETzogTWFrZSBub24tb3B0aW9uYWwgb25jZSB3ZSBkbyBub3Qgc3VwcG9ydCBwcm94aWVzIHdpdGhvdXQgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgICAgICovXG4gICAgICBwcm94eV92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGFsbCB0aGUgcmVsZXZhbnQgaW5mbyAoaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGJvZHkpIGFib3V0IHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBNRkEuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgcmVzdW1lZCAoYWZ0ZXIgb2J0YWluaW5nIG5lY2Vzc2FyeSBNRkEgYXBwcm92YWxzKVxuICAgICAqIGl0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgb3JpZ2luYWxseSB3YXMuXG4gICAgICovXG4gICAgSHR0cFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZXF1ZXN0IGJvZHkgKi9cbiAgICAgIGJvZHk/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCAoaW5jbHVkaW5nIGhvc3Qgb3Igbm90PykgKi9cbiAgICAgIHBhdGg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT0lEQyBhdWRpZW5jZTsgc2V0IG9ubHkgaWYgdGhlIHByb29mIHdhcyBvYnRhaW5lZCBieSB1c2luZyBPSURDIHRva2VuLlxuICAgICAgICpcbiAgICAgICAqIEluIG90aGVyIHdvcmRzLCBwcmVzZW5jZSBvZiB0aGlzIGZpZWxkIHRlc3RpZmllcyB0aGF0IGF1dGhvcml6YXRpb24gd2FzIG9idGFpbmVkIHZpYSBPSURDLlxuICAgICAgICovXG4gICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzZXQgb2YgZW5jcnlwdGVkIGtleXMgdG8gYmUgaW1wb3J0ZWQgKi9cbiAgICAgIGtleV9tYXRlcmlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWxcIl1bXTtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQsIFNFQzEtZW5jb2RlZCBQMzg0IHB1YmxpYyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIGtleWluZyBtYXRlcmlhbCB0byBiZSBpbXBvcnRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICovXG4gICAgICBpa21fZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBzYWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBJbnRlcm5hbEVycm9yQ29kZTpcbiAgICAgIHwgXCJTeXN0ZW1UaW1lRXJyb3JcIlxuICAgICAgfCBcIlJlcXdlc3RFcnJvclwiXG4gICAgICB8IFwiRGJRdWVyeUVycm9yXCJcbiAgICAgIHwgXCJEYkdldEVycm9yXCJcbiAgICAgIHwgXCJEYkRlbGV0ZUVycm9yXCJcbiAgICAgIHwgXCJEYlB1dEVycm9yXCJcbiAgICAgIHwgXCJEYlVwZGF0ZUVycm9yXCJcbiAgICAgIHwgXCJTZXJkZUVycm9yXCJcbiAgICAgIHwgXCJUZXN0QW5kU2V0RXJyb3JcIlxuICAgICAgfCBcIkRiR2V0SXRlbXNFcnJvclwiXG4gICAgICB8IFwiRGJXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJDdWJpc3RTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3dQdXRNZXRyaWNEYXRhRXJyb3JcIlxuICAgICAgfCBcIkttc0dlbmVyYXRlUmFuZG9tRXJyb3JcIlxuICAgICAgfCBcIk1hbGZvcm1lZFRvdHBCeXRlc1wiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21Ob1Jlc3BvbnNlRXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUtleUVycm9yXCJcbiAgICAgIHwgXCJQYXJzZURlcml2YXRpb25QYXRoRXJyb3JcIlxuICAgICAgfCBcIlNwbGl0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUltcG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvRGVsZXRlVXNlckVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvTGlzdFVzZXJzRXJyb3JcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyRXJyb3JcIlxuICAgICAgfCBcIk1pc3NpbmdVc2VyRW1haWxcIlxuICAgICAgfCBcIkNvZ25pdG9SZXNlbmRVc2VySW52aXRhdGlvblwiXG4gICAgICB8IFwiQ29nbml0b1NldFVzZXJQYXNzd29yZEVycm9yXCJcbiAgICAgIHwgXCJHZW5lcmljSW50ZXJuYWxFcnJvclwiXG4gICAgICB8IFwiT2lkY0F1dGhXaXRob3V0T3JnXCJcbiAgICAgIHwgXCJNaXNzaW5nS2V5TWV0YWRhdGFcIlxuICAgICAgfCBcIkttc0tleVdpdGhvdXRJZFwiXG4gICAgICB8IFwiS21zRW5hYmxlS2V5RXJyb3JcIlxuICAgICAgfCBcIkttc0Rpc2FibGVLZXlFcnJvclwiXG4gICAgICB8IFwiU2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkRlc2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIlJlRW5jcnlwdFVzZXJFeHBvcnRcIlxuICAgICAgfCBcIlMzVXBsb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzRG93bmxvYWRFcnJvclwiXG4gICAgICB8IFwiTWFuYWdlZFN0YXRlTWlzc2luZ1wiXG4gICAgICB8IFwiSW50ZXJuYWxIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkSW50ZXJuYWxIZWFkZXJWYWx1ZVwiXG4gICAgICB8IFwiUmVxdWVzdExvY2FsU3RhdGVBbHJlYWR5U2V0XCJcbiAgICAgIHwgXCJPaWRjT3JnTWlzbWF0Y2hcIlxuICAgICAgfCBcIk9ycGhhbmVkUm9sZUtleUlkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySndrRW5kcG9pbnRVbmF2YWlsYWJsZVwiXG4gICAgICB8IFwiT2lkY0lzc3VlckludmFsaWRKd2tcIlxuICAgICAgfCBcIkludmFsaWRQa0Zvck1hdGVyaWFsSWRcIlxuICAgICAgfCBcIlVuY2hlY2tlZE9yZ1wiXG4gICAgICB8IFwiQXZhU2lnbkNyZWRzTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnblNpZ25hdHVyZU1pc3NpbmdcIlxuICAgICAgfCBcIkV4cGVjdGVkUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRUaGlyZFBhcnR5SWRlbnRpdHlcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyXCI7XG4gICAgSW52aXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBhY21lLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZnVsbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZSBXb25kZXJsYW5kXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2tpcCBzZW5kaW5nIGFuIGludml0YXRpb24gZW1haWwgdG8gdGhpcyB1c2VyIGlmIHRydWUuXG4gICAgICAgKlxuICAgICAgICogTk9URTogdGhpcyBmaWVsZCBpcyBmb3IgaW50ZXJuYWwgdGVzdGluZyB1c2UgT05MWS4gSWYgeW91IGRvIG5vdFxuICAgICAgICogc2VuZCBhbiBpbnZpdGF0aW9uIGVtYWlsLCB0aGUgdXNlciB3aWxsIG5ldmVyIGJlIGFibGUgdG8gbG9nIGluLlxuICAgICAgICogQGV4YW1wbGUgZmFsc2VcbiAgICAgICAqL1xuICAgICAgc2tpcF9lbWFpbDogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSb2xlIElEXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgKiB0aGUgdHlwZSBvZiBrZXkgKHN1Y2ggYXMgYSBwdWJsaWMga2V5IGZvciBCTFMgb3IgYW4gZXRoZXJldW0gYWRkcmVzcyBmb3IgU2VjcClcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBrZXksIHN1Y2ggYXMgYSBwdWJsaWMga2V5IG9yIGFuIGV0aGVyZXVtIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBtYXRlcmlhbF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAqIC0gU2VjcDI1NmsxIGtleXMgdXNlIDY1LWJ5dGUgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICogLSBFZDI1NTE5IGtleXMgdXNlIHRoZSBjYW5vbmljYWwgMzItYnl0ZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gUkZDIDgwMzIuXG4gICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAqIEBleGFtcGxlIEV0aDJWYWxpZGF0b3IoMSlcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgS2V5VHlwZTpcbiAgICAgIHwgXCJTZWNwRXRoQWRkclwiXG4gICAgICB8IFwiU2VjcEJ0Y1wiXG4gICAgICB8IFwiU2VjcEJ0Y1Rlc3RcIlxuICAgICAgfCBcIlNlY3BBdmFBZGRyXCJcbiAgICAgIHwgXCJTZWNwQXZhVGVzdEFkZHJcIlxuICAgICAgfCBcIkJsc1B1YlwiXG4gICAgICB8IFwiQmxzSW5hY3RpdmVcIlxuICAgICAgfCBcIkVkMjU1MTlTb2xhbmFBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5U3VpQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUFwdG9zQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUNhcmRhbm9BZGRyVmtcIlxuICAgICAgfCBcIkVkMjU1MTlTdGVsbGFyQWRkclwiXG4gICAgICB8IFwiTW5lbW9uaWNcIlxuICAgICAgfCBcIlN0YXJrXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGVuY3J5cHRlZCBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBXZSBzZXJpYWxpemUgdGhpcyBpbnRvIGEgYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm4gdG8gdGhlIHVzZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgY2FuIHBhc3MgdGhpcyBiYWNrIHRvIHVzIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBMYXN0RXZhbEtleTogc3RyaW5nO1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgTGlzdFRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHJlY2VpcHQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlY2VpcHRcIl0gfCBudWxsO1xuICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgfTtcbiAgICBNZmFUeXBlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJDdWJlU2lnbmVyXCIsXG4gICAgICAgIFwiVG90cFwiLFxuICAgICAgICBcIkZpZG9cIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW5zd2VyIGEgRklETyBjaGFsbGVuZ2Ugd2l0aCBhIHNwZWNpZmljIEZJRE8ga2V5ICovXG4gICAgICAgICAgRmlkb0tleToge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBGSURPIGtleSB0aGF0IG11c3QgYmUgdXNlIHRvIGFwcHJvdmUgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgICAqIEBleGFtcGxlIEZpZG9LZXkjRXREZC4uLlpaYzg9XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBNZmFWb3RlOiBcImFwcHJvdmVcIiB8IFwicmVqZWN0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAncHJhdGVyJywgJ2dvZXJsaScpXG4gICAgICogQGV4YW1wbGUgZ29lcmxpXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBOZXR3b3JrOiBcIm1haW5uZXRcIiB8IFwicHJhdGVyXCIgfCBcImdvZXJsaVwiIHwgXCJob2xlc2t5XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIHNlc3Npb25faW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAqIHNob3VsZCBpbmNsdWRlIHRoaXMgdmFsdWUgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXJcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE5vdEZvdW5kRXJyb3JDb2RlOlxuICAgICAgfCBcIlVyaVNlZ21lbnRNaXNzaW5nXCJcbiAgICAgIHwgXCJVcmlTZWdtZW50SW52YWxpZFwiXG4gICAgICB8IFwiVG90cE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJUb3RwQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIGdsb2JhbGx5IHVuaXF1ZSBPSURDLWF1dGhvcml6ZWQgdXNlciBieSBleHByZXNzaW5nIHRoZSBmdWxsIFwicGF0aFwiIHRvIGEgdXNlci4gVGhhdCBpczpcbiAgICAgKlxuICAgICAqIChpc3MpICAgICAgIChzdWIpXG4gICAgICogSXNzdWVyIC0+IFN1YnJlc291cmNlXG4gICAgICovXG4gICAgT0lEQ0lkZW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9vdC1sZXZlbCBpc3N1ZXIgd2hvIGFkbWluaXN0cmF0ZXMgdGhpcyB1c2VyLiBGcm9tZSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICBPaWRjTG9naW5SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIHNlc3Npb24gKi9cbiAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJzaWduOipcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzY29wZXM6IHN0cmluZ1tdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT3JnSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQ6IHRoaXMgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQuICovXG4gICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgdW5pdmVyc2FsbHkgdW5pcXVlIGtleS13cmFwcGluZy1rZXkgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAqL1xuICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlL3RpbWUgKGluIFVUQykgd2hlbiBsYXN0ICd1bnN0YWtlJyB3YXMgcGVyZm9ybWVkLiBVbml4IGVwb2NoIGlmIG5vbmUuXG4gICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgJ3Vuc3Rha2UnIGNhbGxzIGhhcHBlbmVkIG9uIHRoZSBkYXkgd2hlbiBgbGFzdF91bnN0YWtlYCB3YXMgcGVyZm9ybWVkLlxuICAgICAgICovXG4gICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9yZy13aWRlIHBvbGljaWVzIHRoYXQgYXJlIGNoZWNrZWQgYmVmb3JlIGEga2V5IGlzIHVzZWQgZm9yIHNpZ25pbmdcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCBUT1RQIGZhaWx1cmUgbGltaXQsIGkuZS4sIHRoZSBudW1iZXJcbiAgICAgICAqIG9mIHRpbWVzIGEgdXNlciBjYW4gcHJvdmlkZSBhbiBpbmNvcnJlY3QgVE9UUCBjb2RlIGJlZm9yZSBiZWluZyByYXRlIGxpbWl0ZWQuXG4gICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgbWluaW11bVxuICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICogaXQgbWF5IGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2VcbiAgICAgICAqIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvY2tldCBxdWVyeSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBwYWdlIGZyb20gd2hpY2ggdG8gc3RhcnQgYSBwYWdpbmF0ZWQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBNVVNUIGJlIG5hbWVkIGA8cGFnZT5gIGluIHJvY2tldCB1cmwgc3BlYyBzbyB0aGF0ICdzZXJkZShyZW5hbWUgPSBcInBhZ2UuKlwiKScgYmVsb3cgY29udGludWVzIHRvIHdvcmtcbiAgICAgKi9cbiAgICBQYWdlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCB1c2VycyBpbiBhIHJvbGUgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlOiB7XG4gICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgUG9saWN5RXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeERlcG9zaXRFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUG9saWN5RXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJFdm1UeFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4U2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIlBvbGljeURpc2p1bmN0aW9uRXJyb3JcIlxuICAgICAgfCBcIlBvbGljeU5lZ2F0aW9uRXJyb3JcIlxuICAgICAgfCBcIkV0aDJFeGNlZWRlZE1heFVuc3Rha2VcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50VW5zdGFraW5nXCJcbiAgICAgIHwgXCJOb3RJbklwdjRBbGxvd2xpc3RcIlxuICAgICAgfCBcIk5vdEluT3JpZ2luQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU291cmNlSXBcIlxuICAgICAgfCBcIlJhd1NpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJFaXA3MTJTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY1NvdXJjZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk5vT2lkY0F1dGhTb3VyY2VzRGVmaW5lZFwiXG4gICAgICB8IFwiQWRkS2V5VG9Sb2xlRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiS2V5c0FscmVhZHlJblJvbGVcIlxuICAgICAgfCBcIktleUluTXVsdGlwbGVSb2xlc1wiXG4gICAgICB8IFwiS2V5QWNjZXNzRXJyb3JcIlxuICAgICAgfCBcIkVpcDE5MVNpZ25pbmdOb3RBbGxvd2VkXCI7XG4gICAgUHJlY29uZGl0aW9uRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHJlY29uZGl0aW9uRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJFdGgyUHJvcG9zZXJTbG90VG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uVGFyZ2V0RXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFRvTm9uR2VuZXJhdGVkS2V5XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0VW5rbm93bkluaXRpYWxEZXBvc2l0XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0V2l0aGRyYXdhbEFkZHJlc3NNaXNtYXRjaFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIHdpcmUtZW5jb2RhYmxlIGZvcm0gb2YgdGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgaW50ZXJmYWNlXG4gICAgICogQ2xpZW50cyBtYXkgbmVlZCB0byBtYW51YWxseSBlbmNvZGUgaW50byB0aGlzIGZvcm1hdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZSBpbmhlcml0cyBmcm9tIENyZWRlbnRpYWxcbiAgICAgKiBbQ1JFREVOVElBTC1NQU5BR0VNRU5ULTFdLCBhbmQgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcmV0dXJuZWQgdG9cbiAgICAgKiB0aGUgY2FsbGVyIHdoZW4gYSBuZXcgY3JlZGVudGlhbCBpcyBjcmVhdGVkLCBvciBhIG5ldyBhc3NlcnRpb24gaXNcbiAgICAgKiByZXF1ZXN0ZWQuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtcGtjcmVkZW50aWFsXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBpbnRlcm5hbCBzbG90IGNvbnRhaW5zIHRoZSByZXN1bHRzIG9mIHByb2Nlc3NpbmcgY2xpZW50IGV4dGVuc2lvbnNcbiAgICAgICAqIHJlcXVlc3RlZCBieSB0aGUgUmVseWluZyBQYXJ0eSB1cG9uIHRoZSBSZWx5aW5nIFBhcnR5J3MgaW52b2NhdGlvbiBvZlxuICAgICAgICogZWl0aGVyIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoKSBvciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWNsaWVudGV4dGVuc2lvbnNyZXN1bHRzLXNsb3RcbiAgICAgICAqXG4gICAgICAgKiBJTVBMRU1FTlRBVElPTiBOT1RFOiBUaGUgdHlwZSBmb3IgdGhpcyBmaWVsZCBjb21lcyBmcm9tIHRoZSB0eXBlIG9mIGdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSB3aGljaCBhcyB0aGUgZm9sbG93aW5nIGRvYzpcbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wZXJhdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiBbW2NsaWVudEV4dGVuc2lvbnNSZXN1bHRzXV0sIHdoaWNoIGlzIGEgbWFwIGNvbnRhaW5pbmcgZXh0ZW5zaW9uIGlkZW50aWZpZXIg4oaSIGNsaWVudCBleHRlbnNpb24gb3V0cHV0IGVudHJpZXMgcHJvZHVjZWQgYnkgdGhlIGV4dGVuc2lvbuKAmXMgY2xpZW50IGV4dGVuc2lvbiBwcm9jZXNzaW5nLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3JlZi1mb3ItZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtZ2V0Y2xpZW50ZXh0ZW5zaW9ucmVzdWx0c1xuICAgICAgICovXG4gICAgICBjbGllbnRFeHRlbnNpb25SZXN1bHRzPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCwgY2hvc2VuIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNyZWRlbnRpYWwgSUQgaXMgdXNlZCB0byBsb29rIHVwIGNyZWRlbnRpYWxzIGZvciB1c2UsXG4gICAgICAgKiBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoIGhpZ2ggcHJvYmFiaWxpdHlcbiAgICAgICAqIGFjcm9zcyBhbGwgY3JlZGVudGlhbHMgb2YgdGhlIHNhbWUgdHlwZSwgYWNyb3NzIGFsbCBhdXRoZW50aWNhdG9ycy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtaWRlbnRpZmllci1zbG90XG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIHJlc3BvbmQgdG8gUmVseWluZyBQYXJ0eSByZXF1ZXN0cyBieSByZXR1cm5pbmcgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgQXV0aGVudGljYXRvclJlc3BvbnNlIGludGVyZmFjZSAqL1xuICAgICAgcmVzcG9uc2U6XG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZVwiXVxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiB7XG4gICAgICBhdHRlc3RhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZVwiXTtcbiAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhIGNoYWxsZW5nZSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAgICogbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFs4oCZcyBhdHRlc3RhdGlvbiBvYmplY3QuIFNlZSB0aGUgwqfigK8xMy40LjNcbiAgICAgICAqIENyeXB0b2dyYXBoaWMgQ2hhbGxlbmdlcyBzZWN1cml0eSBjb25zaWRlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IFJlbHlpbmcgUGFydGllcyB0aGF0IHdpc2ggdG8gbGltaXRcbiAgICAgICAqIHRoZSBjcmVhdGlvbiBvZiBtdWx0aXBsZSBjcmVkZW50aWFscyBmb3IgdGhlIHNhbWUgYWNjb3VudCBvbiBhIHNpbmdsZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNsaWVudCBpcyByZXF1ZXN0ZWQgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuZXdcbiAgICAgICAqIGNyZWRlbnRpYWwgd291bGQgYmUgY3JlYXRlZCBvbiBhbiBhdXRoZW50aWNhdG9yIHRoYXQgYWxzbyBjb250YWlucyBvbmVcbiAgICAgICAqIG9mIHRoZSBjcmVkZW50aWFscyBlbnVtZXJhdGVkIGluIHRoaXMgcGFyYW1ldGVyLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leGNsdWRlY3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHJlcXVlc3RpbmcgYWRkaXRpb25hbFxuICAgICAgICogcHJvY2Vzc2luZyBieSB0aGUgY2xpZW50IGFuZCBhdXRoZW50aWNhdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBtYXlcbiAgICAgICAqIHJlcXVlc3QgdGhhdCBvbmx5IGF1dGhlbnRpY2F0b3JzIHdpdGggY2VydGFpbiBjYXBhYmlsaXRpZXMgYmUgdXNlZCB0b1xuICAgICAgICogY3JlYXRlIHRoZSBjcmVkZW50aWFsLCBvciB0aGF0IHBhcnRpY3VsYXIgaW5mb3JtYXRpb24gYmUgcmV0dXJuZWQgaW4gdGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QuIFNvbWUgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiDCp+KArzkgV2ViQXV0aG5cbiAgICAgICAqIEV4dGVuc2lvbnM7IGNvbnN1bHQgdGhlIElBTkEgXCJXZWJBdXRobiBFeHRlbnNpb24gSWRlbnRpZmllcnNcIiByZWdpc3RyeVxuICAgICAgICogW0lBTkEtV2ViQXV0aG4tUmVnaXN0cmllc10gZXN0YWJsaXNoZWQgYnkgW1JGQzg4MDldIGZvciBhbiB1cC10by1kYXRlXG4gICAgICAgKiBsaXN0IG9mIHJlZ2lzdGVyZWQgV2ViQXV0aG4gRXh0ZW5zaW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXh0ZW5zaW9uc1xuICAgICAgICovXG4gICAgICBleHRlbnNpb25zPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXNpcmVkIHByb3BlcnRpZXMgb2YgdGhlXG4gICAgICAgKiBjcmVkZW50aWFsIHRvIGJlIGNyZWF0ZWQuIFRoZSBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZyb20gbW9zdCBwcmVmZXJyZWQgdG9cbiAgICAgICAqIGxlYXN0IHByZWZlcnJlZC4gVGhlIGNsaWVudCBtYWtlcyBhIGJlc3QtZWZmb3J0IHRvIGNyZWF0ZSB0aGUgbW9zdFxuICAgICAgICogcHJlZmVycmVkIGNyZWRlbnRpYWwgdGhhdCBpdCBjYW4uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXB1YmtleWNyZWRwYXJhbXNcbiAgICAgICAqL1xuICAgICAgcHViS2V5Q3JlZFBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyc1wiXVtdO1xuICAgICAgcnA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXIgaXNcbiAgICAgICAqIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoaXMgaXMgdHJlYXRlZCBhcyBhIGhpbnQsIGFuZFxuICAgICAgICogTUFZIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNsaWVudC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtdGltZW91dFxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIHVzZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHlcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNwZWNpZmllZCBieSBhIGNhbGxlciB3aGVuXG4gICAgICogcmVmZXJyaW5nIHRvIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGFzIGFuIGlucHV0IHBhcmFtZXRlciB0byB0aGUgY3JlYXRlKClcbiAgICAgKiBvciBnZXQoKSBtZXRob2RzLiBJdCBtaXJyb3JzIHRoZSBmaWVsZHMgb2YgdGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgb2JqZWN0XG4gICAgICogcmV0dXJuZWQgYnkgdGhlIGxhdHRlciBtZXRob2RzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1kZXNjcmlwdG9yXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIHRoZSBjcmVkZW50aWFsIElEIG9mIHRoZSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsZGVzY3JpcHRvci1pZFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBoaW50IGFzIHRvIGhvdyB0aGUgY2xpZW50IG1pZ2h0XG4gICAgICAgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBtYW5hZ2luZyBhdXRoZW50aWNhdG9yIG9mIHRoZSBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgICAqIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLiBUaGUgdmFsdWVzIFNIT1VMRCBiZSBtZW1iZXJzIG9mXG4gICAgICAgKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IGJ1dCBjbGllbnQgcGxhdGZvcm1zIE1VU1QgaWdub3JlIHVua25vd24gdmFsdWVzLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBnZXRUcmFuc3BvcnRzKCkgb3BlcmF0aW9uIGNhbiBwcm92aWRlIHN1aXRhYmxlIHZhbHVlcyBmb3IgdGhpc1xuICAgICAgICogbWVtYmVyLiBXaGVuIHJlZ2lzdGVyaW5nIGEgbmV3IGNyZWRlbnRpYWwsIHRoZSBSZWx5aW5nIFBhcnR5IFNIT1VMRFxuICAgICAgICogc3RvcmUgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gZ2V0VHJhbnNwb3J0cygpLiBXaGVuIGNyZWF0aW5nIGFcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGZvciB0aGF0IGNyZWRlbnRpYWwsIHRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcmV0cmlldmUgdGhhdCBzdG9yZWQgdmFsdWUgYW5kIHNldCBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlXG4gICAgICAgKiB0cmFuc3BvcnRzIG1lbWJlci5cbiAgICAgICAqL1xuICAgICAgdHJhbnNwb3J0cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvclRyYW5zcG9ydFwiXVtdIHwgbnVsbDtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWwgcGFyYW1ldGVycyB3aGVuIGNyZWF0aW5nIGEgbmV3XG4gICAgICogY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtcGFyYW1zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyB0aGUgY3J5cHRvZ3JhcGhpYyBzaWduYXR1cmUgYWxnb3JpdGhtIHdpdGggd2hpY2hcbiAgICAgICAqIHRoZSBuZXdseSBnZW5lcmF0ZWQgY3JlZGVudGlhbCB3aWxsIGJlIHVzZWQsIGFuZCB0aHVzIGFsc28gdGhlIHR5cGUgb2ZcbiAgICAgICAqIGFzeW1tZXRyaWMga2V5IHBhaXIgdG8gYmUgZ2VuZXJhdGVkLCBlLmcuLCBSU0Egb3IgRWxsaXB0aWMgQ3VydmUuXG4gICAgICAgKi9cbiAgICAgIGFsZzogbnVtYmVyO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgZGljdGlvbmFyeSBzdXBwbGllcyBnZXQoKSB3aXRoIHRoZVxuICAgICAqIGRhdGEgaXQgbmVlZHMgdG8gZ2VuZXJhdGUgYW4gYXNzZXJ0aW9uLiBJdHMgY2hhbGxlbmdlIG1lbWJlciBNVVNUIGJlXG4gICAgICogcHJlc2VudCwgd2hpbGUgaXRzIG90aGVyIG1lbWJlcnMgYXJlIE9QVElPTkFMLlxuICAgICAqXG4gICAgICogVGhpcyBzdHJ1Y3QgaXMgYWxzbyB1c2VkIGFzIHBhcnQgb2YgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZWR1cmUgZm9yIGFzc2VydGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgbGlzdCBvZiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclxuICAgICAgICogb2JqZWN0cyByZXByZXNlbnRpbmcgcHVibGljIGtleSBjcmVkZW50aWFscyBhY2NlcHRhYmxlIHRvIHRoZSBjYWxsZXIsIGluXG4gICAgICAgKiBkZXNjZW5kaW5nIG9yZGVyIG9mIHRoZSBjYWxsZXLigJlzIHByZWZlcmVuY2UgKHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0XG4gICAgICAgKiBpcyB0aGUgbW9zdCBwcmVmZXJyZWQgY3JlZGVudGlhbCwgYW5kIHNvIG9uIGRvd24gdGhlIGxpc3QpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWFsbG93Y3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgYWxsb3dDcmVkZW50aWFscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHJlcHJlc2VudHMgYSBjaGFsbGVuZ2UgdGhhdCB0aGUgc2VsZWN0ZWQgYXV0aGVudGljYXRvclxuICAgICAgICogc2lnbnMsIGFsb25nIHdpdGggb3RoZXIgZGF0YSwgd2hlbiBwcm9kdWNpbmcgYW4gYXV0aGVudGljYXRpb25cbiAgICAgICAqIGFzc2VydGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICBleHRlbnNpb25zPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIHNwZWNpZmllcyB0aGUgcmVseWluZyBwYXJ0eSBpZGVudGlmaWVyIGNsYWltZWQgYnlcbiAgICAgICAqIHRoZSBjYWxsZXIuIElmIG9taXR0ZWQsIGl0cyB2YWx1ZSB3aWxsIGJlIHRoZSBDcmVkZW50aWFsc0NvbnRhaW5lclxuICAgICAgICogb2JqZWN04oCZcyByZWxldmFudCBzZXR0aW5ncyBvYmplY3QncyBvcmlnaW4ncyBlZmZlY3RpdmUgZG9tYWluLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXJwaWRcbiAgICAgICAqL1xuICAgICAgcnBJZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlclxuICAgICAgICogaXMgd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhlIHZhbHVlIGlzIHRyZWF0ZWQgYXMgYVxuICAgICAgICogaGludCwgYW5kIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtdGltZW91dFxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIFJlbHlpbmcgUGFydHkgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1ycC1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIFJlbHlpbmcgUGFydHkgZW50aXR5LCB3aGljaCBzZXRzIHRoZSBSUCBJRC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxycGVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXBhbGF0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LiBJdHMgZnVuY3Rpb24gZGVwZW5kcyBvbiB3aGF0IHRoZVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbEVudGl0eSByZXByZXNlbnRzOiBXaGVuIGluaGVyaXRlZCBieVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlIGlkZW50aWZpZXIgZm9yIHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS4gRm9yIGV4YW1wbGUsIFwiQUNNRVxuICAgICAgICogQ29ycG9yYXRpb25cIiwgXCJXb25kZXJmdWwgV2lkZ2V0cywgSW5jLlwiIG9yIFwi0J7QkNCeINCf0YDQuNC80LXRgNGC0LXRhVwiLlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIG5hbWUncyB2YWx1ZSwgb3IgZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlXG4gICAgICAgKiB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc3RyaW5nIE1BWSBjb250YWluIGxhbmd1YWdlIGFuZCBkaXJlY3Rpb24gbWV0YWRhdGEuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIGNvbnNpZGVyIHByb3ZpZGluZyB0aGlzIGluZm9ybWF0aW9uLiBTZWUgwqfigK82LjQuMiBMYW5ndWFnZSBhbmRcbiAgICAgICAqIERpcmVjdGlvbiBFbmNvZGluZyBhYm91dCBob3cgdGhpcyBtZXRhZGF0YSBpcyBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIHRoZSB2YWxpZCBjcmVkZW50aWFsIHR5cGVzLiBJdCBpcyBhbiBleHRlbnNpb25cbiAgICAgKiBwb2ludDsgdmFsdWVzIGNhbiBiZSBhZGRlZCB0byBpdCBpbiB0aGUgZnV0dXJlLCBhcyBtb3JlIGNyZWRlbnRpYWwgdHlwZXMgYXJlXG4gICAgICogZGVmaW5lZC4gVGhlIHZhbHVlcyBvZiB0aGlzIGVudW1lcmF0aW9uIGFyZSB1c2VkIGZvciB2ZXJzaW9uaW5nIHRoZVxuICAgICAqIEF1dGhlbnRpY2F0aW9uIEFzc2VydGlvbiBhbmQgYXR0ZXN0YXRpb24gc3RydWN0dXJlcyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2ZcbiAgICAgKiB0aGUgYXV0aGVudGljYXRvci4gIEN1cnJlbnRseSBvbmUgY3JlZGVudGlhbCB0eXBlIGlzIGRlZmluZWQsIG5hbWVseVxuICAgICAqIFwicHVibGljLWtleVwiLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcHVibGlja2V5Y3JlZGVudGlhbHR5cGVcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOiBcInB1YmxpYy1rZXlcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIHVzZXIgYWNjb3VudCBhdHRyaWJ1dGVzIHdoZW4gY3JlYXRpbmcgYSBuZXcgY3JlZGVudGlhbC5cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIHVzZXIgYWNjb3VudCwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS5cbiAgICAgICAqIEZvciBleGFtcGxlLCBcIkFsZXggTcO8bGxlclwiIG9yIFwi55Sw5Lit5YCrXCIuIFRoZSBSZWx5aW5nIFBhcnR5IFNIT1VMRCBsZXQgdGhlXG4gICAgICAgKiB1c2VyIGNob29zZSB0aGlzLCBhbmQgU0hPVUxEIE5PVCByZXN0cmljdCB0aGUgY2hvaWNlIG1vcmUgdGhhblxuICAgICAgICogbmVjZXNzYXJ5LlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvXG4gICAgICAgKiB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMi4zIG9mXG4gICAgICAgKiBbUkZDODI2Nl0gZm9yIHRoZSBOaWNrbmFtZSBQcm9maWxlIG9mIHRoZSBQUkVDSVMgRnJlZWZvcm1DbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCBvbiBkaXNwbGF5TmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlciBvciBpbmNsdWRpbmcgdGhlIHZhbHVlIGFzIGEgcGFyYW1ldGVyIG9mIHRoZVxuICAgICAgICogYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBXaGVuIGNsaWVudHMsIGNsaWVudCBwbGF0Zm9ybXMsIG9yIGF1dGhlbnRpY2F0b3JzIGRpc3BsYXkgYVxuICAgICAgICogZGlzcGxheU5hbWUncyB2YWx1ZSwgdGhleSBzaG91bGQgYWx3YXlzIHVzZSBVSSBlbGVtZW50cyB0byBwcm92aWRlIGFcbiAgICAgICAqIGNsZWFyIGJvdW5kYXJ5IGFyb3VuZCB0aGUgZGlzcGxheWVkIHZhbHVlLCBhbmQgbm90IGFsbG93IG92ZXJmbG93IGludG9cbiAgICAgICAqIG90aGVyIGVsZW1lbnRzIFtjc3Mtb3ZlcmZsb3ctM10uXG4gICAgICAgKlxuICAgICAgICogQXV0aGVudGljYXRvcnMgTVVTVCBhY2NlcHQgYW5kIHN0b3JlIGEgNjQtYnl0ZSBtaW5pbXVtIGxlbmd0aCBmb3IgYVxuICAgICAgICogZGlzcGxheU5hbWUgbWVtYmVy4oCZcyB2YWx1ZS4gQXV0aGVudGljYXRvcnMgTUFZIHRydW5jYXRlIGEgZGlzcGxheU5hbWVcbiAgICAgICAqIG1lbWJlcuKAmXMgdmFsdWUgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiA2NCBieXRlcy4gU2VlIMKn4oCvNi40LjEgU3RyaW5nXG4gICAgICAgKiBUcnVuY2F0aW9uIGFib3V0IHRydW5jYXRpb24gYW5kIG90aGVyIGNvbnNpZGVyYXRpb25zLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktZGlzcGxheW5hbWVcbiAgICAgICAqL1xuICAgICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIGhhbmRsZSBvZiB0aGUgdXNlciBhY2NvdW50IGVudGl0eS4gQSB1c2VyIGhhbmRsZSBpcyBhbiBvcGFxdWVcbiAgICAgICAqIGJ5dGUgc2VxdWVuY2Ugd2l0aCBhIG1heGltdW0gc2l6ZSBvZiA2NCBieXRlcywgYW5kIGlzIG5vdCBtZWFudCB0byBiZVxuICAgICAgICogZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRvIGVuc3VyZSBzZWN1cmUgb3BlcmF0aW9uLCBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnNcbiAgICAgICAqIE1VU1QgYmUgbWFkZSBvbiB0aGUgYmFzaXMgb2YgdGhpcyBpZCBtZW1iZXIsIG5vdCB0aGUgZGlzcGxheU5hbWUgbm9yXG4gICAgICAgKiBuYW1lIG1lbWJlcnMuIFNlZSBTZWN0aW9uIDYuMSBvZiBbUkZDODI2Nl0uXG4gICAgICAgKlxuICAgICAgICogVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGNvbnRhaW4gcGVyc29uYWxseSBpZGVudGlmeWluZyBpbmZvcm1hdGlvblxuICAgICAgICogYWJvdXQgdGhlIHVzZXIsIHN1Y2ggYXMgYSB1c2VybmFtZSBvciBlLW1haWwgYWRkcmVzczsgc2VlIMKn4oCvMTQuNi4xIFVzZXJcbiAgICAgICAqIEhhbmRsZSBDb250ZW50cyBmb3IgZGV0YWlscy4gVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGJlIGVtcHR5LCB0aG91Z2hcbiAgICAgICAqIGl0IE1BWSBiZSBudWxsLlxuICAgICAgICpcbiAgICAgICAqIE5vdGU6IHRoZSB1c2VyIGhhbmRsZSBvdWdodCBub3QgYmUgYSBjb25zdGFudCB2YWx1ZSBhY3Jvc3MgZGlmZmVyZW50XG4gICAgICAgKiBhY2NvdW50cywgZXZlbiBmb3Igbm9uLWRpc2NvdmVyYWJsZSBjcmVkZW50aWFscywgYmVjYXVzZSBzb21lXG4gICAgICAgKiBhdXRoZW50aWNhdG9ycyBhbHdheXMgY3JlYXRlIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gVGh1cyBhIGNvbnN0YW50XG4gICAgICAgKiB1c2VyIGhhbmRsZSB3b3VsZCBwcmV2ZW50IGEgdXNlciBmcm9tIHVzaW5nIHN1Y2ggYW4gYXV0aGVudGljYXRvciB3aXRoXG4gICAgICAgKiBtb3JlIHRoYW4gb25lIGFjY291bnQgYXQgdGhlIFJlbHlpbmcgUGFydHkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBpbmhlcml0ZWQgYnkgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHksIGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlXG4gICAgICAgKiBpZGVudGlmaWVyIGZvciBhIHVzZXIgYWNjb3VudC4gSXQgaXMgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheSwgaS5lLixcbiAgICAgICAqIGFpZGluZyB0aGUgdXNlciBpbiBkZXRlcm1pbmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIgYWNjb3VudHMgd2l0aFxuICAgICAgICogc2ltaWxhciBkaXNwbGF5TmFtZXMuIEZvciBleGFtcGxlLCBcImFsZXhtXCIsIFwiYWxleC5tdWVsbGVyQGV4YW1wbGUuY29tXCJcbiAgICAgICAqIG9yIFwiKzE0MjU1NTUxMjM0XCIuXG4gICAgICAgKlxuICAgICAgICogVGhlIFJlbHlpbmcgUGFydHkgTUFZIGxldCB0aGUgdXNlciBjaG9vc2UgdGhpcyB2YWx1ZS4gVGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdXG4gICAgICAgKiBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdIGZvciB0aGUgVXNlcm5hbWVDYXNlUHJlc2VydmVkIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBJZGVudGlmaWVyQ2xhc3MgW1JGQzgyNjRdLCBvbiBuYW1lJ3MgdmFsdWUgcHJpb3IgdG8gZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGUgYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgUmF0Y2hldENvbmZpZzoge1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfYXV0aF9saWZldGltZSAqL1xuICAgICAgYXV0aF9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X2dyYWNlX2xpZmV0aW1lICovXG4gICAgICBncmFjZV9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X3JlZnJlc2hfbGlmZXRpbWUgKi9cbiAgICAgIHJlZnJlc2hfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9zZXNzaW9uX2xpZmV0aW1lICovXG4gICAgICBzZXNzaW9uX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZWNlaXB0IHRoYXQgYW4gTUZBIHJlcXVlc3Qgd2FzIGFwcHJvdmVkLiAqL1xuICAgIFJlY2VpcHQ6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm1hdGlvbiBjb2RlIHRoZSB1c2VyIG5lZWRzIHRvIHByZXNlbnQgd2hlbiByZXN1bWluZyB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAgICAgICAqIEBleGFtcGxlIGJhMWQ3NWRkLWQ5OTktNGMxYi05NDRkLTI1YzI1NDQwYzhhZlxuICAgICAgICovXG4gICAgICBjb25maXJtYXRpb246IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBsb2dnZWQtaW4gdXNlciB3aG9zZSBhY3Rpb24gY3JlYXRlZCB0aGlzIGFwcHJvdmFsLiAqL1xuICAgICAgZmluYWxfYXBwcm92ZXI6IHN0cmluZztcbiAgICAgIHRpbWVzdGFtcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBSZXF1ZXN0T3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSB0aGUgUmVseWluZyBQYXJ0eSdzIHJlcXVpcmVtZW50cyBmb3JcbiAgICAgKiBjbGllbnQtc2lkZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMgKGZvcm1lcmx5IGtub3duIGFzIHJlc2lkZW50IGNyZWRlbnRpYWxzXG4gICAgICogb3IgcmVzaWRlbnQga2V5cyk6XG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1yZXNpZGVudGtleXJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSZXNpZGVudEtleVJlcXVpcmVtZW50OiBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIFJldm9rZVRva2VuUmVzcG9uc2U6IHtcbiAgICAgIHRva2VuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl0gfCBudWxsO1xuICAgIH07XG4gICAgUmV2b2tlVG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHRoYXQgd2VyZSByZXZva2VkLiAqL1xuICAgICAgcmV2b2tlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIFJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSByb2xlIGlzIGVuYWJsZWRcbiAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZCBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlICovXG4gICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3kgdGhhdCBpcyBjaGVja2VkIHdoZW5ldmVyIGEga2V5IGlzIGFjY2Vzc2VkIGZvciBzaWduaW5nIHZpYSB0aGlzIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgdXNlcnM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIER1cmF0aW9uIG1lYXN1cmVkIGluIHNlY29uZHNcbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBgRHVyYXRpb25gIGFzIGEgYHU2NGAgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcy5cbiAgICAgKi9cbiAgICBTZWNvbmRzOiBudW1iZXI7XG4gICAgU2Vzc2lvbkluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIFNpZ25lckVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZUNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWRSZXF1ZXN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkR2F0ZXdheUVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdEZvdW5kRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9yYmlkZGVuRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5hdXRob3JpemVkRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW50ZXJuYWxFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmVyRXJyb3JPd25Db2RlczogXCJVbmhhbmRsZWRFcnJvclwiIHwgXCJQcm94eVN0YXJ0RXJyb3JcIiB8IFwiRW5jbGF2ZUVycm9yXCI7XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJtZXNzYWdlX2Jhc2U2NFwiOiBcIkFRQUJBOE9LVnpMRWpzdHN0TjR4WHIzOWtMS0hUOGQ1OGVRWTFRRXM2TWVYd0VGQnJ4VEFsVUxYMXRyb0xiV3h1QVhRcWdiUW9mR2k2ejhmSmk3S0FBSWY3WU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKSzB0bjM5azI4cytYODZXNDdFdmJSUktuWUJWUThRL2wybTFFYmZUNyt2QVFJQ0FBRU1BZ0FBQUdRQUFBQUFBQUFBXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgU29sYW5hU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29sYW5hIGJhc2U2NC1lbmNvZGVkIHNlcmlhbGl6ZWQgTWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICB9O1xuICAgIFNvbGFuYVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBTdGFrZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBvbiB3aGljaCB3ZSB3aWxsIGRlcG9zaXRcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIGRlcG9zaXRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHN0YWtpbmcgYW1vdW50IGluIEdXRUkuXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byAzMl8wMDBfMDAwXzAwMCAoMzIgRVRIKS5cbiAgICAgICAqIE11c3QgYmUgYmV0d2VlbiAxIEVUSCBhbmQgMzIgRVRILlxuICAgICAgICogTXVzdCBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiAnZGVwb3NpdF90eXBlJyBpcyBcIldyYXBwZXJcIi5cbiAgICAgICAqL1xuICAgICAgc3Rha2luZ19hbW91bnRfZ3dlaT86IG51bWJlcjtcbiAgICAgIHVuc2FmZV9jb25mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnNhZmVDb25mXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgdG8gdXNlLCBvciBgTm9uZWAgdG8gZ2VuZXJhdGUgYSBmcmVzaCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3Jfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBldGhlcmV1bSBhZGRyZXNzIHRvIHdoaWNoIHdpdGhkcmF3biBmdW5kcyBnb1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3YWxfYWRkcjogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICogQGV4YW1wbGUgS2V5I2RiMTczMWY4LTM2NTktNDVjMC04ODViLWUxMWUxZjViN2JlMlxuICAgICAgICovXG4gICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgIGRlcG9zaXRfdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR4blwiXTtcbiAgICB9O1xuICAgIFN0YXR1czoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gYXJlIGFsbG93ZWQgdG8gYXBwcm92ZS4gTXVzdCBiZSBub24tZW1wdHkuICovXG4gICAgICBhbGxvd2VkX2FwcHJvdmVyczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBoYXZlIGFscmVhZHkgYXBwcm92ZWQgKi9cbiAgICAgIGFwcHJvdmVkX2J5OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFwcHJvdmFsSW5mb1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyBtdXN0IGFwcHJvdmVcbiAgICAgICAqL1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IGF1dGggZmFjdG9ycyB0byByZXF1aXJlIHBlciB1c2VyXG4gICAgICAgKi9cbiAgICAgIG51bV9hdXRoX2ZhY3RvcnM6IG51bWJlcjtcbiAgICB9O1xuICAgIFRva2VuSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVc2UgaXQgdG8gcmV2b2tlIGEgc2Vzc2lvbi4gQ2Fubm90IGJlIHVzZWQgZm9yIGF1dGguICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyBwdXJwb3NlICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT0F1dGgyIHN0YW5kYXJkIFRva2VuIFJlc3BvbnNlLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNC4yLjJcbiAgICAgKi9cbiAgICBUb2tlblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgICAgZXhwaXJlc19pbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgaWRfdG9rZW4/OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpc3N1ZWQuIFZhbHVlIGlzIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH07XG4gICAgVG90cEFwcHJvdmVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRPVFAgdmVyaWZpY2F0aW9uIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBUT1RQIGNoYWxsZW5nZSAqL1xuICAgIFRvdHBDaGFsbGVuZ2VBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgVE9UUCBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gcmVzZXQgVE9UUC4gKi9cbiAgICBUb3RwUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpc3N1ZXI7IGRlZmF1bHRzIHRvIFwiQ3ViaXN0XCIuICovXG4gICAgICBpc3N1ZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgVW5hdXRob3JpemVkRXJyb3JDb2RlOlxuICAgICAgfCBcIkNsYWltc0hlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eUhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eVBhcnNlRXJyb3JcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgbWVzc2FnZSByZXF1ZXN0LlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIyNTZcIixcbiAgICAgKiAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcImdlbmVzaXNfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZ2VuZXNpc19mb3JrX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICAgIFwiZ2VuZXNpc190aW1lXCI6IFwiMTY3OTU0MTY0MlwiLFxuICAgICAqICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJnb2VybGlcIixcbiAgICAgKiAgIFwidmFsaWRhdG9yX2luZGV4XCI6IFwiMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFVuc3Rha2VSZXF1ZXN0OiB7XG4gICAgICBlcG9jaD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl0gfCBudWxsO1xuICAgICAgZm9yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGb3JrXCJdO1xuICAgICAgZ2VuZXNpc19kYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkdlbmVzaXNEYXRhXCJdO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9yIGluZGV4IChgdWludDY0YCkgdG8gZXhpdC4gWW91IGNhbiBnZXQgdGhlIHZhbGlkYXRvciBpbmRleCBmcm9tIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICAgKiBgL2V0aC92MS9iZWFjb24vc3RhdGVzL2hlYWQvdmFsaWRhdG9ycy97cHVia2V5fWAgZW5kLXBvaW50LiBUaGlzIGVuZCBwb2ludCByZXR1cm5zIGFuXG4gICAgICAgKiBvYmplY3QgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWRhdG9yICh3aG9zZSBwdWJsaWMga2V5IGlzIGB7cHVia2V5fWApLFxuICAgICAgICogaW5jbHVkaW5nIHRoZSB2YWxpZGF0b3IgaW5kZXguIFRoZSBzY2hlbWEgb2YgdGhpcyBlbmQtcG9pbnQgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldFN0YXRlVmFsaWRhdG9yKS5cbiAgICAgICAqIEBleGFtcGxlIDMxMzM3XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgcmVzcG9uc2VzIGFyZSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZXMuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqIFRoaXMgbWVzc2FnZSBjYW4gYmUgZGlyZWN0bHkgUE9TVGVkIHRvIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICogYC9ldGgvdjEvYmVhY29uL3Bvb2wvdm9sdW50YXJ5X2V4aXRzYCBlbmQtcG9pbnQgKHNlZSBleHBlY3RlZCBzY2hlbWFcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vc3VibWl0UG9vbFZvbHVudGFyeUV4aXQpKS5cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5cydzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSBrZXkgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMga2V5J3MgbWV0YWRhdGEuIFZhbGlkYXRpb24gcmVnZXg6IF5bQS1aYS16MC05Xz0rLyBcXC1cXC5cXCxdezAsMTAyNH0kXG4gICAgICAgKiBAZXhhbXBsZSBDb250cmFjdCBhZG1pbiBrZXlcbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIGtleSdzIG93bmVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBUaGUgbmV3IG93bmVyIG11c3QgYmUgYW4gZXhpc3RpbmcgdXNlciB3aG8gaXMgYSBtZW1iZXIgb2YgdGhlIHNhbWUgb3JnLlxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBrZXkncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1JlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBgZW5hYmxlZGAgZmllbGQgdG8gdGhpcyB2YWx1ZS4gKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYWxpYXMuICBPcmcgYWxpYXNlcyBhcmUgZ2xvYmFsbHkgdW5pcXVlLlxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEwLjEuMi4zLzhcIixcbiAgICAgICAqICAgICAgIFwiMTY5LjI1NC4xNy4xLzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBUT1RQIGZhaWx1cmUgbGltaXQuIEFmdGVyIHRoaXMgbWFueSBmYWlsdXJlcyxcbiAgICAgICAqIHRoZSB1c2VyIGlzIHJhdGUgbGltaXRlZCB1bnRpbCB0aGUgbmV4dCAzMC1zZWNvbmQgVE9UUCB3aW5kb3cuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWVcbiAgICAgICAqIChpbiBzZWNvbmRzKSBiZXR3ZWVuIGEgdXNlcidzIGluaXRpYXRpbmcgYW4gZXhwb3J0IGFuZCB0aGUgdGltZSB3aGVuXG4gICAgICAgKiBleHBvcnQgaXMgYWxsb3dlZC4gRm9yIHNlY3VyaXR5LCB0aGlzIGRlbGF5IGNhbm5vdCBiZSBzZXQgdG8gbGVzcyB0aGFuXG4gICAgICAgKiAxNzI4MDAsIGkuZS4sIDIgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIHJvbGUncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEgcm9sZSBjYW5ub3QgYmUgdXNlZDsgYW5kIGl0J3MgdG9rZW5zIGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIHJvbGUncyBrZXkgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBPbmx5IFwiZGVueVwiIHN0eWxlIHBvbGljaWVzIG1heSBiZSBzZXQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gY29tcGxldGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGUga2V5LWlkIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb25lIGluXG4gICAgICAgKiB0aGUgc3BlY2lmaWVkIGV4cG9ydCByZXF1ZXN0LCBhbmQgdGhlIGNhbGxlciBtdXN0IG93biB0aGlzIGtleS5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbilcbiAgICAgICAqIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIGEgcHVibGljIGtleSB3YXMgcHJvdmlkZWQgd2hlblxuICAgICAgICogYHVzZXJfZXhwb3J0X2luaXRgIHdhcyBjYWxsZWQsIHRoaXMga2V5IG11c3QgbWF0Y2ggdGhhdCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhwb3J0ZWQga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCBBRVMtMjU2LUdDTSB1bmRlciBhIGtleVxuICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gYXMgYmFzZTY0LWVuY29kZWRcbiAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgKi9cbiAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBpbml0aWF0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhpcyBrZXkgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXRcbiAgICAgICAqIGNvbXByZXNzaW9uKSB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBwcm92aWRlZCwgdGhpc1xuICAgICAgICogcHVibGljIGtleSBNVVNUIGJlIHRoZSBvbmUgdXNlZCB0byBlbmNyeXB0IHRoZSBleHBvcnQgb25jZSB0aGUgZGVsYXkgaGFzXG4gICAgICAgKiBleHBpcmVkLiBPdGhlcndpc2UsIHRoZSB1c2VyIGNhbiBwcm92aWRlIGFueSBwdWJsaWMga2V5IHdoZW4gY29tcGxldGluZ1xuICAgICAgICogdGhlIGV4cG9ydCByZXF1ZXN0IHBvc3QgZGVsYXkuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcHRpb24gbWF5IHByb3ZpZGUgZXh0cmEgc2VjdXJpdHkgd2hlbiB0aGUgdXNlciBoYXMgYSBzZWN1cmUgaGFyZHdhcmVcbiAgICAgICAqIGRldmljZSAoZS5nLiwgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50IG9yIGEgWXViaUtleSkgaW4gd2hpY2ggYSBOSVNUIFAtMjU2XG4gICAgICAgKiBzZWNyZXQga2V5IGNhbiBiZSBnZW5lcmF0ZWQuIFByb3ZpZGluZyB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5IGhlcmVcbiAgICAgICAqIGVuc3VyZXMgdGhhdCBvbmx5IHRoYXQgc3BlY2lmaWMgZGV2aWNlIHdpbGwgYmUgY2FwYWJsZSBvZiBkZWNyeXB0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGNpcGhlcnRleHQuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gc2VjdXJlIGhhcmR3YXJlIGRldmljZSBpcyBhdmFpbGFibGUgdG8gc3RvcmUgdGhlIHNlY3JldCBrZXksIHRoaXNcbiAgICAgICAqIG9wdGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiBzZWNyZXQga2V5IHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCBiZWluZyByZXF1ZXN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3QgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gKi9cbiAgICBVc2VyRXhwb3J0UmVxdWVzdDoge1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnLWlkIGluIHdoaWNoIHRoZSBrZXkgaXMgaG91c2VkLlxuICAgICAgICogQGV4YW1wbGUgT3JnI2YzNjFlZDZiLTVkMTktNGNjZi1hNGQ1LWViYTkzNWRjMGI5MFxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sXG4gICAgICAgKiBpZiBhbnkuIElmIGEga2V5IHdhcyBwcm92aWRlZCwgb25seSB0aGF0IGtleSBjYW4gYmUgdXNlZCB0byBjb21wbGV0ZVxuICAgICAgICogdGhlIGV4cG9ydCBwcm9jZWR1cmUuIE90aGVyd2lzZSwgYW55IGtleSBjYW4gYmUgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBJTVBPUlRBTlQ6IGlmIGEgcHVibGljIGtleSBpcyBzdXBwbGllZCBhdCBleHBvcnQgaW5pdGlhdGlvbiwgaXQgaXNcbiAgICAgICAqIFNUUk9OR0xZIFJFQ09NTUVOREVEIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc2VjcmV0IGtleSBiZSBzdG9yZWQgaW5cbiAgICAgICAqIGEgc2VjdXJlIGhhcmR3YXJlIGRldmljZSwgZS5nLiwgYSBZdWJpS2V5IG9yIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudC5cbiAgICAgICAqIElmIG5vIHN1Y2ggaGFyZHdhcmUgaXMgYXZhaWxhYmxlLCBzdXBwbHlpbmcgYSBwdWJsaWMga2V5IGF0IGV4cG9ydFxuICAgICAgICogaW5pdGlhdGlvbiBpcyBTVFJPTkdMWSBESVNDT1VSQUdFRCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKlxuICAgICAgICogKFNlZSBhbHNvIHRoZSBjb21tZW50IGluIHRoZSBgcHVibGljX2tleWAgZmllbGQgb2YgYFVzZXJJbml0UmVxdWVzdGAuKVxuICAgICAgICogQGV4YW1wbGUgZGY0NTdhOThkNTUzODU0MGY1NGQxMzE2YjU5N2EwZjM5YjhkOTZmNDg4ZjEwYTJlMzFhOTU1YzE0NmZkZjFkM1xuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5X2hhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdmFsaWRfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIFVzZXJJZEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgV2ViQXV0aG4gUmVseWluZyBQYXJ0eSBtYXkgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbiBmb3Igc29tZSBvZiBpdHNcbiAgICAgKiBvcGVyYXRpb25zIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIG1heSB1c2UgdGhpcyB0eXBlIHRvIGV4cHJlc3MgaXRzIG5lZWRzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW0tdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6IFwicmVxdWlyZWRcIiB8IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHNpZ25hdHVyZSBjb21wcmlzaW5nIDY1IGJ5dGVzIGluIHRoZSBmb3JtYXQgcmVxdWlyZWRcbiAgICAgICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDQzNTVjNDdkNjM5MjRlOGE3MmU1MDliNjUwMjkwNTJlYjZjMjk5ZDUzYTA0ZTE2N2M1Nzc1ZmQ0NjY3NTFjOWQwNzI5OTkzNmQzMDRjMTUzZjY0NDNkZmEwNWY0MGZmMDA3ZDcyOTExYjZmNzIzMDdmOTk2MjMxNjA1YjkxNTYyMWNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBwcmVmaXhlZCB3aXRoIDB4IGUuZy4gXCIweDAwMDAuLi5cIlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4YjRmMmVmOWQxMmE1NGUxZjU2OTU5NmMwN2M5N2Q2ZDczMDUzNWI2ZmZjMGQyODc3NjFkYzc4MTAzYTg2MzI2NzgyNDcxYTA0Yzc1Y2U3YTZmYWVhMDhjYTlhNGEwODMwMDMxY2RjYjg5M2RhODcxMWQ1NGFhMjI2MTlmMWE3ZTcxYjgxODVkZGY0YzZiZmQ5YmFiYmQ3MzU5NjBlMzVlNTZiZDZlZWI4OTYyNWIwNDg1MGU3YTllZjg4NDZlNTQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRmlkb0Fzc2VydENoYWxsZW5nZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlcklkSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPSURDIGF1ZGllbmNlOyBzZXQgb25seSBpZiB0aGUgcHJvb2Ygd2FzIG9idGFpbmVkIGJ5IHVzaW5nIE9JREMgdG9rZW4uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBjdWJpc3RkZXZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAgICAgKiAtIFNlY3AyNTZrMSBrZXlzIHVzZSA2NS1ieXRlIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICAgICAqIC0gRWQyNTUxOSBrZXlzIHVzZSB0aGUgY2Fub25pY2FsIDMyLWJ5dGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFJGQyA4MDMyLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBFdGgyVmFsaWRhdG9yKDEpXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAxNzAxODc5NjQwXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICAgICAqIG9mIHRpbWVzIGEgdXNlciBjYW4gcHJvdmlkZSBhbiBpbmNvcnJlY3QgVE9UUCBjb2RlIGJlZm9yZSBiZWluZyByYXRlIGxpbWl0ZWQuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgbWluaW11bVxuICAgICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICAgICAqIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJldm9rZVRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSZXZva2VUb2tlbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHRoYXQgd2VyZSByZXZva2VkLiAqL1xuICAgICAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUm9sZUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUgKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNvbGFuYVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRva2VuSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVXNlIGl0IHRvIHJldm9rZSBhIHNlc3Npb24uIENhbm5vdCBiZSB1c2VkIGZvciBhdXRoLiAqL1xuICAgICAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyBwdXJwb3NlICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgICAgIGlkX3Rva2VuPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUb3RwSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRvdHBDaGFsbGVuZ2UjNzg5MmViYmEtNTYzZS00ODViLWJiN2QtZTI2MjY3MzYzMjg2XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSByZXNwb25zZXMgYXJlIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlcy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICogVGhpcyBtZXNzYWdlIGNhbiBiZSBkaXJlY3RseSBQT1NUZWQgdG8gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgKiBgL2V0aC92MS9iZWFjb24vcG9vbC92b2x1bnRhcnlfZXhpdHNgIGVuZC1wb2ludCAoc2VlIGV4cGVjdGVkIHNjaGVtYVxuICAgICAqIFtoZXJlXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9zdWJtaXRQb29sVm9sdW50YXJ5RXhpdCkpLlxuICAgICAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRlbGF5XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBlbWFpbFxuICAgICAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSwgYXBwbGllcyBiZWZvcmUgbG9nZ2luZyBpbiBhbmQgb3RoZXIgc2Vuc2l0aXZlIG9wZXJhdGlvbnMgKi9cbiAgICAgICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbmFtZVxuICAgICAgICAgICAqIEBleGFtcGxlIEFsaWNlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIk9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcIlxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgcGFyYW1ldGVyczogbmV2ZXI7XG4gIHJlcXVlc3RCb2RpZXM6IG5ldmVyO1xuICBoZWFkZXJzOiBuZXZlcjtcbiAgcGF0aEl0ZW1zOiBuZXZlcjtcbn1cblxuZXhwb3J0IHR5cGUgJGRlZnMgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCB0eXBlIGV4dGVybmFsID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIG9wZXJhdGlvbnMge1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBhYm91dE1lTGVnYWN5OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgT3JnXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgT3JnXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICBnZXRPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJPcmdJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBPcmdcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBPcmdcbiAgICpcbiAgICogVXBkYXRlIG9yZ2FuaXphdGlvbiBhdHRyaWJ1dGVzIChlbmFibGVkIGZsYWcsIG5hbWUsIGFuZCBwb2xpY2llcykuXG4gICAqL1xuICB1cGRhdGVPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlT3JnUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVwZGF0ZU9yZ1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwQXZhIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBhdmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF2YWxhbmNoZSBiZWNoMzIgYWRkcmVzcyBmb3JtYXQgd2l0aG91dCB0aGUgY2hhaW4gcHJlZml4XG4gICAgICAgICAqIEBleGFtcGxlIGF2YXgxYW00dzZoZnJ2bWgzYWtkdXpranRocnRndHFhZmFsY2U2YW44Y3JcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF2YVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQXZhU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGJlY2gzMiBlbmNvZGluZyBvZiB0aGUgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxNXA1cWthZTc3bHk4MGtyNHB5Znl0ZHFtN3JmMDhkZGhkZWpsOWdcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQnRjU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICpcbiAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgKi9cbiAgZGVyaXZlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcml2ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICpcbiAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDE5MVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXAxOTFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVpcDE5MU9yNzEyU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICpcbiAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDcxMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXA3MTJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVpcDE5MU9yNzEyU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIGFcbiAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlXG4gICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAqL1xuICBjcmVhdGVQcm9vZkN1YmVTaWduZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgKlxuICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBtZXQgdGhlXG4gICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mT2lkYzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICpcbiAgICogQWxsb3dzIGEgdGhpcmQtcGFydHkgdG8gdmFsaWRhdGUgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAqIHZlcmFjaXR5IGJ5IGNhbGxpbmcgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgdmVyaWZ5UHJvb2Y6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICpcbiAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGtleS1pbXBvcnQgZW5jcnlwdGlvbi5cbiAgICovXG4gIGNyZWF0ZUtleUltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICpcbiAgICogU2VjdXJlbHkgaW1wb3J0cyBhbiBleGlzdGluZyBrZXkgdXNpbmcgYSBwcmV2aW91c2x5IGdlbmVyYXRlZCBrZXktaW1wb3J0IGtleS5cbiAgICovXG4gIGltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbXBvcnRLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW52aXRlIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIEludml0ZSBVc2VyXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBpbiBhbiBleGlzdGluZyBvcmcgYW5kIHNlbmRzIHRoYXQgdXNlciBhbiBpbnZpdGUgZW1haWwuXG4gICAqL1xuICBpbnZpdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIG93bmVkIGtleXMgaW4gYSBnaXZlbiBvcmcuXG4gICAqL1xuICBsaXN0S2V5c0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSBrZXkgdHlwZVxuICAgICAgICAgKiBAZXhhbXBsZSBTZWNwRXRoQWRkclxuICAgICAgICAgKi9cbiAgICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgKlxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICovXG4gIGNyZWF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5SW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgS2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgKi9cbiAgZGVsZXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGEga2V5LiAgVGhlIHVzZXIgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGtleSBvciBvcmdhbml6YXRpb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHVwZGF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXkgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5IFJvbGVzXG4gICAqXG4gICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgKi9cbiAgbGlzdEtleVJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLFxuICAgKiBpLmUuLCB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgKi9cbiAgbWZhTGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RNZmFSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieSBpdHMgaWQuXG4gICAqL1xuICBtZmFHZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBBcHByb3ZlIG9yIHJlamVjdCByZXF1ZXN0IGFmdGVyIGxvZ2dpbmcgaW4gd2l0aCBDdWJlU2lnbmVyLlxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgKiBvZiBhIHBlbmRpbmcgTUZBIHJlcXVlc3Qgb2YgdGhlIFtTdGF0dXM6OlJlcXVpcmVkQXBwcm92ZXJzXSBraW5kLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mXG4gICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUNzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAqL1xuICBtZmFGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0Fzc2VydENoYWxsZW5nZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9Bc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICogcHJvdmlkaW5nIFRPVFAgY29kZS4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzXG4gICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGFjdHMgaWRlbnRpY2FsbHkgdG8gVHdpdHRlcidzIFtgb2F1dGgyL3Rva2VuYF0oaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy9hdXRoZW50aWNhdGlvbi9hcGktcmVmZXJlbmNlL3Rva2VuKSBlbmRwb2ludCxcbiAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAqXG4gICAqIFRoaXMgYGlkX3Rva2VuYCBjYW4gdGhlbiBiZSB1c2VkIHdpdGggYW55IEN1YmVTaWduZXIgZW5kcG9pbnQgdGhhdCByZXF1aXJlcyBhbiBPSURDIHRva2VuLlxuICAgKlxuICAgKiA+IFshSU1QT1JUQU5UXVxuICAgKiA+IFRoaXMgZW5kcG9pbnQgd2lsbCBmYWlsIHVubGVzcyB0aGUgb3JnIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3R3aXR0ZXJgIGFuZCBjbGllbnQgSUQgYmVpbmcgdXNlZCBmb3IgVHdpdHRlci5cbiAgICovXG4gIG9hdXRoMlR3aXR0ZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExvZ2luIHdpdGggT0lEQ1xuICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAqL1xuICBvaWRjQXV0aDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjTG9naW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGVzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RSb2xlczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEb24ndCBpbmNsdWRlIGtleXMgYW5kIHVzZXJzIGZvciBlYWNoIHJvbGUgKi9cbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAqL1xuICBjcmVhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBib2R5IHRvIHNldCB0aGUgcm9sZSBuYW1lICovXG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVJvbGVSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVJvbGVSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGdldFJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICpcbiAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgZGVsZXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICpcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIHJvbGUgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlYCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgdXBkYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVSb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBleGlzdGluZyBrZXlzIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqL1xuICBhZGRLZXlzVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZEtleXNUb1JvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICpcbiAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgKi9cbiAgYWRkVXNlclRvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICovXG4gIHJlbW92ZUtleUZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAqXG4gICAqIFJldHVybnMgYWxsIGFjY2VzcyB0b2tlbnMgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICovXG4gIGxpc3RSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdFRva2Vuc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBUb2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgKi9cbiAgY3JlYXRlUm9sZVRva2VuOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAqXG4gICAqIFJldm9rZXMgYWxsIGFjY2VzcyB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VBbGxSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUmV2b2tlVG9rZW5zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfWBcbiAgICpcbiAgICogUmV2b2tlcyBhbiBhY2Nlc3MgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSZXZva2VUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlVXNlcnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgKlxuICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICovXG4gIHJlbW92ZVVzZXJGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgc2Vzc2lvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICpcbiAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldHVybmVkXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzXG4gICAqIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV2b2tlZC5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlQ3VycmVudFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAqL1xuICBnZXRTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byBnZXRcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHNvbGFuYVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U1OC1lbmNvZGVkIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgODZaUlBzekJwNUVvUGo3d1IzYkhuN3duQVo1aVlmcGFzUmM3REtGUFRVYVpcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU29sYW5hU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IHRoZSByb2xlIHRva2VuIGNhbiBhY2Nlc3MuXG4gICAqL1xuICBsaXN0VG9rZW5LZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb3NcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBhYm91dE1lOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKi9cbiAgdXNlckV4cG9ydExpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIEZJRE8ga2V5IGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiB0aGUga2V5IGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVGaWRvOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgRmlkb0tleVxuICAgICAgICAgKiBAZXhhbXBsZSBGaWRvS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgZmlkb19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICpcbiAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlclJlc2V0VG90cEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgKlxuICAgKiBEZWxldGVzIFRPVFAgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIFRPVFAgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlckRlbGV0ZVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBsaXN0VXNlcnNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkdldFVzZXJzSW5PcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKi9cbiAgY3JlYXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICovXG4gIGRlbGV0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZXNldFRvdHBJbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVzZXRUb3RwQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHZlcmlmeVRvdHBMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBSYXcgQmxvYlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgKlxuICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJsb2JTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICovXG4gIGN1YmUzc2lnbmVySGVhcnRiZWF0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIZWFydGJlYXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgZXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgc2VjcCBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdGgxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFdGgxU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXkgd2l0aCAweCBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgMHg5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqXG4gICAqIFNpZ25zIGEgZGVwb3NpdCB0cmFuc2FjdGlvbiB3aXRoIGEgYHZhbGlkYXRvcl9rZXlgLiBJZiBgdmFsaWRhdG9yX2tleWAgaXMgc2V0IHRvIGEgcHJlZ2VuZXJhdGVkIGtleSwgd2UgdXNlIHRoZVxuICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgYSBwcmVnZW5lcmF0ZWQga2V5LCB0aGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2VcbiAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKlxuICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgKlxuICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHVuc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuc3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVW5zdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqL1xuICBzaWduZXJTZXNzaW9uUmVmcmVzaDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgb3JnYW5pemF0aW9uIG93bmluZyB0aGUga2V5XG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==