parse-server 8.3.0-alpha.8 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +10 -4
- package/lib/Controllers/DatabaseController.js +43 -18
- package/lib/Options/Definitions.js +51 -3
- package/lib/Options/docs.js +11 -3
- package/lib/Options/index.js +1 -1
- package/lib/ParseServer.js +4 -7
- package/lib/RestWrite.js +9 -1
- package/package.json +1 -1
- package/types/Options/index.d.ts +1 -0
package/lib/Options/index.js
CHANGED
|
@@ -9,4 +9,4 @@ var _PubSubAdapter = require("../Adapters/PubSub/PubSubAdapter");
|
|
|
9
9
|
var _StorageAdapter = require("../Adapters/Storage/StorageAdapter");
|
|
10
10
|
var _WSSAdapter = require("../Adapters/WebSocketServer/WSSAdapter");
|
|
11
11
|
var _CheckGroup = require("../Security/CheckGroup");
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9VUkwgKi9cbiAgc2VydmVyVVJMOiBzdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIHRoZSB1c2Ugb2YgbWFzdGVyIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIG9yIHJhbmdlcy48YnI+PGJyPlRoaXMgb3B0aW9uIGFjY2VwdHMgYSBsaXN0IG9mIHNpbmdsZSBJUCBhZGRyZXNzZXMsIGZvciBleGFtcGxlIGBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gLiBZb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZSBgWycxMC4wLjEuMC8yNCddYC48YnI+PGJyPjxiPlNwZWNpYWwgc2NlbmFyaW9zOjwvYj48YnI+LSBTZXR0aW5nIGFuIGVtcHR5IGFycmF5IGBbXWAgbWVhbnMgdGhhdCB0aGUgbWFzdGVyIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSBtYXN0ZXIga2V5IGFuZCBlZmZlY3RpdmVseSBkaXNhYmxlcyB0aGUgSVAgZmlsdGVyLjxicj48YnI+PGI+Q29uc2lkZXJhdGlvbnM6PC9iPjxicj4tIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFyZSBub3QgY29tcGFyZWQgYWdhaW5zdCBlYWNoIG90aGVyLiBFYWNoIElQIHZlcnNpb24gKElQdjQgYW5kIElQdjYpIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgc2VwYXJhdGVseS4gRm9yIGV4YW1wbGUsIGBbJzAuMC4wLjAvMCddYCBhbGxvd3MgYW55IElQdjQgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjYgYWRkcmVzcy4gQ29udmVyc2VseSwgYFsnOjowJ11gIGFsbG93cyBhbnkgSVB2NiBhZGRyZXNzIGFuZCBibG9ja3MgZXZlcnkgSVB2NCBhZGRyZXNzLjxicj4tIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBJUCB2ZXJzaW9uIGluIHVzZSBkZXBlbmRzIG9uIHRoZSBuZXR3b3JrIHN0YWNrIG9mIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBQYXJzZSBTZXJ2ZXIgcnVucy4gQSBsb2NhbCBlbnZpcm9ubWVudCBtYXkgdXNlIGEgZGlmZmVyZW50IElQIHZlcnNpb24gdGhhbiBhIHJlbW90ZSBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGl0J3MgcG9zc2libGUgdGhhdCBsb2NhbGx5IHRoZSB2YWx1ZSBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIHRoZSByZXF1ZXN0IElQIGJlY2F1c2UgdGhlIGVudmlyb25tZW50IGlzIHVzaW5nIElQdjQsIGJ1dCB3aGVuIFBhcnNlIFNlcnZlciBpcyBkZXBsb3llZCByZW1vdGVseSB0aGUgcmVxdWVzdCBJUCBpcyBibG9ja2VkIGJlY2F1c2UgdGhlIHJlbW90ZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY2Ljxicj4tIFdoZW4gc2V0dGluZyB0aGUgb3B0aW9uIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGUgbm90YXRpb24gaXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLCBmb3IgZXhhbXBsZSBgXCIwLjAuMC4wLzAsOjowXCJgLjxicj4tIElQdjYgem9uZSBpbmRpY2VzIChgJWAgc3VmZml4KSBhcmUgbm90IHN1cHBvcnRlZCwgZm9yIGV4YW1wbGUgYGZlODA6OjElZXRoMGAsIGBmZTgwOjoxJTFgIG9yIGA6OjElbG9gLjxicj48YnI+RGVmYXVsdHMgdG8gYFsnMTI3LjAuMC4xJywgJzo6MSddYCB3aGljaCBtZWFucyB0aGF0IG9ubHkgYGxvY2FsaG9zdGAsIHRoZSBzZXJ2ZXIgaW5zdGFuY2Ugb24gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMsIGlzIGFsbG93ZWQgdG8gdXNlIHRoZSBtYXN0ZXIga2V5LlxuICA6REVGQVVMVDogW1wiMTI3LjAuMC4xXCIsXCI6OjFcIl0gKi9cbiAgbWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogKE9wdGlvbmFsKSBSZXN0cmljdHMgdGhlIHVzZSBvZiBtYWludGVuYW5jZSBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1haW50ZW5hbmNlIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSBtYWludGVuYW5jZSBrZXkgYW5kIGVmZmVjdGl2ZWx5IGRpc2FibGVzIHRoZSBJUCBmaWx0ZXIuPGJyPjxicj48Yj5Db25zaWRlcmF0aW9uczo8L2I+PGJyPi0gSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMgYXJlIG5vdCBjb21wYXJlZCBhZ2FpbnN0IGVhY2ggb3RoZXIuIEVhY2ggSVAgdmVyc2lvbiAoSVB2NCBhbmQgSVB2NikgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBzZXBhcmF0ZWx5LiBGb3IgZXhhbXBsZSwgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyBhbnkgSVB2NCBhZGRyZXNzIGFuZCBibG9ja3MgZXZlcnkgSVB2NiBhZGRyZXNzLiBDb252ZXJzZWx5LCBgWyc6OjAnXWAgYWxsb3dzIGFueSBJUHY2IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY0IGFkZHJlc3MuPGJyPi0gS2VlcCBpbiBtaW5kIHRoYXQgdGhlIElQIHZlcnNpb24gaW4gdXNlIGRlcGVuZHMgb24gdGhlIG5ldHdvcmsgc3RhY2sgb2YgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLiBBIGxvY2FsIGVudmlyb25tZW50IG1heSB1c2UgYSBkaWZmZXJlbnQgSVAgdmVyc2lvbiB0aGFuIGEgcmVtb3RlIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgaXQncyBwb3NzaWJsZSB0aGF0IGxvY2FsbHkgdGhlIHZhbHVlIGBbJzAuMC4wLjAvMCddYCBhbGxvd3MgdGhlIHJlcXVlc3QgSVAgYmVjYXVzZSB0aGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2NCwgYnV0IHdoZW4gUGFyc2UgU2VydmVyIGlzIGRlcGxveWVkIHJlbW90ZWx5IHRoZSByZXF1ZXN0IElQIGlzIGJsb2NrZWQgYmVjYXVzZSB0aGUgcmVtb3RlIGVudmlyb25tZW50IGlzIHVzaW5nIElQdjYuPGJyPi0gV2hlbiBzZXR0aW5nIHRoZSBvcHRpb24gdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRoZSBub3RhdGlvbiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlIGBcIjAuMC4wLjAvMCw6OjBcImAuPGJyPi0gSVB2NiB6b25lIGluZGljZXMgKGAlYCBzdWZmaXgpIGFyZSBub3Qgc3VwcG9ydGVkLCBmb3IgZXhhbXBsZSBgZmU4MDo6MSVldGgwYCwgYGZlODA6OjElMWAgb3IgYDo6MSVsb2AuPGJyPjxicj5EZWZhdWx0cyB0byBgWycxMjcuMC4wLjEnLCAnOjoxJ11gIHdoaWNoIG1lYW5zIHRoYXQgb25seSBgbG9jYWxob3N0YCwgdGhlIHNlcnZlciBpbnN0YW5jZSBvbiB3aGljaCBQYXJzZSBTZXJ2ZXIgcnVucywgaXMgYWxsb3dlZCB0byB1c2UgdGhlIG1haW50ZW5hbmNlIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1haW50ZW5hbmNlS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIG9yaWdpbnMgZm9yIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gVGhpcyBjYW4gYmUgYSBzdHJpbmcgZm9yIGEgc2luZ2xlIG9yaWdpbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBtdWx0aXBsZSBvcmlnaW5zLiAqL1xuICBhbGxvd09yaWdpbjogP1N0cmluZ09yU3RyaW5nQXJyYXk7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzICovXG4gIGFuYWx5dGljc0FkYXB0ZXI6ID9BZGFwdGVyPEFuYWx5dGljc0FkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW0gKi9cbiAgZmlsZXNBZGFwdGVyOiA/QWRhcHRlcjxGaWxlc0FkYXB0ZXI+O1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnMgKi9cbiAgcHVzaDogP2FueTtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHNjaGVkdWxlZFB1c2g6ID9ib29sZWFuO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbSAqL1xuICBsb2dnZXJBZGFwdGVyOiA/QWRhcHRlcjxMb2dnZXJBZGFwdGVyPjtcbiAgLyogTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gIDpFTlY6IEpTT05fTE9HUyAqL1xuICBqc29uTG9nczogP2Jvb2xlYW47XG4gIC8qIEZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSXG4gIDpERUZBVUxUOiAuL2xvZ3MgKi9cbiAgbG9nc0ZvbGRlcjogP3N0cmluZztcbiAgLyogU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAgOkVOVjogVkVSQk9TRSAqL1xuICB2ZXJib3NlOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MgKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWxzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIgdG8gbG9nIGV2ZW50cy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGxvZ0xldmVsczogP0xvZ0xldmVscztcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpICovXG4gIG1heExvZ0ZpbGVzOiA/TnVtYmVyT3JTdHJpbmc7XG4gIC8qIERpc2FibGVzIGNvbnNvbGUgb3V0cHV0XG4gIDpFTlY6IFNJTEVOVCAqL1xuICBzaWxlbnQ6ID9ib29sZWFuO1xuICAvKiBUaGUgZnVsbCBVUkkgdG8geW91ciBkYXRhYmFzZS4gU3VwcG9ydGVkIGRhdGFiYXNlcyBhcmUgbW9uZ29kYiBvciBwb3N0Z3Jlcy5cbiAgOkRFRkFVTFQ6IG1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvcGFyc2UgKi9cbiAgZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgLyogT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBkYXRhYmFzZSBjbGllbnRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0RBVEFCQVNFX09QVElPTlMgKi9cbiAgZGF0YWJhc2VPcHRpb25zOiA/RGF0YWJhc2VPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuICovXG4gIGRhdGFiYXNlQWRhcHRlcjogP0FkYXB0ZXI8U3RvcmFnZUFkYXB0ZXI+O1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbGxhdGlvbiBydWxlIG9mIGNhc2UgY29tcGFyaXNvbiBmb3IgcXVlcmllcyBhbmQgaW5kZXhlcyBpcyBlbmFibGVkLiBFbmFibGUgdGhpcyBvcHRpb24gdG8gcnVuIFBhcnNlIFNlcnZlciB3aXRoIE1vbmdvREIgQXRsYXMgU2VydmVybGVzcyBvciBBV1MgQW1hem9uIERvY3VtZW50REIuIElmIGBmYWxzZWAsIHRoZSBjb2xsYXRpb24gcnVsZSBvZiBjYXNlIGNvbXBhcmlzb24gaXMgZGlzYWJsZWQuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNvbGxhdGlvbkNhc2VDb21wYXJpc29uOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgZW1haWxgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYGVtYWlsYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRFbWFpbFRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRVc2VybmFtZVRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogRnVsbCBwYXRoIHRvIHlvdXIgY2xvdWQgY29kZSBtYWluLmpzICovXG4gIGNsb3VkOiA/c3RyaW5nO1xuICAvKiBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICA6REVGQVVMVDogJycgKi9cbiAgY29sbGVjdGlvblByZWZpeDogP3N0cmluZztcbiAgLyogS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHMgKi9cbiAgY2xpZW50S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNESyAqL1xuICBqYXZhc2NyaXB0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESyAqL1xuICBkb3ROZXRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkNSWVBUSU9OX0tFWSAqL1xuICBlbmNyeXB0aW9uS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFJFU1QgY2FsbHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFU1RfQVBJX0tFWSAqL1xuICByZXN0QVBJS2V5OiA/c3RyaW5nO1xuICAvKiBSZWFkLW9ubHkga2V5LCB3aGljaCBoYXMgdGhlIHNhbWUgY2FwYWJpbGl0aWVzIGFzIE1hc3RlcktleSB3aXRob3V0IHdyaXRlcyAqL1xuICByZWFkT25seU1hc3RlcktleTogP3N0cmluZztcbiAgLyogS2V5IHNlbnQgd2l0aCBvdXRnb2luZyB3ZWJob29rIGNhbGxzICovXG4gIHdlYmhvb2tLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgeW91ciBmaWxlcyAqL1xuICBmaWxlS2V5OiA/c3RyaW5nO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIHRoZSBhZGRpdGlvbiBvZiBhIHVuaXF1ZSBoYXNoIHRvIHRoZSBmaWxlIG5hbWVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QUkVTRVJWRV9GSUxFX05BTUVcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHByZXNlcnZlRmlsZU5hbWU6ID9ib29sZWFuO1xuICAvKiBQZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiBmaWVsZHMgaW4gdGhlIHVzZXIgdGFibGUgdGhlIHNob3VsZCBiZSByZW1vdmVkIGZvciBub24tYXV0aG9yaXplZCB1c2Vycy4gRGVwcmVjYXRlZCBAc2VlIHByb3RlY3RlZEZpZWxkcyAqL1xuICB1c2VyU2Vuc2l0aXZlRmllbGRzOiA/KHN0cmluZ1tdKTtcbiAgLyogUHJvdGVjdGVkIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgc2VjdXJpdHkgd2hlbiBmZXRjaGluZyBkZXRhaWxzLlxuICA6REVGQVVMVDoge1wiX1VzZXJcIjoge1wiKlwiOiBbXCJlbWFpbFwiXX19ICovXG4gIHByb3RlY3RlZEZpZWxkczogP1Byb3RlY3RlZEZpZWxkcztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBhbm9ueW1vdXMgdXNlcnMsIGRlZmF1bHRzIHRvIHRydWVcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9BTk9OX1VTRVJTXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUFub255bW91c1VzZXJzOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBjbGllbnQgY2xhc3MgY3JlYXRpb24sIGRlZmF1bHRzIHRvIGZhbHNlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9BTExPV19DTElFTlRfQ0xBU1NfQ1JFQVRJT05cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93Q2xpZW50Q2xhc3NDcmVhdGlvbjogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY3VzdG9tIG9iamVjdElkXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9BTExPV19DVVNUT01fT0JKRUNUX0lEXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0N1c3RvbU9iamVjdElkOiA/Ym9vbGVhbjtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb25cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FVVEhfUFJPVklERVJTICovXG4gIGF1dGg6ID97IFtzdHJpbmddOiBBdXRoQWRhcHRlciB9O1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGluc2VjdXJlIGF1dGggYWRhcHRlcnMsIGRlZmF1bHRzIHRvIHRydWUuIEluc2VjdXJlIGF1dGggYWRhcHRlcnMgYXJlIGRlcHJlY2F0ZWQgYW5kIGl0IGlzIHJlY29tbWVuZGVkIHRvIGRpc2FibGUgdGhlbS5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9JTlNFQ1VSRV9BVVRIX0FEQVBURVJTXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUluc2VjdXJlQXV0aEFkYXB0ZXJzOiA/Ym9vbGVhbjtcbiAgLyogTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYlxuICA6REVGQVVMVDogMjBtYiAqL1xuICBtYXhVcGxvYWRTaXplOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy4gU3VwcG9ydHMgYSBmdW5jdGlvbiB3aXRoIGEgcmV0dXJuIHZhbHVlIG9mIGB0cnVlYCBvciBgZmFsc2VgIGZvciBjb25kaXRpb25hbCB2ZXJpZmljYXRpb24uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHZlcmlmeVVzZXJFbWFpbHM6ID8oYm9vbGVhbiB8IHZvaWQpO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWw6ID9ib29sZWFuO1xuICAvKiBJZiBzZXQgdG8gYHRydWVgIGl0IHByZXZlbnRzIGEgdXNlciBmcm9tIHNpZ25pbmcgdXAgaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC4gSW4gdGhhdCBjYXNlIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgdG8gdGhlIHNpZ24tdXAgd2l0aCBIVFRQIHN0YXR1cyA0MDAgYW5kIGEgUGFyc2UgRXJyb3IgMjA1IGBFTUFJTF9OT1RfRk9VTkRgLiBJZiBzZXQgdG8gYGZhbHNlYCB0aGUgc2VydmVyIHJlc3BvbmRzIHdpdGggSFRUUCBzdGF0dXMgMjAwLCBhbmQgY2xpZW50IFNES3MgcmV0dXJuIGFuIHVuYXV0aGVudGljYXRlZCBQYXJzZSBVc2VyIHdpdGhvdXQgc2Vzc2lvbiB0b2tlbi4gSW4gdGhhdCBjYXNlIHN1YnNlcXVlbnQgcmVxdWVzdHMgZmFpbCB1bnRpbCB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3MgaXMgdmVyaWZpZWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudFNpZ251cFdpdGhVbnZlcmlmaWVkRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICAqL1xuICBlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgc2VuZGluZyBvZiB2ZXJpZmljYXRpb24gZW1haWwuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgZW1haWwgc2VuZGluZy5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDxicj5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgc2VuZFVzZXJFbWFpbFZlcmlmaWNhdGlvbjogPyhib29sZWFuIHwgdm9pZCk7XG4gIC8qIFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuICovXG4gIGFjY291bnRMb2Nrb3V0OiA/QWNjb3VudExvY2tvdXRPcHRpb25zO1xuICAvKiBUaGUgcGFzc3dvcmQgcG9saWN5IGZvciBlbmZvcmNpbmcgcGFzc3dvcmQgcmVsYXRlZCBydWxlcy4gKi9cbiAgcGFzc3dvcmRQb2xpY3k6ID9QYXNzd29yZFBvbGljeU9wdGlvbnM7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgY2FjaGUgKi9cbiAgY2FjaGVBZGFwdGVyOiA/QWRhcHRlcjxDYWNoZUFkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgZW1haWwgc2VuZGluZyAqL1xuICBlbWFpbEFkYXB0ZXI6ID9BZGFwdGVyPE1haWxBZGFwdGVyPjtcbiAgLyogSWYgc2V0IHRvIGB0cnVlYCwgYSBgUGFyc2UuT2JqZWN0YCB0aGF0IGlzIGluIHRoZSBwYXlsb2FkIHdoZW4gY2FsbGluZyBhIENsb3VkIEZ1bmN0aW9uIHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGluc3RhbmNlIG9mIGBQYXJzZS5PYmplY3RgLiBJZiBgZmFsc2VgLCB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIGNvbnZlcnRlZCBhbmQgaW5zdGVhZCBiZSBhIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0LCB3aGljaCBjb250YWlucyB0aGUgcmF3IGRhdGEgb2YgYSBgUGFyc2UuT2JqZWN0YCBidXQgaXMgbm90IGFuIGFjdHVhbCBpbnN0YW5jZSBvZiBgUGFyc2UuT2JqZWN0YC4gRGVmYXVsdCBpcyBgZmFsc2VgLiA8YnI+PGJyPuKEue+4jyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igd291bGQgYmUgdGhhdCB0aGUgb2JqZWN0IGlzIGNvbnZlcnRlZCB0byBhbiBpbnN0YW5jZSBvZiBgUGFyc2UuT2JqZWN0YCwgc28geW91IHdvdWxkIG5vcm1hbGx5IHNldCB0aGlzIG9wdGlvbiB0byBgdHJ1ZWAuIFRoZSBkZWZhdWx0IGlzIGBmYWxzZWAgYmVjYXVzZSB0aGlzIGlzIGEgdGVtcG9yYXJ5IG9wdGlvbiB0aGF0IGhhcyBiZWVuIGludHJvZHVjZWQgdG8gYXZvaWQgYSBicmVha2luZyBjaGFuZ2Ugd2hlbiBmaXhpbmcgYSBidWcgd2hlcmUgSmF2YVNjcmlwdCBvYmplY3RzIGFyZSBub3QgY29udmVydGVkIHRvIGFjdHVhbCBpbnN0YW5jZXMgb2YgYFBhcnNlLk9iamVjdGAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuY29kZVBhcnNlT2JqZWN0SW5DbG91ZEZ1bmN0aW9uOiA/Ym9vbGVhbjtcbiAgLyogUHVibGljIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uXG4gIDpFTlY6IFBBUlNFX1BVQkxJQ19TRVJWRVJfVVJMICovXG4gIHB1YmxpY1NlcnZlclVSTDogP3N0cmluZztcbiAgLyogVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBhZ2VzOiA/UGFnZXNPcHRpb25zO1xuICAvKiBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21QYWdlczogP0N1c3RvbVBhZ2VzT3B0aW9ucztcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNvbmZpZ3VyYXRpb24gb2JqZWN0ICovXG4gIGxpdmVRdWVyeTogP0xpdmVRdWVyeU9wdGlvbnM7XG4gIC8qIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICA6REVGQVVMVDogMzE1MzYwMDAgKi9cbiAgc2Vzc2lvbkxlbmd0aDogP251bWJlcjtcbiAgLyogV2hldGhlciBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZXh0ZW5kIGEgdmFsaWQgc2Vzc2lvbiBieSB0aGUgc2Vzc2lvbkxlbmd0aC4gSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2Vzc2lvbiB1cGRhdGVzIGluIHRoZSBkYXRhYmFzZSwgYSBzZXNzaW9uIHdpbGwgb25seSBiZSBleHRlbmRlZCB3aGVuIGEgcmVxdWVzdCBpcyByZWNlaXZlZCBhZnRlciBhdCBsZWFzdCBoYWxmIG9mIHRoZSBjdXJyZW50IHNlc3Npb24ncyBsaWZldGltZSBoYXMgcGFzc2VkLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZXh0ZW5kU2Vzc2lvbk9uVXNlOiA/Ym9vbGVhbjtcbiAgLyogRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIGRlZmF1bHRMaW1pdDogP251bWJlcjtcbiAgLyogTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkICovXG4gIG1heExpbWl0OiA/bnVtYmVyO1xuICAvKiBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gIDpERUZBVUxUOiA1MDAwICovXG4gIGNhY2hlVFRMOiA/bnVtYmVyO1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gIDpERUZBVUxUOiAxMDAwMCAqL1xuICBjYWNoZU1heFNpemU6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+PGJyPlxuICBJZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLlxuICA8YnI+PGJyPlxuICDimqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGRpcmVjdEFjY2VzczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZXMgdGhlIGRlZmF1bHQgZXhwcmVzcyBlcnJvciBoYW5kbGVyIGZvciBhbGwgZXJyb3JzXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXG4gIDpERUZBVUxUOiAxMCAqL1xuICBvYmplY3RJZFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gIDpFTlY6IFBPUlRcbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogVGhlIGhvc3QgdG8gc2VydmUgUGFyc2VTZXJ2ZXIgb24sIGRlZmF1bHRzIHRvIDAuMC4wLjBcbiAgOkRFRkFVTFQ6IDAuMC4wLjAgKi9cbiAgaG9zdDogP3N0cmluZztcbiAgLyogTW91bnQgcGF0aCBmb3IgdGhlIHNlcnZlciwgZGVmYXVsdHMgdG8gL3BhcnNlXG4gIDpERUZBVUxUOiAvcGFyc2UgKi9cbiAgbW91bnRQYXRoOiA/c3RyaW5nO1xuICAvKiBSdW4gd2l0aCBjbHVzdGVyLCBvcHRpb25hbGx5IHNldCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBkZWZhdWx0IHRvIG9zLmNwdXMoKS5sZW5ndGggKi9cbiAgY2x1c3RlcjogP051bWJlck9yQm9vbGVhbjtcbiAgLyogbWlkZGxld2FyZSBmb3IgZXhwcmVzcyBzZXJ2ZXIsIGNhbiBiZSBzdHJpbmcgb3IgZnVuY3Rpb24gKi9cbiAgbWlkZGxld2FyZTogPygoKCkgPT4gdm9pZCkgfCBzdHJpbmcpO1xuICAvKiBUaGUgdHJ1c3QgcHJveHkgc2V0dGluZ3MuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzZXR1cCBvZiB0aGUgcmV2ZXJzZSBwcm94eSwgc2luY2UgdGhpcyBzZXR0aW5nIHdpbGwgdHJ1c3QgdmFsdWVzIHByb3ZpZGVkIGluIHRoZSBQYXJzZSBTZXJ2ZXIgQVBJIHJlcXVlc3QuIFNlZSB0aGUgPGEgaHJlZj1cImh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9ndWlkZS9iZWhpbmQtcHJveGllcy5odG1sXCI+ZXhwcmVzcyB0cnVzdCBwcm94eSBzZXR0aW5nczwvYT4gZG9jdW1lbnRhdGlvbi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHRydXN0UHJveHk6ID9hbnk7XG4gIC8qIFN0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlciAqL1xuICBzdGFydExpdmVRdWVyeVNlcnZlcjogP2Jvb2xlYW47XG4gIC8qIExpdmUgcXVlcnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAod2lsbCBzdGFydCB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcikgKi9cbiAgbGl2ZVF1ZXJ5U2VydmVyT3B0aW9uczogP0xpdmVRdWVyeVNlcnZlck9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIHJlcXVlc3QgaWRlbXBvdGVuY3kgdG8gZGVkdXBsaWNhdGUgaWRlbnRpY2FsIHJlcXVlc3RzIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBuZXR3b3JrIGlzc3Vlcy4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfT1BUSU9OU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaWRlbXBvdGVuY3lPcHRpb25zOiA/SWRlbXBvdGVuY3lPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciBmaWxlIHVwbG9hZHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX09QVElPTlNcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGZpbGVVcGxvYWQ6ID9GaWxlVXBsb2FkT3B0aW9ucztcbiAgLyogRnVsbCBwYXRoIHRvIHlvdXIgR3JhcGhRTCBjdXN0b20gc2NoZW1hLmdyYXBocWwgZmlsZSAqL1xuICBncmFwaFFMU2NoZW1hOiA/c3RyaW5nO1xuICAvKiBNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX01PVU5UX0dSQVBIUUxcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIG1vdW50R3JhcGhRTDogP2Jvb2xlYW47XG4gIC8qIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50LCBkZWZhdWx0cyB0byAvZ3JhcGhxbFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIXG4gIDpERUZBVUxUOiAvZ3JhcGhxbCAqL1xuICBncmFwaFFMUGF0aDogP3N0cmluZztcbiAgLyogRW5hYmxlIHB1YmxpYyBpbnRyb3NwZWN0aW9uIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0dSQVBIUUxfUFVCTElDX0lOVFJPU1BFQ1RJT05cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGdyYXBoUUxQdWJsaWNJbnRyb3NwZWN0aW9uOiA/Ym9vbGVhbjtcbiAgLyogTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgLSBuZXZlciB1c2UgdGhpcyBvcHRpb24gaW4gcHJvZHVjdGlvblxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfUExBWUdST1VORFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRQbGF5Z3JvdW5kOiA/Ym9vbGVhbjtcbiAgLyogTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCwgZGVmYXVsdHMgdG8gL3BsYXlncm91bmRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BMQVlHUk9VTkRfUEFUSFxuICA6REVGQVVMVDogL3BsYXlncm91bmQgKi9cbiAgcGxheWdyb3VuZFBhdGg6ID9zdHJpbmc7XG4gIC8qIERlZmluZWQgc2NoZW1hXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9TQ0hFTUFcbiAgKi9cbiAgc2NoZW1hOiA/U2NoZW1hT3B0aW9ucztcbiAgLyogQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZCAqL1xuICBzZXJ2ZXJDbG9zZUNvbXBsZXRlOiA/KCkgPT4gdm9pZDtcbiAgLyogVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDoge30gKi9cbiAgc2VjdXJpdHk6ID9TZWN1cml0eU9wdGlvbnM7XG4gIC8qIFNldCB0byB0cnVlIGlmIG5ldyB1c2VycyBzaG91bGQgYmUgY3JlYXRlZCB3aXRob3V0IHB1YmxpYyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuZm9yY2VQcml2YXRlVXNlcnM6ID9ib29sZWFuO1xuICAvKiBBbGxvdyBhIHVzZXIgdG8gbG9nIGluIGV2ZW4gaWYgdGhlIDNyZCBwYXJ0eSBhdXRoZW50aWNhdGlvbiB0b2tlbiB0aGF0IHdhcyB1c2VkIHRvIHNpZ24gaW4gdG8gdGhlaXIgYWNjb3VudCBoYXMgZXhwaXJlZC4gSWYgdGhpcyBpcyBzZXQgdG8gYGZhbHNlYCwgdGhlbiB0aGUgdG9rZW4gd2lsbCBiZSB2YWxpZGF0ZWQgZXZlcnkgdGltZSB0aGUgdXNlciBzaWducyBpbiB0byB0aGVpciBhY2NvdW50LiBUaGlzIHJlZmVycyB0byB0aGUgdG9rZW4gdGhhdCBpcyBzdG9yZWQgaW4gdGhlIGBfVXNlci5hdXRoRGF0YWAgZmllbGQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0V4cGlyZWRBdXRoRGF0YVRva2VuOiA/Ym9vbGVhbjtcbiAgLyogQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLlxuICA6REVGQVVMVDogW3tcImtleVwiOlwiX2Jzb250eXBlXCIsXCJ2YWx1ZVwiOlwiQ29kZVwifSx7XCJrZXlcIjpcImNvbnN0cnVjdG9yXCJ9LHtcImtleVwiOlwiX19wcm90b19fXCJ9XSAqL1xuICByZXF1ZXN0S2V5d29yZERlbnlsaXN0OiA/KFJlcXVlc3RLZXl3b3JkRGVueWxpc3RbXSk7XG4gIC8qIE9wdGlvbnMgdG8gbGltaXQgcmVwZWF0ZWQgcmVxdWVzdHMgdG8gUGFyc2UgU2VydmVyIEFQSXMuIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJvdGVjdCBzZW5zaXRpdmUgZW5kcG9pbnRzIHN1Y2ggYXMgYC9yZXF1ZXN0UGFzc3dvcmRSZXNldGAgZnJvbSBicnV0ZS1mb3JjZSBhdHRhY2tzIG9yIFBhcnNlIFNlcnZlciBhcyBhIHdob2xlIGZyb20gZGVuaWFsLW9mLXNlcnZpY2UgKERvUykgYXR0YWNrcy48YnI+PGJyPuKEue+4jyBNaW5kIHRoZSBmb2xsb3dpbmcgbGltaXRhdGlvbnM6PGJyPi0gcmF0ZSBsaW1pdHMgYXBwbGllZCBwZXIgSVAgYWRkcmVzczsgdGhpcyBsaW1pdHMgcHJvdGVjdGlvbiBhZ2FpbnN0IGRpc3RyaWJ1dGVkIGRlbmlhbC1vZi1zZXJ2aWNlIChERG9TKSBhdHRhY2tzIHdoZXJlIG1hbnkgcmVxdWVzdHMgYXJlIGNvbWluZyBmcm9tIHZhcmlvdXMgSVAgYWRkcmVzc2VzPGJyPi0gaWYgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBhcmUgYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBvciByYW4gaW4gYSBjbHVzdGVyLCBlYWNoIGluc3RhbmNlIHdpbGwgY2FsY3VsYXRlIGl0J3Mgb3duIHJlcXVlc3QgcmF0ZXMsIGluZGVwZW5kZW50IGZyb20gb3RoZXIgaW5zdGFuY2VzOyB0aGlzIGxpbWl0cyB0aGUgYXBwbGljYWJpbGl0eSBvZiB0aGlzIGZlYXR1cmUgd2hlbiB1c2luZyBhIGxvYWQgYmFsYW5jZXIgYW5kIGFub3RoZXIgcmF0ZSBsaW1pdGluZyBzb2x1dGlvbiB0aGF0IHRha2VzIHJlcXVlc3RzIGFjcm9zcyBhbGwgaW5zdGFuY2VzIGludG8gYWNjb3VudCBtYXkgYmUgbW9yZSBzdWl0YWJsZTxicj4tIHRoaXMgZmVhdHVyZSBwcm92aWRlcyBiYXNpYyBwcm90ZWN0aW9uIGFnYWluc3QgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcywgYnV0IGEgbW9yZSBzb3BoaXN0aWNhdGVkIHNvbHV0aW9uIHdvcmtzIGVhcmxpZXIgaW4gdGhlIHJlcXVlc3QgZmxvdyBhbmQgcHJldmVudHMgYSBtYWxpY2lvdXMgcmVxdWVzdHMgdG8gZXZlbiByZWFjaCBhIHNlcnZlciBpbnN0YW5jZTsgaXQncyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gaW1wbGVtZW50IGEgc29sdXRpb24gYWNjb3JkaW5nIHRvIGFyY2hpdGVjdHVyZSBhbmQgdXNlciBjYXNlLlxuICA6REVGQVVMVDogW10gKi9cbiAgcmF0ZUxpbWl0OiA/KFJhdGVMaW1pdE9wdGlvbnNbXSk7XG4gIC8qIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSByZXF1ZXN0IGNvbnRleHQgdXNpbmcgaW52ZXJzaW9uIG9mIGNvbnRyb2wvZGVwZW5kZW5jeSBpbmplY3Rpb24uKi9cbiAgcmVxdWVzdENvbnRleHRNaWRkbGV3YXJlOiA/KHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhdGVMaW1pdE9wdGlvbnMge1xuICAvKiBUaGUgcGF0aCBvZiB0aGUgQVBJIHJvdXRlIHRvIGJlIHJhdGUgbGltaXRlZC4gUm91dGUgcGF0aHMsIGluIGNvbWJpbmF0aW9uIHdpdGggYSByZXF1ZXN0IG1ldGhvZCwgZGVmaW5lIHRoZSBlbmRwb2ludHMgYXQgd2hpY2ggcmVxdWVzdHMgY2FuIGJlIG1hZGUuIFJvdXRlIHBhdGhzIGNhbiBiZSBzdHJpbmdzLCBzdHJpbmcgcGF0dGVybnMsIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbi4gU2VlOiBodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvcm91dGluZy5odG1sICovXG4gIHJlcXVlc3RQYXRoOiBzdHJpbmc7XG4gIC8qIFRoZSB3aW5kb3cgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgd2l0aGluIHdoaWNoIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgc2V0IGluIGByZXF1ZXN0Q291bnRgIGNhbiBiZSBtYWRlIGJlZm9yZSB0aGUgcmF0ZSBsaW1pdCBpcyBhcHBsaWVkLiAqL1xuICByZXF1ZXN0VGltZVdpbmRvdzogP251bWJlcjtcbiAgLyogVGhlIG51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGNhbiBiZSBtYWRlIHBlciBJUCBhZGRyZXNzIHdpdGhpbiB0aGUgdGltZSB3aW5kb3cgc2V0IGluIGByZXF1ZXN0VGltZVdpbmRvd2AgYmVmb3JlIHRoZSByYXRlIGxpbWl0IGlzIGFwcGxpZWQuICovXG4gIHJlcXVlc3RDb3VudDogP251bWJlcjtcbiAgLyogVGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gdGhlIGJvZHkgb2YgdGhlIEhUVFAgNDI5IHJlc3BvbnNlIHdoZW4gdGhlIHJhdGUgbGltaXQgaXMgaGl0LiBEZWZhdWx0IGlzIGBUb28gbWFueSByZXF1ZXN0cy5gLlxuICA6REVGQVVMVDogVG9vIG1hbnkgcmVxdWVzdHMuICovXG4gIGVycm9yUmVzcG9uc2VNZXNzYWdlOiA/c3RyaW5nO1xuICAvKiBPcHRpb25hbCwgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2RzIHRvIHdoaWNoIHRoZSByYXRlIGxpbWl0IHNob3VsZCBiZSBhcHBsaWVkLCBkZWZhdWx0IGlzIGFsbCBtZXRob2RzLiAqL1xuICByZXF1ZXN0TWV0aG9kczogPyhzdHJpbmdbXSk7XG4gIC8qIE9wdGlvbmFsLCBpZiBgdHJ1ZWAgdGhlIHJhdGUgbGltaXQgd2lsbCBhbHNvIGFwcGx5IHRvIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCwgZGVmYXVsdCBpcyBgZmFsc2VgLiBOb3RlIHRoYXQgYSBwdWJsaWMgQ2xvdWQgQ29kZSBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIGludGVybmFsIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCBtYXkgY2lyY3VtdmVudCByYXRlIGxpbWl0aW5nIGFuZCBiZSB2dWxuZXJhYmxlIHRvIGF0dGFja3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpbmNsdWRlTWFzdGVyS2V5OiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwsIGlmIGB0cnVlYCB0aGUgcmF0ZSBsaW1pdCB3aWxsIGFsc28gYXBwbHkgdG8gcmVxdWVzdHMgdGhhdCBhcmUgbWFkZSBpbiBieSBDbG91ZCBDb2RlLCBkZWZhdWx0IGlzIGBmYWxzZWAuIE5vdGUgdGhhdCBhIHB1YmxpYyBDbG91ZCBDb2RlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaW50ZXJuYWwgcmVxdWVzdHMgbWF5IGNpcmN1bXZlbnQgcmF0ZSBsaW1pdGluZyBhbmQgYmUgdnVsbmVyYWJsZSB0byBhdHRhY2tzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaW5jbHVkZUludGVybmFsUmVxdWVzdHM6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbCwgdGhlIFVSTCBvZiB0aGUgUmVkaXMgc2VydmVyIHRvIHN0b3JlIHJhdGUgbGltaXQgZGF0YS4gVGhpcyBhbGxvd3MgdG8gcmF0ZSBsaW1pdCByZXF1ZXN0cyBmb3IgbXVsdGlwbGUgc2VydmVycyBieSBjYWxjdWxhdGluZyB0aGUgc3VtIG9mIGFsbCByZXF1ZXN0cyBhY3Jvc3MgYWxsIHNlcnZlcnMuIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlIHNlcnZlcnMgYXJlIHByb2Nlc3NpbmcgcmVxdWVzdHMgYmVoaW5kIGEgbG9hZCBiYWxhbmNlci4gRm9yIGV4YW1wbGUsIHRoZSBsaW1pdCBvZiAxMCByZXF1ZXN0cyBpcyByZWFjaGVkIGlmIGVhY2ggb2YgMiBzZXJ2ZXJzIHByb2Nlc3NlZCA1IHJlcXVlc3RzLlxuICAgKi9cbiAgcmVkaXNVcmw6ID9zdHJpbmc7XG4gIC8qXG4gIFRoZSB0eXBlIG9mIHJhdGUgbGltaXQgdG8gYXBwbHkuIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgPGJyPjxicj5cbiAgLSBgZ2xvYmFsYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIG1hZGUgYnkgYWxsIHVzZXJzIDxicj5cbiAgLSBgaXBgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSByZXF1ZXN0IDxicj5cbiAgLSBgdXNlcmA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIHVzZXIgSUQgb2YgdGhlIHJlcXVlc3QgPGJyPlxuICAtIGBzZXNzaW9uYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgc2Vzc2lvbiB0b2tlbiBvZiB0aGUgcmVxdWVzdCA8YnI+XG4gIDxicj48YnI+XG4gIDpkZWZhdWx0OiAnaXAnXG4gICovXG4gIHpvbmU6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGNoZWNrIGZvciB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2s6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2tMb2c6ID9ib29sZWFuO1xuICAvKiBUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuICovXG4gIGNoZWNrR3JvdXBzOiA/KENoZWNrR3JvdXBbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiB0aGUgcGFnZXMgcm91dGVyIHNob3VsZCBiZSBlbmFibGVkOyB0aGlzIGlzIHJlcXVpcmVkIGZvciBhbnkgb2YgdGhlIHBhZ2VzIG9wdGlvbnMgdG8gdGFrZSBlZmZlY3QuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVSb3V0ZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIHBhZ2VzIHNob3VsZCBiZSBsb2NhbGl6ZWQ7IHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBjdXN0b20gcGFnZSByZWRpcmVjdHMuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVMb2NhbGl6YXRpb246ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGZvciBsb2NhbGl6YXRpb247IHRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGZpbGwgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGFjY29yZGluZyB0byB0aGUgbG9jYWxlLiAqL1xuICBsb2NhbGl6YXRpb25Kc29uUGF0aDogP3N0cmluZztcbiAgLyogVGhlIGZhbGxiYWNrIGxvY2FsZSBmb3IgbG9jYWxpemF0aW9uIGlmIG5vIG1hdGNoaW5nIHRyYW5zbGF0aW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiBwcm92aWRpbmcgdHJhbnNsYXRpb24gcmVzb3VyY2VzIHZpYSBKU09OIGZpbGUuXG4gIDpERUZBVUxUOiBlbiAqL1xuICBsb2NhbGl6YXRpb25GYWxsYmFja0xvY2FsZTogP3N0cmluZztcbiAgLyogVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uXG4gIDpERUZBVUxUOiB7fSAqL1xuICBwbGFjZWhvbGRlcnM6ID9PYmplY3Q7XG4gIC8qIElzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBmb3JjZVJlZGlyZWN0OiA/Ym9vbGVhbjtcbiAgLyogVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlxuICA6REVGQVVMVDogLi9wdWJsaWMgKi9cbiAgcGFnZXNQYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgQVBJIGVuZHBvaW50IGZvciB0aGUgcGFnZXMuIERlZmF1bHQgaXMgJ2FwcHMnLlxuICA6REVGQVVMVDogYXBwcyAqL1xuICBwYWdlc0VuZHBvaW50OiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMcyB0byB0aGUgY3VzdG9tIHBhZ2VzLlxuICA6REVGQVVMVDoge30gKi9cbiAgY3VzdG9tVXJsczogP1BhZ2VzQ3VzdG9tVXJsc09wdGlvbnM7XG4gIC8qIFRoZSBjdXN0b20gcm91dGVzLlxuICA6REVGQVVMVDogW10gKi9cbiAgY3VzdG9tUm91dGVzOiA/KFBhZ2VzUm91dGVbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNSb3V0ZSB7XG4gIC8qIFRoZSByb3V0ZSBwYXRoLiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qIFRoZSByb3V0ZSBtZXRob2QsIGUuZy4gJ0dFVCcgb3IgJ1BPU1QnLiAqL1xuICBtZXRob2Q6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIGhhbmRsZXIgdGhhdCBpcyBhbiBhc3luYyBmdW5jdGlvbi4gKi9cbiAgaGFuZGxlcjogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc0N1c3RvbVVybHNPcHRpb25zIHtcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0LiAqL1xuICBwYXNzd29yZFJlc2V0OiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLiAqL1xuICBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLiAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBzZW5kIGZhaWwuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gcmVzZW5kIGxpbmsgLT4gc3VjY2Vzcy4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVBhZ2VzT3B0aW9ucyB7XG4gIC8qIGludmFsaWQgbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZExpbms6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgZmFpbCBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRGYWlsOiA/c3RyaW5nO1xuICAvKiBjaG9vc2UgcGFzc3dvcmQgcGFnZSBwYXRoICovXG4gIGNob29zZVBhc3N3b3JkOiA/c3RyaW5nO1xuICAvKiB2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIGxpbmtTZW5kU3VjY2VzczogP3N0cmluZztcbiAgLyogdmVyaWZ5IGVtYWlsIHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIHZlcmlmeUVtYWlsU3VjY2VzczogP3N0cmluZztcbiAgLyogcGFzc3dvcmQgcmVzZXQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgcGFzc3dvcmRSZXNldFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIGludmFsaWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBleHBpcmVkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCAqL1xuICBleHBpcmVkVmVyaWZpY2F0aW9uTGluazogP3N0cmluZztcbiAgLyogaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkUGFzc3dvcmRSZXNldExpbms6ID9zdHJpbmc7XG4gIC8qIGZvciBtYXNraW5nIHVzZXItZmFjaW5nIHBhZ2VzICovXG4gIHBhcnNlRnJhbWVVUkw6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVF1ZXJ5T3B0aW9ucyB7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjbGFzc05hbWVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9MSVZFUVVFUllfQ0xBU1NOQU1FUyAqL1xuICBjbGFzc05hbWVzOiA/KHN0cmluZ1tdKTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9ucyAqL1xuICByZWRpc09wdGlvbnM6ID9hbnk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTCAqL1xuICByZWRpc1VSTDogP3N0cmluZztcbiAgLyogTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyICovXG4gIHB1YlN1YkFkYXB0ZXI6ID9BZGFwdGVyPFB1YlN1YkFkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIHtcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBhcHBJZCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIGFwcElkLiovXG4gIGFwcElkOiA/c3RyaW5nO1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIG1hc3RlcktleSBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIG1hc3RlcktleS4qL1xuICBtYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgc2VydmVyVVJMIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgc2VydmVyVVJMLiovXG4gIHNlcnZlclVSTDogP3N0cmluZztcbiAgLyogQSBKU09OIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhIHdoaXRlbGlzdCBvZiBrZXlzLiBJdCBpcyB1c2VkIGZvciB2YWxpZGF0aW5nIGNsaWVudHMgd2hlbiB0aGV5IHRyeSB0byBjb25uZWN0IHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLiovXG4gIGtleVBhaXJzOiA/YW55O1xuICAvKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gcGluZy9wb25nIGZyYW1lcy4gVGhlIFdlYlNvY2tldCBzZXJ2ZXIgc2VuZHMgcGluZy9wb25nIGZyYW1lcyB0byB0aGUgY2xpZW50cyB0byBrZWVwIHRoZSBXZWJTb2NrZXQgYWxpdmUuIFRoaXMgdmFsdWUgZGVmaW5lcyB0aGUgaW50ZXJ2YWwgb2YgdGhlIHBpbmcvcG9uZyBmcmFtZSBmcm9tIHRoZSBzZXJ2ZXIgdG8gY2xpZW50cywgZGVmYXVsdHMgdG8gMTAgKiAxMDAwIG1zICgxMCBzKS4qL1xuICB3ZWJzb2NrZXRUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuKi9cbiAgY2FjaGVUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIFdlIHN1cHBvcnQgVkVSQk9TRSwgSU5GTywgRVJST1IsIE5PTkUsIGRlZmF1bHRzIHRvIElORk8uKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9ucyAqL1xuICByZWRpc09wdGlvbnM6ID9hbnk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTCAqL1xuICByZWRpc1VSTDogP3N0cmluZztcbiAgLyogTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyICovXG4gIHB1YlN1YkFkYXB0ZXI6ID9BZGFwdGVyPFB1YlN1YkFkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVtcG90ZW5jeU9wdGlvbnMge1xuICAvKiBBbiBhcnJheSBvZiBwYXRocyBmb3Igd2hpY2ggdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJsZWQuIFRoZSBtb3VudCBwYXRoIG11c3Qgbm90IGJlIGluY2x1ZGVkLCBmb3IgZXhhbXBsZSBpbnN0ZWFkIG9mIGAvcGFyc2UvZnVuY3Rpb25zL215RnVuY3Rpb25gIHNwZWNpZml5IGBmdW5jdGlvbnMvbXlGdW5jdGlvbmAuIFRoZSBlbnRyaWVzIGFyZSBpbnRlcnByZXRlZCBhcyByZWd1bGFyIGV4cHJlc3Npb24sIGZvciBleGFtcGxlIGBmdW5jdGlvbnMvLipgIG1hdGNoZXMgYWxsIGZ1bmN0aW9ucywgYGpvYnMvLipgIG1hdGNoZXMgYWxsIGpvYnMsIGBjbGFzc2VzLy4qYCBtYXRjaGVzIGFsbCBjbGFzc2VzLCBgLipgIG1hdGNoZXMgYWxsIHBhdGhzLlxuICA6REVGQVVMVDogW10gKi9cbiAgcGF0aHM6ID8oc3RyaW5nW10pO1xuICAvKiBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBhZnRlciB3aGljaCBhIHJlcXVlc3QgcmVjb3JkIGlzIGRpc2NhcmRlZCBmcm9tIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gMzAwcy5cbiAgOkRFRkFVTFQ6IDMwMCAqL1xuICB0dGw6ID9udW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudExvY2tvdXRPcHRpb25zIHtcbiAgLyogU2V0IHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzIHRoYXQgYSBsb2NrZWQtb3V0IGFjY291bnQgcmVtYWlucyBsb2NrZWQgb3V0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGJlY29taW5nIHVubG9ja2VkLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMDAwYC4gKi9cbiAgZHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGZhaWxlZCBzaWduLWluIGF0dGVtcHRzIHRoYXQgd2lsbCBjYXVzZSBhIHVzZXIgYWNjb3VudCB0byBiZSBsb2NrZWQuIElmIHRoZSBhY2NvdW50IGlzIGxvY2tlZC4gVGhlIGFjY291bnQgd2lsbCB1bmxvY2sgYWZ0ZXIgdGhlIGR1cmF0aW9uIHNldCBpbiB0aGUgYGR1cmF0aW9uYCBvcHRpb24gaGFzIHBhc3NlZCBhbmQgbm8gZnVydGhlciBsb2dpbiBhdHRlbXB0cyBoYXZlIGJlZW4gbWFkZS5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLiAqL1xuICB0aHJlc2hvbGQ6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb25zIGBkdXJhdGlvbmAgYW5kIGB0aHJlc2hvbGRgIHRvIGJlIHNldC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc3dvcmRQb2xpY3lPcHRpb25zIHtcbiAgLyogU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC5cbiAgPGJyPjxicj5cbiAgSWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yUGF0dGVybjogP3N0cmluZztcbiAgLyogICAqL1xuICAvKiBTZXQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHBhc3N3b3JkIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuICovXG4gIHZhbGlkYXRvckNhbGxiYWNrOiA/KCkgPT4gdm9pZDtcbiAgLyogU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYFBhc3N3b3JkIGRvZXMgbm90IG1lZXQgdGhlIFBhc3N3b3JkIFBvbGljeSByZXF1aXJlbWVudHMuYCAqL1xuICB2YWxpZGF0aW9uRXJyb3I6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWxsb3cgdGhlIHVzZXJuYW1lIGFzIHBhcnQgb2YgdGhlIHBhc3N3b3JkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkb05vdEFsbG93VXNlcm5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uICovXG4gIG1heFBhc3N3b3JkQWdlOiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBwcmV2aW91cyBwYXNzd29yZCB0aGF0IHdpbGwgbm90IGJlIGFsbG93ZWQgdG8gYmUgc2V0IGFzIG5ldyBwYXNzd29yZC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgMGAsIG5vIHByZXZpb3VzIHBhc3N3b3JkcyB3aWxsIGJlIGNvbnNpZGVyZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLlxuICA8YnI+XG4gIERlZmF1bHQgaXMgYDBgLlxuICAqL1xuICBtYXhQYXNzd29yZEhpc3Rvcnk6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy5cbiAgPGJyPjxicj5cbiAgRm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHVuZGVmaW5lZGAuXG4gICovXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHJlcXVlc3QgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIHNob3VsZCByZXR1cm4gYSBzdWNjZXNzIHJlc3BvbnNlIGV2ZW4gaWYgdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MgaXMgaW52YWxpZCwgb3IgYGZhbHNlYCBpZiB0aGUgcmVxdWVzdCBzaG91bGQgcmV0dXJuIGFuIGVycm9yIHJlc3BvbnNlIGlmIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICByZXNldFBhc3N3b3JkU3VjY2Vzc09uSW52YWxpZEVtYWlsOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkT3B0aW9ucyB7XG4gIC8qIFNldHMgdGhlIGFsbG93ZWQgZmlsZSBleHRlbnNpb25zIGZvciB1cGxvYWRpbmcgZmlsZXMuIFRoZSBleHRlbnNpb24gaXMgZGVmaW5lZCBhcyBhbiBhcnJheSBvZiBmaWxlIGV4dGVuc2lvbnMsIG9yIGEgcmVnZXggcGF0dGVybi48YnI+PGJyPkl0IGlzIHJlY29tbWVuZGVkIHRvIHJlc3RyaWN0IHRoZSBmaWxlIHVwbG9hZCBleHRlbnNpb25zIGFzIG11Y2ggYXMgcG9zc2libGUuIEhUTUwgZmlsZXMgYXJlIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgYXMgdGhleSBtYXkgYmUgdXNlZCBieSBhbiBhdHRhY2tlciB3aG8gdXBsb2FkcyBhIEhUTUwgZm9ybSB0byBsb29rIGxlZ2l0aW1hdGUgdW5kZXIgeW91ciBhcHAncyBkb21haW4gbmFtZSwgb3IgdG8gY29tcHJvbWlzZSB0aGUgc2Vzc2lvbiB0b2tlbiBvZiBhbm90aGVyIHVzZXIgdmlhIGFjY2Vzc2luZyB0aGUgYnJvd3NlcidzIGxvY2FsIHN0b3JhZ2UuPGJyPjxicj5EZWZhdWx0cyB0byBgXig/IShofEgpKHR8VCkobXxNKShsfEwpPyQpYCB3aGljaCBhbGxvd3MgYW55IGZpbGUgZXh0ZW5zaW9uIGV4Y2VwdCBIVE1MIGZpbGVzLlxuICA6REVGQVVMVDogW1wiXig/IShofEgpKHR8VCkobXxNKShsfEwpPyQpXCJdICovXG4gIGZpbGVFeHRlbnNpb25zOiA/KHN0cmluZ1tdKTtcbiAgLyogIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUZvckFub255bW91c1VzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yUHVibGljOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZU9wdGlvbnMge1xuICAvKiBFbmFibGVzIGRhdGFiYXNlIHJlYWwtdGltZSBob29rcyB0byB1cGRhdGUgc2luZ2xlIHNjaGVtYSBjYWNoZS4gU2V0IHRvIGB0cnVlYCBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEZhaWxpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSBhIHNjaGVtYSBjaGFuZ2UgdG8gbm90IHByb3BhZ2F0ZSB0byBhbGwgaW5zdGFuY2VzIGFuZCByZS1zeW5jaW5nIHdpbGwgb25seSBoYXBwZW4gd2hlbiB0aGUgaW5zdGFuY2VzIHJlc3RhcnQuIFRvIHVzZSB0aGlzIGZlYXR1cmUgd2l0aCBNb25nb0RCLCBhIHJlcGxpY2Egc2V0IGNsdXN0ZXIgd2l0aCBbY2hhbmdlIHN0cmVhbV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9jaGFuZ2VTdHJlYW1zLyNhdmFpbGFiaWxpdHkpIHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVTY2hlbWFIb29rczogP2Jvb2xlYW47XG4gIC8qIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSBzY2hlbWEgY2FjaGUgZXhwaXJlcyBhbmQgd2lsbCBiZSByZWZldGNoZWQgZnJvbSB0aGUgZGF0YWJhc2UuIFVzZSB0aGlzIG9wdGlvbiBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEEgbG93IGR1cmF0aW9uIHdpbGwgY2F1c2UgdGhlIHNjaGVtYSBjYWNoZSB0byBiZSB1cGRhdGVkIHRvbyBvZnRlbiwgY2F1c2luZyB1bm5lY2Vzc2FyeSBkYXRhYmFzZSByZWFkcy4gQSBoaWdoIGR1cmF0aW9uIHdpbGwgY2F1c2UgdGhlIHNjaGVtYSB0byBiZSB1cGRhdGVkIHRvbyByYXJlbHksIGluY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdW50aWwgc2NoZW1hIGNoYW5nZXMgcHJvcGFnYXRlIHRvIGFsbCBzZXJ2ZXIgaW5zdGFuY2VzLiBUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgb3IgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgb3B0aW9uIGBlbmFibGVTY2hlbWFIb29rc2AuIERlZmF1bHQgaXMgaW5maW5pdGUgd2hpY2ggbWVhbnMgdGhlIHNjaGVtYSBjYWNoZSBuZXZlciBleHBpcmVzLiAqL1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgd2hldGhlciB0byByZXRyeSBmYWlsZWQgd3JpdGVzLiAqL1xuICByZXRyeVdyaXRlczogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IGEgY3VtdWxhdGl2ZSB0aW1lIGxpbWl0IGluIG1pbGxpc2Vjb25kcyBmb3IgcHJvY2Vzc2luZyBvcGVyYXRpb25zIG9uIGEgY3Vyc29yLiAqL1xuICBtYXhUaW1lTVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHRoZSBtYXhpbXVtIHJlcGxpY2F0aW9uIGxhZyBmb3IgcmVhZHMgZnJvbSBzZWNvbmRhcnkgbm9kZXMuKi9cbiAgbWF4U3RhbGVuZXNzU2Vjb25kczogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtaW5Qb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtYXhQb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IHRvIGVzdGFibGlzaCBhIHNpbmdsZSBUQ1Agc29ja2V0IGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBiZWZvcmUgcmFpc2luZyBhbiBlcnJvci4gU3BlY2lmeWluZyAwIGRpc2FibGVzIHRoZSBjb25uZWN0aW9uIHRpbWVvdXQuICovXG4gIGNvbm5lY3RUaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgc3BlbnQgYXR0ZW1wdGluZyB0byBzZW5kIG9yIHJlY2VpdmUgb24gYSBzb2NrZXQgYmVmb3JlIHRpbWluZyBvdXQuIFNwZWNpZnlpbmcgMCBtZWFucyBubyB0aW1lb3V0LiAqL1xuICBzb2NrZXRUaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHdoZXRoZXIgdGhlIHNvY2tldCBhdHRlbXB0cyB0byBjb25uZWN0IHRvIElQdjYgYW5kIElQdjQgYWRkcmVzc2VzIHVudGlsIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4gSWYgYXZhaWxhYmxlLCB0aGUgZHJpdmVyIHdpbGwgc2VsZWN0IHRoZSBmaXJzdCBJUHY2IGFkZHJlc3MuICovXG4gIGF1dG9TZWxlY3RGYW1pbHk6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBhIGNvbm5lY3Rpb24gYXR0ZW1wdCB0byBmaW5pc2ggYmVmb3JlIHRyeWluZyB0aGUgbmV4dCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIGF1dG9TZWxlY3RGYW1pbHkgb3B0aW9uLiBJZiBzZXQgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiAxMCwgdGhlIHZhbHVlIDEwIGlzIHVzZWQgaW5zdGVhZC4gKi9cbiAgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdmFsaWRhdGlvbiBvZiBpbmRleCBmaWVsZHMuIFdoZW4gZGlzYWJsZWQsIGluZGV4ZXMgY2FuIGJlIGNyZWF0ZWQgZXZlbiBpZiB0aGUgZmllbGRzIGRvIG5vdCBleGlzdCBpbiB0aGUgc2NoZW1hLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjcmVhdGluZyBpbmRleGVzIG9uIGZpZWxkcyB0aGF0IHdpbGwgYmUgYWRkZWQgbGF0ZXIuICovXG4gIGRpc2FibGVJbmRleEZpZWxkVmFsaWRhdGlvbjogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEFkYXB0ZXIge1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlXG4gIDpFTlY6XG4gICovXG4gIGVuYWJsZWQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0xldmVscyB7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIFRyaWdnZXJzIGBhZnRlclNhdmVgLCBgYWZ0ZXJEZWxldGVgLCBgYWZ0ZXJGaW5kYCwgYGFmdGVyTG9nb3V0YC4gRGVmYXVsdCBpcyBgaW5mb2AuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIHRyaWdnZXJBZnRlcjogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIHN1Y2Nlc3MuIERlZmF1bHQgaXMgYGluZm9gLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICB0cmlnZ2VyQmVmb3JlU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuXG4gIDpERUZBVUxUOiBlcnJvclxuICAqL1xuICB0cmlnZ2VyQmVmb3JlRXJyb3I6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBzdWNjZXNzLiBEZWZhdWx0IGlzIGBpbmZvYC5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgY2xvdWRGdW5jdGlvblN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBlcnJvci4gRGVmYXVsdCBpcyBgZXJyb3JgLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgY2xvdWRGdW5jdGlvbkVycm9yOiA/c3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQUFBLGlCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gUGFyc2UgU2VydmVyLjxicj48YnI+4pqg77iPIENlcnRhaW4gc2VydmVyIGZlYXR1cmVzIG9yIGFkYXB0ZXJzIG1heSByZXF1aXJlIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC4gSWYgYSBmZWF0dXJlIHJlcXVpcmVzIHRoaXMsIGl0IGlzIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSW4gdGhhdCBjYXNlIGVuc3VyZSB0aGF0IHRoZSBVUkwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfVVJMICovXG4gIHNlcnZlclVSTDogc3RyaW5nO1xuICAvKiBQYXJzZSBTZXJ2ZXIgbWFrZXMgYSBIVFRQIHJlcXVlc3QgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAgYXQgdGhlIGVuZCBvZiBpdHMgbGF1bmNoIHJvdXRpbmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGxhdW5jaCBzdWNjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBjYW4gYmUgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgc2VydmVyIFVSTCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLCBzdWNoIGFzIHdoZW4gcnVubmluZyBiZWhpbmQgYSBmaXJld2FsbCBvciBpbiBjZXJ0YWluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLjxicj48YnI+4pqg77iPIFNlcnZlciBVUkwgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICB2ZXJpZnlTZXJ2ZXJVcmw6ID9ib29sZWFuO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1hc3RlciBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1hc3RlciBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFzdGVyIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1hc3RlcktleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIHRoZSB1c2Ugb2YgbWFpbnRlbmFuY2Uga2V5IHBlcm1pc3Npb25zIHRvIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMgb3IgcmFuZ2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGUgYFsnMTAuMC4wLjEnLCAnMTAuMC4wLjInXWAuIFlvdSBjYW4gYWxzbyB1c2UgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgcmFuZ2UsIGZvciBleGFtcGxlIGBbJzEwLjAuMS4wLzI0J11gLjxicj48YnI+PGI+U3BlY2lhbCBzY2VuYXJpb3M6PC9iPjxicj4tIFNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBtZWFucyB0aGF0IHRoZSBtYWludGVuYW5jZSBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFpbnRlbmFuY2Uga2V5IGFuZCBlZmZlY3RpdmVseSBkaXNhYmxlcyB0aGUgSVAgZmlsdGVyLjxicj48YnI+PGI+Q29uc2lkZXJhdGlvbnM6PC9iPjxicj4tIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFyZSBub3QgY29tcGFyZWQgYWdhaW5zdCBlYWNoIG90aGVyLiBFYWNoIElQIHZlcnNpb24gKElQdjQgYW5kIElQdjYpIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgc2VwYXJhdGVseS4gRm9yIGV4YW1wbGUsIGBbJzAuMC4wLjAvMCddYCBhbGxvd3MgYW55IElQdjQgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjYgYWRkcmVzcy4gQ29udmVyc2VseSwgYFsnOjowJ11gIGFsbG93cyBhbnkgSVB2NiBhZGRyZXNzIGFuZCBibG9ja3MgZXZlcnkgSVB2NCBhZGRyZXNzLjxicj4tIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBJUCB2ZXJzaW9uIGluIHVzZSBkZXBlbmRzIG9uIHRoZSBuZXR3b3JrIHN0YWNrIG9mIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBQYXJzZSBTZXJ2ZXIgcnVucy4gQSBsb2NhbCBlbnZpcm9ubWVudCBtYXkgdXNlIGEgZGlmZmVyZW50IElQIHZlcnNpb24gdGhhbiBhIHJlbW90ZSBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGl0J3MgcG9zc2libGUgdGhhdCBsb2NhbGx5IHRoZSB2YWx1ZSBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIHRoZSByZXF1ZXN0IElQIGJlY2F1c2UgdGhlIGVudmlyb25tZW50IGlzIHVzaW5nIElQdjQsIGJ1dCB3aGVuIFBhcnNlIFNlcnZlciBpcyBkZXBsb3llZCByZW1vdGVseSB0aGUgcmVxdWVzdCBJUCBpcyBibG9ja2VkIGJlY2F1c2UgdGhlIHJlbW90ZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY2Ljxicj4tIFdoZW4gc2V0dGluZyB0aGUgb3B0aW9uIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGUgbm90YXRpb24gaXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLCBmb3IgZXhhbXBsZSBgXCIwLjAuMC4wLzAsOjowXCJgLjxicj4tIElQdjYgem9uZSBpbmRpY2VzIChgJWAgc3VmZml4KSBhcmUgbm90IHN1cHBvcnRlZCwgZm9yIGV4YW1wbGUgYGZlODA6OjElZXRoMGAsIGBmZTgwOjoxJTFgIG9yIGA6OjElbG9gLjxicj48YnI+RGVmYXVsdHMgdG8gYFsnMTI3LjAuMC4xJywgJzo6MSddYCB3aGljaCBtZWFucyB0aGF0IG9ubHkgYGxvY2FsaG9zdGAsIHRoZSBzZXJ2ZXIgaW5zdGFuY2Ugb24gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMsIGlzIGFsbG93ZWQgdG8gdXNlIHRoZSBtYWludGVuYW5jZSBrZXkuXG4gIDpERUZBVUxUOiBbXCIxMjcuMC4wLjFcIixcIjo6MVwiXSAqL1xuICBtYWludGVuYW5jZUtleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIFNldHMgdGhlIGFwcCBuYW1lICovXG4gIGFwcE5hbWU6ID9zdHJpbmc7XG4gIC8qIEFkZCBoZWFkZXJzIHRvIEFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMgKi9cbiAgYWxsb3dIZWFkZXJzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyBvcmlnaW5zIGZvciBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIFRoaXMgY2FuIGJlIGEgc3RyaW5nIGZvciBhIHNpbmdsZSBvcmlnaW4gb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBmb3IgbXVsdGlwbGUgb3JpZ2lucy4gKi9cbiAgYWxsb3dPcmlnaW46ID9TdHJpbmdPclN0cmluZ0FycmF5O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljcyAqL1xuICBhbmFseXRpY3NBZGFwdGVyOiA/QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtICovXG4gIGZpbGVzQWRhcHRlcjogP0FkYXB0ZXI8RmlsZXNBZGFwdGVyPjtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zICovXG4gIHB1c2g6ID9hbnk7XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBzY2hlZHVsZWRQdXNoOiA/Ym9vbGVhbjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0gKi9cbiAgbG9nZ2VyQWRhcHRlcjogP0FkYXB0ZXI8TG9nZ2VyQWRhcHRlcj47XG4gIC8qIExvZyBhcyBzdHJ1Y3R1cmVkIEpTT04gb2JqZWN0c1xuICA6RU5WOiBKU09OX0xPR1MgKi9cbiAganNvbkxvZ3M6ID9ib29sZWFuO1xuICAvKiBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9MT0dTX0ZPTERFUlxuICA6REVGQVVMVDogLi9sb2dzICovXG4gIGxvZ3NGb2xkZXI6ID9zdHJpbmc7XG4gIC8qIFNldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlXG4gIDpFTlY6IFZFUkJPU0UgKi9cbiAgdmVyYm9zZTogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIGxldmVsIGZvciBsb2dzICovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xuICAvKiAoT3B0aW9uYWwpIE92ZXJyaWRlcyB0aGUgbG9nIGxldmVscyB1c2VkIGludGVybmFsbHkgYnkgUGFyc2UgU2VydmVyIHRvIGxvZyBldmVudHMuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBsb2dMZXZlbHM6ID9Mb2dMZXZlbHM7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIGxvZ3MgdG8ga2VlcC4gSWYgbm90IHNldCwgbm8gbG9ncyB3aWxsIGJlIHJlbW92ZWQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIGZpbGVzIG9yIG51bWJlciBvZiBkYXlzLiBJZiB1c2luZyBkYXlzLCBhZGQgJ2QnIGFzIHRoZSBzdWZmaXguIChkZWZhdWx0OiBudWxsKSAqL1xuICBtYXhMb2dGaWxlczogP051bWJlck9yU3RyaW5nO1xuICAvKiBEaXNhYmxlcyBjb25zb2xlIG91dHB1dFxuICA6RU5WOiBTSUxFTlQgKi9cbiAgc2lsZW50OiA/Ym9vbGVhbjtcbiAgLyogVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuXG4gIDpERUZBVUxUOiBtb25nb2RiOi8vbG9jYWxob3N0OjI3MDE3L3BhcnNlICovXG4gIGRhdGFiYXNlVVJJOiBzdHJpbmc7XG4gIC8qIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgY2xpZW50XG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9EQVRBQkFTRV9PUFRJT05TICovXG4gIGRhdGFiYXNlT3B0aW9uczogP0RhdGFiYXNlT3B0aW9ucztcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBkYXRhYmFzZTsgYW55IG9wdGlvbnMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgZGF0YWJhc2UgY2xpZW50LiAqL1xuICBkYXRhYmFzZUFkYXB0ZXI6ID9BZGFwdGVyPFN0b3JhZ2VBZGFwdGVyPjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2xsYXRpb24gcnVsZSBvZiBjYXNlIGNvbXBhcmlzb24gZm9yIHF1ZXJpZXMgYW5kIGluZGV4ZXMgaXMgZW5hYmxlZC4gRW5hYmxlIHRoaXMgb3B0aW9uIHRvIHJ1biBQYXJzZSBTZXJ2ZXIgd2l0aCBNb25nb0RCIEF0bGFzIFNlcnZlcmxlc3Mgb3IgQVdTIEFtYXpvbiBEb2N1bWVudERCLiBJZiBgZmFsc2VgLCB0aGUgY29sbGF0aW9uIHJ1bGUgb2YgY2FzZSBjb21wYXJpc29uIGlzIGRpc2FibGVkLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDb2xsYXRpb25DYXNlQ29tcGFyaXNvbjogP2Jvb2xlYW47XG4gIC8qIE9wdGlvbmFsLiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgYGVtYWlsYCBwcm9wZXJ0eSBvZiBhIHVzZXIgaXMgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGJlZm9yZSBiZWluZyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBDb25zZXF1ZW50bHksIHF1ZXJpZXMgbXVzdCBtYXRjaCB0aGUgY2FzZSBhcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCB3aGljaCB3b3VsZCBiZSBsb3dlcmNhc2UgaW4gdGhpcyBzY2VuYXJpby4gSWYgYGZhbHNlYCwgdGhlIGBlbWFpbGAgcHJvcGVydHkgaXMgc3RvcmVkIGFzIHNldCwgd2l0aG91dCBhbnkgY2FzZSBtb2RpZmljYXRpb25zLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBjb252ZXJ0RW1haWxUb0xvd2VyY2FzZTogP2Jvb2xlYW47XG4gIC8qIE9wdGlvbmFsLiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSBvZiBhIHVzZXIgaXMgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGJlZm9yZSBiZWluZyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBDb25zZXF1ZW50bHksIHF1ZXJpZXMgbXVzdCBtYXRjaCB0aGUgY2FzZSBhcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCB3aGljaCB3b3VsZCBiZSBsb3dlcmNhc2UgaW4gdGhpcyBzY2VuYXJpby4gSWYgYGZhbHNlYCwgdGhlIGB1c2VybmFtZWAgcHJvcGVydHkgaXMgc3RvcmVkIGFzIHNldCwgd2l0aG91dCBhbnkgY2FzZSBtb2RpZmljYXRpb25zLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBjb252ZXJ0VXNlcm5hbWVUb0xvd2VyY2FzZTogP2Jvb2xlYW47XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIGNsb3VkIGNvZGUgbWFpbi5qcyAqL1xuICBjbG91ZDogP3N0cmluZztcbiAgLyogQSBjb2xsZWN0aW9uIHByZWZpeCBmb3IgdGhlIGNsYXNzZXNcbiAgOkRFRkFVTFQ6ICcnICovXG4gIGNvbGxlY3Rpb25QcmVmaXg6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzICovXG4gIGNsaWVudEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciB0aGUgSmF2YXNjcmlwdCBTREsgKi9cbiAgamF2YXNjcmlwdEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREsgKi9cbiAgZG90TmV0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVkgKi9cbiAgZW5jcnlwdGlvbktleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBSRVNUIGNhbGxzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVNUX0FQSV9LRVkgKi9cbiAgcmVzdEFQSUtleTogP3N0cmluZztcbiAgLyogUmVhZC1vbmx5IGtleSwgd2hpY2ggaGFzIHRoZSBzYW1lIGNhcGFiaWxpdGllcyBhcyBNYXN0ZXJLZXkgd2l0aG91dCB3cml0ZXMgKi9cbiAgcmVhZE9ubHlNYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscyAqL1xuICB3ZWJob29rS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHlvdXIgZmlsZXMgKi9cbiAgZmlsZUtleTogP3N0cmluZztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmVzZXJ2ZUZpbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHMgKi9cbiAgdXNlclNlbnNpdGl2ZUZpZWxkczogPyhzdHJpbmdbXSk7XG4gIC8qIFByb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy5cbiAgOkRFRkFVTFQ6IHtcIl9Vc2VyXCI6IHtcIipcIjogW1wiZW1haWxcIl19fSAqL1xuICBwcm90ZWN0ZWRGaWVsZHM6ID9Qcm90ZWN0ZWRGaWVsZHM7XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVBbm9ueW1vdXNVc2VyczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byBmYWxzZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ0xJRU5UX0NMQVNTX0NSRUFUSU9OXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0NsaWVudENsYXNzQ3JlYXRpb246ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ1VTVE9NX09CSkVDVF9JRFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dDdXN0b21PYmplY3RJZDogP2Jvb2xlYW47XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHlvdXIgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNvYXV0aC1hbmQtM3JkLXBhcnR5LWF1dGhlbnRpY2F0aW9uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9BVVRIX1BST1ZJREVSUyAqL1xuICBhdXRoOiA/eyBbc3RyaW5nXTogQXV0aEFkYXB0ZXIgfTtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBpbnNlY3VyZSBhdXRoIGFkYXB0ZXJzLCBkZWZhdWx0cyB0byB0cnVlLiBJbnNlY3VyZSBhdXRoIGFkYXB0ZXJzIGFyZSBkZXByZWNhdGVkIGFuZCBpdCBpcyByZWNvbW1lbmRlZCB0byBkaXNhYmxlIHRoZW0uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfSU5TRUNVUkVfQVVUSF9BREFQVEVSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVJbnNlY3VyZUF1dGhBZGFwdGVyczogP2Jvb2xlYW47XG4gIC8qIE1heCBmaWxlIHNpemUgZm9yIHVwbG9hZHMsIGRlZmF1bHRzIHRvIDIwbWJcbiAgOkRFRkFVTFQ6IDIwbWIgKi9cbiAgbWF4VXBsb2FkU2l6ZTogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgdmVyaWZpY2F0aW9uLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB2ZXJpZnlVc2VyRW1haWxzOiA/KGJvb2xlYW4gfCB2b2lkKTtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBwcmV2ZW50IGEgdXNlciBmcm9tIGxvZ2dpbmcgaW4gaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmV2ZW50TG9naW5XaXRoVW52ZXJpZmllZEVtYWlsOiA/Ym9vbGVhbjtcbiAgLyogSWYgc2V0IHRvIGB0cnVlYCBpdCBwcmV2ZW50cyBhIHVzZXIgZnJvbSBzaWduaW5nIHVwIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuIEluIHRoYXQgY2FzZSB0aGUgc2VydmVyIHJlc3BvbmRzIHRvIHRoZSBzaWduLXVwIHdpdGggSFRUUCBzdGF0dXMgNDAwIGFuZCBhIFBhcnNlIEVycm9yIDIwNSBgRU1BSUxfTk9UX0ZPVU5EYC4gSWYgc2V0IHRvIGBmYWxzZWAgdGhlIHNlcnZlciByZXNwb25kcyB3aXRoIEhUVFAgc3RhdHVzIDIwMCwgYW5kIGNsaWVudCBTREtzIHJldHVybiBhbiB1bmF1dGhlbnRpY2F0ZWQgUGFyc2UgVXNlciB3aXRob3V0IHNlc3Npb24gdG9rZW4uIEluIHRoYXQgY2FzZSBzdWJzZXF1ZW50IHJlcXVlc3RzIGZhaWwgdW50aWwgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzIGlzIHZlcmlmaWVkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHByZXZlbnRTaWdudXBXaXRoVW52ZXJpZmllZEVtYWlsOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRoZSB2YWxpZGl0eSBkdXJhdGlvbiBvZiB0aGUgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy5cbiAgPGJyPjxicj5cbiAgRm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHVuZGVmaW5lZGAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgKi9cbiAgZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQ6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IHNlbmRpbmcgb2YgdmVyaWZpY2F0aW9uIGVtYWlsLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIGVtYWlsIHNlbmRpbmcuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA8YnI+XG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHNlbmRVc2VyRW1haWxWZXJpZmljYXRpb246ID8oYm9vbGVhbiB8IHZvaWQpO1xuICAvKiBUaGUgYWNjb3VudCBsb2Nrb3V0IHBvbGljeSBmb3IgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLiAqL1xuICBhY2NvdW50TG9ja291dDogP0FjY291bnRMb2Nrb3V0T3B0aW9ucztcbiAgLyogVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuICovXG4gIHBhc3N3b3JkUG9saWN5OiA/UGFzc3dvcmRQb2xpY3lPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGNhY2hlICovXG4gIGNhY2hlQWRhcHRlcjogP0FkYXB0ZXI8Q2FjaGVBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcgKi9cbiAgZW1haWxBZGFwdGVyOiA/QWRhcHRlcjxNYWlsQWRhcHRlcj47XG4gIC8qIElmIHNldCB0byBgdHJ1ZWAsIGEgYFBhcnNlLk9iamVjdGAgdGhhdCBpcyBpbiB0aGUgcGF5bG9hZCB3aGVuIGNhbGxpbmcgYSBDbG91ZCBGdW5jdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBpbnN0YW5jZSBvZiBgUGFyc2UuT2JqZWN0YC4gSWYgYGZhbHNlYCwgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgYW5kIGluc3RlYWQgYmUgYSBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIHJhdyBkYXRhIG9mIGEgYFBhcnNlLk9iamVjdGAgYnV0IGlzIG5vdCBhbiBhY3R1YWwgaW5zdGFuY2Ugb2YgYFBhcnNlLk9iamVjdGAuIERlZmF1bHQgaXMgYGZhbHNlYC4gPGJyPjxicj7ihLnvuI8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHdvdWxkIGJlIHRoYXQgdGhlIG9iamVjdCBpcyBjb252ZXJ0ZWQgdG8gYW4gaW5zdGFuY2Ugb2YgYFBhcnNlLk9iamVjdGAsIHNvIHlvdSB3b3VsZCBub3JtYWxseSBzZXQgdGhpcyBvcHRpb24gdG8gYHRydWVgLiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgIGJlY2F1c2UgdGhpcyBpcyBhIHRlbXBvcmFyeSBvcHRpb24gdGhhdCBoYXMgYmVlbiBpbnRyb2R1Y2VkIHRvIGF2b2lkIGEgYnJlYWtpbmcgY2hhbmdlIHdoZW4gZml4aW5nIGEgYnVnIHdoZXJlIEphdmFTY3JpcHQgb2JqZWN0cyBhcmUgbm90IGNvbnZlcnRlZCB0byBhY3R1YWwgaW5zdGFuY2VzIG9mIGBQYXJzZS5PYmplY3RgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmNvZGVQYXJzZU9iamVjdEluQ2xvdWRGdW5jdGlvbjogP2Jvb2xlYW47XG4gIC8qIFB1YmxpYyBVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLlxuICA6RU5WOiBQQVJTRV9QVUJMSUNfU0VSVkVSX1VSTCAqL1xuICBwdWJsaWNTZXJ2ZXJVUkw6ID9zdHJpbmc7XG4gIC8qIFRoZSBvcHRpb25zIGZvciBwYWdlcyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24uXG4gIDpERUZBVUxUOiB7fSAqL1xuICBwYWdlczogP1BhZ2VzT3B0aW9ucztcbiAgLyogY3VzdG9tIHBhZ2VzIGZvciBwYXNzd29yZCB2YWxpZGF0aW9uIGFuZCByZXNldFxuICA6REVGQVVMVDoge30gKi9cbiAgY3VzdG9tUGFnZXM6ID9DdXN0b21QYWdlc09wdGlvbnM7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjb25maWd1cmF0aW9uIG9iamVjdCAqL1xuICBsaXZlUXVlcnk6ID9MaXZlUXVlcnlPcHRpb25zO1xuICAvKiBTZXNzaW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLCBkZWZhdWx0cyB0byAxIHllYXJcbiAgOkRFRkFVTFQ6IDMxNTM2MDAwICovXG4gIHNlc3Npb25MZW5ndGg6ID9udW1iZXI7XG4gIC8qIFdoZXRoZXIgUGFyc2UgU2VydmVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IGV4dGVuZCBhIHZhbGlkIHNlc3Npb24gYnkgdGhlIHNlc3Npb25MZW5ndGguIEluIG9yZGVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlc3Npb24gdXBkYXRlcyBpbiB0aGUgZGF0YWJhc2UsIGEgc2Vzc2lvbiB3aWxsIG9ubHkgYmUgZXh0ZW5kZWQgd2hlbiBhIHJlcXVlc3QgaXMgcmVjZWl2ZWQgYWZ0ZXIgYXQgbGVhc3QgaGFsZiBvZiB0aGUgY3VycmVudCBzZXNzaW9uJ3MgbGlmZXRpbWUgaGFzIHBhc3NlZC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGV4dGVuZFNlc3Npb25PblVzZTogP2Jvb2xlYW47XG4gIC8qIERlZmF1bHQgdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byBgMTAwYC5cbiAgOkRFRkFVTFQ6IDEwMCAqL1xuICBkZWZhdWx0TGltaXQ6ID9udW1iZXI7XG4gIC8qIE1heCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIHVubGltaXRlZCAqL1xuICBtYXhMaW1pdDogP251bWJlcjtcbiAgLyogU2V0cyB3aGV0aGVyIHdlIHNob3VsZCBleHBpcmUgdGhlIGluYWN0aXZlIHNlc3Npb25zLCBkZWZhdWx0cyB0byB0cnVlLiBJZiBmYWxzZSwgYWxsIG5ldyBzZXNzaW9ucyBhcmUgY3JlYXRlZCB3aXRoIG5vIGV4cGlyYXRpb24gZGF0ZS5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZXhwaXJlSW5hY3RpdmVTZXNzaW9uczogP2Jvb2xlYW47XG4gIC8qIFdoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgcGFzc3dvcmQsIGVpdGhlciB0aHJvdWdoIHRoZSByZXNldCBwYXNzd29yZCBlbWFpbCBvciB3aGlsZSBsb2dnZWQgaW4sIGFsbCBzZXNzaW9ucyBhcmUgcmV2b2tlZCBpZiB0aGlzIGlzIHRydWUuIFNldCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZXZva2Ugc2Vzc2lvbnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQ6ID9ib29sZWFuO1xuICAvKiBTZXRzIHRoZSBUVEwgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUgKGluIG1zKSwgZGVmYXVsdHMgdG8gNTAwMCAoNSBzZWNvbmRzKVxuICA6REVGQVVMVDogNTAwMCAqL1xuICBjYWNoZVRUTDogP251bWJlcjtcbiAgLyogU2V0cyB0aGUgbWF4aW11bSBzaXplIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlLCBkZWZhdWx0cyB0byAxMDAwMFxuICA6REVGQVVMVDogMTAwMDAgKi9cbiAgY2FjaGVNYXhTaXplOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBzaG91bGQgYmUgcm91dGVkIHRvIFBhcnNlIFNlcnZlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSB0aGUgSFRUUCBpbnRlcmZhY2UuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPjxicj5cbiAgSWYgc2V0IHRvIGBmYWxzZWAgdGhlbiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgYXJlIGV4ZWN1dGVkIGFzIEhUVFAgcmVxdWVzdHMgc2VudCB0byBQYXJzZSBTZXJ2ZXIgdmlhIHRoZSBgc2VydmVyVVJMYC4gRm9yIGV4YW1wbGUsIGEgYFBhcnNlLlF1ZXJ5YCBpbiBDbG91ZCBDb2RlIGlzIGNhbGxpbmcgUGFyc2UgU2VydmVyIHZpYSBhIEhUVFAgcmVxdWVzdC4gVGhlIHNlcnZlciBpcyBlc3NlbnRpYWxseSBtYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gaXRzZWxmLCB1bm5lY2Vzc2FyaWx5IHVzaW5nIG5ldHdvcmsgcmVzb3VyY2VzIHN1Y2ggYXMgbmV0d29yayBwb3J0cy5cbiAgPGJyPjxicj5cbiAg4pqg77iPIEluIGVudmlyb25tZW50cyB3aGVyZSBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIHJ1biBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyIGFuZCBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIGN1cnJlbnQgTm9kZS5qcyBlbnZpcm9ubWVudCBzaG91bGQgYmUgcm91dGVkIHZpYSB0aGUgbG9hZCBiYWxhbmNlciBhbmQgZGlzdHJpYnV0ZWQgYXMgSFRUUCByZXF1ZXN0cyBhbW9uZyBhbGwgaW5zdGFuY2VzIHZpYSB0aGUgYHNlcnZlclVSTGAsIHRoaXMgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBkaXJlY3RBY2Nlc3M6ID9ib29sZWFuO1xuICAvKiBFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9yc1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlcjogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGdlbmVyYXRlZCBvYmplY3QgaWQncywgZGVmYXVsdCAxMFxuICA6REVGQVVMVDogMTAgKi9cbiAgb2JqZWN0SWRTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6RU5WOiBQT1JUXG4gIDpERUZBVUxUOiAxMzM3ICovXG4gIHBvcnQ6ID9udW1iZXI7XG4gIC8qIFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gIDpERUZBVUxUOiAwLjAuMC4wICovXG4gIGhvc3Q6ID9zdHJpbmc7XG4gIC8qIE1vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZVxuICA6REVGQVVMVDogL3BhcnNlICovXG4gIG1vdW50UGF0aDogP3N0cmluZztcbiAgLyogUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoICovXG4gIGNsdXN0ZXI6ID9OdW1iZXJPckJvb2xlYW47XG4gIC8qIG1pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uICovXG4gIG1pZGRsZXdhcmU6ID8oKCgpID0+IHZvaWQpIHwgc3RyaW5nKTtcbiAgLyogVGhlIHRydXN0IHByb3h5IHNldHRpbmdzLiBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2V0dXAgb2YgdGhlIHJldmVyc2UgcHJveHksIHNpbmNlIHRoaXMgc2V0dGluZyB3aWxsIHRydXN0IHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgUGFyc2UgU2VydmVyIEFQSSByZXF1ZXN0LiBTZWUgdGhlIDxhIGhyZWY9XCJodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFwiPmV4cHJlc3MgdHJ1c3QgcHJveHkgc2V0dGluZ3M8L2E+IGRvY3VtZW50YXRpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB0cnVzdFByb3h5OiA/YW55O1xuICAvKiBTdGFydHMgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIgKi9cbiAgc3RhcnRMaXZlUXVlcnlTZXJ2ZXI6ID9ib29sZWFuO1xuICAvKiBMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpICovXG4gIGxpdmVRdWVyeVNlcnZlck9wdGlvbnM6ID9MaXZlUXVlcnlTZXJ2ZXJPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX09QVElPTlNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGlkZW1wb3RlbmN5T3B0aW9uczogP0lkZW1wb3RlbmN5T3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgZmlsZSB1cGxvYWRzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9PUFRJT05TXG4gIDpERUZBVUxUOiB7fSAqL1xuICBmaWxlVXBsb2FkOiA/RmlsZVVwbG9hZE9wdGlvbnM7XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGUgKi9cbiAgZ3JhcGhRTFNjaGVtYTogP3N0cmluZztcbiAgLyogTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50XG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9NT1VOVF9HUkFQSFFMXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBtb3VudEdyYXBoUUw6ID9ib29sZWFuO1xuICAvKiBUaGUgbW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQ8YnI+PGJyPuKaoO+4jyBGaWxlIHVwbG9hZCBpbnNpZGUgdGhlIEdyYXBoUUwgbXV0YXRpb24gc3lzdGVtIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHRzIGlzIGAvZ3JhcGhxbGAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9HUkFQSFFMX1BBVEhcbiAgOkRFRkFVTFQ6IC9ncmFwaHFsICovXG4gIGdyYXBoUUxQYXRoOiA/c3RyaW5nO1xuICAvKiBFbmFibGUgcHVibGljIGludHJvc3BlY3Rpb24gZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50LCBkZWZhdWx0cyB0byBmYWxzZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfR1JBUEhRTF9QVUJMSUNfSU5UUk9TUEVDVElPTlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZ3JhcGhRTFB1YmxpY0ludHJvc3BlY3Rpb246ID9ib29sZWFuO1xuICAvKiBNb3VudHMgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCAtIG5ldmVyIHVzZSB0aGlzIG9wdGlvbiBpbiBwcm9kdWN0aW9uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9NT1VOVF9QTEFZR1JPVU5EXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBtb3VudFBsYXlncm91bmQ6ID9ib29sZWFuO1xuICAvKiBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kLCBkZWZhdWx0cyB0byAvcGxheWdyb3VuZFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUExBWUdST1VORF9QQVRIXG4gIDpERUZBVUxUOiAvcGxheWdyb3VuZCAqL1xuICBwbGF5Z3JvdW5kUGF0aDogP3N0cmluZztcbiAgLyogRGVmaW5lZCBzY2hlbWFcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1NDSEVNQVxuICAqL1xuICBzY2hlbWE6ID9TY2hlbWFPcHRpb25zO1xuICAvKiBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkICovXG4gIHNlcnZlckNsb3NlQ29tcGxldGU6ID8oKSA9PiB2b2lkO1xuICAvKiBUaGUgc2VjdXJpdHkgb3B0aW9ucyB0byBpZGVudGlmeSBhbmQgcmVwb3J0IHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBzZWN1cml0eTogP1NlY3VyaXR5T3B0aW9ucztcbiAgLyogU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5mb3JjZVByaXZhdGVVc2VyczogP2Jvb2xlYW47XG4gIC8qIEFsbG93IGEgdXNlciB0byBsb2cgaW4gZXZlbiBpZiB0aGUgM3JkIHBhcnR5IGF1dGhlbnRpY2F0aW9uIHRva2VuIHRoYXQgd2FzIHVzZWQgdG8gc2lnbiBpbiB0byB0aGVpciBhY2NvdW50IGhhcyBleHBpcmVkLiBJZiB0aGlzIGlzIHNldCB0byBgZmFsc2VgLCB0aGVuIHRoZSB0b2tlbiB3aWxsIGJlIHZhbGlkYXRlZCBldmVyeSB0aW1lIHRoZSB1c2VyIHNpZ25zIGluIHRvIHRoZWlyIGFjY291bnQuIFRoaXMgcmVmZXJzIHRvIHRoZSB0b2tlbiB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYF9Vc2VyLmF1dGhEYXRhYCBmaWVsZC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW46ID9ib29sZWFuO1xuICAvKiBBbiBhcnJheSBvZiBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBhcmUgcHJvaGliaXRlZCBpbiBkYXRhYmFzZSByZWFkIGFuZCB3cml0ZSByZXF1ZXN0cyB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgb25seSBhIGtleSAoYHtcImtleVwiOlwiLi4uXCJ9YCksIG9ubHkgYSB2YWx1ZSAoYHtcInZhbHVlXCI6XCIuLi5cIn1gKSBvciBhIGtleS12YWx1ZSBwYWlyIChge1wia2V5XCI6XCIuLi5cIixcInZhbHVlXCI6XCIuLi5cIn1gKS4gVGhlIHNwZWNpZmljYXRpb24gY2FuIHVzZSB0aGUgZm9sbG93aW5nIHR5cGVzOiBgYm9vbGVhbmAsIGBudW1lcmljYCBvciBgc3RyaW5nYCwgd2hlcmUgYHN0cmluZ2Agd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHJlZ2V4IG5vdGF0aW9uLiBSZXF1ZXN0IGRhdGEgaXMgZGVlcC1zY2FubmVkIGZvciBtYXRjaGluZyBkZWZpbml0aW9ucyB0byBkZXRlY3QgYWxzbyBhbnkgbmVzdGVkIG9jY3VycmVuY2VzLiBEZWZhdWx0cyBhcmUgcGF0dGVybnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgaW4gbWFsaWNpb3VzIHJlcXVlc3RzLiBTZXR0aW5nIHRoaXMgb3B0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGF0dGVybnMuXG4gIDpERUZBVUxUOiBbe1wia2V5XCI6XCJfYnNvbnR5cGVcIixcInZhbHVlXCI6XCJDb2RlXCJ9LHtcImtleVwiOlwiY29uc3RydWN0b3JcIn0se1wia2V5XCI6XCJfX3Byb3RvX19cIn1dICovXG4gIHJlcXVlc3RLZXl3b3JkRGVueWxpc3Q6ID8oUmVxdWVzdEtleXdvcmREZW55bGlzdFtdKTtcbiAgLyogT3B0aW9ucyB0byBsaW1pdCByZXBlYXRlZCByZXF1ZXN0cyB0byBQYXJzZSBTZXJ2ZXIgQVBJcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwcm90ZWN0IHNlbnNpdGl2ZSBlbmRwb2ludHMgc3VjaCBhcyBgL3JlcXVlc3RQYXNzd29yZFJlc2V0YCBmcm9tIGJydXRlLWZvcmNlIGF0dGFja3Mgb3IgUGFyc2UgU2VydmVyIGFzIGEgd2hvbGUgZnJvbSBkZW5pYWwtb2Ytc2VydmljZSAoRG9TKSBhdHRhY2tzLjxicj48YnI+4oS577iPIE1pbmQgdGhlIGZvbGxvd2luZyBsaW1pdGF0aW9uczo8YnI+LSByYXRlIGxpbWl0cyBhcHBsaWVkIHBlciBJUCBhZGRyZXNzOyB0aGlzIGxpbWl0cyBwcm90ZWN0aW9uIGFnYWluc3QgZGlzdHJpYnV0ZWQgZGVuaWFsLW9mLXNlcnZpY2UgKEREb1MpIGF0dGFja3Mgd2hlcmUgbWFueSByZXF1ZXN0cyBhcmUgY29taW5nIGZyb20gdmFyaW91cyBJUCBhZGRyZXNzZXM8YnI+LSBpZiBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIGFyZSBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyIG9yIHJhbiBpbiBhIGNsdXN0ZXIsIGVhY2ggaW5zdGFuY2Ugd2lsbCBjYWxjdWxhdGUgaXQncyBvd24gcmVxdWVzdCByYXRlcywgaW5kZXBlbmRlbnQgZnJvbSBvdGhlciBpbnN0YW5jZXM7IHRoaXMgbGltaXRzIHRoZSBhcHBsaWNhYmlsaXR5IG9mIHRoaXMgZmVhdHVyZSB3aGVuIHVzaW5nIGEgbG9hZCBiYWxhbmNlciBhbmQgYW5vdGhlciByYXRlIGxpbWl0aW5nIHNvbHV0aW9uIHRoYXQgdGFrZXMgcmVxdWVzdHMgYWNyb3NzIGFsbCBpbnN0YW5jZXMgaW50byBhY2NvdW50IG1heSBiZSBtb3JlIHN1aXRhYmxlPGJyPi0gdGhpcyBmZWF0dXJlIHByb3ZpZGVzIGJhc2ljIHByb3RlY3Rpb24gYWdhaW5zdCBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzLCBidXQgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgc29sdXRpb24gd29ya3MgZWFybGllciBpbiB0aGUgcmVxdWVzdCBmbG93IGFuZCBwcmV2ZW50cyBhIG1hbGljaW91cyByZXF1ZXN0cyB0byBldmVuIHJlYWNoIGEgc2VydmVyIGluc3RhbmNlOyBpdCdzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBpbXBsZW1lbnQgYSBzb2x1dGlvbiBhY2NvcmRpbmcgdG8gYXJjaGl0ZWN0dXJlIGFuZCB1c2VyIGNhc2UuXG4gIDpERUZBVUxUOiBbXSAqL1xuICByYXRlTGltaXQ6ID8oUmF0ZUxpbWl0T3B0aW9uc1tdKTtcbiAgLyogT3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHJlcXVlc3QgY29udGV4dCB1c2luZyBpbnZlcnNpb24gb2YgY29udHJvbC9kZXBlbmRlbmN5IGluamVjdGlvbi4qL1xuICByZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmU6ID8ocmVxOiBhbnksIHJlczogYW55LCBuZXh0OiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0T3B0aW9ucyB7XG4gIC8qIFRoZSBwYXRoIG9mIHRoZSBBUEkgcm91dGUgdG8gYmUgcmF0ZSBsaW1pdGVkLiBSb3V0ZSBwYXRocywgaW4gY29tYmluYXRpb24gd2l0aCBhIHJlcXVlc3QgbWV0aG9kLCBkZWZpbmUgdGhlIGVuZHBvaW50cyBhdCB3aGljaCByZXF1ZXN0cyBjYW4gYmUgbWFkZS4gUm91dGUgcGF0aHMgY2FuIGJlIHN0cmluZ3MsIHN0cmluZyBwYXR0ZXJucywgb3IgcmVndWxhciBleHByZXNzaW9uLiBTZWU6IGh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9ndWlkZS9yb3V0aW5nLmh0bWwgKi9cbiAgcmVxdWVzdFBhdGg6IHN0cmluZztcbiAgLyogVGhlIHdpbmRvdyBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB3aXRoaW4gd2hpY2ggdGhlIG51bWJlciBvZiByZXF1ZXN0cyBzZXQgaW4gYHJlcXVlc3RDb3VudGAgY2FuIGJlIG1hZGUgYmVmb3JlIHRoZSByYXRlIGxpbWl0IGlzIGFwcGxpZWQuICovXG4gIHJlcXVlc3RUaW1lV2luZG93OiA/bnVtYmVyO1xuICAvKiBUaGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgY2FuIGJlIG1hZGUgcGVyIElQIGFkZHJlc3Mgd2l0aGluIHRoZSB0aW1lIHdpbmRvdyBzZXQgaW4gYHJlcXVlc3RUaW1lV2luZG93YCBiZWZvcmUgdGhlIHJhdGUgbGltaXQgaXMgYXBwbGllZC4gKi9cbiAgcmVxdWVzdENvdW50OiA/bnVtYmVyO1xuICAvKiBUaGUgZXJyb3IgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBpbiB0aGUgYm9keSBvZiB0aGUgSFRUUCA0MjkgcmVzcG9uc2Ugd2hlbiB0aGUgcmF0ZSBsaW1pdCBpcyBoaXQuIERlZmF1bHQgaXMgYFRvbyBtYW55IHJlcXVlc3RzLmAuXG4gIDpERUZBVUxUOiBUb28gbWFueSByZXF1ZXN0cy4gKi9cbiAgZXJyb3JSZXNwb25zZU1lc3NhZ2U6ID9zdHJpbmc7XG4gIC8qIE9wdGlvbmFsLCB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZHMgdG8gd2hpY2ggdGhlIHJhdGUgbGltaXQgc2hvdWxkIGJlIGFwcGxpZWQsIGRlZmF1bHQgaXMgYWxsIG1ldGhvZHMuICovXG4gIHJlcXVlc3RNZXRob2RzOiA/KHN0cmluZ1tdKTtcbiAgLyogT3B0aW9uYWwsIGlmIGB0cnVlYCB0aGUgcmF0ZSBsaW1pdCB3aWxsIGFsc28gYXBwbHkgdG8gcmVxdWVzdHMgdXNpbmcgdGhlIGBtYXN0ZXJLZXlgLCBkZWZhdWx0IGlzIGBmYWxzZWAuIE5vdGUgdGhhdCBhIHB1YmxpYyBDbG91ZCBDb2RlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaW50ZXJuYWwgcmVxdWVzdHMgdXNpbmcgdGhlIGBtYXN0ZXJLZXlgIG1heSBjaXJjdW12ZW50IHJhdGUgbGltaXRpbmcgYW5kIGJlIHZ1bG5lcmFibGUgdG8gYXR0YWNrcy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGluY2x1ZGVNYXN0ZXJLZXk6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbCwgaWYgYHRydWVgIHRoZSByYXRlIGxpbWl0IHdpbGwgYWxzbyBhcHBseSB0byByZXF1ZXN0cyB0aGF0IGFyZSBtYWRlIGluIGJ5IENsb3VkIENvZGUsIGRlZmF1bHQgaXMgYGZhbHNlYC4gTm90ZSB0aGF0IGEgcHVibGljIENsb3VkIENvZGUgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBpbnRlcm5hbCByZXF1ZXN0cyBtYXkgY2lyY3VtdmVudCByYXRlIGxpbWl0aW5nIGFuZCBiZSB2dWxuZXJhYmxlIHRvIGF0dGFja3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpbmNsdWRlSW50ZXJuYWxSZXF1ZXN0czogP2Jvb2xlYW47XG4gIC8qIE9wdGlvbmFsLCB0aGUgVVJMIG9mIHRoZSBSZWRpcyBzZXJ2ZXIgdG8gc3RvcmUgcmF0ZSBsaW1pdCBkYXRhLiBUaGlzIGFsbG93cyB0byByYXRlIGxpbWl0IHJlcXVlc3RzIGZvciBtdWx0aXBsZSBzZXJ2ZXJzIGJ5IGNhbGN1bGF0aW5nIHRoZSBzdW0gb2YgYWxsIHJlcXVlc3RzIGFjcm9zcyBhbGwgc2VydmVycy4gVGhpcyBpcyB1c2VmdWwgaWYgbXVsdGlwbGUgc2VydmVycyBhcmUgcHJvY2Vzc2luZyByZXF1ZXN0cyBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyLiBGb3IgZXhhbXBsZSwgdGhlIGxpbWl0IG9mIDEwIHJlcXVlc3RzIGlzIHJlYWNoZWQgaWYgZWFjaCBvZiAyIHNlcnZlcnMgcHJvY2Vzc2VkIDUgcmVxdWVzdHMuXG4gICAqL1xuICByZWRpc1VybDogP3N0cmluZztcbiAgLypcbiAgVGhlIHR5cGUgb2YgcmF0ZSBsaW1pdCB0byBhcHBseS4gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICA8YnI+PGJyPlxuICAtIGBnbG9iYWxgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgbWFkZSBieSBhbGwgdXNlcnMgPGJyPlxuICAtIGBpcGA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHJlcXVlc3QgPGJyPlxuICAtIGB1c2VyYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgdXNlciBJRCBvZiB0aGUgcmVxdWVzdCA8YnI+XG4gIC0gYHNlc3Npb25gOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBzZXNzaW9uIHRva2VuIG9mIHRoZSByZXF1ZXN0IDxicj5cbiAgPGJyPjxicj5cbiAgOmRlZmF1bHQ6ICdpcCdcbiAgKi9cbiAgem9uZTogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eU9wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVjazogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIHJlcG9ydCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2dzLiBUaGlzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgdG8gbm90IGV4cG9zZSB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzIGluIGxvZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVja0xvZzogP2Jvb2xlYW47XG4gIC8qIFRoZSBzZWN1cml0eSBjaGVjayBncm91cHMgdG8gcnVuLiBUaGlzIGFsbG93cyB0byBhZGQgY3VzdG9tIHNlY3VyaXR5IGNoZWNrcyBvciBvdmVycmlkZSBleGlzdGluZyBvbmVzLiBEZWZhdWx0IGFyZSB0aGUgZ3JvdXBzIGRlZmluZWQgaW4gYENoZWNrR3JvdXBzLmpzYC4gKi9cbiAgY2hlY2tHcm91cHM6ID8oQ2hlY2tHcm91cFtdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc09wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIHRoZSBwYWdlcyByb3V0ZXIgc2hvdWxkIGJlIGVuYWJsZWQ7IHRoaXMgaXMgcmVxdWlyZWQgZm9yIGFueSBvZiB0aGUgcGFnZXMgb3B0aW9ucyB0byB0YWtlIGVmZmVjdC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVJvdXRlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgcGFnZXMgc2hvdWxkIGJlIGxvY2FsaXplZDsgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIGN1c3RvbSBwYWdlIHJlZGlyZWN0cy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUxvY2FsaXphdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUgZm9yIGxvY2FsaXphdGlvbjsgdGhlIHRyYW5zbGF0aW9ucyB3aWxsIGJlIHVzZWQgdG8gZmlsbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUuICovXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAgOkRFRkFVTFQ6IGVuICovXG4gIGxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBsYWNlaG9sZGVyczogP09iamVjdDtcbiAgLyogSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGZvcmNlUmVkaXJlY3Q6ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3RvcnkuXG4gIDpERUZBVUxUOiAuL3B1YmxpYyAqL1xuICBwYWdlc1BhdGg6ID9zdHJpbmc7XG4gIC8qIFRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXG4gIDpERUZBVUxUOiBhcHBzICovXG4gIHBhZ2VzRW5kcG9pbnQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkxzIHRvIHRoZSBjdXN0b20gcGFnZXMuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21VcmxzOiA/UGFnZXNDdXN0b21VcmxzT3B0aW9ucztcbiAgLyogVGhlIGN1c3RvbSByb3V0ZXMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBjdXN0b21Sb3V0ZXM6ID8oUGFnZXNSb3V0ZVtdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc1JvdXRlIHtcbiAgLyogVGhlIHJvdXRlIHBhdGguICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIG1ldGhvZCwgZS5nLiAnR0VUJyBvciAnUE9TVCcuICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLiAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzQ3VzdG9tVXJsc09wdGlvbnMge1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQuICovXG4gIHBhc3N3b3JkUmVzZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuICovXG4gIHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQ6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUGFnZXNPcHRpb25zIHtcbiAgLyogaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkTGluazogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIGNob29zZSBwYXNzd29yZCBwYWdlIHBhdGggKi9cbiAgY2hvb3NlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiB2ZXJpZnkgZW1haWwgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBwYXNzd29yZCByZXNldCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGV4cGlyZWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazogP3N0cmluZztcbiAgLyogZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMgKi9cbiAgcGFyc2VGcmFtZVVSTDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlPcHRpb25zIHtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9DTEFTU05BTUVTICovXG4gIGNsYXNzTmFtZXM6ID8oc3RyaW5nW10pO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVRdWVyeVNlcnZlck9wdGlvbnMge1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIGFwcElkIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgYXBwSWQuKi9cbiAgYXBwSWQ6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LiovXG4gIG1hc3RlcktleTogP3N0cmluZztcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuKi9cbiAgc2VydmVyVVJMOiA/c3RyaW5nO1xuICAvKiBBIEpTT04gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGEgd2hpdGVsaXN0IG9mIGtleXMuIEl0IGlzIHVzZWQgZm9yIHZhbGlkYXRpbmcgY2xpZW50cyB3aGVuIHRoZXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMuKi9cbiAga2V5UGFpcnM6ID9hbnk7XG4gIC8qIE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLiovXG4gIHdlYnNvY2tldFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIE51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS4qL1xuICBjYWNoZVRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFRoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4qL1xuICBsb2dMZXZlbDogP3N0cmluZztcbiAgLyogVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6REVGQVVMVDogMTMzNyAqL1xuICBwb3J0OiA/bnVtYmVyO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW1wb3RlbmN5T3B0aW9ucyB7XG4gIC8qIEFuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBwYXRoczogPyhzdHJpbmdbXSk7XG4gIC8qIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLlxuICA6REVGQVVMVDogMzAwICovXG4gIHR0bDogP251bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50TG9ja291dE9wdGlvbnMge1xuICAvKiBTZXQgdGhlIGR1cmF0aW9uIGluIG1pbnV0ZXMgdGhhdCBhIGxvY2tlZC1vdXQgYWNjb3VudCByZW1haW5zIGxvY2tlZCBvdXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgYmVjb21pbmcgdW5sb2NrZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLiAqL1xuICBkdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuICovXG4gIHRocmVzaG9sZDogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCAgaWYgdGhlIGFjY291bnQgc2hvdWxkIGJlIHVubG9ja2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBwYXNzd29yZCByZXNldC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdW5sb2NrT25QYXNzd29yZFJlc2V0OiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZFBvbGljeU9wdGlvbnMge1xuICAvKiBTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvckNhbGxiYWNrYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLiAqL1xuICB2YWxpZGF0b3JQYXR0ZXJuOiA/c3RyaW5nO1xuICAvKiAgICovXG4gIC8qIFNldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuXG4gIDxicj48YnI+XG4gIElmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yUGF0dGVybmAsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yQ2FsbGJhY2s6ID8oKSA9PiB2b2lkO1xuICAvKiBTZXQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gYmUgc2VudC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgUGFzc3dvcmQgZG9lcyBub3QgbWVldCB0aGUgUGFzc3dvcmQgUG9saWN5IHJlcXVpcmVtZW50cy5gICovXG4gIHZhbGlkYXRpb25FcnJvcjogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBkaXNhbGxvdyB0aGUgdXNlcm5hbWUgYXMgcGFydCBvZiB0aGUgcGFzc3dvcmQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGRvTm90QWxsb3dVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBwYXNzd29yZCBleHBpcmVzLiBMb2dpbiBhdHRlbXB0cyBmYWlsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHJlc2V0IHRoZSBwYXNzd29yZCBiZWZvcmUgZXhwaXJhdGlvbi4gKi9cbiAgbWF4UGFzc3dvcmRBZ2U6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSA+PSBgMGAgYW5kIDw9IGAyMGAuXG4gIDxicj5cbiAgRGVmYXVsdCBpcyBgMGAuXG4gICovXG4gIG1heFBhc3N3b3JkSGlzdG9yeTogP251bWJlcjtcbiAgLyogU2V0IHRoZSB2YWxpZGl0eSBkdXJhdGlvbiBvZiB0aGUgcGFzc3dvcmQgcmVzZXQgdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgKi9cbiAgcmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSBwYXNzd29yZCByZXNldCB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHJlc2V0VG9rZW5SZXVzZUlmVmFsaWQ6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgcmVxdWVzdCB0byByZXNldCB0aGUgcGFzc3dvcmQgc2hvdWxkIHJldHVybiBhIHN1Y2Nlc3MgcmVzcG9uc2UgZXZlbiBpZiB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcyBpcyBpbnZhbGlkLCBvciBgZmFsc2VgIGlmIHRoZSByZXF1ZXN0IHNob3VsZCByZXR1cm4gYW4gZXJyb3IgcmVzcG9uc2UgaWYgdGhlIGVtYWlsIGFkZHJlc3MgaXMgaW52YWxpZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHJlc2V0UGFzc3dvcmRTdWNjZXNzT25JbnZhbGlkRW1haWw6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRPcHRpb25zIHtcbiAgLyogU2V0cyB0aGUgYWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMgZm9yIHVwbG9hZGluZyBmaWxlcy4gVGhlIGV4dGVuc2lvbiBpcyBkZWZpbmVkIGFzIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW5zaW9ucywgb3IgYSByZWdleCBwYXR0ZXJuLjxicj48YnI+SXQgaXMgcmVjb21tZW5kZWQgdG8gcmVzdHJpY3QgdGhlIGZpbGUgdXBsb2FkIGV4dGVuc2lvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gSFRNTCBmaWxlcyBhcmUgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBhcyB0aGV5IG1heSBiZSB1c2VkIGJ5IGFuIGF0dGFja2VyIHdobyB1cGxvYWRzIGEgSFRNTCBmb3JtIHRvIGxvb2sgbGVnaXRpbWF0ZSB1bmRlciB5b3VyIGFwcCdzIGRvbWFpbiBuYW1lLCBvciB0byBjb21wcm9taXNlIHRoZSBzZXNzaW9uIHRva2VuIG9mIGFub3RoZXIgdXNlciB2aWEgYWNjZXNzaW5nIHRoZSBicm93c2VyJ3MgbG9jYWwgc3RvcmFnZS48YnI+PGJyPkRlZmF1bHRzIHRvIGBeKD8hKGh8SCkodHxUKShtfE0pKGx8TCk/JClgIHdoaWNoIGFsbG93cyBhbnkgZmlsZSBleHRlbnNpb24gZXhjZXB0IEhUTUwgZmlsZXMuXG4gIDpERUZBVUxUOiBbXCJeKD8hKGh8SCkodHxUKShtfE0pKGx8TCk/JClcIl0gKi9cbiAgZmlsZUV4dGVuc2lvbnM6ID8oc3RyaW5nW10pO1xuICAvKiAgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVGb3JQdWJsaWM6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVNjaGVtYUhvb2tzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHNjaGVtYSBjYWNoZSBleHBpcmVzIGFuZCB3aWxsIGJlIHJlZmV0Y2hlZCBmcm9tIHRoZSBkYXRhYmFzZS4gVXNlIHRoaXMgb3B0aW9uIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gQSBsb3cgZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIGNhY2hlIHRvIGJlIHVwZGF0ZWQgdG9vIG9mdGVuLCBjYXVzaW5nIHVubmVjZXNzYXJ5IGRhdGFiYXNlIHJlYWRzLiBBIGhpZ2ggZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIHRvIGJlIHVwZGF0ZWQgdG9vIHJhcmVseSwgaW5jcmVhc2luZyB0aGUgdGltZSByZXF1aXJlZCB1bnRpbCBzY2hlbWEgY2hhbmdlcyBwcm9wYWdhdGUgdG8gYWxsIHNlcnZlciBpbnN0YW5jZXMuIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBvciBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvcHRpb24gYGVuYWJsZVNjaGVtYUhvb2tzYC4gRGVmYXVsdCBpcyBpbmZpbml0ZSB3aGljaCBtZWFucyB0aGUgc2NoZW1hIGNhY2hlIG5ldmVyIGV4cGlyZXMuICovXG4gIHNjaGVtYUNhY2hlVHRsOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB3aGV0aGVyIHRvIHJldHJ5IGZhaWxlZCB3cml0ZXMuICovXG4gIHJldHJ5V3JpdGVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgYSBjdW11bGF0aXZlIHRpbWUgbGltaXQgaW4gbWlsbGlzZWNvbmRzIGZvciBwcm9jZXNzaW5nIG9wZXJhdGlvbnMgb24gYSBjdXJzb3IuICovXG4gIG1heFRpbWVNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1heGltdW0gcmVwbGljYXRpb24gbGFnIGZvciByZWFkcyBmcm9tIHNlY29uZGFyeSBub2Rlcy4qL1xuICBtYXhTdGFsZW5lc3NTZWNvbmRzOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB0aGUgbWluaW11bSBudW1iZXIgb2Ygb3BlbmVkLCBjYWNoZWQsIHJlYWR5LXRvLXVzZSBkYXRhYmFzZSBjb25uZWN0aW9ucyBtYWludGFpbmVkIGJ5IHRoZSBkcml2ZXIuICovXG4gIG1pblBvb2xTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbmVkLCBjYWNoZWQsIHJlYWR5LXRvLXVzZSBkYXRhYmFzZSBjb25uZWN0aW9ucyBtYWludGFpbmVkIGJ5IHRoZSBkcml2ZXIuICovXG4gIG1heFBvb2xTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgdG8gZXN0YWJsaXNoIGEgc2luZ2xlIFRDUCBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLiBTcGVjaWZ5aW5nIDAgZGlzYWJsZXMgdGhlIGNvbm5lY3Rpb24gdGltZW91dC4gKi9cbiAgY29ubmVjdFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBzcGVudCBhdHRlbXB0aW5nIHRvIHNlbmQgb3IgcmVjZWl2ZSBvbiBhIHNvY2tldCBiZWZvcmUgdGltaW5nIG91dC4gU3BlY2lmeWluZyAwIG1lYW5zIG5vIHRpbWVvdXQuICovXG4gIHNvY2tldFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgd2hldGhlciB0aGUgc29ja2V0IGF0dGVtcHRzIHRvIGNvbm5lY3QgdG8gSVB2NiBhbmQgSVB2NCBhZGRyZXNzZXMgdW50aWwgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLiBJZiBhdmFpbGFibGUsIHRoZSBkcml2ZXIgd2lsbCBzZWxlY3QgdGhlIGZpcnN0IElQdjYgYWRkcmVzcy4gKi9cbiAgYXV0b1NlbGVjdEZhbWlseTogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGEgY29ubmVjdGlvbiBhdHRlbXB0IHRvIGZpbmlzaCBiZWZvcmUgdHJ5aW5nIHRoZSBuZXh0IGFkZHJlc3Mgd2hlbiB1c2luZyB0aGUgYXV0b1NlbGVjdEZhbWlseSBvcHRpb24uIElmIHNldCB0byBhIHBvc2l0aXZlIGludGVnZXIgbGVzcyB0aGFuIDEwLCB0aGUgdmFsdWUgMTAgaXMgdXNlZCBpbnN0ZWFkLiAqL1xuICBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgZW1haWwgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSBlbWFpbCBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbiBpbmRleCBvbiB0aGUgX2VtYWlsX3ZlcmlmeV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsVmVyaWZ5VG9rZW46ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFuIGluZGV4IG9uIHRoZSBfcGVyaXNoYWJsZV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclBhc3N3b3JkUmVzZXRUb2tlbjogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgdXNlcm5hbWUgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSB1c2VybmFtZSBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclVzZXJuYW1lQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVuaXF1ZSBpbmRleCBvbiB0aGUgbmFtZSBmaWVsZCBvZiB0aGUgX1JvbGUgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4Um9sZU5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdmFsaWRhdGlvbiBvZiBpbmRleCBmaWVsZHMuIFdoZW4gZGlzYWJsZWQsIGluZGV4ZXMgY2FuIGJlIGNyZWF0ZWQgZXZlbiBpZiB0aGUgZmllbGRzIGRvIG5vdCBleGlzdCBpbiB0aGUgc2NoZW1hLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjcmVhdGluZyBpbmRleGVzIG9uIGZpZWxkcyB0aGF0IHdpbGwgYmUgYWRkZWQgbGF0ZXIuICovXG4gIGRpc2FibGVJbmRleEZpZWxkVmFsaWRhdGlvbjogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEFkYXB0ZXIge1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlXG4gIDpFTlY6XG4gICovXG4gIGVuYWJsZWQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0xldmVscyB7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIFRyaWdnZXJzIGBhZnRlclNhdmVgLCBgYWZ0ZXJEZWxldGVgLCBgYWZ0ZXJGaW5kYCwgYGFmdGVyTG9nb3V0YC4gRGVmYXVsdCBpcyBgaW5mb2AuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIHRyaWdnZXJBZnRlcjogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIHN1Y2Nlc3MuIERlZmF1bHQgaXMgYGluZm9gLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICB0cmlnZ2VyQmVmb3JlU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuXG4gIDpERUZBVUxUOiBlcnJvclxuICAqL1xuICB0cmlnZ2VyQmVmb3JlRXJyb3I6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBzdWNjZXNzLiBEZWZhdWx0IGlzIGBpbmZvYC5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgY2xvdWRGdW5jdGlvblN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBlcnJvci4gRGVmYXVsdCBpcyBgZXJyb3JgLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgY2xvdWRGdW5jdGlvbkVycm9yOiA/c3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQUFBLGlCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|