@dbx-tools/shared-genie 0.6.131 → 0.6.133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/genie-model.js +2 -4
- package/package.json +2 -2
- package/src/genie-model.ts +2 -6
package/lib/src/genie-model.js
CHANGED
|
@@ -90,9 +90,7 @@ export const GenieQueryAttachmentSchema = SDKGenieQueryAttachmentSchema.extend({
|
|
|
90
90
|
});
|
|
91
91
|
/** Text attachment schema widened for forward-compatible purpose values. */
|
|
92
92
|
export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend({
|
|
93
|
-
purpose: z
|
|
94
|
-
.custom((value) => typeof value === "string")
|
|
95
|
-
.optional(),
|
|
93
|
+
purpose: z.custom((value) => typeof value === "string").optional(),
|
|
96
94
|
});
|
|
97
95
|
/**
|
|
98
96
|
* `GenieAttachment` with:
|
|
@@ -451,4 +449,4 @@ export const GenieChatEventSchema = z.discriminatedUnion("type", [
|
|
|
451
449
|
SuggestedQuestionsEventSchema,
|
|
452
450
|
ResultEventSchema,
|
|
453
451
|
]);
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDZEQUE2RDtBQUM3RCxNQUFNLEVBQ0osbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLHFCQUFxQixFQUFFLHdCQUF3QixFQUMvQyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFDekMsMEJBQTBCLEVBQUUsNkJBQTZCLEVBQ3pELGdCQUFnQixFQUFFLG1CQUFtQixHQUN0QyxHQUFHLFVBQVUsQ0FBQztBQVVmLG9FQUFvRTtBQUNwRSxpRUFBaUU7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUM7QUFpQy9COzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQW1CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDcEIsQ0FBQyxDQUFDO0FBR0gsNkVBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsT0FBTztJQUNQLE1BQU07SUFDTixxQkFBcUI7Q0FDZSxDQUFDO0FBSXZDLHlFQUF5RTtBQUV6RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1B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ZXMgYW5kIGhpZ2gtbGV2ZWwgZXZlbnQgdm9jYWJ1bGFyeVxuICogZm9yIHRoZSBHZW5pZSBjaGF0IGRyaXZlci5cbiAqXG4gKiBUd28gcmVsYXRlZCBsYXllcnMgbGl2ZSBoZXJlOlxuICpcbiAqICAgMS4gR2VuaWUgd2lyZSBzaGFwZXMgZGVyaXZlZCBmcm9tIHRoaXMgcGFja2FnZSdzIG93biBnZW5lcmF0ZWRcbiAqICAgICAgYGRhc2hib2FyZHNgIHNjaGVtYXMgKHJlZ2VuZXJhdGVkIGZyb20gdGhlIHVwc3RyZWFtXG4gKiAgICAgIGBAZGF0YWJyaWNrcy9zZGstZXhwZXJpbWVudGFsYCBgYXBpcy9kYXNoYm9hcmRzL21vZGVsLmQudHNgXG4gKiAgICAgIGJ5IHRoZSBlbmdpbmUncyBjb2RlZ2VuIG9uIHN5bnRoKS4gV2UgZXh0ZW5kIHRoZSBTREsgc2NoZW1hcyB3aGVyZSBHZW5pZVxuICogICAgICBzaGlwcyBmaWVsZHMgb24gdGhlIHdpcmUgdGhhdCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGU6XG4gKlxuICogICAgICAgIC0gYEdlbmllTWVzc2FnZS5hdXRvX3JlZ2VuZXJhdGVfY291bnQ6IG51bWJlcmAgKHN0YW1wZWRcbiAqICAgICAgICAgIG9uIGV2ZXJ5IHdpcmUgbWVzc2FnZSwgb21pdHRlZCBmcm9tIHRoZSBTREsgc2hhcGUpLlxuICogICAgICAgIC0gYEdlbmllUXVlcnlBdHRhY2htZW50LnRob3VnaHRzOiBHZW5pZVRob3VnaHRbXWAgKHRoZVxuICogICAgICAgICAgc3RyZWFtZWQgcmVhc29uaW5nIHBheWxvYWQgd2l0aCBgREVTQ1JJUFRJT05gLFxuICogICAgICAgICAgYERBVEFfU09VUkNJTkdgLCBgU1RFUFNgLCBhbmQgYFVOREVSU1RBTkRJTkdgIHRob3VnaHRcbiAqICAgICAgICAgIGtpbmRzKS5cbiAqICAgICAgICAtIGBHZW5pZUF0dGFjaG1lbnQuYXR0YWNobWVudF90eXBlOiBBdHRhY2htZW50VHlwZWBcbiAqICAgICAgICAgIChhbiBvcHRpb25hbCBkaXNjcmltaW5hdG9yIGxpdGVyYWwgc28gY2FsbGVycyBjYW5cbiAqICAgICAgICAgIGBzd2l0Y2ggKGF0dC5hdHRhY2htZW50X3R5cGUpYCBpbnN0ZWFkIG9mIHByb2JpbmdcbiAqICAgICAgICAgIHdoaWNoIHN1Yi1rZXkgaXMgcG9wdWxhdGVkOyBjb21wdXRlIGl0IHdpdGhcbiAqICAgICAgICAgIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pLlxuICpcbiAqICAgMi4gRXZlbnQgdm9jYWJ1bGFyeSBmb3IgdGhlIGhpZ2gtbGV2ZWwgYGdlbmllRXZlbnRDaGF0YFxuICogICAgICBkcml2ZXIuIEVhY2ggZXZlbnQgaXMgYSBmbGF0IGB6Lm9iamVjdGAgd2l0aCBhIGB0eXBlYFxuICogICAgICBsaXRlcmFsIGRpc2NyaW1pbmF0b3IgYW5kIHNuYWtlX2Nhc2UgcGF5bG9hZCBmaWVsZHMgaG9pc3RlZFxuICogICAgICB0byB0aGUgdG9wIGxldmVsIChubyBgcGF5bG9hZGAgd3JhcHBlcikuIEV2ZW50cyB0aGF0IHNoYXJlXG4gKiAgICAgIHRoZSBhdHRhY2htZW50LXNjb3BlZCBsb2NhdGlvbiB1c2VcbiAqICAgICAge0BsaW5rIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hfSBhcyBhIGJhc2U7IGV2ZW50cyB0aGF0XG4gKiAgICAgIGRvbid0IGNhcnJ5IGFuIGBhdHRhY2htZW50X2lkYCAoc3RhdHVzLCByZXN1bHQpIG9taXQgaXQuXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRFdmVudFNjaGVtYX0gYnVuZGxlcyB0aGUgdmFyaWFudHMgaW50byBvbmVcbiAqICAgICAgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqXG4gKiBQdXJlIHR5cGVzOiBubyBydW50aW1lIGltcG9ydHMgYmV5b25kIHpvZCArIHRoZSBnZW5lcmF0ZWRcbiAqIGBkYXNoYm9hcmRzYCBzY2hlbWFzLCBubyBOb2RlLW9ubHkgY29kZSwgc2FmZSBmb3IgYnJvd3NlciBidW5kbGVzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCAqIGFzIGRhc2hib2FyZHMgZnJvbSBcIi4vZGFzaGJvYXJkcy50c1wiO1xuXG4vLyBUaGUgZ2VuZXJhdGVkIFNESyBzY2hlbWFzIGxpdmUgaW4gdGhlIHNpYmxpbmcgYC4vZGFzaGJvYXJkcy50c2AsIHdyaXR0ZW4gYnkgdGhlXG4vLyBlbmdpbmUncyBjb2RlZ2VuIGZyb20gdGhlIHVwc3RyZWFtIGAuZC50c2AuIEFsaWFzIHRoZSBoYW5kZnVsIEdlbmllIGV4dGVuZHMgc29cbi8vIHRoZSB3aWRlbmVkIHNjaGVtYXMgYmVsb3cgcmVhZCBhZ2FpbnN0IHNob3J0LCBsb2NhbCBuYW1lcy5cbmNvbnN0IHtcbiAgbWVzc2FnZVN0YXR1c1NjaGVtYTogTWVzc2FnZVN0YXR1c1NjaGVtYSxcbiAgZ2VuaWVBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZUF0dGFjaG1lbnRTY2hlbWEsXG4gIGdlbmllTWVzc2FnZVNjaGVtYTogU0RLR2VuaWVNZXNzYWdlU2NoZW1hLFxuICBnZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYTogU0RLR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEsXG4gIGdlbmllU3BhY2VTY2hlbWE6IFNES0dlbmllU3BhY2VTY2hlbWEsXG59ID0gZGFzaGJvYXJkcztcblxuLyoqXG4gKiBUaGUgU0RLJ3MgYE1lc3NhZ2VTdGF0dXNgIHR5cGUsIHJlLWV4cG9ydGVkIHNvIGNvbnN1bWVycyBvZiB0aGVcbiAqIEdlbmllIGNvbnRyYWN0IGdldCB0aGUgZnVsbCB3aXJlIHZvY2FidWxhcnkgZnJvbSBhIHNpbmdsZSBpbXBvcnRcbiAqIHBhdGggLSBtaXJyb3JzIHRoZSByZS1leHBvcnRzIG9mIHRoZSBvdGhlciBTREstZGVyaXZlZCBzY2hlbWFzXG4gKiBiZWxvdy5cbiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZVN0YXR1cyA9IGRhc2hib2FyZHMuTWVzc2FnZVN0YXR1cztcblxuLy8gUmUtZXhwb3J0IHRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2Agc2NoZW1hIHNvIGNhbGxlcnMgY2FuIHBhcnNlIGFcbi8vIHJhdyBzdGF0dXMgd2l0aG91dCByZWFjaGluZyBiYWNrIGludG8gdGhlIGdlbmVyYXRlZCBuYW1lc3BhY2UuXG5leHBvcnQgeyBNZXNzYWdlU3RhdHVzU2NoZW1hIH07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRob3VnaHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBHZW5pZSdzIHBlci1xdWVyeSBcInRob3VnaHRzXCIgc3VyZmFjZS4gVGhlc2UgYXBwZWFyIG9uIHRoZVxuICogYC9tZXNzYWdlcy97aWR9YCB3aXJlIHVuZGVyIGBhdHRhY2htZW50c1tpXS5xdWVyeS50aG91Z2h0c1tdYCBidXRcbiAqIGFyZSBub3QgdHlwZWQgb24gdGhlIFNESydzIGBHZW5pZVF1ZXJ5QXR0YWNobWVudGAgYXQgdjAuMTcuXG4gKlxuICogS25vd24gdGhvdWdodCB0eXBlcyBvYnNlcnZlZCBpbiBwcm9kdWN0aW9uIHBvbGxzOlxuICpcbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RFU0NSSVBUSU9OYDogYSBvbmUtcGFyYWdyYXBoIHJlc3RhdGVtZW50IG9mXG4gKiAgICAgd2hhdCB0aGUgdXNlciBhc2tlZC4gVGhlIGZpbmFsIGBxdWVyeS5kZXNjcmlwdGlvbmAgZmllbGQgb25cbiAqICAgICB0aGUgYXR0YWNobWVudCBjYXJyaWVzIHRoZSBzYW1lIHRleHQuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9EQVRBX1NPVVJDSU5HYDogbWFya2Rvd24gYnVsbGV0cyBvZiB0aGVcbiAqICAgICBmdWxseS1xdWFsaWZpZWQgYGNhdGFsb2cuc2NoZW1hLnRhYmxlYCBzb3VyY2VzIEdlbmllIGNob3NlLlxuICogICAtIGBUSE9VR0hUX1RZUEVfU1RFUFNgOiB0aGUgaGlnaC1sZXZlbCBwbGFuIEdlbmllIHdyb3RlIGJlZm9yZVxuICogICAgIHJ1bm5pbmcgU1FMIChvbmUgYnVsbGV0IHBlciBzdGVwKS5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX1VOREVSU1RBTkRJTkdgOiBhbWJpZ3VpdHkgLyBpbnRlcnByZXRhdGlvblxuICogICAgIG5vdGVzIChlLmcuIFwiJ3JldmVudWUnIGNvdWxkIGJlIGludGVycHJldGVkIGFzIGdyb3NzLFxuICogICAgIG5ldCwgb3IgcmVjb2duaXplZCByZXZlbnVlLi4uXCIpLlxuICpcbiAqIE9wZW4gYXQgdGhlIHR5cGUgbGV2ZWwgKGB8IChzdHJpbmcgJiB7fSlgKSBzbyBhIG5ldyBzZXJ2ZXItc2lkZVxuICogdGhvdWdodCB0eXBlIGRvZXNuJ3QgYnJlYWsgY29tcGlsYXRpb247IHRoZSBmb3VyIGtub3duIHR5cGVzXG4gKiBzdGlsbCBuYXJyb3cgY29ycmVjdGx5IHVuZGVyIGBzd2l0Y2hgLlxuICovXG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHRUeXBlID1cbiAgfCBcIlRIT1VHSFRfVFlQRV9ERVNDUklQVElPTlwiXG4gIHwgXCJUSE9VR0hUX1RZUEVfREFUQV9TT1VSQ0lOR1wiXG4gIHwgXCJUSE9VR0hUX1RZUEVfU1RFUFNcIlxuICB8IFwiVEhPVUdIVF9UWVBFX1VOREVSU1RBTkRJTkdcIlxuICB8IChzdHJpbmcgJiB7fSk7XG5cbi8qKlxuICogT25lIHJlYXNvbmluZyBzdGVwIG9uIGEgcXVlcnkgYXR0YWNobWVudC4gU2VlXG4gKiB7QGxpbmsgR2VuaWVUaG91Z2h0VHlwZX0gZm9yIHRoZSBrbm93biBgdGhvdWdodF90eXBlYCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRob3VnaHRfdHlwZTogei5jdXN0b208R2VuaWVUaG91Z2h0VHlwZT4oKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVUaG91Z2h0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCBkaXNjcmltaW5hdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBEaXNjcmltaW5hdG9yIGZvciB3aGF0J3MgaW5zaWRlIGEgYEdlbmllQXR0YWNobWVudGAuIEdlbmllIG9ubHlcbiAqIGV2ZXIgcG9wdWxhdGVzIG9uZSBvZiBgcXVlcnlgIC8gYHRleHRgIC8gYHN1Z2dlc3RlZF9xdWVzdGlvbnNgXG4gKiBwZXIgYXR0YWNobWVudC4gT3BlbiB2aWEgYChzdHJpbmcgJiB7fSlgIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0eXBlIGRvZXNuJ3QgYnJlYWsgY29tcGlsYXRpb247IHRoZSB0aHJlZSBrbm93biB0eXBlcyBzdGlsbFxuICogbmFycm93IGNvcnJlY3RseSB1bmRlciBgc3dpdGNoYC5cbiAqXG4gKiBMaWZ0ZWQgaW50byB0aGUgc2NoZW1hIGFzIHRoZSBvcHRpb25hbFxuICoge0BsaW5rIEdlbmllQXR0YWNobWVudFNjaGVtYX0uYGF0dGFjaG1lbnRfdHlwZWAgZmllbGQgKGNvbXB1dGVcbiAqIGl0IHdpdGgge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkgc28gY29uc3VtZXJzIGNhbiBicmFuY2hcbiAqIG9uIGEgbGl0ZXJhbCBpbnN0ZWFkIG9mIHByb2Jpbmcgd2hpY2ggc3ViLW9iamVjdCBrZXkgaXNcbiAqIHByZXNlbnQuIEFsc28gc3VyZmFjZWQgb24ge0BsaW5rIEF0dGFjaG1lbnRFdmVudH0ncyBwYXlsb2FkIGFzXG4gKiBgYXR0YWNobWVudF90eXBlYCAodnMgYSBiYXJlIGB0eXBlYCkgdG8ga2VlcCB0aGUgZmllbGQgY2xlYXIgb2ZcbiAqIHRoZSBldmVudC11bmlvbiBkaXNjcmltaW5hdG9yIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFUVEFDSE1FTlRfVFlQRVMgPSBbXG4gIFwicXVlcnlcIixcbiAgXCJ0ZXh0XCIsXG4gIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiLFxuXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgc3RyaW5nW107XG5leHBvcnQgdHlwZSBLbm93bkF0dGFjaG1lbnRUeXBlID0gKHR5cGVvZiBBVFRBQ0hNRU5UX1RZUEVTKVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgQXR0YWNobWVudFR5cGUgPSBLbm93bkF0dGFjaG1lbnRUeXBlIHwgKHN0cmluZyAmIHt9KTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLSB3aWRlbmVkIHdpcmUgc2NoZW1hcyArIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIGBHZW5pZVF1ZXJ5QXR0YWNobWVudGAgd2lkZW5lZCB3aXRoIHRoZSBgdGhvdWdodHNbXWAgZmllbGQgdGhlXG4gKiBHZW5pZSB3aXJlIGV4cG9zZXMgYnV0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZS4gRXZlcnlcbiAqIG90aGVyIGZpZWxkIChgZGVzY3JpcHRpb25gLCBgcXVlcnlgLCBgc3RhdGVtZW50X2lkYCxcbiAqIGBxdWVyeV9yZXN1bHRfbWV0YWRhdGFgLCBgdGl0bGVgLCBgcGFyYW1ldGVyc2AsXG4gKiBgbGFzdF91cGRhdGVkX3RpbWVzdGFtcGAsIGBpZGApIGZsb3dzIHRocm91Z2ggdmVyYmF0aW0gZnJvbVxuICogdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHRob3VnaHRzOiB6LmFycmF5KEdlbmllVGhvdWdodFNjaGVtYSkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVRdWVyeUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogUHVycG9zZSBhdHRhY2hlZCB0byBhIEdlbmllIHRleHQgcmVzcG9uc2UuXG4gKlxuICogVGhlIGdlbmVyYXRlZCBEYXRhYnJpY2tzIFNESyBzY2hlbWEgY3VycmVudGx5IGtub3dzIG9ubHlcbiAqIGBGT0xMT1dfVVBfUVVFU1RJT05gLCB3aGlsZSB0aGUgbGl2ZSBHZW5pZSBBUEkgYWxzbyBlbWl0c1xuICogYFRFWFRfQVRUQUNITUVOVF9QVVJQT1NFX0FOU1dFUmAgZm9yIHRoZSBwcmltYXJ5IGFuc3dlciB0ZXh0LiBLZWVwIHRoZVxuICoga25vd24gdmFsdWVzIGRpc2NvdmVyYWJsZSBhbmQgYWNjZXB0IGZ1dHVyZSBzdHJpbmcgdmFsdWVzIHNvIGFuIGFkZGl0aXZlXG4gKiBzZXJ2ZXItc2lkZSBlbnVtIGNoYW5nZSBjYW5ub3QgaW52YWxpZGF0ZSBhbiBvdGhlcndpc2UgY29tcGxldGUgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UgPVxuICB8IFwiRk9MTE9XX1VQX1FVRVNUSU9OXCJcbiAgfCBcIlRFWFRfQVRUQUNITUVOVF9QVVJQT1NFX0FOU1dFUlwiXG4gIHwgKHN0cmluZyAmIHt9KTtcblxuLyoqIFRleHQgYXR0YWNobWVudCBzY2hlbWEgd2lkZW5lZCBmb3IgZm9yd2FyZC1jb21wYXRpYmxlIHB1cnBvc2UgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWEgPSBkYXNoYm9hcmRzLnRleHRBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHB1cnBvc2U6IHpcbiAgICAuY3VzdG9tPEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlPigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVUZXh0QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZUF0dGFjaG1lbnRgIHdpdGg6XG4gKlxuICogICAtIGBxdWVyeWAgcmUtdHlwZWQgdG8gdGhlIHRob3VnaHRzLWF3YXJlXG4gKiAgICAge0BsaW5rIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hfS5cbiAqICAgLSBgYXR0YWNobWVudF90eXBlYCBkaXNjcmltaW5hdG9yIGxpdGVyYWxcbiAqICAgICAoe0BsaW5rIEF0dGFjaG1lbnRUeXBlfSkgc28gY29uc3VtZXJzIGNhbiBgc3dpdGNoXG4gKiAgICAgKGF0dC5hdHRhY2htZW50X3R5cGUpYCB0byBuYXJyb3cgd2hpY2ggc3ViLW9iamVjdCBpc1xuICogICAgIHBvcHVsYXRlZC4gT3B0aW9uYWwgb24gdGhlIHdpcmUgKEdlbmllIGRvZXNuJ3Qgc2VuZCBpdCk7XG4gKiAgICAgY2FsbGVycyBjb21wdXRlIGl0IHdpdGgge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSB3aGVuXG4gKiAgICAgdGhleSB3YW50IHRoZSBsaXRlcmFsIHVwLWZyb250LlxuICpcbiAqIGB0ZXh0YCBpcyByZS10eXBlZCB0byB0aGUgZm9yd2FyZC1jb21wYXRpYmxlXG4gKiB7QGxpbmsgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYX0uIGBhdHRhY2htZW50X2lkYCBhbmRcbiAqIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYCBwYXNzIHRocm91Z2ggdW5jaGFuZ2VkLiBgYXR0YWNobWVudF9pZGAgaXMgZ2VudWluZWx5XG4gKiBvcHRpb25hbCBvbiB0aGUgd2lyZTpcbiAqIHRoZSBmaXJzdCB0ZXh0IGF0dGFjaG1lbnQgR2VuaWUgZW1pdHMgcGVyIHR1cm4gKHRoZSBcIm1haW5cbiAqIGFuc3dlciB0ZXh0XCIpIGFycml2ZXMgd2l0aCBubyBpZCwgb25seSB0aGUgZm9sbG93LXVwIHRleHRcbiAqIGF0dGFjaG1lbnQgZ2V0cyBvbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZUF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcXVlcnk6IEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIHRleHQ6IEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgYXR0YWNobWVudF90eXBlOiB6LmN1c3RvbTxBdHRhY2htZW50VHlwZT4oKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBHZW5pZUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZU1lc3NhZ2VgIHdpZGVuZWQgd2l0aDpcbiAqXG4gKiAgIC0gYGF1dG9fcmVnZW5lcmF0ZV9jb3VudGA6IG51bWJlciBzdGFtcGVkIG9uIGV2ZXJ5IHdpcmVcbiAqICAgICBtZXNzYWdlIHRoYXQgdGhlIFNESyB0eXBlIG9taXRzIGF0IHYwLjE3LlxuICogICAtIGBhdHRhY2htZW50c2A6IHJlLXR5cGVkIHRvIHRoZSBsb2NhbFxuICogICAgIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9IHNvXG4gKiAgICAgYGF0dGFjaG1lbnQucXVlcnk/LnRob3VnaHRzYCAoYW5kIHRoZVxuICogICAgIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IpIGlzIHJlYWNoYWJsZSB3aXRob3V0IGFcbiAqICAgICBjYXN0LlxuICpcbiAqIEV2ZXJ5IG90aGVyIGZpZWxkIChgaWRgLCBgc3BhY2VfaWRgLCBgY29udmVyc2F0aW9uX2lkYCxcbiAqIGB1c2VyX2lkYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCwgYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLFxuICogYHN0YXR1c2AsIGBjb250ZW50YCwgYG1lc3NhZ2VfaWRgLCBgcXVlcnlfcmVzdWx0YCwgYGVycm9yYCxcbiAqIGBmZWVkYmFja2ApIHBhc3NlcyB0aHJvdWdoIGZyb20gdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VTY2hlbWEgPSBTREtHZW5pZU1lc3NhZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgYXR0YWNobWVudHM6IHouYXJyYXkoR2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICBhdXRvX3JlZ2VuZXJhdGVfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuLyoqXG4gKiBEb21haW4gcHJvamVjdGlvbiBvZiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfSB0aGF0IGRyb3BzIGV2ZXJ5XG4gKiB0dXJuLWxldmVsIGZpZWxkIChgaWRgLCBgc3RhdHVzYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCxcbiAqIGBxdWVyeV9yZXN1bHRgLCAuLi4pIGFuZCB5aWVsZHMganVzdCB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhXG4gKiBmbGF0IGBHZW5pZUF0dGFjaG1lbnRbXWAuIFBhcnNlcyB0aGUgc2FtZSB3aXJlIHNoYXBlIGFzXG4gKiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfTsgbWlzc2luZyBgYXR0YWNobWVudHNgIGRlZmF1bHRzIHRvXG4gKiBgW11gIHNvIHRoZSBvdXRwdXQgaXMgYWx3YXlzIGFuIGFycmF5LlxuICpcbiAqIFVzZSB3aGVuIGNvbnN1bWVycyBvbmx5IGNhcmUgYWJvdXQgdGhlIG1vZGVsJ3MgcmVzcG9uc2VcbiAqIGF0dGFjaG1lbnRzIGFuZCBub3QgdGhlIHN1cnJvdW5kaW5nIG1lc3NhZ2UgZW52ZWxvcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVJlc3BvbnNlU2NoZW1hID0gR2VuaWVNZXNzYWdlU2NoZW1hLnRyYW5zZm9ybSgobSkgPT4gbS5hdHRhY2htZW50cyA/PyBbXSk7XG5leHBvcnQgdHlwZSBHZW5pZVJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVSZXNwb25zZVNjaGVtYT47XG5cbi8qKlxuICogYEdlbmllU3BhY2VgIHdpZGVuZWQgd2l0aCBhbiBvcHRpb25hbCBgc2VyaWFsaXplZF9zcGFjZWAgZmllbGRcbiAqIGNhcnJ5aW5nIGEgSlNPTi1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwYWNlJ3MgZnVsbFxuICogZGVmaW5pdGlvbiAoY2F0YWxvZ3MsIHNjaGVtYXMsIHRhYmxlcywgc2FtcGxlIHF1ZXN0aW9ucywgcHJvbXB0cyxcbiAqIGV0Yy4pIGFzIGV4cG9ydGVkIGJ5IHRoZSB3b3Jrc3BhY2UgZXhwb3J0IGVuZHBvaW50LlxuICpcbiAqIFRoZSBiYXNlIFNESyBzaGFwZSAoYGRlc2NyaXB0aW9uYCwgYHNwYWNlX2lkYCwgYHRpdGxlYCxcbiAqIGB3YXJlaG91c2VfaWRgKSBjb3ZlcnMgdGhlIGRpcmVjdG9yeS1saXN0aW5nIHN1cmZhY2UgLSBlbm91Z2ggdG9cbiAqIHJvdXRlIGEgY2hhdC4gYHNlcmlhbGl6ZWRfc3BhY2VgIGlzIG9wdC1pbiBzbyBjYWxsZXJzIHRoYXQgbmVlZFxuICogdGhlIGZ1bGwgc3BhY2Ugc2NoZW1hIChlLmcuIHRvIHNlZWQgYSBzeXN0ZW0gcHJvbXB0IG9yIHRvIHNoaXBcbiAqIHRoZSBkZWZpbml0aW9uIHRvIGFuIGFnZW50KSBjYW4gYXR0YWNoIGl0IHdpdGhvdXQgYSBzZWNvbmQgdHlwZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllU3BhY2VTY2hlbWEgPSBTREtHZW5pZVNwYWNlU2NoZW1hLmV4dGVuZCh7XG4gIHNlcmlhbGl6ZWRfc3BhY2U6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiVGhlIGNvbnRlbnRzIG9mIHRoZSBHZW5pZSBTcGFjZSBpbiBzZXJpYWxpemVkIHN0cmluZyBmb3JtLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgR2VuaWUgc3BhY2VzIHJlc3BvbnNlcy4gVGhpcyBmaWVsZCBwcm92aWRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBKU09OIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIHNwYWNlJ3MgbGF5b3V0IGFuZCBjb21wb25lbnRzLlwiLFxuICAgICksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmllU3BhY2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVNwYWNlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRlcm1pbmFsIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRlcm1pbmFsIEdlbmllIG1lc3NhZ2Ugc3RhdHVzZXMuIFRoZSBwb2xsaW5nIGxvb3AgaW4gdGhlIGNoYXRcbiAqIGRyaXZlciBzdG9wcyBhcyBzb29uIGFzIHRoZSBsYXRlc3QgbWVzc2FnZSBoYXMgb25lIG9mIHRoZXNlXG4gKiBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFUk1JTkFMX1NUQVRVU0VTID0gW1wiQ09NUExFVEVEXCIsIFwiRkFJTEVEXCIsIFwiQ0FOQ0VMTEVEXCJdIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVGVybWluYWxTdGF0dXMgPSAodHlwZW9mIFRFUk1JTkFMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogTmFycm93IGBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkYCB0byBhIHtAbGluayBUZXJtaW5hbFN0YXR1c30uICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzOiBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkKTogcyBpcyBUZXJtaW5hbFN0YXR1cyB7XG4gIHJldHVybiBzICE9PSB1bmRlZmluZWQgJiYgKFRFUk1JTkFMX1NUQVRVU0VTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmF3IEdlbmllIHdpcmUgc3RhdHVzIChgRkVUQ0hJTkdfTUVUQURBVEFgLFxuICogYEFTS0lOR19BSWAsIGBFWEVDVVRJTkdfUVVFUllgLCAuLi4pIGludG8gYSBzaG9ydCwgc2VudGVuY2UtY2FzZWRcbiAqIGxhYmVsIHNhZmUgdG8gZHJvcCBpbnRvIGEgVUkgcGlsbC4gS25vd24gc3RhdGVzIGdldCBhIGN1cmF0ZWRcbiAqIGxhYmVsOyB1bmtub3duIHN0YXRlcyBmYWxsIGJhY2sgdG8gYHN0cmluZy50b2tlbml6ZVdpdGhPcHRpb25zYFxuICogc28gbmV3IHN0YXRlcyBzdGlsbCByZW5kZXIgY2xlYW5seSB3aXRob3V0IGNvZGUgY2hhbmdlcy5cbiAqXG4gKiBQdXJlIChubyBOb2RlLW9ubHkgZGVwcyksIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy4gQm90aCB0aGVcbiAqIEdlbmllIGFnZW50IChzZXJ2ZXIpIGFuZCBhbnkgVUkgdGhhdCBzdWJzY3JpYmVzIHRvIHN0YXR1cyBldmVudHNcbiAqIGNhbGwgdGhpcyBzbyBsYWJlbHMgc3RheSBpbiBsb2NrLXN0ZXAgYWNyb3NzIHRoZSB3aXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVTdGF0dXMoc3RhdHVzOiBNZXNzYWdlU3RhdHVzKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiRkVUQ0hJTkdfTUVUQURBVEFcIjpcbiAgICAgIHJldHVybiBcIkZldGNoaW5nIG1ldGFkYXRhXCI7XG4gICAgY2FzZSBcIkFTS0lOR19BSVwiOlxuICAgICAgcmV0dXJuIFwiQXNraW5nIEdlbmllXCI7XG4gICAgY2FzZSBcIkVYRUNVVElOR19RVUVSWVwiOlxuICAgICAgcmV0dXJuIFwiUnVubmluZyBTUUwgcXVlcnlcIjtcbiAgICBjYXNlIFwiRklMVEVSSU5HX0NPTlRFWFRcIjpcbiAgICAgIHJldHVybiBcIkZpbHRlcmluZyBjb250ZXh0XCI7XG4gICAgY2FzZSBcIlBFTkRJTkdfV0FSRUhPVVNFXCI6XG4gICAgICByZXR1cm4gXCJXYWl0aW5nIGZvciB3YXJlaG91c2VcIjtcbiAgICBjYXNlIFwiQ09NUExFVEVEXCI6XG4gICAgICByZXR1cm4gXCJDb21wbGV0ZWRcIjtcbiAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICByZXR1cm4gXCJGYWlsZWRcIjtcbiAgICBjYXNlIFwiQ0FOQ0VMTEVEXCI6XG4gICAgICByZXR1cm4gXCJDYW5jZWxsZWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFsuLi5zdHJpbmcudG9rZW5pemVXaXRoT3B0aW9ucyh7IGNhcGl0YWxpemU6IHRydWUsIGxvd2VyQ2FzZTogdHJ1ZSB9LCBzdGF0dXMpXS5qb2luKFxuICAgICAgICBcIiBcIixcbiAgICAgICk7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCB0eXBlIGhlbHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSW5zcGVjdCBhIHtAbGluayBHZW5pZUF0dGFjaG1lbnR9IGFuZCByZXR1cm4gdGhlXG4gKiB7QGxpbmsgQXR0YWNobWVudFR5cGV9IG9mIHBheWxvYWQgaXQgY2Fycmllcy4gUmV0dXJucyB0aGUgZmlyc3RcbiAqIGtub3duIHN1Yi1vYmplY3QgdGhhdCdzIHByZXNlbnQ7IGlmIG5vbmUgb2YgdGhlIGtub3duIG9uZXMgYXJlXG4gKiBwb3B1bGF0ZWQsIGZhbGxzIGJhY2sgdG8gdGhlIGZpcnN0IG5vbi1ib29ra2VlcGluZyBrZXlcbiAqIChmb3J3YXJkLWNvbXBhdCBmb3IgdHlwZXMgd2UgZG9uJ3QgbW9kZWwgeWV0KSwgZWxzZSBgXCJ1bmtub3duXCJgLlxuICpcbiAqIEhvbm9ycyBhIHByZS1zZXQgYGF0dGFjaG1lbnRfdHlwZWAgaWYgb25lIGlzIGFscmVhZHkgb24gdGhlXG4gKiB2YWx1ZSwgc28gdGhpcyBpcyBpZGVtcG90ZW50IGFjcm9zcyByZS1kZXRlY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QXR0YWNobWVudFR5cGUoYXR0OiBHZW5pZUF0dGFjaG1lbnQpOiBBdHRhY2htZW50VHlwZSB7XG4gIGlmIChhdHQuYXR0YWNobWVudF90eXBlKSByZXR1cm4gYXR0LmF0dGFjaG1lbnRfdHlwZTtcbiAgaWYgKGF0dC5xdWVyeSkgcmV0dXJuIFwicXVlcnlcIjtcbiAgaWYgKGF0dC50ZXh0KSByZXR1cm4gXCJ0ZXh0XCI7XG4gIGlmIChhdHQuc3VnZ2VzdGVkX3F1ZXN0aW9ucykgcmV0dXJuIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0KSkge1xuICAgIGlmIChrICE9PSBcImF0dGFjaG1lbnRfaWRcIiAmJiBrICE9PSBcImF0dGFjaG1lbnRfdHlwZVwiKSByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2VuaWVDaGF0IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGVyZSBvbiB0aGUgd2lyZSBhbiBldmVudCB3YXMgb2JzZXJ2ZWQuIFNwcmVhZCBpbnRvIGV2ZXJ5XG4gKiBhdHRhY2htZW50LXNjb3BlZCBldmVudCBwYXlsb2FkIHNvIHN1YnNjcmliZXJzIGNhbiByb3V0ZSwgbG9nLFxuICogb3IgY29ycmVsYXRlIHdpdGhvdXQgcmUtd2Fsa2luZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYHNwYWNlX2lkYDogdGhlIEdlbmllIHNwYWNlIHRoZSBjb252ZXJzYXRpb24gbGl2ZXMgaW4uXG4gKiAgIC0gYGNvbnZlcnNhdGlvbl9pZGA6IGNvbnZlcnNhdGlvbiBpZCBvbmNlIEdlbmllIGhhcyBhc3NpZ25lZCBvbmUuXG4gKiAgIC0gYG1lc3NhZ2VfaWRgOiBHZW5pZSBtZXNzYWdlIGlkIGZvciB0aGUgYWN0aXZlIHR1cm4uXG4gKiAgIC0gYGF0dGFjaG1lbnRfaWRgOiBhdHRhY2htZW50IHRoZSBldmVudCBjYW1lIGZyb20uIE9wdGlvbmFsXG4gKiAgICAgYmVjYXVzZSBHZW5pZSBzb21ldGltZXMgZW1pdHMgYW4gYW5vbnltb3VzIG1haW4tYW5zd2VyXG4gKiAgICAgYXR0YWNobWVudCB3aXRob3V0IGFuIGlkOyB0aG9zZSBzdGlsbCBnZXQgZXZlbnRzLCBqdXN0IHdpdGhcbiAqICAgICBgYXR0YWNobWVudF9pZGAgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlX2lkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmllQ2hhdExvY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogdGhlIHF1ZXN0aW9uIHRoaXMgdHVybiBpcyBhc2tpbmcgR2VuaWUuIEZpcmVzXG4gKiBvbmNlIHBlciBgZ2VuaWVFdmVudENoYXRgIGNhbGwsIHRoZSBmaXJzdCB0aW1lIHRoZSB1bmRlcmx5aW5nXG4gKiBgZ2VuaWVDaGF0YCBsb29wIHlpZWxkcyBhIGBHZW5pZU1lc3NhZ2VgLiBDYXJyaWVzIHRoZSBwcm9tcHRcbiAqIHRleHQgR2VuaWUgZWNob2VkIGJhY2sgb24gYG1lc3NhZ2UuY29udGVudGAgYW5kIHRoZSBhc3NpZ25lZFxuICogYG1lc3NhZ2VfaWRgIHNvIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50XG4gKiBmb3IgdGhpcyB0dXJuIHVuZGVyIG9uZSBzdGFibGUga2V5LiBgY29udmVyc2F0aW9uX2lkYCBpc1xuICogcG9wdWxhdGVkIGZvciBib3RoIG9wZW5pbmcgYW5kIGZvbGxvdy11cCB0dXJucyAoR2VuaWUgYXNzaWduc1xuICogaXQgb24gYHN0YXJ0Q29udmVyc2F0aW9uYCkuXG4gKlxuICogRGVmZXJyZWQgKGluc3RlYWQgb2YgZmlyZWQgc3luY2hyb25vdXNseSBvbiBlbnRyeSkgc28gdGhlXG4gKiBgbWVzc2FnZV9pZGAgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGV2ZW50IGxhbmRzIC0gdGhhdCBvbmUgcm91bmRcbiAqIHRyaXAgY29zdHMgfjIwMG1zIGJ1dCBsZXRzIFVJcyByZW5kZXIgcXVlc3Rpb24gLyB0aGlua2luZyAvXG4gKiBxdWVyeSAvIHRleHQgYXMgYSBzaW5nbGUgZ3JvdXBlZCBibG9jayBwZXIgR2VuaWUgY2FsbCBpbnN0ZWFkXG4gKiBvZiBhIGZsYXQgc3RyZWFtLlxuICpcbiAqIGBhdHRhY2htZW50X2lkYCBpcyBpbnRlbnRpb25hbGx5IGFic2VudCAtIHF1ZXN0aW9ucyBhcmUgdHVyblxuICogc2NvcGVkLCBub3QgYXR0YWNobWVudCBzY29wZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVzdGlvbkV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJxdWVzdGlvblwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlc3Rpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXN0aW9uRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogcmF3IGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90IGZvciB0aGUgYWN0aXZlXG4gKiB0dXJuLiBGaXJlcyBvbmNlIHBlciBwb2xsIHlpZWxkLiBUaGUgZnVsbCBtZXNzYWdlIHNoYXBlXG4gKiAoaW5jbHVkaW5nIHRoZSB3aWRlbmVkIHRob3VnaHQgLyByZWdlbiAvIGF0dGFjaG1lbnQtdHlwZVxuICogZmllbGRzKSBpcyBleHBvc2VkIGlubGluZSBhcyBgbWVzc2FnZWA7IGNvbnN1bWVycyBuYXJyb3cgb25cbiAqIGBldmVudC50eXBlID09PSBcIm1lc3NhZ2VcImAgYW5kIHJlYWNoIGZvciBgZXZlbnQubWVzc2FnZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm1lc3NhZ2VcIiksXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuIEZpcmVzIGZvciBldmVyeVxuICogZGlzdGluY3Qgc3RhdHVzIHNlZW4gb24gdGhlIHdpcmUgKGUuZy4gYFNVQk1JVFRFRGAgLT5cbiAqIGBGSUxURVJJTkdfQ09OVEVYVGAgLT4gYEFTS0lOR19BSWAgLT4gYFBFTkRJTkdfV0FSRUhPVVNFYCAtPlxuICogYEFTS0lOR19BSWAgLT4gYENPTVBMRVRFRGApLlxuICovXG5leHBvcnQgY29uc3QgU3RhdHVzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXR1c1wiKSxcbiAgc3RhdHVzOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBwcmV2aW91c19zdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3RhdHVzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0dXNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgYXR0YWNobWVudCBzbG90IGFwcGVhcmVkIGluIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLlxuICogRmlyZXMgZXhhY3RseSBvbmNlIHBlciBhdHRhY2htZW50IChtYXRjaGVkIGJ5IGBhdHRhY2htZW50X2lkYCxcbiAqIHBvc2l0aW9uYWxseSBmb3IgYW5vbnltb3VzIGF0dGFjaG1lbnRzKSB0aGUgZmlyc3QgdGltZSB3ZSBzZWVcbiAqIGl0LiBUaGUgc2xvdCdzIHBheWxvYWQga2luZCBsYW5kcyBpbiBgYXR0YWNobWVudF90eXBlYCBzbyB0aGVcbiAqIG91dGVyIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0YXlzIHVuYW1iaWd1b3VzLlxuICovXG5leHBvcnQgY29uc3QgQXR0YWNobWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXR0YWNobWVudFwiKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogei5jdXN0b208QXR0YWNobWVudFR5cGU+KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiksXG59KTtcbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIEF0dGFjaG1lbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgcmVhc29uaW5nIHN0ZXAgYXBwZWFyZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW2ldYCkuIERlZHVwbGljYXRlZCBwZXJcbiAqIGAodGhvdWdodF90eXBlLCBjb250ZW50KWAgdHVwbGUgd2l0aGluIGFuIGF0dGFjaG1lbnQgc29cbiAqIHN1YnNjcmliZXJzIGRvbid0IHNlZSB0aGUgc2FtZSB0aG91Z2h0IG11bHRpcGxlIHRpbWVzIC0gR2VuaWVcbiAqIHNvbWV0aW1lcyBtdXRhdGVzIGV4aXN0aW5nIHRob3VnaHQgc2xvdHMgaW4gcGxhY2UsIHNvIHRoZSBkaWZmXG4gKiBpcyB2YWx1ZS1iYXNlZCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsLlxuICovXG5leHBvcnQgY29uc3QgVGhpbmtpbmdFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRoaW5raW5nXCIpLFxuICB0ZXh0OiB6LnN0cmluZygpLFxuICB0aG91Z2h0X3R5cGU6IHouY3VzdG9tPEdlbmllVGhvdWdodFR5cGU+KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiksXG59KTtcbmV4cG9ydCB0eXBlIFRoaW5raW5nRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUaGlua2luZ0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIHRleHQtYXR0YWNobWVudCBgY29udGVudGAgZmllbGQgYXBwZWFyZWQgb3IgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS50ZXh0LmNvbnRlbnRgKS4gRmlyZXMgd2hlbmV2ZXIgdGhlIHNuYXBzaG90XG4gKiB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIG9uZSBmb3IgdGhlIHNhbWUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIFRleHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRleHRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBmaW5hbGl6ZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5YCkuIEZpcmVzIG9uY2Ugd2hlbiB0aGUgU1FMIHN0cmluZ1xuICogdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCwgYW5kIGFnYWluIGlmIEdlbmllIGV2ZXJcbiAqIHJld3JpdGVzIGl0LiBgdGl0bGVgIGFuZCBgZGVzY3JpcHRpb25gIGFyZSBkZW5vcm1hbGlzZWQgb2ZmIHRoZVxuICogYXR0YWNobWVudCdzIGBxdWVyeS50aXRsZWAgLyBgcXVlcnkuZGVzY3JpcHRpb25gIHNvIGNvbnN1bWVyc1xuICogY2FuIGxhYmVsIHRoZSBTUUwgcGlsbCB3aXRob3V0IHJlLXdhbGtpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicXVlcnlcIiksXG4gIHNxbDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlFdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXJ5RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFNRTCB3YXMgc3VibWl0dGVkIHRvIGEgU1FMIHdhcmVob3VzZSBhbmQgYSBzdGF0ZW1lbnQgaWQgd2FzXG4gKiBhc3NpZ25lZCAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnN0YXRlbWVudF9pZGApLiBGaXJlcyB3aGVuIHRoZVxuICogc3RhdGVtZW50IGlkIHRyYW5zaXRpb25zIGZyb20gdW5kZWZpbmVkIHRvIGRlZmluZWQgLSB0aGlzIGlzIHRoZVxuICogcG9pbnQgYXQgd2hpY2ggYGNsaWVudC5zdGF0ZW1lbnRFeGVjdXRpb24uZ2V0U3RhdGVtZW50KHsgc3RhdGVtZW50X2lkIH0pYFxuICogYmVjb21lcyBhIHZhbGlkIGNhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0ZW1lbnRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXRlbWVudFwiKSxcbiAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBTdGF0ZW1lbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXRlbWVudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBSb3cgY291bnQgZm9yIGEgcXVlcnkgYXR0YWNobWVudCdzIHJlc3VsdCBjaGFuZ2VkXG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YS5yb3dfY291bnRgKS4gRmlyZXNcbiAqIG9uIGV2ZXJ5IGNoYW5nZSwgaW5jbHVkaW5nIHRoZSBpbml0aWFsIGB1bmRlZmluZWQgLT4gMGAgYW5kIHRoZVxuICogbGF0ZXIgYDAgLT4gTmAgb25jZSB0aGUgd2FyZWhvdXNlIGZpbmlzaGVzIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJvd3NFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJvd3NcIiksXG4gIHJvd19jb3VudDogei5udW1iZXIoKSxcbiAgcHJldmlvdXNfcm93X2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBSb3dzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBSb3dzRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEdlbmllIHByb2R1Y2VkIGEgZm9sbG93LXVwIHN1Z2dlc3RlZC1xdWVzdGlvbnMgbGlzdFxuICogKGBhdHRhY2htZW50c1tpXS5zdWdnZXN0ZWRfcXVlc3Rpb25zLnF1ZXN0aW9uc1tdYCkuIEZpcmVzIG9uY2VcbiAqIHdoZW4gdGhlIGxpc3QgYXBwZWFycywgYW5kIGFnYWluIGlmIEdlbmllIHJld3JpdGVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIpLFxuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgdHVybiByZWFjaGVkIGEgdGVybWluYWwgc3RhdHVzLiBBbHdheXMgZmlyZXMgb25jZVxuICogcGVyIHR1cm4gKGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0ZXJtaW5hbCBgbWVzc2FnZWAgZXZlbnQpLlxuICogQ2FycmllcyB0aGUgZmluYWwgYEdlbmllTWVzc2FnZWAgc25hcHNob3QgaW5saW5lIHNvIHN1YnNjcmliZXJzXG4gKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlaXIgb3duIGNvcHkgb2YgdGhlIGxhc3QgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VsdEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gIHN0YXR1czogei5lbnVtKFRFUk1JTkFMX1NUQVRVU0VTKSxcbiAgbWVzc2FnZTogR2VuaWVNZXNzYWdlU2NoZW1hLFxufSk7XG5leHBvcnQgdHlwZSBSZXN1bHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJlc3VsdEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIHlpZWxkZWQgYnkgYGdlbmllRXZlbnRDaGF0YC4gRWFjaCB2YXJpYW50XG4gKiBpcyBhIHNpbmdsZSBmbGF0IG9iamVjdCB3aXRoIGB0eXBlYCBhcyB0aGUgZGlzY3JpbWluYXRvciBhbmRcbiAqIHRoZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkIGRpcmVjdGx5IHRvIHRoZSB0b3AgbGV2ZWwgLSBub1xuICogYHBheWxvYWRgIHdyYXBwZXIuIENvbnN1bWVycyBuYXJyb3cgb24gYHR5cGVgIGFuZCByZWFkIGZpZWxkc1xuICogaW5saW5lOlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhldmVudC50aG91Z2h0X3R5cGUsIGV2ZW50LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInJlc3VsdFwiOlxuICogICAgICAgY29uc29sZS5sb2coXCJkb25lOlwiLCBldmVudC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBTdHJlYW0gb3JkZXIgcGVyIHR1cm46XG4gKlxuICogICAxLiBgcXVlc3Rpb25gLCBlbWl0dGVkIHdpdGggdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCAoZGVmZXJyZWQgc29cbiAqICAgICAgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUpLCBjYXJyeWluZyB0aGUgcHJvbXB0XG4gKiAgICAgIHRoaXMgdHVybiBzZW50IHRvIEdlbmllLlxuICogICAyLiBgbWVzc2FnZWAgZm9yIGV2ZXJ5IHBvbGwgeWllbGQgKHJhdyBgR2VuaWVNZXNzYWdlYCBvblxuICogICAgICBgZXZlbnQubWVzc2FnZWApLlxuICogICAzLiBBbnkgZGVyaXZlZCBldmVudHMgdGhlIHNuYXBzaG90IGRpZmYgcHJvZHVjZWQgKGBzdGF0dXNgLFxuICogICAgICBgYXR0YWNobWVudGAsIGB0aGlua2luZ2AsIGB0ZXh0YCwgYHF1ZXJ5YCwgYHN0YXRlbWVudGAsXG4gKiAgICAgIGByb3dzYCwgYHN1Z2dlc3RlZF9xdWVzdGlvbnNgKSBpbiB0aGF0IGZpeGVkIG9yZGVyLlxuICogICA0LiBPbiB0aGUgdGVybWluYWwgc25hcHNob3QsIGEgZmluYWwgYHJlc3VsdGAgZXZlbnQuXG4gKlxuICogRXJyb3JzIHByb3BhZ2F0ZSB2aWEgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAoYHRyeWAvYGNhdGNoYCB0aGVcbiAqIGBmb3IgYXdhaXRgKSwgbm90IHZpYSBhbiBgZXJyb3JgIHZhcmlhbnQgb24gdGhpcyB1bmlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQ2hhdEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgUXVlc3Rpb25FdmVudFNjaGVtYSxcbiAgTWVzc2FnZUV2ZW50U2NoZW1hLFxuICBTdGF0dXNFdmVudFNjaGVtYSxcbiAgQXR0YWNobWVudEV2ZW50U2NoZW1hLFxuICBUaGlua2luZ0V2ZW50U2NoZW1hLFxuICBUZXh0RXZlbnRTY2hlbWEsXG4gIFF1ZXJ5RXZlbnRTY2hlbWEsXG4gIFN0YXRlbWVudEV2ZW50U2NoZW1hLFxuICBSb3dzRXZlbnRTY2hlbWEsXG4gIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50U2NoZW1hLFxuICBSZXN1bHRFdmVudFNjaGVtYSxcbl0pO1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZUNoYXRFdmVudH0uICovXG5leHBvcnQgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUgPSBHZW5pZUNoYXRFdmVudFtcInR5cGVcIl07XG5cbi8qKlxuICogRmllbGQgc2V0IGZvciBhIGdpdmVuIHtAbGluayBHZW5pZUNoYXRFdmVudFR5cGV9IC0gdGhlIHZhcmlhbnRcbiAqIHdpdGggdGhlIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0cmlwcGVkLiBVc2VkIGJ5IGRldGVjdG9ycyBpblxuICogYGV2ZW50LnRzYCBzbyBlYWNoIGRldGVjdG9yIHJldHVybnMganVzdCB0aGUgcGF5bG9hZCBmaWVsZHMgYW5kXG4gKiB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgYXQgeWllbGQgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBPbWl0PFxuICBFeHRyYWN0PEdlbmllQ2hhdEV2ZW50LCB7IHR5cGU6IFQgfT4sXG4gIFwidHlwZVwiXG4+O1xuIl19
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDZEQUE2RDtBQUM3RCxNQUFNLEVBQ0osbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLHFCQUFxQixFQUFFLHdCQUF3QixFQUMvQyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFDekMsMEJBQTBCLEVBQUUsNkJBQTZCLEVBQ3pELGdCQUFnQixFQUFFLG1CQUFtQixHQUN0QyxHQUFHLFVBQVUsQ0FBQztBQVVmLG9FQUFvRTtBQUNwRSxpRUFBaUU7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUM7QUFpQy9COzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQW1CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDcEIsQ0FBQyxDQUFDO0FBR0gsNkVBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsT0FBTztJQUNQLE1BQU07SUFDTixxQkFBcUI7Q0FDZSxDQUFDO0FBSXZDLHlFQUF5RTtBQUV6RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1B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cyBhbmQgaGlnaC1sZXZlbCBldmVudCB2b2NhYnVsYXJ5XG4gKiBmb3IgdGhlIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIFR3byByZWxhdGVkIGxheWVycyBsaXZlIGhlcmU6XG4gKlxuICogICAxLiBHZW5pZSB3aXJlIHNoYXBlcyBkZXJpdmVkIGZyb20gdGhpcyBwYWNrYWdlJ3Mgb3duIGdlbmVyYXRlZFxuICogICAgICBgZGFzaGJvYXJkc2Agc2NoZW1hcyAocmVnZW5lcmF0ZWQgZnJvbSB0aGUgdXBzdHJlYW1cbiAqICAgICAgYEBkYXRhYnJpY2tzL3Nkay1leHBlcmltZW50YWxgIGBhcGlzL2Rhc2hib2FyZHMvbW9kZWwuZC50c2BcbiAqICAgICAgYnkgdGhlIGVuZ2luZSdzIGNvZGVnZW4gb24gc3ludGgpLiBXZSBleHRlbmQgdGhlIFNESyBzY2hlbWFzIHdoZXJlIEdlbmllXG4gKiAgICAgIHNoaXBzIGZpZWxkcyBvbiB0aGUgd2lyZSB0aGF0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZTpcbiAqXG4gKiAgICAgICAgLSBgR2VuaWVNZXNzYWdlLmF1dG9fcmVnZW5lcmF0ZV9jb3VudDogbnVtYmVyYCAoc3RhbXBlZFxuICogICAgICAgICAgb24gZXZlcnkgd2lyZSBtZXNzYWdlLCBvbWl0dGVkIGZyb20gdGhlIFNESyBzaGFwZSkuXG4gKiAgICAgICAgLSBgR2VuaWVRdWVyeUF0dGFjaG1lbnQudGhvdWdodHM6IEdlbmllVGhvdWdodFtdYCAodGhlXG4gKiAgICAgICAgICBzdHJlYW1lZCByZWFzb25pbmcgcGF5bG9hZCB3aXRoIGBERVNDUklQVElPTmAsXG4gKiAgICAgICAgICBgREFUQV9TT1VSQ0lOR2AsIGBTVEVQU2AsIGFuZCBgVU5ERVJTVEFORElOR2AgdGhvdWdodFxuICogICAgICAgICAga2luZHMpLlxuICogICAgICAgIC0gYEdlbmllQXR0YWNobWVudC5hdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlYFxuICogICAgICAgICAgKGFuIG9wdGlvbmFsIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbCBzbyBjYWxsZXJzIGNhblxuICogICAgICAgICAgYHN3aXRjaCAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIGluc3RlYWQgb2YgcHJvYmluZ1xuICogICAgICAgICAgd2hpY2ggc3ViLWtleSBpcyBwb3B1bGF0ZWQ7IGNvbXB1dGUgaXQgd2l0aFxuICogICAgICAgICAge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkuXG4gKlxuICogICAyLiBFdmVudCB2b2NhYnVsYXJ5IGZvciB0aGUgaGlnaC1sZXZlbCBgZ2VuaWVFdmVudENoYXRgXG4gKiAgICAgIGRyaXZlci4gRWFjaCBldmVudCBpcyBhIGZsYXQgYHoub2JqZWN0YCB3aXRoIGEgYHR5cGVgXG4gKiAgICAgIGxpdGVyYWwgZGlzY3JpbWluYXRvciBhbmQgc25ha2VfY2FzZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkXG4gKiAgICAgIHRvIHRoZSB0b3AgbGV2ZWwgKG5vIGBwYXlsb2FkYCB3cmFwcGVyKS4gRXZlbnRzIHRoYXQgc2hhcmVcbiAqICAgICAgdGhlIGF0dGFjaG1lbnQtc2NvcGVkIGxvY2F0aW9uIHVzZVxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWF9IGFzIGEgYmFzZTsgZXZlbnRzIHRoYXRcbiAqICAgICAgZG9uJ3QgY2FycnkgYW4gYGF0dGFjaG1lbnRfaWRgIChzdGF0dXMsIHJlc3VsdCkgb21pdCBpdC5cbiAqICAgICAge0BsaW5rIEdlbmllQ2hhdEV2ZW50U2NoZW1hfSBidW5kbGVzIHRoZSB2YXJpYW50cyBpbnRvIG9uZVxuICogICAgICBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICpcbiAqIFB1cmUgdHlwZXM6IG5vIHJ1bnRpbWUgaW1wb3J0cyBiZXlvbmQgem9kICsgdGhlIGdlbmVyYXRlZFxuICogYGRhc2hib2FyZHNgIHNjaGVtYXMsIG5vIE5vZGUtb25seSBjb2RlLCBzYWZlIGZvciBicm93c2VyIGJ1bmRsZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0ICogYXMgZGFzaGJvYXJkcyBmcm9tIFwiLi9kYXNoYm9hcmRzLnRzXCI7XG5cbi8vIFRoZSBnZW5lcmF0ZWQgU0RLIHNjaGVtYXMgbGl2ZSBpbiB0aGUgc2libGluZyBgLi9kYXNoYm9hcmRzLnRzYCwgd3JpdHRlbiBieSB0aGVcbi8vIGVuZ2luZSdzIGNvZGVnZW4gZnJvbSB0aGUgdXBzdHJlYW0gYC5kLnRzYC4gQWxpYXMgdGhlIGhhbmRmdWwgR2VuaWUgZXh0ZW5kcyBzb1xuLy8gdGhlIHdpZGVuZWQgc2NoZW1hcyBiZWxvdyByZWFkIGFnYWluc3Qgc2hvcnQsIGxvY2FsIG5hbWVzLlxuY29uc3Qge1xuICBtZXNzYWdlU3RhdHVzU2NoZW1hOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBnZW5pZUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllQXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVNZXNzYWdlU2NoZW1hOiBTREtHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVTcGFjZVNjaGVtYTogU0RLR2VuaWVTcGFjZVNjaGVtYSxcbn0gPSBkYXNoYm9hcmRzO1xuXG4vKipcbiAqIFRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2AgdHlwZSwgcmUtZXhwb3J0ZWQgc28gY29uc3VtZXJzIG9mIHRoZVxuICogR2VuaWUgY29udHJhY3QgZ2V0IHRoZSBmdWxsIHdpcmUgdm9jYWJ1bGFyeSBmcm9tIGEgc2luZ2xlIGltcG9ydFxuICogcGF0aCAtIG1pcnJvcnMgdGhlIHJlLWV4cG9ydHMgb2YgdGhlIG90aGVyIFNESy1kZXJpdmVkIHNjaGVtYXNcbiAqIGJlbG93LlxuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gZGFzaGJvYXJkcy5NZXNzYWdlU3RhdHVzO1xuXG4vLyBSZS1leHBvcnQgdGhlIFNESydzIGBNZXNzYWdlU3RhdHVzYCBzY2hlbWEgc28gY2FsbGVycyBjYW4gcGFyc2UgYVxuLy8gcmF3IHN0YXR1cyB3aXRob3V0IHJlYWNoaW5nIGJhY2sgaW50byB0aGUgZ2VuZXJhdGVkIG5hbWVzcGFjZS5cbmV4cG9ydCB7IE1lc3NhZ2VTdGF0dXNTY2hlbWEgfTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGhvdWdodHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEdlbmllJ3MgcGVyLXF1ZXJ5IFwidGhvdWdodHNcIiBzdXJmYWNlLiBUaGVzZSBhcHBlYXIgb24gdGhlXG4gKiBgL21lc3NhZ2VzL3tpZH1gIHdpcmUgdW5kZXIgYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW11gIGJ1dFxuICogYXJlIG5vdCB0eXBlZCBvbiB0aGUgU0RLJ3MgYEdlbmllUXVlcnlBdHRhY2htZW50YCBhdCB2MC4xNy5cbiAqXG4gKiBLbm93biB0aG91Z2h0IHR5cGVzIG9ic2VydmVkIGluIHByb2R1Y3Rpb24gcG9sbHM6XG4gKlxuICogICAtIGBUSE9VR0hUX1RZUEVfREVTQ1JJUFRJT05gOiBhIG9uZS1wYXJhZ3JhcGggcmVzdGF0ZW1lbnQgb2ZcbiAqICAgICB3aGF0IHRoZSB1c2VyIGFza2VkLiBUaGUgZmluYWwgYHF1ZXJ5LmRlc2NyaXB0aW9uYCBmaWVsZCBvblxuICogICAgIHRoZSBhdHRhY2htZW50IGNhcnJpZXMgdGhlIHNhbWUgdGV4dC5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RBVEFfU09VUkNJTkdgOiBtYXJrZG93biBidWxsZXRzIG9mIHRoZVxuICogICAgIGZ1bGx5LXF1YWxpZmllZCBgY2F0YWxvZy5zY2hlbWEudGFibGVgIHNvdXJjZXMgR2VuaWUgY2hvc2UuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9TVEVQU2A6IHRoZSBoaWdoLWxldmVsIHBsYW4gR2VuaWUgd3JvdGUgYmVmb3JlXG4gKiAgICAgcnVubmluZyBTUUwgKG9uZSBidWxsZXQgcGVyIHN0ZXApLlxuICogICAtIGBUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR2A6IGFtYmlndWl0eSAvIGludGVycHJldGF0aW9uXG4gKiAgICAgbm90ZXMgKGUuZy4gXCIncmV2ZW51ZScgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgZ3Jvc3MsXG4gKiAgICAgbmV0LCBvciByZWNvZ25pemVkIHJldmVudWUuLi5cIikuXG4gKlxuICogT3BlbiBhdCB0aGUgdHlwZSBsZXZlbCAoYHwgKHN0cmluZyAmIHt9KWApIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0aG91Z2h0IHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIGZvdXIga25vd24gdHlwZXNcbiAqIHN0aWxsIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodFR5cGUgPVxuICB8IFwiVEhPVUdIVF9UWVBFX0RFU0NSSVBUSU9OXCJcbiAgfCBcIlRIT1VHSFRfVFlQRV9EQVRBX1NPVVJDSU5HXCJcbiAgfCBcIlRIT1VHSFRfVFlQRV9TVEVQU1wiXG4gIHwgXCJUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR1wiXG4gIHwgKHN0cmluZyAmIHt9KTtcblxuLyoqXG4gKiBPbmUgcmVhc29uaW5nIHN0ZXAgb24gYSBxdWVyeSBhdHRhY2htZW50LiBTZWVcbiAqIHtAbGluayBHZW5pZVRob3VnaHRUeXBlfSBmb3IgdGhlIGtub3duIGB0aG91Z2h0X3R5cGVgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGhvdWdodFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdGhvdWdodF90eXBlOiB6LmN1c3RvbTxHZW5pZVRob3VnaHRUeXBlPigodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRob3VnaHRTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhdHRhY2htZW50IGRpc2NyaW1pbmF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIERpc2NyaW1pbmF0b3IgZm9yIHdoYXQncyBpbnNpZGUgYSBgR2VuaWVBdHRhY2htZW50YC4gR2VuaWUgb25seVxuICogZXZlciBwb3B1bGF0ZXMgb25lIG9mIGBxdWVyeWAgLyBgdGV4dGAgLyBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2BcbiAqIHBlciBhdHRhY2htZW50LiBPcGVuIHZpYSBgKHN0cmluZyAmIHt9KWAgc28gYSBuZXcgc2VydmVyLXNpZGVcbiAqIHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIHRocmVlIGtub3duIHR5cGVzIHN0aWxsXG4gKiBuYXJyb3cgY29ycmVjdGx5IHVuZGVyIGBzd2l0Y2hgLlxuICpcbiAqIExpZnRlZCBpbnRvIHRoZSBzY2hlbWEgYXMgdGhlIG9wdGlvbmFsXG4gKiB7QGxpbmsgR2VuaWVBdHRhY2htZW50U2NoZW1hfS5gYXR0YWNobWVudF90eXBlYCBmaWVsZCAoY29tcHV0ZVxuICogaXQgd2l0aCB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9KSBzbyBjb25zdW1lcnMgY2FuIGJyYW5jaFxuICogb24gYSBsaXRlcmFsIGluc3RlYWQgb2YgcHJvYmluZyB3aGljaCBzdWItb2JqZWN0IGtleSBpc1xuICogcHJlc2VudC4gQWxzbyBzdXJmYWNlZCBvbiB7QGxpbmsgQXR0YWNobWVudEV2ZW50fSdzIHBheWxvYWQgYXNcbiAqIGBhdHRhY2htZW50X3R5cGVgICh2cyBhIGJhcmUgYHR5cGVgKSB0byBrZWVwIHRoZSBmaWVsZCBjbGVhciBvZlxuICogdGhlIGV2ZW50LXVuaW9uIGRpc2NyaW1pbmF0b3Iga2V5LlxuICovXG5leHBvcnQgY29uc3QgQVRUQUNITUVOVF9UWVBFUyA9IFtcbiAgXCJxdWVyeVwiLFxuICBcInRleHRcIixcbiAgXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIsXG5dIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBzdHJpbmdbXTtcbmV4cG9ydCB0eXBlIEtub3duQXR0YWNobWVudFR5cGUgPSAodHlwZW9mIEFUVEFDSE1FTlRfVFlQRVMpW251bWJlcl07XG5leHBvcnQgdHlwZSBBdHRhY2htZW50VHlwZSA9IEtub3duQXR0YWNobWVudFR5cGUgfCAoc3RyaW5nICYge30pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tIHdpZGVuZWQgd2lyZSBzY2hlbWFzICsgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogYEdlbmllUXVlcnlBdHRhY2htZW50YCB3aWRlbmVkIHdpdGggdGhlIGB0aG91Z2h0c1tdYCBmaWVsZCB0aGVcbiAqIEdlbmllIHdpcmUgZXhwb3NlcyBidXQgdGhlIFNESyBkb2Vzbid0IGN1cnJlbnRseSB0eXBlLiBFdmVyeVxuICogb3RoZXIgZmllbGQgKGBkZXNjcmlwdGlvbmAsIGBxdWVyeWAsIGBzdGF0ZW1lbnRfaWRgLFxuICogYHF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YWAsIGB0aXRsZWAsIGBwYXJhbWV0ZXJzYCxcbiAqIGBsYXN0X3VwZGF0ZWRfdGltZXN0YW1wYCwgYGlkYCkgZmxvd3MgdGhyb3VnaCB2ZXJiYXRpbSBmcm9tXG4gKiB0aGUgU0RLIHNjaGVtYS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hID0gU0RLR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgdGhvdWdodHM6IHouYXJyYXkoR2VuaWVUaG91Z2h0U2NoZW1hKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBHZW5pZVF1ZXJ5QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBQdXJwb3NlIGF0dGFjaGVkIHRvIGEgR2VuaWUgdGV4dCByZXNwb25zZS5cbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIERhdGFicmlja3MgU0RLIHNjaGVtYSBjdXJyZW50bHkga25vd3Mgb25seVxuICogYEZPTExPV19VUF9RVUVTVElPTmAsIHdoaWxlIHRoZSBsaXZlIEdlbmllIEFQSSBhbHNvIGVtaXRzXG4gKiBgVEVYVF9BVFRBQ0hNRU5UX1BVUlBPU0VfQU5TV0VSYCBmb3IgdGhlIHByaW1hcnkgYW5zd2VyIHRleHQuIEtlZXAgdGhlXG4gKiBrbm93biB2YWx1ZXMgZGlzY292ZXJhYmxlIGFuZCBhY2NlcHQgZnV0dXJlIHN0cmluZyB2YWx1ZXMgc28gYW4gYWRkaXRpdmVcbiAqIHNlcnZlci1zaWRlIGVudW0gY2hhbmdlIGNhbm5vdCBpbnZhbGlkYXRlIGFuIG90aGVyd2lzZSBjb21wbGV0ZSBtZXNzYWdlLlxuICovXG5leHBvcnQgdHlwZSBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZSA9XG4gIFwiRk9MTE9XX1VQX1FVRVNUSU9OXCIgfCBcIlRFWFRfQVRUQUNITUVOVF9QVVJQT1NFX0FOU1dFUlwiIHwgKHN0cmluZyAmIHt9KTtcblxuLyoqIFRleHQgYXR0YWNobWVudCBzY2hlbWEgd2lkZW5lZCBmb3IgZm9yd2FyZC1jb21wYXRpYmxlIHB1cnBvc2UgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWEgPSBkYXNoYm9hcmRzLnRleHRBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHB1cnBvc2U6IHouY3VzdG9tPEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlPigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVUZXh0QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZUF0dGFjaG1lbnRgIHdpdGg6XG4gKlxuICogICAtIGBxdWVyeWAgcmUtdHlwZWQgdG8gdGhlIHRob3VnaHRzLWF3YXJlXG4gKiAgICAge0BsaW5rIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hfS5cbiAqICAgLSBgYXR0YWNobWVudF90eXBlYCBkaXNjcmltaW5hdG9yIGxpdGVyYWxcbiAqICAgICAoe0BsaW5rIEF0dGFjaG1lbnRUeXBlfSkgc28gY29uc3VtZXJzIGNhbiBgc3dpdGNoXG4gKiAgICAgKGF0dC5hdHRhY2htZW50X3R5cGUpYCB0byBuYXJyb3cgd2hpY2ggc3ViLW9iamVjdCBpc1xuICogICAgIHBvcHVsYXRlZC4gT3B0aW9uYWwgb24gdGhlIHdpcmUgKEdlbmllIGRvZXNuJ3Qgc2VuZCBpdCk7XG4gKiAgICAgY2FsbGVycyBjb21wdXRlIGl0IHdpdGgge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSB3aGVuXG4gKiAgICAgdGhleSB3YW50IHRoZSBsaXRlcmFsIHVwLWZyb250LlxuICpcbiAqIGB0ZXh0YCBpcyByZS10eXBlZCB0byB0aGUgZm9yd2FyZC1jb21wYXRpYmxlXG4gKiB7QGxpbmsgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYX0uIGBhdHRhY2htZW50X2lkYCBhbmRcbiAqIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYCBwYXNzIHRocm91Z2ggdW5jaGFuZ2VkLiBgYXR0YWNobWVudF9pZGAgaXMgZ2VudWluZWx5XG4gKiBvcHRpb25hbCBvbiB0aGUgd2lyZTpcbiAqIHRoZSBmaXJzdCB0ZXh0IGF0dGFjaG1lbnQgR2VuaWUgZW1pdHMgcGVyIHR1cm4gKHRoZSBcIm1haW5cbiAqIGFuc3dlciB0ZXh0XCIpIGFycml2ZXMgd2l0aCBubyBpZCwgb25seSB0aGUgZm9sbG93LXVwIHRleHRcbiAqIGF0dGFjaG1lbnQgZ2V0cyBvbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZUF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcXVlcnk6IEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIHRleHQ6IEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgYXR0YWNobWVudF90eXBlOiB6LmN1c3RvbTxBdHRhY2htZW50VHlwZT4oKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBHZW5pZUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZU1lc3NhZ2VgIHdpZGVuZWQgd2l0aDpcbiAqXG4gKiAgIC0gYGF1dG9fcmVnZW5lcmF0ZV9jb3VudGA6IG51bWJlciBzdGFtcGVkIG9uIGV2ZXJ5IHdpcmVcbiAqICAgICBtZXNzYWdlIHRoYXQgdGhlIFNESyB0eXBlIG9taXRzIGF0IHYwLjE3LlxuICogICAtIGBhdHRhY2htZW50c2A6IHJlLXR5cGVkIHRvIHRoZSBsb2NhbFxuICogICAgIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9IHNvXG4gKiAgICAgYGF0dGFjaG1lbnQucXVlcnk/LnRob3VnaHRzYCAoYW5kIHRoZVxuICogICAgIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IpIGlzIHJlYWNoYWJsZSB3aXRob3V0IGFcbiAqICAgICBjYXN0LlxuICpcbiAqIEV2ZXJ5IG90aGVyIGZpZWxkIChgaWRgLCBgc3BhY2VfaWRgLCBgY29udmVyc2F0aW9uX2lkYCxcbiAqIGB1c2VyX2lkYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCwgYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLFxuICogYHN0YXR1c2AsIGBjb250ZW50YCwgYG1lc3NhZ2VfaWRgLCBgcXVlcnlfcmVzdWx0YCwgYGVycm9yYCxcbiAqIGBmZWVkYmFja2ApIHBhc3NlcyB0aHJvdWdoIGZyb20gdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VTY2hlbWEgPSBTREtHZW5pZU1lc3NhZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgYXR0YWNobWVudHM6IHouYXJyYXkoR2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICBhdXRvX3JlZ2VuZXJhdGVfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuLyoqXG4gKiBEb21haW4gcHJvamVjdGlvbiBvZiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfSB0aGF0IGRyb3BzIGV2ZXJ5XG4gKiB0dXJuLWxldmVsIGZpZWxkIChgaWRgLCBgc3RhdHVzYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCxcbiAqIGBxdWVyeV9yZXN1bHRgLCAuLi4pIGFuZCB5aWVsZHMganVzdCB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhXG4gKiBmbGF0IGBHZW5pZUF0dGFjaG1lbnRbXWAuIFBhcnNlcyB0aGUgc2FtZSB3aXJlIHNoYXBlIGFzXG4gKiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfTsgbWlzc2luZyBgYXR0YWNobWVudHNgIGRlZmF1bHRzIHRvXG4gKiBgW11gIHNvIHRoZSBvdXRwdXQgaXMgYWx3YXlzIGFuIGFycmF5LlxuICpcbiAqIFVzZSB3aGVuIGNvbnN1bWVycyBvbmx5IGNhcmUgYWJvdXQgdGhlIG1vZGVsJ3MgcmVzcG9uc2VcbiAqIGF0dGFjaG1lbnRzIGFuZCBub3QgdGhlIHN1cnJvdW5kaW5nIG1lc3NhZ2UgZW52ZWxvcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVJlc3BvbnNlU2NoZW1hID0gR2VuaWVNZXNzYWdlU2NoZW1hLnRyYW5zZm9ybSgobSkgPT4gbS5hdHRhY2htZW50cyA/PyBbXSk7XG5leHBvcnQgdHlwZSBHZW5pZVJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVSZXNwb25zZVNjaGVtYT47XG5cbi8qKlxuICogYEdlbmllU3BhY2VgIHdpZGVuZWQgd2l0aCBhbiBvcHRpb25hbCBgc2VyaWFsaXplZF9zcGFjZWAgZmllbGRcbiAqIGNhcnJ5aW5nIGEgSlNPTi1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwYWNlJ3MgZnVsbFxuICogZGVmaW5pdGlvbiAoY2F0YWxvZ3MsIHNjaGVtYXMsIHRhYmxlcywgc2FtcGxlIHF1ZXN0aW9ucywgcHJvbXB0cyxcbiAqIGV0Yy4pIGFzIGV4cG9ydGVkIGJ5IHRoZSB3b3Jrc3BhY2UgZXhwb3J0IGVuZHBvaW50LlxuICpcbiAqIFRoZSBiYXNlIFNESyBzaGFwZSAoYGRlc2NyaXB0aW9uYCwgYHNwYWNlX2lkYCwgYHRpdGxlYCxcbiAqIGB3YXJlaG91c2VfaWRgKSBjb3ZlcnMgdGhlIGRpcmVjdG9yeS1saXN0aW5nIHN1cmZhY2UgLSBlbm91Z2ggdG9cbiAqIHJvdXRlIGEgY2hhdC4gYHNlcmlhbGl6ZWRfc3BhY2VgIGlzIG9wdC1pbiBzbyBjYWxsZXJzIHRoYXQgbmVlZFxuICogdGhlIGZ1bGwgc3BhY2Ugc2NoZW1hIChlLmcuIHRvIHNlZWQgYSBzeXN0ZW0gcHJvbXB0IG9yIHRvIHNoaXBcbiAqIHRoZSBkZWZpbml0aW9uIHRvIGFuIGFnZW50KSBjYW4gYXR0YWNoIGl0IHdpdGhvdXQgYSBzZWNvbmQgdHlwZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllU3BhY2VTY2hlbWEgPSBTREtHZW5pZVNwYWNlU2NoZW1hLmV4dGVuZCh7XG4gIHNlcmlhbGl6ZWRfc3BhY2U6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiVGhlIGNvbnRlbnRzIG9mIHRoZSBHZW5pZSBTcGFjZSBpbiBzZXJpYWxpemVkIHN0cmluZyBmb3JtLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgR2VuaWUgc3BhY2VzIHJlc3BvbnNlcy4gVGhpcyBmaWVsZCBwcm92aWRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBKU09OIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIHNwYWNlJ3MgbGF5b3V0IGFuZCBjb21wb25lbnRzLlwiLFxuICAgICksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmllU3BhY2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVNwYWNlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRlcm1pbmFsIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRlcm1pbmFsIEdlbmllIG1lc3NhZ2Ugc3RhdHVzZXMuIFRoZSBwb2xsaW5nIGxvb3AgaW4gdGhlIGNoYXRcbiAqIGRyaXZlciBzdG9wcyBhcyBzb29uIGFzIHRoZSBsYXRlc3QgbWVzc2FnZSBoYXMgb25lIG9mIHRoZXNlXG4gKiBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFUk1JTkFMX1NUQVRVU0VTID0gW1wiQ09NUExFVEVEXCIsIFwiRkFJTEVEXCIsIFwiQ0FOQ0VMTEVEXCJdIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVGVybWluYWxTdGF0dXMgPSAodHlwZW9mIFRFUk1JTkFMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogTmFycm93IGBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkYCB0byBhIHtAbGluayBUZXJtaW5hbFN0YXR1c30uICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzOiBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkKTogcyBpcyBUZXJtaW5hbFN0YXR1cyB7XG4gIHJldHVybiBzICE9PSB1bmRlZmluZWQgJiYgKFRFUk1JTkFMX1NUQVRVU0VTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmF3IEdlbmllIHdpcmUgc3RhdHVzIChgRkVUQ0hJTkdfTUVUQURBVEFgLFxuICogYEFTS0lOR19BSWAsIGBFWEVDVVRJTkdfUVVFUllgLCAuLi4pIGludG8gYSBzaG9ydCwgc2VudGVuY2UtY2FzZWRcbiAqIGxhYmVsIHNhZmUgdG8gZHJvcCBpbnRvIGEgVUkgcGlsbC4gS25vd24gc3RhdGVzIGdldCBhIGN1cmF0ZWRcbiAqIGxhYmVsOyB1bmtub3duIHN0YXRlcyBmYWxsIGJhY2sgdG8gYHN0cmluZy50b2tlbml6ZVdpdGhPcHRpb25zYFxuICogc28gbmV3IHN0YXRlcyBzdGlsbCByZW5kZXIgY2xlYW5seSB3aXRob3V0IGNvZGUgY2hhbmdlcy5cbiAqXG4gKiBQdXJlIChubyBOb2RlLW9ubHkgZGVwcyksIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy4gQm90aCB0aGVcbiAqIEdlbmllIGFnZW50IChzZXJ2ZXIpIGFuZCBhbnkgVUkgdGhhdCBzdWJzY3JpYmVzIHRvIHN0YXR1cyBldmVudHNcbiAqIGNhbGwgdGhpcyBzbyBsYWJlbHMgc3RheSBpbiBsb2NrLXN0ZXAgYWNyb3NzIHRoZSB3aXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVTdGF0dXMoc3RhdHVzOiBNZXNzYWdlU3RhdHVzKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiRkVUQ0hJTkdfTUVUQURBVEFcIjpcbiAgICAgIHJldHVybiBcIkZldGNoaW5nIG1ldGFkYXRhXCI7XG4gICAgY2FzZSBcIkFTS0lOR19BSVwiOlxuICAgICAgcmV0dXJuIFwiQXNraW5nIEdlbmllXCI7XG4gICAgY2FzZSBcIkVYRUNVVElOR19RVUVSWVwiOlxuICAgICAgcmV0dXJuIFwiUnVubmluZyBTUUwgcXVlcnlcIjtcbiAgICBjYXNlIFwiRklMVEVSSU5HX0NPTlRFWFRcIjpcbiAgICAgIHJldHVybiBcIkZpbHRlcmluZyBjb250ZXh0XCI7XG4gICAgY2FzZSBcIlBFTkRJTkdfV0FSRUhPVVNFXCI6XG4gICAgICByZXR1cm4gXCJXYWl0aW5nIGZvciB3YXJlaG91c2VcIjtcbiAgICBjYXNlIFwiQ09NUExFVEVEXCI6XG4gICAgICByZXR1cm4gXCJDb21wbGV0ZWRcIjtcbiAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICByZXR1cm4gXCJGYWlsZWRcIjtcbiAgICBjYXNlIFwiQ0FOQ0VMTEVEXCI6XG4gICAgICByZXR1cm4gXCJDYW5jZWxsZWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFsuLi5zdHJpbmcudG9rZW5pemVXaXRoT3B0aW9ucyh7IGNhcGl0YWxpemU6IHRydWUsIGxvd2VyQ2FzZTogdHJ1ZSB9LCBzdGF0dXMpXS5qb2luKFxuICAgICAgICBcIiBcIixcbiAgICAgICk7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCB0eXBlIGhlbHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSW5zcGVjdCBhIHtAbGluayBHZW5pZUF0dGFjaG1lbnR9IGFuZCByZXR1cm4gdGhlXG4gKiB7QGxpbmsgQXR0YWNobWVudFR5cGV9IG9mIHBheWxvYWQgaXQgY2Fycmllcy4gUmV0dXJucyB0aGUgZmlyc3RcbiAqIGtub3duIHN1Yi1vYmplY3QgdGhhdCdzIHByZXNlbnQ7IGlmIG5vbmUgb2YgdGhlIGtub3duIG9uZXMgYXJlXG4gKiBwb3B1bGF0ZWQsIGZhbGxzIGJhY2sgdG8gdGhlIGZpcnN0IG5vbi1ib29ra2VlcGluZyBrZXlcbiAqIChmb3J3YXJkLWNvbXBhdCBmb3IgdHlwZXMgd2UgZG9uJ3QgbW9kZWwgeWV0KSwgZWxzZSBgXCJ1bmtub3duXCJgLlxuICpcbiAqIEhvbm9ycyBhIHByZS1zZXQgYGF0dGFjaG1lbnRfdHlwZWAgaWYgb25lIGlzIGFscmVhZHkgb24gdGhlXG4gKiB2YWx1ZSwgc28gdGhpcyBpcyBpZGVtcG90ZW50IGFjcm9zcyByZS1kZXRlY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QXR0YWNobWVudFR5cGUoYXR0OiBHZW5pZUF0dGFjaG1lbnQpOiBBdHRhY2htZW50VHlwZSB7XG4gIGlmIChhdHQuYXR0YWNobWVudF90eXBlKSByZXR1cm4gYXR0LmF0dGFjaG1lbnRfdHlwZTtcbiAgaWYgKGF0dC5xdWVyeSkgcmV0dXJuIFwicXVlcnlcIjtcbiAgaWYgKGF0dC50ZXh0KSByZXR1cm4gXCJ0ZXh0XCI7XG4gIGlmIChhdHQuc3VnZ2VzdGVkX3F1ZXN0aW9ucykgcmV0dXJuIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0KSkge1xuICAgIGlmIChrICE9PSBcImF0dGFjaG1lbnRfaWRcIiAmJiBrICE9PSBcImF0dGFjaG1lbnRfdHlwZVwiKSByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2VuaWVDaGF0IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGVyZSBvbiB0aGUgd2lyZSBhbiBldmVudCB3YXMgb2JzZXJ2ZWQuIFNwcmVhZCBpbnRvIGV2ZXJ5XG4gKiBhdHRhY2htZW50LXNjb3BlZCBldmVudCBwYXlsb2FkIHNvIHN1YnNjcmliZXJzIGNhbiByb3V0ZSwgbG9nLFxuICogb3IgY29ycmVsYXRlIHdpdGhvdXQgcmUtd2Fsa2luZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYHNwYWNlX2lkYDogdGhlIEdlbmllIHNwYWNlIHRoZSBjb252ZXJzYXRpb24gbGl2ZXMgaW4uXG4gKiAgIC0gYGNvbnZlcnNhdGlvbl9pZGA6IGNvbnZlcnNhdGlvbiBpZCBvbmNlIEdlbmllIGhhcyBhc3NpZ25lZCBvbmUuXG4gKiAgIC0gYG1lc3NhZ2VfaWRgOiBHZW5pZSBtZXNzYWdlIGlkIGZvciB0aGUgYWN0aXZlIHR1cm4uXG4gKiAgIC0gYGF0dGFjaG1lbnRfaWRgOiBhdHRhY2htZW50IHRoZSBldmVudCBjYW1lIGZyb20uIE9wdGlvbmFsXG4gKiAgICAgYmVjYXVzZSBHZW5pZSBzb21ldGltZXMgZW1pdHMgYW4gYW5vbnltb3VzIG1haW4tYW5zd2VyXG4gKiAgICAgYXR0YWNobWVudCB3aXRob3V0IGFuIGlkOyB0aG9zZSBzdGlsbCBnZXQgZXZlbnRzLCBqdXN0IHdpdGhcbiAqICAgICBgYXR0YWNobWVudF9pZGAgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlX2lkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmllQ2hhdExvY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogdGhlIHF1ZXN0aW9uIHRoaXMgdHVybiBpcyBhc2tpbmcgR2VuaWUuIEZpcmVzXG4gKiBvbmNlIHBlciBgZ2VuaWVFdmVudENoYXRgIGNhbGwsIHRoZSBmaXJzdCB0aW1lIHRoZSB1bmRlcmx5aW5nXG4gKiBgZ2VuaWVDaGF0YCBsb29wIHlpZWxkcyBhIGBHZW5pZU1lc3NhZ2VgLiBDYXJyaWVzIHRoZSBwcm9tcHRcbiAqIHRleHQgR2VuaWUgZWNob2VkIGJhY2sgb24gYG1lc3NhZ2UuY29udGVudGAgYW5kIHRoZSBhc3NpZ25lZFxuICogYG1lc3NhZ2VfaWRgIHNvIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50XG4gKiBmb3IgdGhpcyB0dXJuIHVuZGVyIG9uZSBzdGFibGUga2V5LiBgY29udmVyc2F0aW9uX2lkYCBpc1xuICogcG9wdWxhdGVkIGZvciBib3RoIG9wZW5pbmcgYW5kIGZvbGxvdy11cCB0dXJucyAoR2VuaWUgYXNzaWduc1xuICogaXQgb24gYHN0YXJ0Q29udmVyc2F0aW9uYCkuXG4gKlxuICogRGVmZXJyZWQgKGluc3RlYWQgb2YgZmlyZWQgc3luY2hyb25vdXNseSBvbiBlbnRyeSkgc28gdGhlXG4gKiBgbWVzc2FnZV9pZGAgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGV2ZW50IGxhbmRzIC0gdGhhdCBvbmUgcm91bmRcbiAqIHRyaXAgY29zdHMgfjIwMG1zIGJ1dCBsZXRzIFVJcyByZW5kZXIgcXVlc3Rpb24gLyB0aGlua2luZyAvXG4gKiBxdWVyeSAvIHRleHQgYXMgYSBzaW5nbGUgZ3JvdXBlZCBibG9jayBwZXIgR2VuaWUgY2FsbCBpbnN0ZWFkXG4gKiBvZiBhIGZsYXQgc3RyZWFtLlxuICpcbiAqIGBhdHRhY2htZW50X2lkYCBpcyBpbnRlbnRpb25hbGx5IGFic2VudCAtIHF1ZXN0aW9ucyBhcmUgdHVyblxuICogc2NvcGVkLCBub3QgYXR0YWNobWVudCBzY29wZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVzdGlvbkV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJxdWVzdGlvblwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlc3Rpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXN0aW9uRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogcmF3IGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90IGZvciB0aGUgYWN0aXZlXG4gKiB0dXJuLiBGaXJlcyBvbmNlIHBlciBwb2xsIHlpZWxkLiBUaGUgZnVsbCBtZXNzYWdlIHNoYXBlXG4gKiAoaW5jbHVkaW5nIHRoZSB3aWRlbmVkIHRob3VnaHQgLyByZWdlbiAvIGF0dGFjaG1lbnQtdHlwZVxuICogZmllbGRzKSBpcyBleHBvc2VkIGlubGluZSBhcyBgbWVzc2FnZWA7IGNvbnN1bWVycyBuYXJyb3cgb25cbiAqIGBldmVudC50eXBlID09PSBcIm1lc3NhZ2VcImAgYW5kIHJlYWNoIGZvciBgZXZlbnQubWVzc2FnZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm1lc3NhZ2VcIiksXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuIEZpcmVzIGZvciBldmVyeVxuICogZGlzdGluY3Qgc3RhdHVzIHNlZW4gb24gdGhlIHdpcmUgKGUuZy4gYFNVQk1JVFRFRGAgLT5cbiAqIGBGSUxURVJJTkdfQ09OVEVYVGAgLT4gYEFTS0lOR19BSWAgLT4gYFBFTkRJTkdfV0FSRUhPVVNFYCAtPlxuICogYEFTS0lOR19BSWAgLT4gYENPTVBMRVRFRGApLlxuICovXG5leHBvcnQgY29uc3QgU3RhdHVzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXR1c1wiKSxcbiAgc3RhdHVzOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBwcmV2aW91c19zdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3RhdHVzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0dXNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgYXR0YWNobWVudCBzbG90IGFwcGVhcmVkIGluIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLlxuICogRmlyZXMgZXhhY3RseSBvbmNlIHBlciBhdHRhY2htZW50IChtYXRjaGVkIGJ5IGBhdHRhY2htZW50X2lkYCxcbiAqIHBvc2l0aW9uYWxseSBmb3IgYW5vbnltb3VzIGF0dGFjaG1lbnRzKSB0aGUgZmlyc3QgdGltZSB3ZSBzZWVcbiAqIGl0LiBUaGUgc2xvdCdzIHBheWxvYWQga2luZCBsYW5kcyBpbiBgYXR0YWNobWVudF90eXBlYCBzbyB0aGVcbiAqIG91dGVyIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0YXlzIHVuYW1iaWd1b3VzLlxuICovXG5leHBvcnQgY29uc3QgQXR0YWNobWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXR0YWNobWVudFwiKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogei5jdXN0b208QXR0YWNobWVudFR5cGU+KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiksXG59KTtcbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIEF0dGFjaG1lbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgcmVhc29uaW5nIHN0ZXAgYXBwZWFyZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW2ldYCkuIERlZHVwbGljYXRlZCBwZXJcbiAqIGAodGhvdWdodF90eXBlLCBjb250ZW50KWAgdHVwbGUgd2l0aGluIGFuIGF0dGFjaG1lbnQgc29cbiAqIHN1YnNjcmliZXJzIGRvbid0IHNlZSB0aGUgc2FtZSB0aG91Z2h0IG11bHRpcGxlIHRpbWVzIC0gR2VuaWVcbiAqIHNvbWV0aW1lcyBtdXRhdGVzIGV4aXN0aW5nIHRob3VnaHQgc2xvdHMgaW4gcGxhY2UsIHNvIHRoZSBkaWZmXG4gKiBpcyB2YWx1ZS1iYXNlZCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsLlxuICovXG5leHBvcnQgY29uc3QgVGhpbmtpbmdFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRoaW5raW5nXCIpLFxuICB0ZXh0OiB6LnN0cmluZygpLFxuICB0aG91Z2h0X3R5cGU6IHouY3VzdG9tPEdlbmllVGhvdWdodFR5cGU+KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiksXG59KTtcbmV4cG9ydCB0eXBlIFRoaW5raW5nRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUaGlua2luZ0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIHRleHQtYXR0YWNobWVudCBgY29udGVudGAgZmllbGQgYXBwZWFyZWQgb3IgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS50ZXh0LmNvbnRlbnRgKS4gRmlyZXMgd2hlbmV2ZXIgdGhlIHNuYXBzaG90XG4gKiB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIG9uZSBmb3IgdGhlIHNhbWUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIFRleHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRleHRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBmaW5hbGl6ZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5YCkuIEZpcmVzIG9uY2Ugd2hlbiB0aGUgU1FMIHN0cmluZ1xuICogdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCwgYW5kIGFnYWluIGlmIEdlbmllIGV2ZXJcbiAqIHJld3JpdGVzIGl0LiBgdGl0bGVgIGFuZCBgZGVzY3JpcHRpb25gIGFyZSBkZW5vcm1hbGlzZWQgb2ZmIHRoZVxuICogYXR0YWNobWVudCdzIGBxdWVyeS50aXRsZWAgLyBgcXVlcnkuZGVzY3JpcHRpb25gIHNvIGNvbnN1bWVyc1xuICogY2FuIGxhYmVsIHRoZSBTUUwgcGlsbCB3aXRob3V0IHJlLXdhbGtpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicXVlcnlcIiksXG4gIHNxbDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlFdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXJ5RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFNRTCB3YXMgc3VibWl0dGVkIHRvIGEgU1FMIHdhcmVob3VzZSBhbmQgYSBzdGF0ZW1lbnQgaWQgd2FzXG4gKiBhc3NpZ25lZCAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnN0YXRlbWVudF9pZGApLiBGaXJlcyB3aGVuIHRoZVxuICogc3RhdGVtZW50IGlkIHRyYW5zaXRpb25zIGZyb20gdW5kZWZpbmVkIHRvIGRlZmluZWQgLSB0aGlzIGlzIHRoZVxuICogcG9pbnQgYXQgd2hpY2ggYGNsaWVudC5zdGF0ZW1lbnRFeGVjdXRpb24uZ2V0U3RhdGVtZW50KHsgc3RhdGVtZW50X2lkIH0pYFxuICogYmVjb21lcyBhIHZhbGlkIGNhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0ZW1lbnRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXRlbWVudFwiKSxcbiAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBTdGF0ZW1lbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXRlbWVudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBSb3cgY291bnQgZm9yIGEgcXVlcnkgYXR0YWNobWVudCdzIHJlc3VsdCBjaGFuZ2VkXG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YS5yb3dfY291bnRgKS4gRmlyZXNcbiAqIG9uIGV2ZXJ5IGNoYW5nZSwgaW5jbHVkaW5nIHRoZSBpbml0aWFsIGB1bmRlZmluZWQgLT4gMGAgYW5kIHRoZVxuICogbGF0ZXIgYDAgLT4gTmAgb25jZSB0aGUgd2FyZWhvdXNlIGZpbmlzaGVzIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJvd3NFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJvd3NcIiksXG4gIHJvd19jb3VudDogei5udW1iZXIoKSxcbiAgcHJldmlvdXNfcm93X2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBSb3dzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBSb3dzRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEdlbmllIHByb2R1Y2VkIGEgZm9sbG93LXVwIHN1Z2dlc3RlZC1xdWVzdGlvbnMgbGlzdFxuICogKGBhdHRhY2htZW50c1tpXS5zdWdnZXN0ZWRfcXVlc3Rpb25zLnF1ZXN0aW9uc1tdYCkuIEZpcmVzIG9uY2VcbiAqIHdoZW4gdGhlIGxpc3QgYXBwZWFycywgYW5kIGFnYWluIGlmIEdlbmllIHJld3JpdGVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIpLFxuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgdHVybiByZWFjaGVkIGEgdGVybWluYWwgc3RhdHVzLiBBbHdheXMgZmlyZXMgb25jZVxuICogcGVyIHR1cm4gKGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0ZXJtaW5hbCBgbWVzc2FnZWAgZXZlbnQpLlxuICogQ2FycmllcyB0aGUgZmluYWwgYEdlbmllTWVzc2FnZWAgc25hcHNob3QgaW5saW5lIHNvIHN1YnNjcmliZXJzXG4gKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlaXIgb3duIGNvcHkgb2YgdGhlIGxhc3QgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VsdEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gIHN0YXR1czogei5lbnVtKFRFUk1JTkFMX1NUQVRVU0VTKSxcbiAgbWVzc2FnZTogR2VuaWVNZXNzYWdlU2NoZW1hLFxufSk7XG5leHBvcnQgdHlwZSBSZXN1bHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJlc3VsdEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIHlpZWxkZWQgYnkgYGdlbmllRXZlbnRDaGF0YC4gRWFjaCB2YXJpYW50XG4gKiBpcyBhIHNpbmdsZSBmbGF0IG9iamVjdCB3aXRoIGB0eXBlYCBhcyB0aGUgZGlzY3JpbWluYXRvciBhbmRcbiAqIHRoZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkIGRpcmVjdGx5IHRvIHRoZSB0b3AgbGV2ZWwgLSBub1xuICogYHBheWxvYWRgIHdyYXBwZXIuIENvbnN1bWVycyBuYXJyb3cgb24gYHR5cGVgIGFuZCByZWFkIGZpZWxkc1xuICogaW5saW5lOlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhldmVudC50aG91Z2h0X3R5cGUsIGV2ZW50LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInJlc3VsdFwiOlxuICogICAgICAgY29uc29sZS5sb2coXCJkb25lOlwiLCBldmVudC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBTdHJlYW0gb3JkZXIgcGVyIHR1cm46XG4gKlxuICogICAxLiBgcXVlc3Rpb25gLCBlbWl0dGVkIHdpdGggdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCAoZGVmZXJyZWQgc29cbiAqICAgICAgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUpLCBjYXJyeWluZyB0aGUgcHJvbXB0XG4gKiAgICAgIHRoaXMgdHVybiBzZW50IHRvIEdlbmllLlxuICogICAyLiBgbWVzc2FnZWAgZm9yIGV2ZXJ5IHBvbGwgeWllbGQgKHJhdyBgR2VuaWVNZXNzYWdlYCBvblxuICogICAgICBgZXZlbnQubWVzc2FnZWApLlxuICogICAzLiBBbnkgZGVyaXZlZCBldmVudHMgdGhlIHNuYXBzaG90IGRpZmYgcHJvZHVjZWQgKGBzdGF0dXNgLFxuICogICAgICBgYXR0YWNobWVudGAsIGB0aGlua2luZ2AsIGB0ZXh0YCwgYHF1ZXJ5YCwgYHN0YXRlbWVudGAsXG4gKiAgICAgIGByb3dzYCwgYHN1Z2dlc3RlZF9xdWVzdGlvbnNgKSBpbiB0aGF0IGZpeGVkIG9yZGVyLlxuICogICA0LiBPbiB0aGUgdGVybWluYWwgc25hcHNob3QsIGEgZmluYWwgYHJlc3VsdGAgZXZlbnQuXG4gKlxuICogRXJyb3JzIHByb3BhZ2F0ZSB2aWEgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAoYHRyeWAvYGNhdGNoYCB0aGVcbiAqIGBmb3IgYXdhaXRgKSwgbm90IHZpYSBhbiBgZXJyb3JgIHZhcmlhbnQgb24gdGhpcyB1bmlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQ2hhdEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgUXVlc3Rpb25FdmVudFNjaGVtYSxcbiAgTWVzc2FnZUV2ZW50U2NoZW1hLFxuICBTdGF0dXNFdmVudFNjaGVtYSxcbiAgQXR0YWNobWVudEV2ZW50U2NoZW1hLFxuICBUaGlua2luZ0V2ZW50U2NoZW1hLFxuICBUZXh0RXZlbnRTY2hlbWEsXG4gIFF1ZXJ5RXZlbnRTY2hlbWEsXG4gIFN0YXRlbWVudEV2ZW50U2NoZW1hLFxuICBSb3dzRXZlbnRTY2hlbWEsXG4gIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50U2NoZW1hLFxuICBSZXN1bHRFdmVudFNjaGVtYSxcbl0pO1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZUNoYXRFdmVudH0uICovXG5leHBvcnQgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUgPSBHZW5pZUNoYXRFdmVudFtcInR5cGVcIl07XG5cbi8qKlxuICogRmllbGQgc2V0IGZvciBhIGdpdmVuIHtAbGluayBHZW5pZUNoYXRFdmVudFR5cGV9IC0gdGhlIHZhcmlhbnRcbiAqIHdpdGggdGhlIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0cmlwcGVkLiBVc2VkIGJ5IGRldGVjdG9ycyBpblxuICogYGV2ZW50LnRzYCBzbyBlYWNoIGRldGVjdG9yIHJldHVybnMganVzdCB0aGUgcGF5bG9hZCBmaWVsZHMgYW5kXG4gKiB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgYXQgeWllbGQgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBPbWl0PFxuICBFeHRyYWN0PEdlbmllQ2hhdEV2ZW50LCB7IHR5cGU6IFQgfT4sXG4gIFwidHlwZVwiXG4+O1xuIl19
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"typescript": "^5.9.3"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@dbx-tools/shared-core": "0.6.
|
|
27
|
+
"@dbx-tools/shared-core": "0.6.133",
|
|
28
28
|
"zod": "4.3.6"
|
|
29
29
|
},
|
|
30
30
|
"main": "./lib/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"./package.json": "./package.json"
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
-
"version": "0.6.
|
|
44
|
+
"version": "0.6.133",
|
|
45
45
|
"types": "./lib/index.d.ts",
|
|
46
46
|
"type": "module",
|
|
47
47
|
"exports": {
|
package/src/genie-model.ts
CHANGED
|
@@ -156,15 +156,11 @@ export type GenieQueryAttachment = z.infer<typeof GenieQueryAttachmentSchema>;
|
|
|
156
156
|
* server-side enum change cannot invalidate an otherwise complete message.
|
|
157
157
|
*/
|
|
158
158
|
export type GenieTextAttachmentPurpose =
|
|
159
|
-
| "
|
|
160
|
-
| "TEXT_ATTACHMENT_PURPOSE_ANSWER"
|
|
161
|
-
| (string & {});
|
|
159
|
+
"FOLLOW_UP_QUESTION" | "TEXT_ATTACHMENT_PURPOSE_ANSWER" | (string & {});
|
|
162
160
|
|
|
163
161
|
/** Text attachment schema widened for forward-compatible purpose values. */
|
|
164
162
|
export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend({
|
|
165
|
-
purpose: z
|
|
166
|
-
.custom<GenieTextAttachmentPurpose>((value) => typeof value === "string")
|
|
167
|
-
.optional(),
|
|
163
|
+
purpose: z.custom<GenieTextAttachmentPurpose>((value) => typeof value === "string").optional(),
|
|
168
164
|
});
|
|
169
165
|
export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
|
|
170
166
|
|