@aerokit/sdk 12.78.0 → 12.80.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/dist/cjs/bpm/process.js +4 -1
- package/dist/cjs/bpm/tasks.js +3 -1
- package/dist/cjs/bpm/tracer.js +3 -1
- package/dist/cjs/cms/cmis.js +105 -177
- package/dist/cjs/db/database.js +5 -1
- package/dist/cjs/db/query.js +19 -1
- package/dist/cjs/db/repository.js +2 -1
- package/dist/cjs/db/sql.js +5 -2
- package/dist/cjs/etcd/client.js +4 -1
- package/dist/cjs/http/errors/ForbiddenError.js +9 -9
- package/dist/cjs/http/errors/ValidationError.js +9 -9
- package/dist/cjs/http/request.js +2 -1
- package/dist/cjs/http/response.js +102 -188
- package/dist/cjs/http/rs/resource-http-controller.js +4 -1
- package/dist/cjs/http/rs/resource-mappings.js +6 -3
- package/dist/cjs/http/rs/resource-method.js +10 -1
- package/dist/cjs/http/rs/resource.js +11 -1
- package/dist/cjs/http/upload.js +3 -1
- package/dist/cjs/io/files.js +5 -7
- package/dist/cjs/io/streams.js +5 -1
- package/dist/cjs/io/zip.js +4 -1
- package/dist/cjs/job/scheduler.js +4 -1
- package/dist/cjs/kafka/consumer.js +3 -2
- package/dist/cjs/kafka/producer.js +3 -1
- package/dist/cjs/log/logging.js +2 -1
- package/dist/cjs/mail/client.js +2 -1
- package/dist/cjs/messaging/consumer.js +3 -1
- package/dist/cjs/messaging/producer.js +3 -1
- package/dist/cjs/mongodb/client.js +26 -1
- package/dist/cjs/mongodb/dao.js +3 -1
- package/dist/cjs/net/soap.js +15 -1
- package/dist/cjs/net/websockets.js +5 -1
- package/dist/cjs/platform/engines.js +2 -1
- package/dist/cjs/platform/os.js +7 -9
- package/dist/cjs/platform/problems.js +7 -13
- package/dist/cjs/platform/registry.js +4 -1
- package/dist/cjs/platform/repository.js +4 -1
- package/dist/cjs/platform/workspace.js +8 -1
- package/dist/cjs/redis/client.js +2 -1
- package/dist/cjs/security/oauth.js +2 -1
- package/dist/cjs/template/engines.js +6 -1
- package/dist/dts/db/query.d.ts +10 -0
- package/dist/esm/bpm/process.mjs +4 -1
- package/dist/esm/bpm/tasks.mjs +3 -1
- package/dist/esm/bpm/tracer.mjs +3 -1
- package/dist/esm/cms/cmis.mjs +105 -177
- package/dist/esm/db/database.mjs +5 -1
- package/dist/esm/db/query.mjs +19 -1
- package/dist/esm/db/repository.mjs +2 -1
- package/dist/esm/db/sql.mjs +5 -2
- package/dist/esm/etcd/client.mjs +4 -1
- package/dist/esm/http/errors/ForbiddenError.mjs +9 -9
- package/dist/esm/http/errors/ValidationError.mjs +9 -9
- package/dist/esm/http/request.mjs +2 -1
- package/dist/esm/http/response.mjs +102 -188
- package/dist/esm/http/rs/resource-http-controller.mjs +4 -1
- package/dist/esm/http/rs/resource-mappings.mjs +6 -3
- package/dist/esm/http/rs/resource-method.mjs +10 -1
- package/dist/esm/http/rs/resource.mjs +11 -1
- package/dist/esm/http/upload.mjs +3 -1
- package/dist/esm/io/files.mjs +5 -7
- package/dist/esm/io/streams.mjs +5 -1
- package/dist/esm/io/zip.mjs +4 -1
- package/dist/esm/job/scheduler.mjs +4 -1
- package/dist/esm/kafka/consumer.mjs +3 -2
- package/dist/esm/kafka/producer.mjs +3 -1
- package/dist/esm/log/logging.mjs +2 -1
- package/dist/esm/mail/client.mjs +2 -1
- package/dist/esm/messaging/consumer.mjs +3 -1
- package/dist/esm/messaging/producer.mjs +3 -1
- package/dist/esm/mongodb/client.mjs +26 -1
- package/dist/esm/mongodb/dao.mjs +3 -1
- package/dist/esm/net/soap.mjs +15 -1
- package/dist/esm/net/websockets.mjs +5 -1
- package/dist/esm/platform/engines.mjs +2 -1
- package/dist/esm/platform/os.mjs +7 -9
- package/dist/esm/platform/problems.mjs +7 -13
- package/dist/esm/platform/registry.mjs +4 -1
- package/dist/esm/platform/repository.mjs +4 -1
- package/dist/esm/platform/workspace.mjs +8 -1
- package/dist/esm/redis/client.mjs +2 -1
- package/dist/esm/security/oauth.mjs +2 -1
- package/dist/esm/template/engines.mjs +6 -1
- package/package.json +1 -1
package/dist/cjs/db/database.js
CHANGED
|
@@ -182,6 +182,7 @@ function getDateValue(value) {
|
|
|
182
182
|
return value;
|
|
183
183
|
}
|
|
184
184
|
class PreparedStatement {
|
|
185
|
+
native;
|
|
185
186
|
constructor(native) {
|
|
186
187
|
this.native = native;
|
|
187
188
|
}
|
|
@@ -366,6 +367,7 @@ class PreparedStatement {
|
|
|
366
367
|
}
|
|
367
368
|
}
|
|
368
369
|
class CallableStatement {
|
|
370
|
+
native;
|
|
369
371
|
constructor(native) {
|
|
370
372
|
this.native = native;
|
|
371
373
|
}
|
|
@@ -656,6 +658,7 @@ class CallableStatement {
|
|
|
656
658
|
}
|
|
657
659
|
}
|
|
658
660
|
class ResultSet {
|
|
661
|
+
native;
|
|
659
662
|
constructor(native) {
|
|
660
663
|
this.native = native;
|
|
661
664
|
}
|
|
@@ -760,6 +763,7 @@ class ResultSet {
|
|
|
760
763
|
}
|
|
761
764
|
}
|
|
762
765
|
class Connection {
|
|
766
|
+
native;
|
|
763
767
|
constructor(datasourceName) {
|
|
764
768
|
this.native = DatabaseFacade.getConnection(datasourceName);
|
|
765
769
|
}
|
|
@@ -903,4 +907,4 @@ if (typeof module !== "undefined") {
|
|
|
903
907
|
SQLTypes
|
|
904
908
|
};
|
|
905
909
|
}
|
|
906
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RhdGFiYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBEYXRhYmFzZVxuICpcbiAqL1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5pbXBvcnQgeyBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcbmNvbnN0IEpTcWxEYXRlID0gSmF2YS50eXBlKFwiamF2YS5zcWwuRGF0ZVwiKTtcbmNvbnN0IEpTcWxUaW1lc3RhbXAgPSBKYXZhLnR5cGUoXCJqYXZhLnNxbC5UaW1lc3RhbXBcIik7XG5jb25zdCBKU3FsVGltZSA9IEphdmEudHlwZShcImphdmEuc3FsLlRpbWVcIik7XG5jb25zdCBTdHJpbmdXcml0ZXIgPSBKYXZhLnR5cGUoXCJqYXZhLmlvLlN0cmluZ1dyaXRlclwiKTtcbmNvbnN0IFdyaXRlck91dHB1dFN0cmVhbSA9IEphdmEudHlwZShcIm9yZy5hcGFjaGUuY29tbW9ucy5pby5vdXRwdXQuV3JpdGVyT3V0cHV0U3RyZWFtXCIpO1xuY29uc3QgU3RhbmRhcmRDaGFyc2V0cyA9IEphdmEudHlwZShcImphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0c1wiKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIFNRTCB0eXBlIG5hbWVzIHRvIHRoZWlyIGphdmEuc3FsLlR5cGVzIGludGVnZXIgY29uc3RhbnRzLlxuICovXG5leHBvcnQgY29uc3QgU1FMVHlwZXMgPSBPYmplY3QuZnJlZXplKHtcblx0XCJCT09MRUFOXCI6IDE2LFxuXHRcIkRBVEVcIjogOTEsXG5cdFwiVElNRVwiOiA5Mixcblx0XCJUSU1FU1RBTVBcIjogOTMsXG5cdFwiRE9VQkxFXCI6IDgsXG5cdFwiRkxPQVRcIjogNixcblx0XCJSRUFMXCI6IDcsXG5cdFwiVElOWUlOVFwiOiAtNixcblx0XCJTTUFMTElOVFwiOiA1LFxuXHRcIklOVEVHRVJcIjogNCxcblx0XCJCSUdJTlRcIjogLTUsXG5cdFwiVkFSQ0hBUlwiOiAxMixcblx0XCJDSEFSXCI6IDEsXG5cdFwiQ0xPQlwiOiAyMDA1LFxuXHRcIkJMT0JcIjogMjAwNCxcblx0XCJWQVJCSU5BUllcIjogLTMsXG5cdFwiREVDSU1BTFwiOiAzLFxuXHRcIkFSUkFZXCI6IDIwMDMsXG5cdFwiTlZBUkNIQVJcIjogLTksXG5cdFwiTkNMT0JcIjogMjAxMSxcblx0XCJCSVRcIjogLTdcbn0pO1xuXG5leHBvcnQgZW51bSBEYXRhYmFzZVN5c3RlbSB7XG5cdFVOS05PV04sIERFUkJZLCBQT1NUR1JFU1FMLCBIMiwgTUFSSUFEQiwgSEFOQSwgU05PV0ZMQUtFLCBNWVNRTCwgTU9OR09EQiwgU1lCQVNFLCBNU1NRTFxufVxuXG4vLyAtLS0gTWV0YWRhdGEgSW50ZXJmYWNlcyAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcblx0LyoqIFRoZSBjb2x1bW5zLiAqL1xuXHRyZWFkb25seSBjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGluZGljZXMuICovXG5cdHJlYWRvbmx5IGluZGljZXM6IEluZGV4TWV0YWRhdGFbXTtcblx0LyoqIFRoZSBpbmRpY2VzLiAqL1xuXHRyZWFkb25seSBmb3JlaWduS2V5czogRm9yZWlnbktleU1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHNpemUuICovXG5cdHJlYWRvbmx5IHNpemU6IG51bWJlcjtcblx0LyoqIFRoZSBudWxsYWJsZS4gKi9cblx0cmVhZG9ubHkgbnVsbGFibGU6IGJvb2xlYW47XG5cdC8qKiBUaGUga2V5LiAqL1xuXHRyZWFkb25seSBrZXk6IGJvb2xlYW47XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHNjYWxlLiAqL1xuXHRyZWFkb25seSBzY2FsZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4TWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgY29sdW1uLiAqL1xuXHRyZWFkb25seSBjb2x1bW46IHN0cmluZztcblx0LyoqIFRoZSBub24gdW5pcXVlLiAqL1xuXHRyZWFkb25seSBub25VbmlxdWU6IGJvb2xlYW47XG5cdC8qKiBUaGUgcXVhbGlmaWVyLiAqL1xuXHRyZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblx0LyoqIFRoZSBvcmRpbmFsIHBvc2l0aW9uLiAqL1xuXHRyZWFkb25seSBvcmRpbmFsUG9zaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBzb3J0IG9yZGVyLiAqL1xuXHRyZWFkb25seSBzb3J0T3JkZXI6IHN0cmluZztcblx0LyoqIFRoZSBjYXJkaW5hbGl0eS4gKi9cblx0cmVhZG9ubHkgY2FyZGluYWxpdHk6IG51bWJlcjtcblx0LyoqIFRoZSBwYWdlcy4gKi9cblx0cmVhZG9ubHkgcGFnZXM6IG51bWJlcjtcblx0LyoqIFRoZSBmaWx0ZXIgY29uZGl0aW9uLiAqL1xuXHRyZWFkb25seSBmaWx0ZXJDb25kaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBraW5kLiAqL1xuXHRyZWFkb25seSBraW5kOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZWlnbktleU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHRhYmxlcy4gKi9cblx0cmVhZG9ubHkgdGFibGVzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgdmlld3MuICovXG5cdHJlYWRvbmx5IHZpZXdzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgcHJvY2VkdXJlcy4gKi9cblx0cmVhZG9ubHkgcHJvY2VkdXJlczogUHJvY2VkdXJlTWV0YWRhdGFbXTtcblx0LyoqIFRoZSBmdW5jdGlvbnMuICovXG5cdHJlYWRvbmx5IGZ1bmN0aW9uczogRnVuY3Rpb25NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGZ1bmN0aW9ucy4gKi9cblx0cmVhZG9ubHkgc2VxdWVuY2VzOiBTZXF1ZW5jZU1ldGFkYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJlTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogbnVtYmVyO1xuXHQvKiogVGhlIHR5cGUuICovXG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBwcmVjaXNpb24uICovXG5cdHJlYWRvbmx5IHByZWNpc2lvbjogbnVtYmVyO1xuXHQvKiogVGhlIGxlbmd0aC4gKi9cblx0cmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG5cdC8qKiBUaGUgc2NhbGUuICovXG5cdHJlYWRvbmx5IHNjYWxlOiBudW1iZXI7XG5cdC8qKiBUaGUgcmFkaXguICovXG5cdHJlYWRvbmx5IHJhZGl4OiBudW1iZXI7XG5cdC8qKiBUaGUgbnVsbGFibGUuICovXG5cdHJlYWRvbmx5IG51bGxhYmxlOiBib29sZWFuO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlTWV0YWRhdGEge1xuXHRyZWFkb25seSBhbGxQcm9jZWR1cmVzQXJlQ2FsbGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGFsbFRhYmxlc0FyZVNlbGVjdGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXHRyZWFkb25seSB1c2VyTmFtZTogc3RyaW5nO1xuXHRyZWFkb25seSBpc1JlYWRPbmx5OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEhpZ2g6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkTG93OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEF0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkQXRFbmQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGRhdGFiYXNlUHJvZHVjdE5hbWU6IHN0cmluZztcblx0cmVhZG9ubHkgZGF0YWJhc2VQcm9kdWN0VmVyc2lvbjogc3RyaW5nO1xuXHRyZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGRyaXZlclZlcnNpb246IHN0cmluZztcblx0cmVhZG9ubHkgZHJpdmVyTWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IGRyaXZlck1pbm9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSB1c2VzTG9jYWxGaWxlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgdXNlc0xvY2FsRmlsZVBlclRhYmxlOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VRdW90ZWRJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlUXVvdGVkSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBpZGVudGlmaWVyUXVvdGVTdHJpbmc6IHN0cmluZztcblx0cmVhZG9ubHkgc3FsS2V5d29yZHM6IHN0cmluZztcblx0cmVhZG9ubHkgbnVtZXJpY0Z1bmN0aW9uczogc3RyaW5nO1xuXHRyZWFkb25seSBzdHJpbmdGdW5jdGlvbnM6IHN0cmluZztcblx0cmVhZG9ubHkgc3lzdGVtRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHRpbWVEYXRlRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHNlYXJjaFN0cmluZ0VzY2FwZTogc3RyaW5nO1xuXHRyZWFkb25seSBleHRyYU5hbWVDaGFyYWN0ZXJzOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhBZGRDb2x1bW46IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhEcm9wQ29sdW1uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvbHVtbkFsaWFzaW5nOiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsUGx1c05vbk51bGxJc051bGw6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ29udmVydDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNUYWJsZUNvcnJlbGF0aW9uTmFtZXM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09yZGVyQnlVbnJlbGF0ZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR3JvdXBCeTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0dyb3VwQnlCZXlvbmRTZWxlY3Q6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNNdWx0aXBsZVJlc3VsdFNldHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTXVsdGlwbGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01pbmltdW1TUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcmVTUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hcjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJFbnRyeUxldmVsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJGdWxsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNGdWxsT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hVGVybTogc3RyaW5nO1xuXHRyZWFkb25seSBwcm9jZWR1cmVUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdGFsb2dUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGlzQ2F0YWxvZ0F0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGNhdGFsb2dTZXBhcmF0b3I6IHN0cmluZztcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5EYXRhTWFuaXB1bGF0aW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU2NoZW1hc0luSW5kZXhEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5Qcml2aWxlZ2VEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luRGF0YU1hbmlwdWxhdGlvbjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJbkluZGV4RGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblByaXZpbGVnZURlZmluaXRpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1Bvc2l0aW9uZWREZWxldGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzUG9zaXRpb25lZFVwZGF0ZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTZWxlY3RGb3JVcGRhdGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3VicXVlcmllc0luSW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcnJlbGF0ZWRTdWJxdWVyaWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uQWxsOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2s6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjazogYm9vbGVhbjtcblx0cmVhZG9ubHkgbWF4QmluYXJ5TGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDaGFyTGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5OYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heENvbHVtbnNJbkdyb3VwQnk6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luSW5kZXg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luT3JkZXJCeTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5zSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luVGFibGU6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q3Vyc29yTmFtZUxlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhJbmRleExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhTY2hlbWFOYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heFByb2NlZHVyZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q2F0YWxvZ05hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Um93U2l6ZTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhSb3dTaXplSW5jbHVkZUJsb2JzOiBib29sZWFuO1xuXHRyZWFkb25seSBtYXhTdGF0ZW1lbnRMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4U3RhdGVtZW50czogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhUYWJsZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VGFibGVzSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VXNlck5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgZGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzVHJhbnNhY3Rpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0RhdGFEZWZpbml0aW9uQW5kRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNEYXRhTWFuaXB1bGF0aW9uVHJhbnNhY3Rpb25zT25seTogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25DYXVzZXNUcmFuc2FjdGlvbkNvbW1pdDogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25JZ25vcmVkSW5UcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQmF0Y2hVcGRhdGVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NhdmVwb2ludHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTmFtZWRQYXJhbWV0ZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c011bHRpcGxlT3BlblJlc3VsdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR2V0R2VuZXJhdGVkS2V5czogYm9vbGVhbjtcblx0cmVhZG9ubHkgcmVzdWx0U2V0SG9sZGFiaWxpdHk6IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNYWpvclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNaW5vclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgamRiY01ham9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSBqZGJjTWlub3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHNxbFN0YXRlVHlwZTogbnVtYmVyO1xuXHRyZWFkb25seSBsb2NhdG9yc1VwZGF0ZUNvcHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RhdGVtZW50UG9vbGluZzogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdG9yZWRGdW5jdGlvbnNVc2luZ0NhbGxTeW50YXg6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGF1dG9Db21taXRGYWlsdXJlQ2xvc2VzQWxsUmVzdWx0U2V0czogYm9vbGVhbjtcblx0cmVhZG9ubHkgZ2VuZXJhdGVkS2V5QWx3YXlzUmV0dXJuZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG1heExvZ2ljYWxMb2JTaXplOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzUmVmQ3Vyc29yczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hczogU2NoZW1hTWV0YWRhdGFbXTtcblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuZnVuY3Rpb24gaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbjogYW55KTogYm9vbGVhbiB7XG5cdGxldCBpc0hhbmFEYXRhYmFzZSA9IGZhbHNlO1xuXHRsZXQgbWV0YWRhdGEgPSBjb25uZWN0aW9uLmdldE1ldGFEYXRhKCk7XG5cdGlmIChtZXRhZGF0YSAhPT0gbnVsbCAmJiBtZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0aXNIYW5hRGF0YWJhc2UgPSBtZXRhZGF0YS5nZXREYXRhYmFzZVByb2R1Y3ROYW1lKCkgPT09IFwiSERCXCI7XG5cdH1cblx0cmV0dXJuIGlzSGFuYURhdGFiYXNlO1xufVxuXG5mdW5jdGlvbiByZWFkQ2xvYlZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBhbnkge1xuXHRyZXR1cm4gdmFsdWUgPyB2YWx1ZS5nZXRTdWJTdHJpbmcoMSwgdmFsdWUubGVuZ3RoKCkpIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNsb2JWYWx1ZShuYXRpdmU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XG5cdHRyeSB7XG5cdFx0bGV0IGNvbm5lY3Rpb24gPSBuYXRpdmUuZ2V0Q29ubmVjdGlvbigpOyAvLyBpbnRlbnRpb25hbGx5IG5vdCBjbG9zZWRcblx0XHRpZiAoY29ubmVjdGlvbiA9PT0gbnVsbCB8fCBjb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbid0IGNyZWF0ZSBuZXcgJ0Nsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBjbG9iID0gbnVsbDtcblx0XHRpZiAoaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbikpIHtcblx0XHRcdGxldCBwcyA9IG51bGw7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwcyA9IGNvbm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChcIlNFTEVDVCBUT19DTE9CICg/KSBGUk9NIERVTU1ZO1wiKTtcblx0XHRcdFx0cHMuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRjbG9iID0gcnMuZ2V0Q2xvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUNsb2IoKTtcblx0XHRcdGNsb2Iuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb2I7XG5cdH0gY2F0Y2ggKGU6IGFueSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRXJyb3Igb2NjdXJlZCBkdXJpbmcgY3JlYXRpb24gb2YgJ0Nsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkTkNsb2JWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgYW55IHtcblx0cmV0dXJuIHZhbHVlID8gdmFsdWUuZ2V0U3ViU3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOQ2xvYlZhbHVlKG5hdGl2ZTogYW55LCB2YWx1ZTogYW55KTogYW55IHtcblx0dHJ5IHtcblx0XHRsZXQgY29ubmVjdGlvbiA9IG5hdGl2ZS5nZXRDb25uZWN0aW9uKCk7IC8vIGludGVudGlvbmFsbHkgbm90IGNsb3NlZFxuXHRcdGlmIChjb25uZWN0aW9uID09PSBudWxsIHx8IGNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY3JlYXRlIG5ldyAnTkNsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBuY2xvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fTkNMT0IgKD8pIEZST00gRFVNTVk7XCIpO1xuXHRcdFx0XHRwcy5zZXRTdHJpbmcoMSwgdmFsdWUpO1xuXHRcdFx0XHRsZXQgcnMgPSBwcy5leGVjdXRlUXVlcnkoKTtcblx0XHRcdFx0aWYgKHJzLm5leHQoKSkge1xuXHRcdFx0XHRcdG5jbG9iID0gcnMuZ2V0TkNsb2IoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChwcyAhPT0gbnVsbCAmJiBwcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cHMuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRuY2xvYiA9IGNvbm5lY3Rpb24uY3JlYXRlTkNsb2IoKTtcblx0XHRcdG5jbG9iLnNldFN0cmluZygxLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuY2xvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnTkNsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCbG9iVmFsdWUobmF0aXZlOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkge1xuXHR0cnkge1xuXHRcdGxldCBjb25uZWN0aW9uID0gbmF0aXZlLmdldENvbm5lY3Rpb24oKTsgLy8gaW50ZW50aW9uYWxseSBub3QgY2xvc2VkXG5cdFx0aWYgKGNvbm5lY3Rpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBjcmVhdGUgbmV3ICdCbG9iJyB2YWx1ZSBhcyB0aGUgY29ubmVjdGlvbiBpcyBudWxsXCIpO1xuXHRcdH1cblx0XHRsZXQgYmxvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fQkxPQiAoPykgRlJPTSBEVU1NWTtcIik7XG5cdFx0XHRcdHBzLnNldEJ5dGVzKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRibG9iID0gcnMuZ2V0QmxvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUJsb2IoKTtcblx0XHRcdGJsb2Iuc2V0Qnl0ZXMoMSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gYmxvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnQ2xvYicgdmFsdWU6ICR7ZS5tZXNzYWdlfWApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IERhdGUge1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbi8vIC0tLSBTdGF0ZW1lbnQgQ2xhc3NlcyAtLS1cblxuLyoqXG4gKiBTdGF0ZW1lbnQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVwYXJlZFN0YXRlbWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGUoKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlUXVlcnkoKTogUmVzdWx0U2V0IHtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh0aGlzLm5hdGl2ZS5leGVjdXRlUXVlcnkoKSk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZVVwZGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlVXBkYXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChpbmRleDogbnVtYmVyLCBzcWxUeXBlOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKGluZGV4LCBzcWxUeXBlKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBCeXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlRJTllJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qKjogQmxvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBibG9iID0gY3JlYXRlQmxvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCbG9iKGluZGV4LCBibG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5CTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Q2xvYihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueSAvKjogQ2xvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKGluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBhbnkgLyo6IE5DbG9iKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IG5jbG9iID0gY3JlYXRlTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgdmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TkNsb2IoaW5kZXgsIG5jbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OQ0xPQik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzTmF0aXZlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCeXRlcyhpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlZBUkJJTkFSWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2YXIgZGF0YSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJ5dGVzKGluZGV4LCBkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJCSU5BUlkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREYXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldERhdGUoaW5kZXgsIG5ldyBKU3FsRGF0ZShkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRBVEUpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0RmxvYXQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RmxvYXQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5GTE9BVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEludChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRJbnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5JTlRFR0VSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TG9uZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRMb25nKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuQklHSU5UKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U2hvcnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U2hvcnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5TTUFMTElOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFN0cmluZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRTdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJDSEFSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZShpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGdldERhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRUaW1lKGluZGV4LCBuZXcgSlNxbFRpbWUoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZXN0YW1wKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldFRpbWVzdGFtcChpbmRleCwgbmV3IEpTcWxUaW1lc3RhbXAoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FU1RBTVApO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaWdEZWNpbWFsKGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyIC8qOiBCaWdEZWNpbWFsKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QmlnRGVjaW1hbChpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRFQ0lNQUwpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXROU3RyaW5nKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5TdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OVkFSQ0hBUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFkZEJhdGNoKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZUJhdGNoKCk6IG51bWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZXhlY3V0ZUJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWV0YURhdGEoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNb3JlUmVzdWx0cygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TW9yZVJlc3VsdHMoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJNZXRhRGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRQYXJhbWV0ZXJNZXRhRGF0YSgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFdhcm5pbmcoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0V2FybmluZ3MoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgQ2FsbGFibGVTdGF0ZW1lbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGVRdWVyeSgpOiBSZXN1bHRTZXQge1xuXHRcdHJldHVybiBuZXcgUmVzdWx0U2V0KHRoaXMubmF0aXZlLmV4ZWN1dGVRdWVyeSgpKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlVXBkYXRlKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGVVcGRhdGUoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVNjYWxlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCBzY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVR5cGVOYW1lKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgdHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCB0eXBlTmFtZSk7XG5cdH1cblxuXHRwdWJsaWMgd2FzTnVsbCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUud2FzTnVsbCgpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U3RyaW5nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qnl0ZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTaG9ydChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2hvcnQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEludChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SW50KHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb25nKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRGbG9hdChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RmxvYXQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldERvdWJsZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXREYXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBEYXRlIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZShwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIGRhdGVJbnN0YW5jZSAhPT0gbnVsbCAmJiBkYXRlSW5zdGFuY2UgIT09IHVuZGVmaW5lZCA/IG5ldyBEYXRlKGRhdGVJbnN0YW5jZS5nZXRUaW1lKCkpIDogZGF0ZUluc3RhbmNlO1xuXHR9XG5cblx0cHVibGljIGdldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRPYmplY3QocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXg6IG51bWJlcik6IG51bWJlciAvKjogc3FsLkJpZ0RlY2ltYWwqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJlZihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuUmVmKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZWYocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmxvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgcGFyYW1ldGVySW5kZXgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCbG9iTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkgLyo6IHNxbC5CbG9iKi8ge1xuXHRcdHJldHVybiBEYXRhYmFzZUZhY2FkZS5yZWFkQmxvYlZhbHVlKHRoaXMubmF0aXZlLCBwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQ2xvYiovIHtcblx0XHRyZXR1cm4gcmVhZENsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXRDbG9iKHBhcmFtZXRlckluZGV4KSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihwYXJhbWV0ZXJJbmRleCkpO1xuXHR9XG5cblx0cHVibGljIGdldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5TdHJpbmcocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEFycmF5KHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnlbXSAvKjogc3FsLkFycmF5Ki8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRBcnJheShwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VVJMKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJvd0lkKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkgLyo6IHNxbC5Sb3dJZCovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Um93SWQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFhNTChwYXJhbWV0ZXJJbmRleDogc3RyaW5nIHwgbnVtYmVyKTogYW55IC8qOiBzcWwuU1FMWE1MKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTUUxYTUwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIHNldFVSTChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0VVJMKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlU3RyOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIsIHR5cGVOYW1lPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgc3FsVHlwZTogbnVtYmVyID0gTnVtYmVyLmlzSW50ZWdlcihzcWxUeXBlU3RyIGFzIG51bWJlcikgPyBzcWxUeXBlU3RyIGFzIG51bWJlciA6IFNRTFR5cGVzW3NxbFR5cGVTdHIgYXMga2V5b2YgdHlwZW9mIFNRTFR5cGVzXTtcblx0XHRpZiAodHlwZU5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlTmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSwgdHlwZU5hbWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBieXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFNob3J0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFNob3J0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuU01BTExJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRJbnQocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0SW50KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuSU5URUdFUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldExvbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TG9uZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJR0lOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEZsb2F0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEZsb2F0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRkxPQVQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0QmlnRGVjaW1hbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlciAvKjogQmlnRGVjaW1hbCovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5ERUNJTUFMKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U3RyaW5nKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFN0cmluZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlcyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueVtdIC8qYnl0ZVtdKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZXMocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5BUlJBWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldERhdGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RGF0ZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxEYXRlKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuREFURSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxUaW1lKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuVElNRSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4LCBuZXcgSlNxbFRpbWVzdGFtcChkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlRJTUVTVEFNUCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEFzY2lpU3RyZWFtKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIGlucHV0U3RyZWFtOiBJbnB1dFN0cmVhbSwgbGVuZ3RoPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGxlbmd0aCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QXNjaWlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRBc2NpaVN0cmVhbShwYXJhbWV0ZXJJbmRleCwgaW5wdXRTdHJlYW0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHRhcmdldFNxbFR5cGU/OiBudW1iZXIsIHNjYWxlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgc2NhbGUgIT09IG51bGwgJiYgdGFyZ2V0U3FsVHlwZSAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFNxbFR5cGUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE9iamVjdChwYXJhbWV0ZXJJbmRleCwgdmFsdWUsIHRhcmdldFNxbFR5cGUsIHNjYWxlKTtcblx0XHR9IGVsc2UgaWYgKHRhcmdldFNxbFR5cGUgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXRTcWxUeXBlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRPYmplY3QocGFyYW1ldGVySW5kZXgsIHZhbHVlLCB0YXJnZXRTcWxUeXBlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFJvd0lkKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBudW1iZXIgLyo6IFJvd0lkKi8pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSb3dJZChwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHR9XG5cblx0cHVibGljIHNldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROU3RyaW5nKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRTUUxYTUwocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogU1FMWE1MKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U1FMWE1MKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk51bGxhYmxlIFNRTFhNTCB0eXBlIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLypCbG9iICovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGJsb2IgPSBjcmVhdGVCbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJsb2IocGFyYW1ldGVySW5kZXgsIGJsb2IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRDbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLyo6IENsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKHBhcmFtZXRlckluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogTkNsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBuY2xvYiA9IGNyZWF0ZU5DbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5DbG9iKHBhcmFtZXRlckluZGV4LCBuY2xvYik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTkNMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9yZVJlc3VsdHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1vcmVSZXN1bHRzKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTogYW55IC8qOiBQYXJhbWV0ZXJNZXRhRGF0YSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG59XG5cbi8qKlxuICogUmVzdWx0U2V0IG9iamVjdFxuICovXG5leHBvcnQgY2xhc3MgUmVzdWx0U2V0IHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgdGhlIFJlc3VsdFNldCBpbnRvIGEgSlNPTiBhcnJheSBvZiBvYmplY3RzLlxuXHQgKiBAcGFyYW0gbGltaXRlZCBXaGV0aGVyIHRvIHVzZSBsaW1pdGVkIEpTT04gY29udmVyc2lvbiAob3B0aW1pemVkKS5cblx0ICogQHBhcmFtIHN0cmluZ2lmeSBXaGV0aGVyIHRvIHJldHVybiB0aGUgSlNPTiBhcyBhIHN0cmluZyBvciBhIHBhcnNlZCBhcnJheS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgc2V0LCBvciBhIHN0cmluZyBpZiBzdHJpbmdpZnkgaXMgdHJ1ZS5cblx0ICovXG5cdHB1YmxpYyB0b0pzb24obGltaXRlZCA9IGZhbHNlLCBzdHJpbmdpZnkgPSBmYWxzZSk6IGFueVtdIHtcblx0XHRjb25zdCBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTtcblx0XHRjb25zdCBvdXRwdXQgPSBXcml0ZXJPdXRwdXRTdHJlYW1cblx0XHRcdC5idWlsZGVyKClcblx0XHRcdC5zZXRXcml0ZXIoc3cpXG5cdFx0XHQuc2V0Q2hhcnNldChTdGFuZGFyZENoYXJzZXRzLlVURl84KVxuXHRcdFx0LmdldCgpO1xuXHRcdERhdGFiYXNlRmFjYWRlLnRvSnNvbih0aGlzLm5hdGl2ZSwgbGltaXRlZCwgc3RyaW5naWZ5LCBvdXRwdXQpO1xuXHRcdGNvbnN0IGpzb25TdHJpbmcgPSBzdy50b1N0cmluZygpO1xuXHRcdHJldHVybiBzdHJpbmdpZnkgPyBqc29uU3RyaW5nIDogSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBCaWdEZWNpbWFsKi8gIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0QmlnRGVjaW1hbChpZGVudGlmaWVyKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCb29sZWFuKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueVtdIC8qOiBieXRlW10qLyB7XG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMubmF0aXZlLmdldEJ5dGVzKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fTtcblxuXHRwdWJsaWMgZ2V0Qnl0ZXNOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55W10gLyo6IGJ5dGVbXSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qnl0ZXMoaWRlbnRpZmllcik7XG5cdH07XG5cblx0cHVibGljIGdldEJsb2IoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJsb2JOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBhbnkgLyo6IHNxbC5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkQ2xvYlZhbHVlKHRoaXMubmF0aXZlLmdldENsb2IoaWRlbnRpZmllcikpO1xuXHR9XG5cblx0cHVibGljIGdldE5DbG9iKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihpZGVudGlmaWVyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXREb3VibGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEZsb2F0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEZsb2F0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEludChpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJbnQoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TG9uZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFNob3J0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFNob3J0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTdHJpbmcoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRUaW1lKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRUaW1lc3RhbXAoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBpc0FmdGVyTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNBZnRlckxhc3QoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0JlZm9yZUZpcnN0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc0JlZm9yZUZpcnN0KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmlzQ2xvc2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNGaXJzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNGaXJzdCgpO1xuXHR9XG5cblx0cHVibGljIGlzTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNMYXN0KCk7XG5cdH1cblxuXHRwdWJsaWMgbmV4dCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUubmV4dCgpO1xuXHR9XG5cblx0cHVibGljIGdldE1ldGFEYXRhKCk6IGFueSAvKjogUmVzdWx0U2V0TWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TlN0cmluZyhjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TlN0cmluZyhjb2x1bW5JbmRleCk7XG5cdH1cbn1cblxuLy8gLS0tIENvbm5lY3Rpb24gQ2xhc3MgLS0tXG5cbi8qKlxuICogQ29ubmVjdGlvbiBvYmplY3Qgd3JhcHBlciBhcm91bmQgYSBuYXRpdmUgSmF2YSBgQ29ubmVjdGlvbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uIHtcblxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IERhdGFiYXNlRmFjYWRlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29ubmVjdGlvbiBpcyBmb3IgYSBzcGVjaWZpYyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgaXNPZlR5cGUoZGF0YWJhc2VTeXN0ZW06IERhdGFiYXNlU3lzdGVtKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YWJhc2VTeXN0ZW0oKSA9PT0gZGF0YWJhc2VTeXN0ZW07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0gYXMgYSB7QGxpbmsgRGF0YWJhc2VTeXN0ZW19IGVudW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RGF0YWJhc2VTeXN0ZW0oKTogRGF0YWJhc2VTeXN0ZW0ge1xuXHRcdGNvbnN0IGRiU3lzdGVtOiBzdHJpbmcgPSB0aGlzLm5hdGl2ZS5nZXREYXRhYmFzZVN5c3RlbSgpLm5hbWUoKTtcblx0XHRzd2l0Y2ggKGRiU3lzdGVtKSB7XG5cdFx0XHRjYXNlIFwiREVSQllcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkRFUkJZO1xuXHRcdFx0Y2FzZSBcIlBPU1RHUkVTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlBPU1RHUkVTUUw7XG5cdFx0XHRjYXNlIFwiSDJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkgyO1xuXHRcdFx0Y2FzZSBcIk1BUklBREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1BUklBREI7XG5cdFx0XHRjYXNlIFwiSEFOQVwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uSEFOQTtcblx0XHRcdGNhc2UgXCJTTk9XRkxBS0VcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlNOT1dGTEFLRTtcblx0XHRcdGNhc2UgXCJNU1NRTFwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uTVNTUUw7XG5cdFx0XHRjYXNlIFwiTVlTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1ZU1FMO1xuXHRcdFx0Y2FzZSBcIk1PTkdPREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1PTkdPREI7XG5cdFx0XHRjYXNlIFwiU1lCQVNFXCI6XG5cdFx0XHRcdHJldHVybiBEYXRhYmFzZVN5c3RlbS5TWUJBU0U7XG5cdFx0XHRjYXNlIFwiVU5LTk9XTlwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uVU5LTk9XTjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBtYXBwaW5nIGZvciBkYXRhYmFzZSBzeXN0ZW0gdHlwZSAke2RiU3lzdGVtfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBQcmVwYXJlZFN0YXRlbWVudH0gb2JqZWN0IGZvciBzZW5kaW5nIHBhcmFtZXRlcml6ZWQgU1FMIHN0YXRlbWVudHMgdG8gdGhlIGRhdGFiYXNlLlxuXHQgKi9cblx0cHVibGljIHByZXBhcmVTdGF0ZW1lbnQoc3FsOiBzdHJpbmcpOiBQcmVwYXJlZFN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBQcmVwYXJlZFN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlU3RhdGVtZW50KHNxbCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB7QGxpbmsgQ2FsbGFibGVTdGF0ZW1lbnR9IG9iamVjdCBmb3IgY2FsbGluZyBkYXRhYmFzZSBzdG9yZWQgcHJvY2VkdXJlcyBvciBmdW5jdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgcHJlcGFyZUNhbGwoc3FsOiBzdHJpbmcpOiBDYWxsYWJsZVN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBDYWxsYWJsZVN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlQ2FsbChzcWwpKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNDbG9zZWQoKSkge1xuXHRcdFx0dGhpcy5uYXRpdmUuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY29tbWl0KCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNvbW1pdCgpO1xuXHR9XG5cblx0cHVibGljIGdldEF1dG9Db21taXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEF1dG9Db21taXQoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXRhbG9nKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENhdGFsb2coKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTY2hlbWEoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2NoZW1hKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc1JlYWRPbmx5KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNWYWxpZCgpO1xuXHR9XG5cblx0cHVibGljIHJvbGxiYWNrKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJvbGxiYWNrKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXRhbG9nKGNhdGFsb2c6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldENhdGFsb2coY2F0YWxvZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSZWFkT25seShyZWFkT25seSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U2NoZW1hKHNjaGVtYTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0U2NoZW1hKHNjaGVtYSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VHJhbnNhY3Rpb25Jc29sYXRpb24odHJhbnNhY3Rpb25Jc29sYXRpb246IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldFRyYW5zYWN0aW9uSXNvbGF0aW9uKHRyYW5zYWN0aW9uSXNvbGF0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNZXRhRGF0YSgpOiBhbnkgLyo6IERhdGFiYXNlTWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cbn1cblxuLy8gLS0tIERhdGFiYXNlIENsYXNzIC0tLVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2Uge1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgZGF0YSBzb3VyY2UgbmFtZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldERhdGFTb3VyY2VzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBkYXRhc291cmNlcyA9IERhdGFiYXNlRmFjYWRlLmdldERhdGFTb3VyY2VzKCk7XG5cdFx0cmV0dXJuIGRhdGFzb3VyY2VzID8gSlNPTi5wYXJzZShkYXRhc291cmNlcykgOiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGRhdGFiYXNlIG1ldGFkYXRhIGZvciB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRNZXRhZGF0YShkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IERhdGFiYXNlTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gRGF0YWJhc2VGYWNhZGUuZ2V0TWV0YWRhdGEoZGF0YXNvdXJjZU5hbWUpO1xuXHRcdHJldHVybiBtZXRhZGF0YSA/IEpTT04ucGFyc2UobWV0YWRhdGEpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHByb2R1Y3QgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFByb2R1Y3ROYW1lKGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuZ2V0UHJvZHVjdE5hbWUoZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBuZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcblx0XHRyZXR1cm4gbmV3IENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHRcdERhdGFiYXNlLFxuXHRcdENvbm5lY3Rpb24sXG5cdFx0UHJlcGFyZWRTdGF0ZW1lbnQsXG5cdFx0Q2FsbGFibGVTdGF0ZW1lbnQsXG5cdFx0UmVzdWx0U2V0LFxuXHRcdERhdGFiYXNlU3lzdGVtLFxuXHRcdFNRTFR5cGVzXG5cdH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7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RUFLckIsT0FBYyxpQkFBMkI7QUFDeEMsVUFBTSxjQUFjLGVBQWUsZUFBZTtBQUNsRCxXQUFPLGNBQWMsS0FBSyxNQUFNLFdBQVcsSUFBSSxDQUFDO0FBQUEsRUFDakQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsWUFBWSxnQkFBdUQ7QUFDaEYsVUFBTSxXQUFXLGVBQWUsWUFBWSxjQUFjO0FBQzFELFdBQU8sV0FBVyxLQUFLLE1BQU0sUUFBUSxJQUFJO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsZUFBZSxnQkFBaUM7QUFDN0QsV0FBTyxlQUFlLGVBQWUsY0FBYztBQUFBLEVBQ3BEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLGNBQWMsZ0JBQXFDO0FBQ2hFLFdBQU8sSUFBSSxXQUFXLGNBQWM7QUFBQSxFQUNyQztBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFBQSxJQUNoQjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Q7QUFDRDsiLAogICJuYW1lcyI6IFsiRGF0YWJhc2VTeXN0ZW0iLCAiaXNIYW5hRGF0YWJhc2UiXQp9Cg==
|
|
910
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RhdGFiYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBEYXRhYmFzZVxuICpcbiAqL1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5pbXBvcnQgeyBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcbmNvbnN0IEpTcWxEYXRlID0gSmF2YS50eXBlKFwiamF2YS5zcWwuRGF0ZVwiKTtcbmNvbnN0IEpTcWxUaW1lc3RhbXAgPSBKYXZhLnR5cGUoXCJqYXZhLnNxbC5UaW1lc3RhbXBcIik7XG5jb25zdCBKU3FsVGltZSA9IEphdmEudHlwZShcImphdmEuc3FsLlRpbWVcIik7XG5jb25zdCBTdHJpbmdXcml0ZXIgPSBKYXZhLnR5cGUoXCJqYXZhLmlvLlN0cmluZ1dyaXRlclwiKTtcbmNvbnN0IFdyaXRlck91dHB1dFN0cmVhbSA9IEphdmEudHlwZShcIm9yZy5hcGFjaGUuY29tbW9ucy5pby5vdXRwdXQuV3JpdGVyT3V0cHV0U3RyZWFtXCIpO1xuY29uc3QgU3RhbmRhcmRDaGFyc2V0cyA9IEphdmEudHlwZShcImphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0c1wiKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIFNRTCB0eXBlIG5hbWVzIHRvIHRoZWlyIGphdmEuc3FsLlR5cGVzIGludGVnZXIgY29uc3RhbnRzLlxuICovXG5leHBvcnQgY29uc3QgU1FMVHlwZXMgPSBPYmplY3QuZnJlZXplKHtcblx0XCJCT09MRUFOXCI6IDE2LFxuXHRcIkRBVEVcIjogOTEsXG5cdFwiVElNRVwiOiA5Mixcblx0XCJUSU1FU1RBTVBcIjogOTMsXG5cdFwiRE9VQkxFXCI6IDgsXG5cdFwiRkxPQVRcIjogNixcblx0XCJSRUFMXCI6IDcsXG5cdFwiVElOWUlOVFwiOiAtNixcblx0XCJTTUFMTElOVFwiOiA1LFxuXHRcIklOVEVHRVJcIjogNCxcblx0XCJCSUdJTlRcIjogLTUsXG5cdFwiVkFSQ0hBUlwiOiAxMixcblx0XCJDSEFSXCI6IDEsXG5cdFwiQ0xPQlwiOiAyMDA1LFxuXHRcIkJMT0JcIjogMjAwNCxcblx0XCJWQVJCSU5BUllcIjogLTMsXG5cdFwiREVDSU1BTFwiOiAzLFxuXHRcIkFSUkFZXCI6IDIwMDMsXG5cdFwiTlZBUkNIQVJcIjogLTksXG5cdFwiTkNMT0JcIjogMjAxMSxcblx0XCJCSVRcIjogLTdcbn0pO1xuXG5leHBvcnQgZW51bSBEYXRhYmFzZVN5c3RlbSB7XG5cdFVOS05PV04sIERFUkJZLCBQT1NUR1JFU1FMLCBIMiwgTUFSSUFEQiwgSEFOQSwgU05PV0ZMQUtFLCBNWVNRTCwgTU9OR09EQiwgU1lCQVNFLCBNU1NRTFxufVxuXG4vLyAtLS0gTWV0YWRhdGEgSW50ZXJmYWNlcyAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcblx0LyoqIFRoZSBjb2x1bW5zLiAqL1xuXHRyZWFkb25seSBjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGluZGljZXMuICovXG5cdHJlYWRvbmx5IGluZGljZXM6IEluZGV4TWV0YWRhdGFbXTtcblx0LyoqIFRoZSBpbmRpY2VzLiAqL1xuXHRyZWFkb25seSBmb3JlaWduS2V5czogRm9yZWlnbktleU1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHNpemUuICovXG5cdHJlYWRvbmx5IHNpemU6IG51bWJlcjtcblx0LyoqIFRoZSBudWxsYWJsZS4gKi9cblx0cmVhZG9ubHkgbnVsbGFibGU6IGJvb2xlYW47XG5cdC8qKiBUaGUga2V5LiAqL1xuXHRyZWFkb25seSBrZXk6IGJvb2xlYW47XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHNjYWxlLiAqL1xuXHRyZWFkb25seSBzY2FsZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4TWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgY29sdW1uLiAqL1xuXHRyZWFkb25seSBjb2x1bW46IHN0cmluZztcblx0LyoqIFRoZSBub24gdW5pcXVlLiAqL1xuXHRyZWFkb25seSBub25VbmlxdWU6IGJvb2xlYW47XG5cdC8qKiBUaGUgcXVhbGlmaWVyLiAqL1xuXHRyZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblx0LyoqIFRoZSBvcmRpbmFsIHBvc2l0aW9uLiAqL1xuXHRyZWFkb25seSBvcmRpbmFsUG9zaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBzb3J0IG9yZGVyLiAqL1xuXHRyZWFkb25seSBzb3J0T3JkZXI6IHN0cmluZztcblx0LyoqIFRoZSBjYXJkaW5hbGl0eS4gKi9cblx0cmVhZG9ubHkgY2FyZGluYWxpdHk6IG51bWJlcjtcblx0LyoqIFRoZSBwYWdlcy4gKi9cblx0cmVhZG9ubHkgcGFnZXM6IG51bWJlcjtcblx0LyoqIFRoZSBmaWx0ZXIgY29uZGl0aW9uLiAqL1xuXHRyZWFkb25seSBmaWx0ZXJDb25kaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBraW5kLiAqL1xuXHRyZWFkb25seSBraW5kOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZWlnbktleU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHRhYmxlcy4gKi9cblx0cmVhZG9ubHkgdGFibGVzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgdmlld3MuICovXG5cdHJlYWRvbmx5IHZpZXdzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgcHJvY2VkdXJlcy4gKi9cblx0cmVhZG9ubHkgcHJvY2VkdXJlczogUHJvY2VkdXJlTWV0YWRhdGFbXTtcblx0LyoqIFRoZSBmdW5jdGlvbnMuICovXG5cdHJlYWRvbmx5IGZ1bmN0aW9uczogRnVuY3Rpb25NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGZ1bmN0aW9ucy4gKi9cblx0cmVhZG9ubHkgc2VxdWVuY2VzOiBTZXF1ZW5jZU1ldGFkYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJlTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogbnVtYmVyO1xuXHQvKiogVGhlIHR5cGUuICovXG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBwcmVjaXNpb24uICovXG5cdHJlYWRvbmx5IHByZWNpc2lvbjogbnVtYmVyO1xuXHQvKiogVGhlIGxlbmd0aC4gKi9cblx0cmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG5cdC8qKiBUaGUgc2NhbGUuICovXG5cdHJlYWRvbmx5IHNjYWxlOiBudW1iZXI7XG5cdC8qKiBUaGUgcmFkaXguICovXG5cdHJlYWRvbmx5IHJhZGl4OiBudW1iZXI7XG5cdC8qKiBUaGUgbnVsbGFibGUuICovXG5cdHJlYWRvbmx5IG51bGxhYmxlOiBib29sZWFuO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlTWV0YWRhdGEge1xuXHRyZWFkb25seSBhbGxQcm9jZWR1cmVzQXJlQ2FsbGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGFsbFRhYmxlc0FyZVNlbGVjdGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXHRyZWFkb25seSB1c2VyTmFtZTogc3RyaW5nO1xuXHRyZWFkb25seSBpc1JlYWRPbmx5OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEhpZ2g6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkTG93OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEF0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkQXRFbmQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGRhdGFiYXNlUHJvZHVjdE5hbWU6IHN0cmluZztcblx0cmVhZG9ubHkgZGF0YWJhc2VQcm9kdWN0VmVyc2lvbjogc3RyaW5nO1xuXHRyZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGRyaXZlclZlcnNpb246IHN0cmluZztcblx0cmVhZG9ubHkgZHJpdmVyTWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IGRyaXZlck1pbm9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSB1c2VzTG9jYWxGaWxlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgdXNlc0xvY2FsRmlsZVBlclRhYmxlOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VRdW90ZWRJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlUXVvdGVkSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBpZGVudGlmaWVyUXVvdGVTdHJpbmc6IHN0cmluZztcblx0cmVhZG9ubHkgc3FsS2V5d29yZHM6IHN0cmluZztcblx0cmVhZG9ubHkgbnVtZXJpY0Z1bmN0aW9uczogc3RyaW5nO1xuXHRyZWFkb25seSBzdHJpbmdGdW5jdGlvbnM6IHN0cmluZztcblx0cmVhZG9ubHkgc3lzdGVtRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHRpbWVEYXRlRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHNlYXJjaFN0cmluZ0VzY2FwZTogc3RyaW5nO1xuXHRyZWFkb25seSBleHRyYU5hbWVDaGFyYWN0ZXJzOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhBZGRDb2x1bW46IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhEcm9wQ29sdW1uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvbHVtbkFsaWFzaW5nOiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsUGx1c05vbk51bGxJc051bGw6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ29udmVydDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNUYWJsZUNvcnJlbGF0aW9uTmFtZXM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09yZGVyQnlVbnJlbGF0ZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR3JvdXBCeTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0dyb3VwQnlCZXlvbmRTZWxlY3Q6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNNdWx0aXBsZVJlc3VsdFNldHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTXVsdGlwbGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01pbmltdW1TUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcmVTUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hcjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJFbnRyeUxldmVsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJGdWxsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNGdWxsT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hVGVybTogc3RyaW5nO1xuXHRyZWFkb25seSBwcm9jZWR1cmVUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdGFsb2dUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGlzQ2F0YWxvZ0F0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGNhdGFsb2dTZXBhcmF0b3I6IHN0cmluZztcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5EYXRhTWFuaXB1bGF0aW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU2NoZW1hc0luSW5kZXhEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5Qcml2aWxlZ2VEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luRGF0YU1hbmlwdWxhdGlvbjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJbkluZGV4RGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblByaXZpbGVnZURlZmluaXRpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1Bvc2l0aW9uZWREZWxldGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzUG9zaXRpb25lZFVwZGF0ZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTZWxlY3RGb3JVcGRhdGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3VicXVlcmllc0luSW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcnJlbGF0ZWRTdWJxdWVyaWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uQWxsOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2s6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjazogYm9vbGVhbjtcblx0cmVhZG9ubHkgbWF4QmluYXJ5TGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDaGFyTGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5OYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heENvbHVtbnNJbkdyb3VwQnk6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luSW5kZXg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luT3JkZXJCeTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5zSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luVGFibGU6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q3Vyc29yTmFtZUxlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhJbmRleExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhTY2hlbWFOYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heFByb2NlZHVyZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q2F0YWxvZ05hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Um93U2l6ZTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhSb3dTaXplSW5jbHVkZUJsb2JzOiBib29sZWFuO1xuXHRyZWFkb25seSBtYXhTdGF0ZW1lbnRMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4U3RhdGVtZW50czogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhUYWJsZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VGFibGVzSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VXNlck5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgZGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzVHJhbnNhY3Rpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0RhdGFEZWZpbml0aW9uQW5kRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNEYXRhTWFuaXB1bGF0aW9uVHJhbnNhY3Rpb25zT25seTogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25DYXVzZXNUcmFuc2FjdGlvbkNvbW1pdDogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25JZ25vcmVkSW5UcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQmF0Y2hVcGRhdGVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NhdmVwb2ludHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTmFtZWRQYXJhbWV0ZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c011bHRpcGxlT3BlblJlc3VsdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR2V0R2VuZXJhdGVkS2V5czogYm9vbGVhbjtcblx0cmVhZG9ubHkgcmVzdWx0U2V0SG9sZGFiaWxpdHk6IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNYWpvclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNaW5vclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgamRiY01ham9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSBqZGJjTWlub3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHNxbFN0YXRlVHlwZTogbnVtYmVyO1xuXHRyZWFkb25seSBsb2NhdG9yc1VwZGF0ZUNvcHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RhdGVtZW50UG9vbGluZzogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdG9yZWRGdW5jdGlvbnNVc2luZ0NhbGxTeW50YXg6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGF1dG9Db21taXRGYWlsdXJlQ2xvc2VzQWxsUmVzdWx0U2V0czogYm9vbGVhbjtcblx0cmVhZG9ubHkgZ2VuZXJhdGVkS2V5QWx3YXlzUmV0dXJuZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG1heExvZ2ljYWxMb2JTaXplOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzUmVmQ3Vyc29yczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hczogU2NoZW1hTWV0YWRhdGFbXTtcblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuZnVuY3Rpb24gaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbjogYW55KTogYm9vbGVhbiB7XG5cdGxldCBpc0hhbmFEYXRhYmFzZSA9IGZhbHNlO1xuXHRsZXQgbWV0YWRhdGEgPSBjb25uZWN0aW9uLmdldE1ldGFEYXRhKCk7XG5cdGlmIChtZXRhZGF0YSAhPT0gbnVsbCAmJiBtZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0aXNIYW5hRGF0YWJhc2UgPSBtZXRhZGF0YS5nZXREYXRhYmFzZVByb2R1Y3ROYW1lKCkgPT09IFwiSERCXCI7XG5cdH1cblx0cmV0dXJuIGlzSGFuYURhdGFiYXNlO1xufVxuXG5mdW5jdGlvbiByZWFkQ2xvYlZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBhbnkge1xuXHRyZXR1cm4gdmFsdWUgPyB2YWx1ZS5nZXRTdWJTdHJpbmcoMSwgdmFsdWUubGVuZ3RoKCkpIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNsb2JWYWx1ZShuYXRpdmU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XG5cdHRyeSB7XG5cdFx0bGV0IGNvbm5lY3Rpb24gPSBuYXRpdmUuZ2V0Q29ubmVjdGlvbigpOyAvLyBpbnRlbnRpb25hbGx5IG5vdCBjbG9zZWRcblx0XHRpZiAoY29ubmVjdGlvbiA9PT0gbnVsbCB8fCBjb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbid0IGNyZWF0ZSBuZXcgJ0Nsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBjbG9iID0gbnVsbDtcblx0XHRpZiAoaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbikpIHtcblx0XHRcdGxldCBwcyA9IG51bGw7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwcyA9IGNvbm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChcIlNFTEVDVCBUT19DTE9CICg/KSBGUk9NIERVTU1ZO1wiKTtcblx0XHRcdFx0cHMuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRjbG9iID0gcnMuZ2V0Q2xvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUNsb2IoKTtcblx0XHRcdGNsb2Iuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb2I7XG5cdH0gY2F0Y2ggKGU6IGFueSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRXJyb3Igb2NjdXJlZCBkdXJpbmcgY3JlYXRpb24gb2YgJ0Nsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkTkNsb2JWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgYW55IHtcblx0cmV0dXJuIHZhbHVlID8gdmFsdWUuZ2V0U3ViU3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOQ2xvYlZhbHVlKG5hdGl2ZTogYW55LCB2YWx1ZTogYW55KTogYW55IHtcblx0dHJ5IHtcblx0XHRsZXQgY29ubmVjdGlvbiA9IG5hdGl2ZS5nZXRDb25uZWN0aW9uKCk7IC8vIGludGVudGlvbmFsbHkgbm90IGNsb3NlZFxuXHRcdGlmIChjb25uZWN0aW9uID09PSBudWxsIHx8IGNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY3JlYXRlIG5ldyAnTkNsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBuY2xvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fTkNMT0IgKD8pIEZST00gRFVNTVk7XCIpO1xuXHRcdFx0XHRwcy5zZXRTdHJpbmcoMSwgdmFsdWUpO1xuXHRcdFx0XHRsZXQgcnMgPSBwcy5leGVjdXRlUXVlcnkoKTtcblx0XHRcdFx0aWYgKHJzLm5leHQoKSkge1xuXHRcdFx0XHRcdG5jbG9iID0gcnMuZ2V0TkNsb2IoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChwcyAhPT0gbnVsbCAmJiBwcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cHMuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRuY2xvYiA9IGNvbm5lY3Rpb24uY3JlYXRlTkNsb2IoKTtcblx0XHRcdG5jbG9iLnNldFN0cmluZygxLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuY2xvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnTkNsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCbG9iVmFsdWUobmF0aXZlOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkge1xuXHR0cnkge1xuXHRcdGxldCBjb25uZWN0aW9uID0gbmF0aXZlLmdldENvbm5lY3Rpb24oKTsgLy8gaW50ZW50aW9uYWxseSBub3QgY2xvc2VkXG5cdFx0aWYgKGNvbm5lY3Rpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBjcmVhdGUgbmV3ICdCbG9iJyB2YWx1ZSBhcyB0aGUgY29ubmVjdGlvbiBpcyBudWxsXCIpO1xuXHRcdH1cblx0XHRsZXQgYmxvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fQkxPQiAoPykgRlJPTSBEVU1NWTtcIik7XG5cdFx0XHRcdHBzLnNldEJ5dGVzKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRibG9iID0gcnMuZ2V0QmxvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUJsb2IoKTtcblx0XHRcdGJsb2Iuc2V0Qnl0ZXMoMSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gYmxvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnQ2xvYicgdmFsdWU6ICR7ZS5tZXNzYWdlfWApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IERhdGUge1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbi8vIC0tLSBTdGF0ZW1lbnQgQ2xhc3NlcyAtLS1cblxuLyoqXG4gKiBTdGF0ZW1lbnQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVwYXJlZFN0YXRlbWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGUoKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlUXVlcnkoKTogUmVzdWx0U2V0IHtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh0aGlzLm5hdGl2ZS5leGVjdXRlUXVlcnkoKSk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZVVwZGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlVXBkYXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChpbmRleDogbnVtYmVyLCBzcWxUeXBlOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKGluZGV4LCBzcWxUeXBlKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBCeXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlRJTllJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qKjogQmxvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBibG9iID0gY3JlYXRlQmxvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCbG9iKGluZGV4LCBibG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5CTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Q2xvYihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueSAvKjogQ2xvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKGluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBhbnkgLyo6IE5DbG9iKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IG5jbG9iID0gY3JlYXRlTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgdmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TkNsb2IoaW5kZXgsIG5jbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OQ0xPQik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzTmF0aXZlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCeXRlcyhpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlZBUkJJTkFSWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2YXIgZGF0YSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJ5dGVzKGluZGV4LCBkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJCSU5BUlkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREYXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldERhdGUoaW5kZXgsIG5ldyBKU3FsRGF0ZShkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRBVEUpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0RmxvYXQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RmxvYXQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5GTE9BVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEludChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRJbnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5JTlRFR0VSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TG9uZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRMb25nKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuQklHSU5UKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U2hvcnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U2hvcnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5TTUFMTElOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFN0cmluZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRTdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJDSEFSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZShpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGdldERhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRUaW1lKGluZGV4LCBuZXcgSlNxbFRpbWUoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZXN0YW1wKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldFRpbWVzdGFtcChpbmRleCwgbmV3IEpTcWxUaW1lc3RhbXAoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FU1RBTVApO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaWdEZWNpbWFsKGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyIC8qOiBCaWdEZWNpbWFsKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QmlnRGVjaW1hbChpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRFQ0lNQUwpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXROU3RyaW5nKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5TdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OVkFSQ0hBUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFkZEJhdGNoKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZUJhdGNoKCk6IG51bWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZXhlY3V0ZUJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWV0YURhdGEoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNb3JlUmVzdWx0cygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TW9yZVJlc3VsdHMoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJNZXRhRGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRQYXJhbWV0ZXJNZXRhRGF0YSgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFdhcm5pbmcoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0V2FybmluZ3MoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgQ2FsbGFibGVTdGF0ZW1lbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGVRdWVyeSgpOiBSZXN1bHRTZXQge1xuXHRcdHJldHVybiBuZXcgUmVzdWx0U2V0KHRoaXMubmF0aXZlLmV4ZWN1dGVRdWVyeSgpKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlVXBkYXRlKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGVVcGRhdGUoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVNjYWxlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCBzY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVR5cGVOYW1lKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgdHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCB0eXBlTmFtZSk7XG5cdH1cblxuXHRwdWJsaWMgd2FzTnVsbCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUud2FzTnVsbCgpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U3RyaW5nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qnl0ZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTaG9ydChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2hvcnQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEludChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SW50KHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb25nKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRGbG9hdChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RmxvYXQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldERvdWJsZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXREYXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBEYXRlIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZShwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIGRhdGVJbnN0YW5jZSAhPT0gbnVsbCAmJiBkYXRlSW5zdGFuY2UgIT09IHVuZGVmaW5lZCA/IG5ldyBEYXRlKGRhdGVJbnN0YW5jZS5nZXRUaW1lKCkpIDogZGF0ZUluc3RhbmNlO1xuXHR9XG5cblx0cHVibGljIGdldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRPYmplY3QocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXg6IG51bWJlcik6IG51bWJlciAvKjogc3FsLkJpZ0RlY2ltYWwqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJlZihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuUmVmKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZWYocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmxvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgcGFyYW1ldGVySW5kZXgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCbG9iTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkgLyo6IHNxbC5CbG9iKi8ge1xuXHRcdHJldHVybiBEYXRhYmFzZUZhY2FkZS5yZWFkQmxvYlZhbHVlKHRoaXMubmF0aXZlLCBwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQ2xvYiovIHtcblx0XHRyZXR1cm4gcmVhZENsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXRDbG9iKHBhcmFtZXRlckluZGV4KSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihwYXJhbWV0ZXJJbmRleCkpO1xuXHR9XG5cblx0cHVibGljIGdldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5TdHJpbmcocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEFycmF5KHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnlbXSAvKjogc3FsLkFycmF5Ki8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRBcnJheShwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VVJMKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJvd0lkKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkgLyo6IHNxbC5Sb3dJZCovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Um93SWQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFhNTChwYXJhbWV0ZXJJbmRleDogc3RyaW5nIHwgbnVtYmVyKTogYW55IC8qOiBzcWwuU1FMWE1MKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTUUxYTUwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIHNldFVSTChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0VVJMKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlU3RyOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIsIHR5cGVOYW1lPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgc3FsVHlwZTogbnVtYmVyID0gTnVtYmVyLmlzSW50ZWdlcihzcWxUeXBlU3RyIGFzIG51bWJlcikgPyBzcWxUeXBlU3RyIGFzIG51bWJlciA6IFNRTFR5cGVzW3NxbFR5cGVTdHIgYXMga2V5b2YgdHlwZW9mIFNRTFR5cGVzXTtcblx0XHRpZiAodHlwZU5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlTmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSwgdHlwZU5hbWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBieXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFNob3J0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFNob3J0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuU01BTExJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRJbnQocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0SW50KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuSU5URUdFUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldExvbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TG9uZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJR0lOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEZsb2F0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEZsb2F0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRkxPQVQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0QmlnRGVjaW1hbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlciAvKjogQmlnRGVjaW1hbCovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5ERUNJTUFMKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U3RyaW5nKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFN0cmluZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlcyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueVtdIC8qYnl0ZVtdKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZXMocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5BUlJBWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldERhdGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RGF0ZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxEYXRlKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuREFURSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxUaW1lKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuVElNRSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4LCBuZXcgSlNxbFRpbWVzdGFtcChkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlRJTUVTVEFNUCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEFzY2lpU3RyZWFtKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIGlucHV0U3RyZWFtOiBJbnB1dFN0cmVhbSwgbGVuZ3RoPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGxlbmd0aCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QXNjaWlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRBc2NpaVN0cmVhbShwYXJhbWV0ZXJJbmRleCwgaW5wdXRTdHJlYW0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHRhcmdldFNxbFR5cGU/OiBudW1iZXIsIHNjYWxlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgc2NhbGUgIT09IG51bGwgJiYgdGFyZ2V0U3FsVHlwZSAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFNxbFR5cGUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE9iamVjdChwYXJhbWV0ZXJJbmRleCwgdmFsdWUsIHRhcmdldFNxbFR5cGUsIHNjYWxlKTtcblx0XHR9IGVsc2UgaWYgKHRhcmdldFNxbFR5cGUgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXRTcWxUeXBlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRPYmplY3QocGFyYW1ldGVySW5kZXgsIHZhbHVlLCB0YXJnZXRTcWxUeXBlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFJvd0lkKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBudW1iZXIgLyo6IFJvd0lkKi8pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSb3dJZChwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHR9XG5cblx0cHVibGljIHNldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROU3RyaW5nKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRTUUxYTUwocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogU1FMWE1MKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U1FMWE1MKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk51bGxhYmxlIFNRTFhNTCB0eXBlIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLypCbG9iICovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGJsb2IgPSBjcmVhdGVCbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJsb2IocGFyYW1ldGVySW5kZXgsIGJsb2IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRDbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLyo6IENsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKHBhcmFtZXRlckluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogTkNsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBuY2xvYiA9IGNyZWF0ZU5DbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5DbG9iKHBhcmFtZXRlckluZGV4LCBuY2xvYik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTkNMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9yZVJlc3VsdHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1vcmVSZXN1bHRzKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTogYW55IC8qOiBQYXJhbWV0ZXJNZXRhRGF0YSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG59XG5cbi8qKlxuICogUmVzdWx0U2V0IG9iamVjdFxuICovXG5leHBvcnQgY2xhc3MgUmVzdWx0U2V0IHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgdGhlIFJlc3VsdFNldCBpbnRvIGEgSlNPTiBhcnJheSBvZiBvYmplY3RzLlxuXHQgKiBAcGFyYW0gbGltaXRlZCBXaGV0aGVyIHRvIHVzZSBsaW1pdGVkIEpTT04gY29udmVyc2lvbiAob3B0aW1pemVkKS5cblx0ICogQHBhcmFtIHN0cmluZ2lmeSBXaGV0aGVyIHRvIHJldHVybiB0aGUgSlNPTiBhcyBhIHN0cmluZyBvciBhIHBhcnNlZCBhcnJheS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgc2V0LCBvciBhIHN0cmluZyBpZiBzdHJpbmdpZnkgaXMgdHJ1ZS5cblx0ICovXG5cdHB1YmxpYyB0b0pzb24obGltaXRlZCA9IGZhbHNlLCBzdHJpbmdpZnkgPSBmYWxzZSk6IGFueVtdIHtcblx0XHRjb25zdCBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTtcblx0XHRjb25zdCBvdXRwdXQgPSBXcml0ZXJPdXRwdXRTdHJlYW1cblx0XHRcdC5idWlsZGVyKClcblx0XHRcdC5zZXRXcml0ZXIoc3cpXG5cdFx0XHQuc2V0Q2hhcnNldChTdGFuZGFyZENoYXJzZXRzLlVURl84KVxuXHRcdFx0LmdldCgpO1xuXHRcdERhdGFiYXNlRmFjYWRlLnRvSnNvbih0aGlzLm5hdGl2ZSwgbGltaXRlZCwgc3RyaW5naWZ5LCBvdXRwdXQpO1xuXHRcdGNvbnN0IGpzb25TdHJpbmcgPSBzdy50b1N0cmluZygpO1xuXHRcdHJldHVybiBzdHJpbmdpZnkgPyBqc29uU3RyaW5nIDogSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBCaWdEZWNpbWFsKi8gIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0QmlnRGVjaW1hbChpZGVudGlmaWVyKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCb29sZWFuKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueVtdIC8qOiBieXRlW10qLyB7XG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMubmF0aXZlLmdldEJ5dGVzKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fTtcblxuXHRwdWJsaWMgZ2V0Qnl0ZXNOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55W10gLyo6IGJ5dGVbXSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qnl0ZXMoaWRlbnRpZmllcik7XG5cdH07XG5cblx0cHVibGljIGdldEJsb2IoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJsb2JOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBhbnkgLyo6IHNxbC5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkQ2xvYlZhbHVlKHRoaXMubmF0aXZlLmdldENsb2IoaWRlbnRpZmllcikpO1xuXHR9XG5cblx0cHVibGljIGdldE5DbG9iKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihpZGVudGlmaWVyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXREb3VibGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEZsb2F0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEZsb2F0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEludChpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJbnQoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TG9uZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFNob3J0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFNob3J0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTdHJpbmcoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRUaW1lKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRUaW1lc3RhbXAoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBpc0FmdGVyTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNBZnRlckxhc3QoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0JlZm9yZUZpcnN0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc0JlZm9yZUZpcnN0KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmlzQ2xvc2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNGaXJzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNGaXJzdCgpO1xuXHR9XG5cblx0cHVibGljIGlzTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNMYXN0KCk7XG5cdH1cblxuXHRwdWJsaWMgbmV4dCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUubmV4dCgpO1xuXHR9XG5cblx0cHVibGljIGdldE1ldGFEYXRhKCk6IGFueSAvKjogUmVzdWx0U2V0TWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TlN0cmluZyhjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TlN0cmluZyhjb2x1bW5JbmRleCk7XG5cdH1cbn1cblxuLy8gLS0tIENvbm5lY3Rpb24gQ2xhc3MgLS0tXG5cbi8qKlxuICogQ29ubmVjdGlvbiBvYmplY3Qgd3JhcHBlciBhcm91bmQgYSBuYXRpdmUgSmF2YSBgQ29ubmVjdGlvbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uIHtcblxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IERhdGFiYXNlRmFjYWRlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29ubmVjdGlvbiBpcyBmb3IgYSBzcGVjaWZpYyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgaXNPZlR5cGUoZGF0YWJhc2VTeXN0ZW06IERhdGFiYXNlU3lzdGVtKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YWJhc2VTeXN0ZW0oKSA9PT0gZGF0YWJhc2VTeXN0ZW07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0gYXMgYSB7QGxpbmsgRGF0YWJhc2VTeXN0ZW19IGVudW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RGF0YWJhc2VTeXN0ZW0oKTogRGF0YWJhc2VTeXN0ZW0ge1xuXHRcdGNvbnN0IGRiU3lzdGVtOiBzdHJpbmcgPSB0aGlzLm5hdGl2ZS5nZXREYXRhYmFzZVN5c3RlbSgpLm5hbWUoKTtcblx0XHRzd2l0Y2ggKGRiU3lzdGVtKSB7XG5cdFx0XHRjYXNlIFwiREVSQllcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkRFUkJZO1xuXHRcdFx0Y2FzZSBcIlBPU1RHUkVTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlBPU1RHUkVTUUw7XG5cdFx0XHRjYXNlIFwiSDJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkgyO1xuXHRcdFx0Y2FzZSBcIk1BUklBREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1BUklBREI7XG5cdFx0XHRjYXNlIFwiSEFOQVwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uSEFOQTtcblx0XHRcdGNhc2UgXCJTTk9XRkxBS0VcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlNOT1dGTEFLRTtcblx0XHRcdGNhc2UgXCJNU1NRTFwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uTVNTUUw7XG5cdFx0XHRjYXNlIFwiTVlTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1ZU1FMO1xuXHRcdFx0Y2FzZSBcIk1PTkdPREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1PTkdPREI7XG5cdFx0XHRjYXNlIFwiU1lCQVNFXCI6XG5cdFx0XHRcdHJldHVybiBEYXRhYmFzZVN5c3RlbS5TWUJBU0U7XG5cdFx0XHRjYXNlIFwiVU5LTk9XTlwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uVU5LTk9XTjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBtYXBwaW5nIGZvciBkYXRhYmFzZSBzeXN0ZW0gdHlwZSAke2RiU3lzdGVtfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBQcmVwYXJlZFN0YXRlbWVudH0gb2JqZWN0IGZvciBzZW5kaW5nIHBhcmFtZXRlcml6ZWQgU1FMIHN0YXRlbWVudHMgdG8gdGhlIGRhdGFiYXNlLlxuXHQgKi9cblx0cHVibGljIHByZXBhcmVTdGF0ZW1lbnQoc3FsOiBzdHJpbmcpOiBQcmVwYXJlZFN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBQcmVwYXJlZFN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlU3RhdGVtZW50KHNxbCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB7QGxpbmsgQ2FsbGFibGVTdGF0ZW1lbnR9IG9iamVjdCBmb3IgY2FsbGluZyBkYXRhYmFzZSBzdG9yZWQgcHJvY2VkdXJlcyBvciBmdW5jdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgcHJlcGFyZUNhbGwoc3FsOiBzdHJpbmcpOiBDYWxsYWJsZVN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBDYWxsYWJsZVN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlQ2FsbChzcWwpKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNDbG9zZWQoKSkge1xuXHRcdFx0dGhpcy5uYXRpdmUuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY29tbWl0KCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNvbW1pdCgpO1xuXHR9XG5cblx0cHVibGljIGdldEF1dG9Db21taXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEF1dG9Db21taXQoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXRhbG9nKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENhdGFsb2coKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTY2hlbWEoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2NoZW1hKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc1JlYWRPbmx5KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNWYWxpZCgpO1xuXHR9XG5cblx0cHVibGljIHJvbGxiYWNrKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJvbGxiYWNrKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXRhbG9nKGNhdGFsb2c6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldENhdGFsb2coY2F0YWxvZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSZWFkT25seShyZWFkT25seSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U2NoZW1hKHNjaGVtYTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0U2NoZW1hKHNjaGVtYSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VHJhbnNhY3Rpb25Jc29sYXRpb24odHJhbnNhY3Rpb25Jc29sYXRpb246IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldFRyYW5zYWN0aW9uSXNvbGF0aW9uKHRyYW5zYWN0aW9uSXNvbGF0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNZXRhRGF0YSgpOiBhbnkgLyo6IERhdGFiYXNlTWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cbn1cblxuLy8gLS0tIERhdGFiYXNlIENsYXNzIC0tLVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2Uge1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgZGF0YSBzb3VyY2UgbmFtZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldERhdGFTb3VyY2VzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBkYXRhc291cmNlcyA9IERhdGFiYXNlRmFjYWRlLmdldERhdGFTb3VyY2VzKCk7XG5cdFx0cmV0dXJuIGRhdGFzb3VyY2VzID8gSlNPTi5wYXJzZShkYXRhc291cmNlcykgOiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGRhdGFiYXNlIG1ldGFkYXRhIGZvciB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRNZXRhZGF0YShkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IERhdGFiYXNlTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gRGF0YWJhc2VGYWNhZGUuZ2V0TWV0YWRhdGEoZGF0YXNvdXJjZU5hbWUpO1xuXHRcdHJldHVybiBtZXRhZGF0YSA/IEpTT04ucGFyc2UobWV0YWRhdGEpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHByb2R1Y3QgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFByb2R1Y3ROYW1lKGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuZ2V0UHJvZHVjdE5hbWUoZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBuZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcblx0XHRyZXR1cm4gbmV3IENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHRcdERhdGFiYXNlLFxuXHRcdENvbm5lY3Rpb24sXG5cdFx0UHJlcGFyZWRTdGF0ZW1lbnQsXG5cdFx0Q2FsbGFibGVTdGF0ZW1lbnQsXG5cdFx0UmVzdWx0U2V0LFxuXHRcdERhdGFiYXNlU3lzdGVtLFxuXHRcdFNRTFR5cGVzXG5cdH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7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QUFDRDtBQUlPLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS3JCLE9BQWMsaUJBQTJCO0FBQ3hDLFVBQU0sY0FBYyxlQUFlLGVBQWU7QUFDbEQsV0FBTyxjQUFjLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQztBQUFBLEVBQ2pEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLFlBQVksZ0JBQXVEO0FBQ2hGLFVBQU0sV0FBVyxlQUFlLFlBQVksY0FBYztBQUMxRCxXQUFPLFdBQVcsS0FBSyxNQUFNLFFBQVEsSUFBSTtBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLGVBQWUsZ0JBQWlDO0FBQzdELFdBQU8sZUFBZSxlQUFlLGNBQWM7QUFBQSxFQUNwRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxjQUFjLGdCQUFxQztBQUNoRSxXQUFPLElBQUksV0FBVyxjQUFjO0FBQUEsRUFDckM7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQUEsSUFDaEI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNEO0FBQ0Q7IiwKICAibmFtZXMiOiBbIkRhdGFiYXNlU3lzdGVtIiwgImlzSGFuYURhdGFiYXNlIl0KfQo=
|
package/dist/cjs/db/query.js
CHANGED
|
@@ -105,8 +105,26 @@ class Query {
|
|
|
105
105
|
);
|
|
106
106
|
return JSON.parse(resultset);
|
|
107
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Exports a SQL query with named parameters (e.g., ":name", ":id").
|
|
110
|
+
*
|
|
111
|
+
* @param sql The SQL query to execute.
|
|
112
|
+
* @param parameters An optional array of NamedQueryParameter objects.
|
|
113
|
+
* @param datasourceName The name of the database connection to use (optional).
|
|
114
|
+
* @param fileName The file name pattern.
|
|
115
|
+
* @returns An array of records representing the query results.
|
|
116
|
+
*/
|
|
117
|
+
static exportCsv(sql, parameters, datasourceName, fileName) {
|
|
118
|
+
const paramsJson = parameters ? JSON.stringify(parameters) : void 0;
|
|
119
|
+
DatabaseFacade.exportToCsv(
|
|
120
|
+
sql,
|
|
121
|
+
paramsJson,
|
|
122
|
+
datasourceName,
|
|
123
|
+
fileName
|
|
124
|
+
);
|
|
125
|
+
}
|
|
108
126
|
}
|
|
109
127
|
if (typeof module !== "undefined") {
|
|
110
128
|
module.exports = Query;
|
|
111
129
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBRdWVyeVxuICpcbiAqL1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcbiAgXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIixcbik7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gd3JhcCBjb21wbGV4IG9yIHNwZWNpZmljIHZhbHVlcyBmb3Igbm9uLW5hbWVkIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkUXVlcnlQYXJhbWV0ZXIgPSB7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyBhIHBhcmFtZXRlciBmb3IgYSBuYW1lZCBxdWVyeSAodXNpbmcgcGxhY2Vob2xkZXJzIGxpa2UgOnBhcmFtTmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRRdWVyeVBhcmFtZXRlciB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBzcGVjaWZ5IGZvcm1hdHRpbmcgb3B0aW9ucyBmb3IgdGhlIHF1ZXJ5IHJlc3VsdCBzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGluZ1BhcmFtZXRlciB7XG4gIHJlYWRvbmx5IGRhdGVGb3JtYXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgU1FMIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnkge1xuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzdGFuZGFyZCBTUUwgcXVlcnkgd2l0aCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuIFBhcmFtZXRlcnMgYXJyYXkgc3VwcG9ydHMgcHJpbWl0aXZlcyBlLmcuIGBbMSwgJ0pvaG4nLCAzNC41Nl1gIG9yIG9iamVjdHMgaW4gZm9ybWF0IGVpdGhlciBgeyd0eXBlJzonW0RBVEFfVFlQRV0nLCAndmFsdWUnOltWQUxVRV19YCBvciBgeyduYW1lJzonW3N0cmluZ10nLCAndHlwZSc6J1tEQVRBX1RZUEVdJywgJ3ZhbHVlJzpbVkFMVUVdfWAgZS5nLiBgW3sndHlwZSc6J0NIQVInLCAndmFsdWUnOidJU0JOMTkyMDIzMjMzMjInfV1gIG9yIGBbeyduYW1lJzogJ29yZGVyX251bWJlcicsICd0eXBlJzonQ0hBUicsICd2YWx1ZSc6J0lTQk4xOTIwMjMyMzMyMid9XWBcbiAgICpcbiAgICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcywgVHlwZWRRdWVyeVBhcmFtZXRlciBvciBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMpIHRvIHJlcGxhY2UgJz8nIG9yIDpwYXJhbU5hbWUgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG4gICAqIEBwYXJhbSBmb3JtYXR0aW5nIE9wdGlvbmFsIGZvcm1hdHRpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHJlc3VsdCBzZXQgKGUuZy4sIGRhdGUgZm9ybWF0KS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGUoXG4gICAgc3FsOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdIHwgc3RyaW5nLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICAgIGZvcm1hdHRpbmc/OiBGb3JtYXR0aW5nUGFyYW1ldGVyLFxuICApOiBhbnlbXSB7XG4gICAgY29uc3QgZm9ybWF0dGluZ0pzb24gPSBmb3JtYXR0aW5nID8gSlNPTi5zdHJpbmdpZnkoZm9ybWF0dGluZykgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgYXJyOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgICAgYXJyID0gW107XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcbiAgICAgICAgfVxuICAgICAgICBhcnIgPSBwYXJzZWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuICAgICAgYXJyID0gcGFyYW1ldGVycztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShzcWwsIG51bGwsIGRhdGFzb3VyY2VOYW1lLCBmb3JtYXR0aW5nSnNvbik7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0ID0gYXJyWzBdO1xuXG4gICAgLy8gTmFtZWRRdWVyeVBhcmFtZXRlciAoaGFzIG5hbWUgKyB0eXBlKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJuYW1lXCIgaW4gZmlyc3QgJiYgXCJ0eXBlXCIgaW4gZmlyc3QpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICAgIHNxbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoYXJyKSxcbiAgICAgICAgZGF0YXNvdXJjZU5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIC8vIFR5cGVkUXVlcnlQYXJhbWV0ZXIgKGhhcyB0eXBlLCBubyBuYW1lKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gZmlyc3QgJiYgIShcIm5hbWVcIiBpbiBmaXJzdCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJpbWl0aXZlIGFycmF5XG4gICAgaWYgKFxuICAgICAgYXJyLmV2ZXJ5KFxuICAgICAgICAodikgPT5cbiAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgIHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG4gICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHQgIEFycmF5LmlzQXJyYXkodilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSB3aXRoIG5hbWVkIHBhcmFtZXRlcnMgKGUuZy4sIFwiOm5hbWVcIiwgXCI6aWRcIikuXG4gICAqXG4gICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMuXG4gICAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGVOYW1lZChcbiAgICBzcWw6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzPzogTmFtZWRRdWVyeVBhcmFtZXRlcltdLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICApOiBhbnlbXSB7XG4gICAgLy8gU2VyaWFsaXplIHRoZSBhcnJheSBvZiBuYW1lZCBwYXJhbWV0ZXJzIGZvciB0aGUgSmF2YSBmYWNhZGVcbiAgICBjb25zdCBwYXJhbXNKc29uID0gcGFyYW1ldGVycyA/IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gVGhlIERhdGFiYXNlRmFjYWRlIHJldHVybnMgYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0IHNldFxuICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICBzcWwsXG4gICAgICBwYXJhbXNKc29uLFxuICAgICAgZGF0YXNvdXJjZU5hbWUsXG4gICAgKTtcblxuICAgIC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZyBiYWNrIGludG8gYSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHNcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICB9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgbW9kdWxlLmV4cG9ydHMgPSBRdWVyeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBLE1BQU0saUJBQWlCLEtBQUs7QUFBQSxFQUMxQjtBQUNGO0FBNkJPLE1BQU0sTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVWpCLE9BQWMsUUFDWixLQUNBLFlBQ0EsZ0JBQ0EsWUFDTztBQUNQLFVBQU0saUJBQWlCLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUVqRSxRQUFJLE1BQWEsQ0FBQztBQUVsQixRQUFJLGNBQWMsTUFBTTtBQUN0QixZQUFNLENBQUM7QUFBQSxJQUNULFdBQVcsT0FBTyxlQUFlLFVBQVU7QUFDekMsVUFBSTtBQUNGLGNBQU0sU0FBUyxLQUFLLE1BQU0sVUFBVTtBQUNwQyxZQUFJLENBQUMsTUFBTSxRQUFRLE1BQU0sR0FBRztBQUMxQixnQkFBTSxJQUFJLE1BQU0sb0RBQW9EO0FBQUEsUUFDdEU7QUFDQSxjQUFNO0FBQUEsTUFDUixTQUFTLEdBQUc7QUFDVixjQUFNLElBQUksTUFBTSw4QkFBOEIsQ0FBQztBQUFBLE1BQ2pEO0FBQUEsSUFDRixXQUFXLE1BQU0sUUFBUSxVQUFVLEdBQUc7QUFDcEMsWUFBTTtBQUFBLElBQ1IsT0FBTztBQUNMLFlBQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUFBLElBQ3ZFO0FBRUEsUUFBSSxJQUFJLFdBQVcsR0FBRztBQUNwQixZQUFNLFlBQVksZUFBZSxNQUFNLEtBQUssTUFBTSxnQkFBZ0IsY0FBYztBQUNoRixhQUFPLEtBQUssTUFBTSxTQUFTO0FBQUEsSUFDN0I7QUFFQSxVQUFNLFFBQVEsSUFBSSxDQUFDO0FBR25CLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsVUFBVSxPQUFPO0FBQzVFLFlBQU0sWUFBWSxlQUFlO0FBQUEsUUFDL0I7QUFBQSxRQUNBLEtBQUssVUFBVSxHQUFHO0FBQUEsUUFDbEI7QUFBQSxNQUNGO0FBQ0EsYUFBTyxLQUFLLE1BQU0sU0FBUztBQUFBLElBQzdCO0FBR0EsUUFBSSxTQUFTLE9BQU8sVUFBVSxZQUFZLFVBQVUsU0FBUyxFQUFFLFVBQVUsUUFBUTtBQUMvRSxZQUFNLFlBQVksZUFBZTtBQUFBLFFBQy9CO0FBQUEsUUFDQSxLQUFLLFVBQVUsR0FBRztBQUFBLFFBQ2xCO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFDQSxhQUFPLEtBQUssTUFBTSxTQUFTO0FBQUEsSUFDN0I7QUFHQSxRQUNFLElBQUk7QUFBQSxNQUNGLENBQUMsTUFDQyxPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sYUFDYixhQUFhLFFBQ25CLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDYixHQUNBO0FBQ0EsWUFBTSxZQUFZLGVBQWU7QUFBQSxRQUMvQjtBQUFBLFFBQ0EsS0FBSyxVQUFVLEdBQUc7QUFBQSxRQUNsQjtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQ0EsYUFBTyxLQUFLLE1BQU0sU0FBUztBQUFBLElBQzdCO0FBRUEsVUFBTSxJQUFJLE1BQU0sbUNBQW1DLEtBQUssVUFBVSxVQUFVLENBQUM7QUFBQSxFQUMvRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdBLE9BQWMsYUFDWixLQUNBLFlBQ0EsZ0JBQ087QUFFUCxVQUFNLGFBQWEsYUFBYSxLQUFLLFVBQVUsVUFBVSxJQUFJO0FBRzdELFVBQU0sWUFBWSxlQUFlO0FBQUEsTUFDL0I7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFHQSxXQUFPLEtBQUssTUFBTSxTQUFTO0FBQUEsRUFDN0I7QUFDRjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFakMsU0FBTyxVQUFVO0FBQ25COyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBRdWVyeVxuICpcbiAqL1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcbiAgXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIixcbik7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gd3JhcCBjb21wbGV4IG9yIHNwZWNpZmljIHZhbHVlcyBmb3Igbm9uLW5hbWVkIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkUXVlcnlQYXJhbWV0ZXIgPSB7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyBhIHBhcmFtZXRlciBmb3IgYSBuYW1lZCBxdWVyeSAodXNpbmcgcGxhY2Vob2xkZXJzIGxpa2UgOnBhcmFtTmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRRdWVyeVBhcmFtZXRlciB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBzcGVjaWZ5IGZvcm1hdHRpbmcgb3B0aW9ucyBmb3IgdGhlIHF1ZXJ5IHJlc3VsdCBzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGluZ1BhcmFtZXRlciB7XG4gIHJlYWRvbmx5IGRhdGVGb3JtYXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgU1FMIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnkge1xuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzdGFuZGFyZCBTUUwgcXVlcnkgd2l0aCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuIFBhcmFtZXRlcnMgYXJyYXkgc3VwcG9ydHMgcHJpbWl0aXZlcyBlLmcuIGBbMSwgJ0pvaG4nLCAzNC41Nl1gIG9yIG9iamVjdHMgaW4gZm9ybWF0IGVpdGhlciBgeyd0eXBlJzonW0RBVEFfVFlQRV0nLCAndmFsdWUnOltWQUxVRV19YCBvciBgeyduYW1lJzonW3N0cmluZ10nLCAndHlwZSc6J1tEQVRBX1RZUEVdJywgJ3ZhbHVlJzpbVkFMVUVdfWAgZS5nLiBgW3sndHlwZSc6J0NIQVInLCAndmFsdWUnOidJU0JOMTkyMDIzMjMzMjInfV1gIG9yIGBbeyduYW1lJzogJ29yZGVyX251bWJlcicsICd0eXBlJzonQ0hBUicsICd2YWx1ZSc6J0lTQk4xOTIwMjMyMzMyMid9XWBcbiAgICpcbiAgICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcywgVHlwZWRRdWVyeVBhcmFtZXRlciBvciBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMpIHRvIHJlcGxhY2UgJz8nIG9yIDpwYXJhbU5hbWUgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG4gICAqIEBwYXJhbSBmb3JtYXR0aW5nIE9wdGlvbmFsIGZvcm1hdHRpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHJlc3VsdCBzZXQgKGUuZy4sIGRhdGUgZm9ybWF0KS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGUoXG4gICAgc3FsOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdIHwgc3RyaW5nLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICAgIGZvcm1hdHRpbmc/OiBGb3JtYXR0aW5nUGFyYW1ldGVyLFxuICApOiBhbnlbXSB7XG4gICAgY29uc3QgZm9ybWF0dGluZ0pzb24gPSBmb3JtYXR0aW5nID8gSlNPTi5zdHJpbmdpZnkoZm9ybWF0dGluZykgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgYXJyOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgICAgYXJyID0gW107XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcbiAgICAgICAgfVxuICAgICAgICBhcnIgPSBwYXJzZWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuICAgICAgYXJyID0gcGFyYW1ldGVycztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShzcWwsIG51bGwsIGRhdGFzb3VyY2VOYW1lLCBmb3JtYXR0aW5nSnNvbik7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0ID0gYXJyWzBdO1xuXG4gICAgLy8gTmFtZWRRdWVyeVBhcmFtZXRlciAoaGFzIG5hbWUgKyB0eXBlKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJuYW1lXCIgaW4gZmlyc3QgJiYgXCJ0eXBlXCIgaW4gZmlyc3QpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICAgIHNxbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoYXJyKSxcbiAgICAgICAgZGF0YXNvdXJjZU5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIC8vIFR5cGVkUXVlcnlQYXJhbWV0ZXIgKGhhcyB0eXBlLCBubyBuYW1lKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gZmlyc3QgJiYgIShcIm5hbWVcIiBpbiBmaXJzdCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJpbWl0aXZlIGFycmF5XG4gICAgaWYgKFxuICAgICAgYXJyLmV2ZXJ5KFxuICAgICAgICAodikgPT5cbiAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgIHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG4gICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHQgIEFycmF5LmlzQXJyYXkodilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSB3aXRoIG5hbWVkIHBhcmFtZXRlcnMgKGUuZy4sIFwiOm5hbWVcIiwgXCI6aWRcIikuXG4gICAqXG4gICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMuXG4gICAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGVOYW1lZChcbiAgICBzcWw6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzPzogTmFtZWRRdWVyeVBhcmFtZXRlcltdLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICApOiBhbnlbXSB7XG4gICAgLy8gU2VyaWFsaXplIHRoZSBhcnJheSBvZiBuYW1lZCBwYXJhbWV0ZXJzIGZvciB0aGUgSmF2YSBmYWNhZGVcbiAgICBjb25zdCBwYXJhbXNKc29uID0gcGFyYW1ldGVycyA/IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gVGhlIERhdGFiYXNlRmFjYWRlIHJldHVybnMgYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0IHNldFxuICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICBzcWwsXG4gICAgICBwYXJhbXNKc29uLFxuICAgICAgZGF0YXNvdXJjZU5hbWUsXG4gICAgKTtcblxuICAgIC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZyBiYWNrIGludG8gYSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHNcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICB9XG4gIFxuICAvKipcbiAgICAgKiBFeHBvcnRzIGEgU1FMIHF1ZXJ5IHdpdGggbmFtZWQgcGFyYW1ldGVycyAoZS5nLiwgXCI6bmFtZVwiLCBcIjppZFwiKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIE5hbWVkUXVlcnlQYXJhbWV0ZXIgb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEBwYXJhbSBmaWxlTmFtZSBUaGUgZmlsZSBuYW1lIHBhdHRlcm4uXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleHBvcnRDc3YoXG4gICAgICBzcWw6IHN0cmluZyxcblx0ICBwYXJhbWV0ZXJzPzogTmFtZWRRdWVyeVBhcmFtZXRlcltdLFxuICAgICAgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcsXG5cdCAgZmlsZU5hbWU/OiBzdHJpbmdcbiAgICApIHtcblx0XHQvLyBTZXJpYWxpemUgdGhlIGFycmF5IG9mIG5hbWVkIHBhcmFtZXRlcnMgZm9yIHRoZSBKYXZhIGZhY2FkZVxuXHRcdGNvbnN0IHBhcmFtc0pzb24gPSBwYXJhbWV0ZXJzID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG5cdFx0XHRcblx0ICAgIERhdGFiYXNlRmFjYWRlLmV4cG9ydFRvQ3N2KFxuXHQgICAgICAgIHNxbCxcblx0XHRcdHBhcmFtc0pzb24sXG5cdCAgICAgICAgZGF0YXNvdXJjZU5hbWUsXG5cdFx0XHRmaWxlTmFtZVxuXHQgICAgICApO1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICBtb2R1bGUuZXhwb3J0cyA9IFF1ZXJ5O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0EsTUFBTSxpQkFBaUIsS0FBSztBQUFBLEVBQzFCO0FBQ0Y7QUE2Qk8sTUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVakIsT0FBYyxRQUNaLEtBQ0EsWUFDQSxnQkFDQSxZQUNPO0FBQ1AsVUFBTSxpQkFBaUIsYUFBYSxLQUFLLFVBQVUsVUFBVSxJQUFJO0FBRWpFLFFBQUksTUFBYSxDQUFDO0FBRWxCLFFBQUksY0FBYyxNQUFNO0FBQ3RCLFlBQU0sQ0FBQztBQUFB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
|
|
@@ -22,6 +22,7 @@ __export(repository_exports, {
|
|
|
22
22
|
module.exports = __toCommonJS(repository_exports);
|
|
23
23
|
var import_db = require("@aerokit/sdk/db");
|
|
24
24
|
class Repository {
|
|
25
|
+
entityConstructor;
|
|
25
26
|
constructor(entityConstructor) {
|
|
26
27
|
this.entityConstructor = entityConstructor;
|
|
27
28
|
if (!this.entityConstructor.$entity_name) {
|
|
@@ -145,4 +146,4 @@ class Repository {
|
|
|
145
146
|
async triggerEvent(_data) {
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN0b3JlLCB0cmFuc2xhdG9yLCBFbnRpdHlDb25zdHJ1Y3RvciwgT3B0aW9ucyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGV2ZW50IHRyaWdnZXIgbWV0aG9kIGJlZm9yZS9hZnRlciBhbiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnQ8VD4ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW50aXR5OiBQYXJ0aWFsPFQ+OyAvLyBVc2UgUGFydGlhbDxUPiBmb3IgY3JlYXRlL2RlbGV0ZSB3aGVyZSBzb21lIGZpZWxkcyBtaWdodCBiZSBtaXNzaW5nXG4gICAgcmVhZG9ubHkga2V5OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgfVxuICAgIHJlYWRvbmx5IHByZXZpb3VzRW50aXR5PzogVDtcbn1cblxuXG4vLyAtLS0gUmVwb3NpdG9yeSBDbGFzcyAtLS1cblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBkYXRhIGFjY2Vzcy9idXNpbmVzcyBsb2dpYywgd3JhcHBpbmcgdGhlIGBzdG9yZWAgQVBJLlxuICogSXQgaGFuZGxlcyBlbnRpdHkgbWV0YWRhdGEgbG9va3VwLCBDUlVEIG9wZXJhdGlvbnMsIHRyYW5zbGF0aW9uLCBhbmQgZXZlbnQgdHJpZ2dlcmluZy5cbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgdHlwZSAobXVzdCBiZSBhbiBvYmplY3QpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlDb25zdHJ1Y3RvciA9IGVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGVzIGVudGl0eSBtZXRhZGF0YSAobmFtZSwgdGFibGUsIGlkKSBvbnRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3Igc3RhdGljIGFjY2Vzc1xuXHRcdGlmICghdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZXMgc3RvcmUgbWV0aG9kcyByZXR1cm4gbm9uLW51bGwgc3RyaW5nc1xuXHRcdFx0dGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUgPSBzdG9yZS5nZXRFbnRpdHlOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lID0gc3RvcmUuZ2V0VGFibGVOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lID0gc3RvcmUuZ2V0SWROYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9jb2x1bW4gPSBzdG9yZS5nZXRJZENvbHVtbih0aGlzLmVudGl0eUNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RW50aXR5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIHNpbmNlIHRoZSBjb25zdHJ1Y3RvciBndWFyYW50ZWVzIHRoZXNlIHByb3BlcnRpZXMgZXhpc3RcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGVudGl0eV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWRDb2x1bW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQWxsKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFRbXSB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5saXN0IHJldHVybnMgVFtdIGJ1dCB3ZSBleHBsaWNpdGx5IGNhc3QgaXQgdG8gVFtdXG4gICAgICAgIGNvbnN0IGxpc3Q6IFRbXSA9IHN0b3JlLmxpc3QodGhpcy5nZXRFbnRpdHlOYW1lKCksIG9wdGlvbnMpO1xuICAgICAgICB0cmFuc2xhdG9yLnRyYW5zbGF0ZUxpc3QobGlzdCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRCeUlkKGlkOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBBc3N1bWUgc3RvcmUuZ2V0IHJldHVybnMgVCBvciBudWxsL3VuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBudWxsID0gc3RvcmUuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgIHRyYW5zbGF0b3IudHJhbnNsYXRlRW50aXR5KGVudGl0eSwgaWQsIG9wdGlvbnMubGFuZ3VhZ2UsIHRoaXMuZ2V0VGFibGVOYW1lKCkpO1xuICAgICAgICByZXR1cm4gZW50aXR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBJRCAoc3RyaW5nIG9yIG51bWJlcikuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldElkTmFtZSgpLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5nZXRJZENvbHVtbigpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50aXR5LlxuICAgICAqIFRoZSBlbnRpdHkgbXVzdCBjb250YWluIHRoZSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZE5hbWUgPSB0aGlzLmdldElkTmFtZSgpO1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVtpZE5hbWVdIGFzIChudW1iZXIgfCBzdHJpbmcpO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIGVudGl0eSBzdGF0ZSBiZWZvcmUgdXBkYXRlIGZvciB0aGUgZXZlbnQgcGF5bG9hZFxuICAgICAgICBjb25zdCBwcmV2aW91c0VudGl0eSA9IHRoaXMuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIHN0b3JlLnVwZGF0ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJ1cGRhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBwcmV2aW91c0VudGl0eTogcHJldmlvdXNFbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBpZE5hbWUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIGVudGl0eSBpZiB0aGUgSUQgaXMgbnVsbC91bmRlZmluZWQsIG90aGVyd2lzZSB1cGRhdGVzIGl0LlxuICAgICAqIElmIGFuIElEIGlzIHByb3ZpZGVkIGJ1dCB0aGUgZW50aXR5IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgaXQuXG4gICAgICogQHJldHVybnMgVGhlIGVudGl0eSdzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnQoZW50aXR5OiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaWQgPSBlbnRpdHlbdGhpcy5nZXRJZE5hbWUoKV07XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBubyBJRCBpcyBwcmVzZW50LCBzYXZlIChjcmVhdGUpXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIElEIGlzIHByZXNlbnQsIGNoZWNrIGV4aXN0ZW5jZVxuICAgICAgICBjb25zdCBleGlzdGluZ0VudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nRW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSUQgZXhpc3RzLCBidXQgZW50aXR5IGRvZXMgbm90IC0+IHNhdmUgKGNyZWF0ZSB3aXRoIHByb3ZpZGVkIElEKVxuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFuIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBSZXRyaWV2ZSBlbnRpdHkgYmVmb3JlIHJlbW92YWwgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgc3RvcmUucmVtb3ZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBzdG9yZS5jb3VudCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdGVjdGVkIG1ldGhvZCBpbnRlbmRlZCBmb3Igc3ViY2xhc3Mgb3ZlcnJpZGluZyBvciBpbnRlcm5hbCBldmVudCBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KF9kYXRhOiBFbnRpdHlFdmVudDxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbXB0eSBib2R5IGFzIGluIHRoZSBvcmlnaW5hbCBjb2RlXG4gICAgfVxufVxu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
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN0b3JlLCB0cmFuc2xhdG9yLCBFbnRpdHlDb25zdHJ1Y3RvciwgT3B0aW9ucyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGV2ZW50IHRyaWdnZXIgbWV0aG9kIGJlZm9yZS9hZnRlciBhbiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnQ8VD4ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW50aXR5OiBQYXJ0aWFsPFQ+OyAvLyBVc2UgUGFydGlhbDxUPiBmb3IgY3JlYXRlL2RlbGV0ZSB3aGVyZSBzb21lIGZpZWxkcyBtaWdodCBiZSBtaXNzaW5nXG4gICAgcmVhZG9ubHkga2V5OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgfVxuICAgIHJlYWRvbmx5IHByZXZpb3VzRW50aXR5PzogVDtcbn1cblxuXG4vLyAtLS0gUmVwb3NpdG9yeSBDbGFzcyAtLS1cblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBkYXRhIGFjY2Vzcy9idXNpbmVzcyBsb2dpYywgd3JhcHBpbmcgdGhlIGBzdG9yZWAgQVBJLlxuICogSXQgaGFuZGxlcyBlbnRpdHkgbWV0YWRhdGEgbG9va3VwLCBDUlVEIG9wZXJhdGlvbnMsIHRyYW5zbGF0aW9uLCBhbmQgZXZlbnQgdHJpZ2dlcmluZy5cbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgdHlwZSAobXVzdCBiZSBhbiBvYmplY3QpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlDb25zdHJ1Y3RvciA9IGVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGVzIGVudGl0eSBtZXRhZGF0YSAobmFtZSwgdGFibGUsIGlkKSBvbnRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3Igc3RhdGljIGFjY2Vzc1xuXHRcdGlmICghdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZXMgc3RvcmUgbWV0aG9kcyByZXR1cm4gbm9uLW51bGwgc3RyaW5nc1xuXHRcdFx0dGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUgPSBzdG9yZS5nZXRFbnRpdHlOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lID0gc3RvcmUuZ2V0VGFibGVOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lID0gc3RvcmUuZ2V0SWROYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9jb2x1bW4gPSBzdG9yZS5nZXRJZENvbHVtbih0aGlzLmVudGl0eUNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RW50aXR5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIHNpbmNlIHRoZSBjb25zdHJ1Y3RvciBndWFyYW50ZWVzIHRoZXNlIHByb3BlcnRpZXMgZXhpc3RcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGVudGl0eV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWRDb2x1bW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQWxsKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFRbXSB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5saXN0IHJldHVybnMgVFtdIGJ1dCB3ZSBleHBsaWNpdGx5IGNhc3QgaXQgdG8gVFtdXG4gICAgICAgIGNvbnN0IGxpc3Q6IFRbXSA9IHN0b3JlLmxpc3QodGhpcy5nZXRFbnRpdHlOYW1lKCksIG9wdGlvbnMpO1xuICAgICAgICB0cmFuc2xhdG9yLnRyYW5zbGF0ZUxpc3QobGlzdCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRCeUlkKGlkOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBBc3N1bWUgc3RvcmUuZ2V0IHJldHVybnMgVCBvciBudWxsL3VuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBudWxsID0gc3RvcmUuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgIHRyYW5zbGF0b3IudHJhbnNsYXRlRW50aXR5KGVudGl0eSwgaWQsIG9wdGlvbnMubGFuZ3VhZ2UsIHRoaXMuZ2V0VGFibGVOYW1lKCkpO1xuICAgICAgICByZXR1cm4gZW50aXR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBJRCAoc3RyaW5nIG9yIG51bWJlcikuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldElkTmFtZSgpLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5nZXRJZENvbHVtbigpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50aXR5LlxuICAgICAqIFRoZSBlbnRpdHkgbXVzdCBjb250YWluIHRoZSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZE5hbWUgPSB0aGlzLmdldElkTmFtZSgpO1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVtpZE5hbWVdIGFzIChudW1iZXIgfCBzdHJpbmcpO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIGVudGl0eSBzdGF0ZSBiZWZvcmUgdXBkYXRlIGZvciB0aGUgZXZlbnQgcGF5bG9hZFxuICAgICAgICBjb25zdCBwcmV2aW91c0VudGl0eSA9IHRoaXMuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIHN0b3JlLnVwZGF0ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJ1cGRhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBwcmV2aW91c0VudGl0eTogcHJldmlvdXNFbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBpZE5hbWUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIGVudGl0eSBpZiB0aGUgSUQgaXMgbnVsbC91bmRlZmluZWQsIG90aGVyd2lzZSB1cGRhdGVzIGl0LlxuICAgICAqIElmIGFuIElEIGlzIHByb3ZpZGVkIGJ1dCB0aGUgZW50aXR5IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgaXQuXG4gICAgICogQHJldHVybnMgVGhlIGVudGl0eSdzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnQoZW50aXR5OiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaWQgPSBlbnRpdHlbdGhpcy5nZXRJZE5hbWUoKV07XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBubyBJRCBpcyBwcmVzZW50LCBzYXZlIChjcmVhdGUpXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIElEIGlzIHByZXNlbnQsIGNoZWNrIGV4aXN0ZW5jZVxuICAgICAgICBjb25zdCBleGlzdGluZ0VudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nRW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSUQgZXhpc3RzLCBidXQgZW50aXR5IGRvZXMgbm90IC0+IHNhdmUgKGNyZWF0ZSB3aXRoIHByb3ZpZGVkIElEKVxuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFuIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBSZXRyaWV2ZSBlbnRpdHkgYmVmb3JlIHJlbW92YWwgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgc3RvcmUucmVtb3ZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBzdG9yZS5jb3VudCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdGVjdGVkIG1ldGhvZCBpbnRlbmRlZCBmb3Igc3ViY2xhc3Mgb3ZlcnJpZGluZyBvciBpbnRlcm5hbCBldmVudCBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KF9kYXRhOiBFbnRpdHlFdmVudDxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbXB0eSBib2R5IGFzIGluIHRoZSBvcmlnaW5hbCBjb2RlXG4gICAgfVxufVxu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
|