@dbx-tools/shared-email-template 0.6.57 → 0.6.58

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/README.md CHANGED
@@ -40,6 +40,22 @@ import { EmailDocument } from "@dbx-tools/shared-email-template";
40
40
  Node runtimes should pass this component to `@react-email/render`.
41
41
  `@dbx-tools/email` does that automatically for SMTP and local outbox delivery.
42
42
 
43
+ `preview` sets the preheader — the snippet a client shows beside the subject, and
44
+ the body of the push notification a mobile mail app posts. It defaults to the
45
+ subject; set it when the notification should say something the subject does not:
46
+
47
+ ```tsx
48
+ <EmailDocument
49
+ subject="123456 is your verification code"
50
+ preview="Your verification code is: 123456"
51
+ body={body}
52
+ />
53
+ ```
54
+
55
+ That pairing is what makes mobile one-time-code autofill work at all: a
56
+ notification carries the sender, the subject, and this snippet, so a code found
57
+ only in the body never reaches the autofill heuristics.
58
+
43
59
  ## Reuse The Body Preview
44
60
 
45
61
  ```tsx
@@ -46,6 +46,19 @@ export interface EmailDocumentProps extends EmailBodyProps {
46
46
  subject?: string;
47
47
  headers?: ReadonlyArray<readonly [string, string]>;
48
48
  footer?: string;
49
+ /**
50
+ * Preheader text: the snippet a client shows next to the subject in a list, and
51
+ * - the reason this is a prop - the text a mobile OS puts in the PUSH
52
+ * NOTIFICATION body.
53
+ *
54
+ * Defaults to the subject. Set it when the notification should say something the
55
+ * subject does not. One-time-code mail is the case that motivated it: iOS reads
56
+ * an incoming notification's text to offer an autofill code (natively for Mail
57
+ * and Messages, and since iOS 26 for any app's notification, Gmail included), so
58
+ * a code that appears only in the BODY is never seen - the notification carries
59
+ * the subject and this snippet, nothing more.
60
+ */
61
+ preview?: string;
49
62
  }
50
63
  /** Branded message card shared by the full document and browser previews. */
51
64
  export declare const EmailCard: ({ body, subject, headers, footer, brand: brandInput, }: EmailDocumentProps) => React.JSX.Element;
@@ -189,6 +189,6 @@ export const EmailDocument = (props) => {
189
189
  margin: 0,
190
190
  padding: "28px 12px",
191
191
  };
192
- return (_jsxs(Html, { lang: "en", children: [_jsx(Head, {}), _jsx(Preview, { children: props.subject ?? "Message" }), _jsx(Body, { style: pageStyle, children: _jsx(EmailCard, { ...props }) })] }));
192
+ return (_jsxs(Html, { lang: "en", children: [_jsx(Head, {}), _jsx(Preview, { children: props.preview ?? props.subject ?? "Message" }), _jsx(Body, { style: pageStyle, children: _jsx(EmailCard, { ...props }) })] }));
193
193
  };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxFQUNGLElBQUksRUFDSixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixPQUFPLEVBQ1AsR0FBRyxFQUNILE9BQU8sRUFDUCxJQUFJLEdBQ0wsTUFBTSx5QkFBeUIsQ0FBQztBQXFDakMsU0FBUyxvQkFBb0IsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQXFCLEVBQWMsRUFBRTtJQUN6RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25FLE9BQU87UUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQzlCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDbEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUNsQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3JDLEtB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akMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzVCLE1BQU0sRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQztJQUNGLE9BQU8sQ0FDTCxNQUFDLElBQUksSUFBQyxJQUFJLEVBQUMsSUFBSSxhQUNiLEtBQUMsSUFBSSxLQUFHLEVBQ1IsS0FBQyxPQUFPLGNBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxTQUFTLEdBQVcsRUFDL0MsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFFLFNBQVMsWUFDcEIsS0FBQyxTQUFTLE9BQUssS0FBSyxHQUFJLEdBQ25CLElBQ0YsQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbml2ZXJzYWwgUmVhY3QgRW1haWwgcHJlc2VudGF0aW9uIGZvciBkYngtdG9vbHMgZW1haWwgZmxvd3MuXG4gKlxuICogVGhlIGRvY3VtZW50IGNvbXBvbmVudCByZW5kZXJzIG9uIHRoZSBzZXJ2ZXIgdGhyb3VnaCBgQHJlYWN0LWVtYWlsL3JlbmRlcmA7XG4gKiB0aGUgYm9keSBjb21wb25lbnQgaXMgcmV1c2VkIGRpcmVjdGx5IGJ5IGJyb3dzZXIgYXBwcm92YWwgYW5kIGNvbXBvc2Ugdmlld3MuXG4gKiBCb3RoIGRlZmF1bHQgdG8gdGhlIHJlcG9zaXRvcnkgYnJhbmQgd2hpbGUgYWNjZXB0aW5nIGEgY29uc3VtZXIgb3ZlcnJpZGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBicmFuZCwgdHlwZSBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgQm9keSxcbiAgQ29sdW1uLFxuICBDb250YWluZXIsXG4gIEhlYWQsXG4gIEhlYWRpbmcsXG4gIEhyLFxuICBIdG1sLFxuICBJbWcsXG4gIExpbmssXG4gIE1hcmtkb3duLFxuICBQcmV2aWV3LFxuICBSb3csXG4gIFNlY3Rpb24sXG4gIFRleHQsXG59IGZyb20gXCJAcmVhY3QtZW1haWwvY29tcG9uZW50c1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbi8qKiBFbWFpbC1zYWZlIGJyYW5kIHZhbHVlcyB1c2VkIGJ5IHRoZSBSZWFjdCBFbWFpbCB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxCcmFuZCB7XG4gIGFjY2VudDogc3RyaW5nO1xuICBvbkFjY2VudD86IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBsb2dvVXJsPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBzdXJmYWNlPzogc3RyaW5nO1xuICBmb3JlZ3JvdW5kPzogc3RyaW5nO1xuICBtdXRlZD86IHN0cmluZztcbiAgYm9yZGVyPzogc3RyaW5nO1xuICB0YWdsaW5lPzogc3RyaW5nO1xuICB3ZWJzaXRlPzogc3RyaW5nO1xufVxuXG4vKiogQ29tcGxldGUgdmFsdWVzIGFmdGVyIGFwcGx5aW5nIHRoZSBkYngtdG9vbHMgZGVmYXVsdCBicmFuZC4gKi9cbmV4cG9ydCB0eXBlIFJlc29sdmVkRW1haWxCcmFuZCA9IFJlcXVpcmVkPFxuICBQaWNrPFxuICAgIEVtYWlsQnJhbmQsXG4gICAgfCBcImFjY2VudFwiXG4gICAgfCBcIm9uQWNjZW50XCJcbiAgICB8IFwiZm9udEZhbWlseVwiXG4gICAgfCBcIm5hbWVcIlxuICAgIHwgXCJiYWNrZ3JvdW5kXCJcbiAgICB8IFwic3VyZmFjZVwiXG4gICAgfCBcImZvcmVncm91bmRcIlxuICAgIHwgXCJtdXRlZFwiXG4gICAgfCBcImJvcmRlclwiXG4gICAgfCBcInRhZ2xpbmVcIlxuICA+XG4+ICZcbiAgUGljazxFbWFpbEJyYW5kLCBcImxvZ29VcmxcIiB8IFwid2Vic2l0ZVwiPjtcblxuZnVuY3Rpb24gaXNSZW5kZXJhYmxlSW1hZ2VVcmwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgL14oPzpodHRwcz86fGRhdGE6fGNpZDopL2kudGVzdCh2YWx1ZSk7XG59XG5cbi8qKiBQcm9qZWN0IGEgcG9ydGFibGUgYnJhbmQgY29udGV4dCBpbnRvIGVtYWlsLXNhZmUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGVtYWlsQnJhbmRGcm9tQ29udGV4dCA9IChjb250ZXh0OiBCcmFuZENvbnRleHQpOiBFbWFpbEJyYW5kID0+IHtcbiAgY29uc3QgbG9nbyA9IGNvbnRleHQuYXNzZXRzLmxvZ28uZGFyayA/PyBjb250ZXh0LmFzc2V0cy5sb2dvLmxpZ2h0O1xuICByZXR1cm4ge1xuICAgIGFjY2VudDogY29udGV4dC5jb2xvcnMucHJpbWFyeSxcbiAgICBvbkFjY2VudDogXCIjZmZmZmZmXCIsXG4gICAgZm9udEZhbWlseTogY29udGV4dC50eXBvZ3JhcGh5LnNhbnMsXG4gICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgIGJhY2tncm91bmQ6IGNvbnRleHQuY29sb3JzLnN1cmZhY2UsXG4gICAgc3VyZmFjZTogY29udGV4dC5jb2xvcnMuYmFja2dyb3VuZCxcbiAgICBmb3JlZ3JvdW5kOiBjb250ZXh0LmNvbG9ycy5mb3JlZ3JvdW5kLFxuICAgIG11dGVkOiBjb250ZXh0LmNvbG9ycy5tdXRlZCxcbiAgICBib3JkZXI6IGNvbnRleHQuY29sb3JzLmJvcmRlcixcbiAgICB0YWdsaW5lOiBjb250ZXh0LnRhZ2xpbmUsXG4gICAgd2Vic2l0ZTogY29udGV4dC5saW5rcy53ZWJzaXRlLFxuICAgIC4uLihpc1JlbmRlcmFibGVJbWFnZVVybChsb2dvKSA/IHsgbG9nb1VybDogbG9nbyB9IDoge30pLFxuICB9O1xufTtcblxuLyoqIFRoZSByZXBvc2l0b3J5IGJyYW5kIHVzZWQgYnkgZXZlcnkgZW1haWwgdW5sZXNzIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbi4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0RW1haWxCcmFuZDogRW1haWxCcmFuZCA9IGVtYWlsQnJhbmRGcm9tQ29udGV4dChicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0KTtcblxuLyoqIE1lcmdlIGEgcGFydGlhbCBjb25zdW1lciBicmFuZCBvdmVyIHRoZSByZXBvc2l0b3J5IGRlZmF1bHQuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUVtYWlsQnJhbmQgPSAoaW5wdXQ/OiBFbWFpbEJyYW5kKTogUmVzb2x2ZWRFbWFpbEJyYW5kID0+IHtcbiAgY29uc3QgbWVyZ2VkID0geyAuLi5kZWZhdWx0RW1haWxCcmFuZCwgLi4uaW5wdXQgfTtcbiAgcmV0dXJuIHtcbiAgICBhY2NlbnQ6IG1lcmdlZC5hY2NlbnQsXG4gICAgb25BY2NlbnQ6IG1lcmdlZC5vbkFjY2VudCA/PyBcIiNmZmZmZmZcIixcbiAgICBmb250RmFtaWx5OiBtZXJnZWQuZm9udEZhbWlseSxcbiAgICBuYW1lOiBtZXJnZWQubmFtZSA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0Lm5hbWUsXG4gICAgYmFja2dyb3VuZDogbWVyZ2VkLmJhY2tncm91bmQgPz8gYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuc3VyZmFjZSxcbiAgICBzdXJmYWNlOiBtZXJnZWQuc3VyZmFjZSA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5iYWNrZ3JvdW5kLFxuICAgIGZvcmVncm91bmQ6IG1lcmdlZC5mb3JlZ3JvdW5kID8/IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLmZvcmVncm91bmQsXG4gICAgbXV0ZWQ6IG1lcmdlZC5tdXRlZCA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5tdXRlZCxcbiAgICBib3JkZXI6IG1lcmdlZC5ib3JkZXIgPz8gYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuYm9yZGVyLFxuICAgIHRhZ2xpbmU6IG1lcmdlZC50YWdsaW5lID8/IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQudGFnbGluZSxcbiAgICAuLi4obWVyZ2VkLmxvZ29VcmwgPyB7IGxvZ29Vcmw6IG1lcmdlZC5sb2dvVXJsIH0gOiB7fSksXG4gICAgLi4uKG1lcmdlZC53ZWJzaXRlID8geyB3ZWJzaXRlOiBtZXJnZWQud2Vic2l0ZSB9IDoge30pLFxuICB9O1xufTtcblxuLyoqIE5vcm1hbGl6ZSBpbmRlbnRhdGlvbiBpbiBhdXRob3JlZCBjb250ZW50IHdpdGhvdXQgY29uc3RyYWluaW5nIGl0cyBzdHJ1Y3R1cmUuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRW1haWxNYXJrZG93biA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGluZXMgPSB2YWx1ZS5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICB3aGlsZSAobGluZXNbMF0/LnRyaW0oKSA9PT0gXCJcIikgbGluZXMuc2hpZnQoKTtcbiAgd2hpbGUgKGxpbmVzLmF0KC0xKT8udHJpbSgpID09PSBcIlwiKSBsaW5lcy5wb3AoKTtcbiAgY29uc3Qgbm9uQmxhbmsgPSBsaW5lcy5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpLmxlbmd0aCA+IDApO1xuICBjb25zdCBpbmRlbnQgPSBub25CbGFuay5yZWR1Y2UoKG1pbmltdW0sIGxpbmUpID0+IHtcbiAgICBjb25zdCB3aWR0aCA9IGxpbmUubWF0Y2goL15cXHMqLyk/LlswXS5sZW5ndGggPz8gMDtcbiAgICByZXR1cm4gTWF0aC5taW4obWluaW11bSwgd2lkdGgpO1xuICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbmRlbnQpIHx8IGluZGVudCA9PT0gMCkgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UoTWF0aC5taW4oaW5kZW50LCBsaW5lLmxlbmd0aCkpKS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIFByb3BzIGZvciB0aGUgcmV1c2FibGUgbWVzc2FnZS1ib2R5IGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxCb2R5UHJvcHMge1xuICBib2R5OiBzdHJpbmc7XG4gIGJyYW5kPzogRW1haWxCcmFuZDtcbn1cblxuLyoqIFJlbmRlciByaWNoIG1lc3NhZ2UgY29udGVudCB3aXRoIGVtYWlsLWNsaWVudC1zYWZlIGlubGluZSBzdHlsZXMuICovXG5leHBvcnQgY29uc3QgRW1haWxCb2R5ID0gKHsgYm9keSwgYnJhbmQ6IGJyYW5kSW5wdXQgfTogRW1haWxCb2R5UHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSByZXNvbHZlRW1haWxCcmFuZChicmFuZElucHV0KTtcbiAgcmV0dXJuIChcbiAgICA8TWFya2Rvd25cbiAgICAgIG1hcmtkb3duQ29udGFpbmVyU3R5bGVzPXt7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5mb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogXCIxNXB4XCIsXG4gICAgICAgIGxpbmVIZWlnaHQ6IFwiMS42NVwiLFxuICAgICAgfX1cbiAgICAgIG1hcmtkb3duQ3VzdG9tU3R5bGVzPXt7XG4gICAgICAgIGgxOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIzMHB4XCIsIGxpbmVIZWlnaHQ6IFwiMS4yXCIsIG1hcmdpbjogXCIwIDAgMjBweFwiIH0sXG4gICAgICAgIGgyOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIyM3B4XCIsIGxpbmVIZWlnaHQ6IFwiMS4zXCIsIG1hcmdpbjogXCIyOHB4IDAgMTJweFwiIH0sXG4gICAgICAgIGgzOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIxOHB4XCIsIGxpbmVIZWlnaHQ6IFwiMS40XCIsIG1hcmdpbjogXCIyNHB4IDAgMTBweFwiIH0sXG4gICAgICAgIHA6IHsgbWFyZ2luOiBcIjAgMCAxNnB4XCIgfSxcbiAgICAgICAgbGluazogeyBjb2xvcjogdGhlbWUuYWNjZW50LCBmb250V2VpZ2h0OiA2MDAsIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiIH0sXG4gICAgICAgIGJsb2NrUXVvdGU6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgICAgICAgYm9yZGVyTGVmdDogYDRweCBzb2xpZCAke3RoZW1lLmFjY2VudH1gLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogXCIwIDEwcHggMTBweCAwXCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgbWFyZ2luOiBcIjIwcHggMFwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMTRweCAxOHB4XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGNvZGVJbmxpbmU6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjVweFwiLFxuICAgICAgICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQudHlwb2dyYXBoeS5tb25vLFxuICAgICAgICAgIGZvbnRTaXplOiBcIjEzcHhcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjJweCA1cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29kZUJsb2NrOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogXCIxMHB4XCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLnN1cmZhY2UsXG4gICAgICAgICAgZm9udEZhbWlseTogYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC50eXBvZ3JhcGh5Lm1vbm8sXG4gICAgICAgICAgZm9udFNpemU6IFwiMTNweFwiLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMS41NVwiLFxuICAgICAgICAgIG1hcmdpbjogXCIyMHB4IDBcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjE2cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgaHI6IHsgYm9yZGVyQ29sb3I6IHRoZW1lLmJvcmRlciwgbWFyZ2luOiBcIjI4cHggMFwiIH0sXG4gICAgICAgIGltYWdlOiB7IGJvcmRlclJhZGl1czogXCIxMHB4XCIsIGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICBsaTogeyBtYXJnaW46IFwiNnB4IDBcIiB9LFxuICAgICAgICB0YWJsZTogeyBib3JkZXJDb2xsYXBzZTogXCJjb2xsYXBzZVwiLCBtYXJnaW46IFwiMjBweCAwXCIsIHdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICB0aDoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGQ6IHtcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge25vcm1hbGl6ZUVtYWlsTWFya2Rvd24oYm9keSl9XG4gICAgPC9NYXJrZG93bj5cbiAgKTtcbn07XG5cbi8qKiBQcm9wcyBmb3IgdGhlIGNvbXBsZXRlIFJlYWN0IEVtYWlsIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbERvY3VtZW50UHJvcHMgZXh0ZW5kcyBFbWFpbEJvZHlQcm9wcyB7XG4gIHN1YmplY3Q/OiBzdHJpbmc7XG4gIGhlYWRlcnM/OiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+O1xuICBmb290ZXI/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIEJyYW5kTWFyayh7IHRoZW1lIH06IHsgdGhlbWU6IFJlc29sdmVkRW1haWxCcmFuZCB9KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKHRoZW1lLmxvZ29VcmwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEltZ1xuICAgICAgICBzcmM9e3RoZW1lLmxvZ29Vcmx9XG4gICAgICAgIGFsdD17dGhlbWUubmFtZX1cbiAgICAgICAgaGVpZ2h0PVwiMzRcIlxuICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImJsb2NrXCIsIGhlaWdodDogXCIzNHB4XCIsIHdpZHRoOiBcImF1dG9cIiB9fVxuICAgICAgLz5cbiAgICApO1xuICB9XG4gIHJldHVybiAoXG4gICAgPFRleHRcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5vbkFjY2VudCxcbiAgICAgICAgZm9udFNpemU6IFwiMjBweFwiLFxuICAgICAgICBmb250V2VpZ2h0OiA4MDAsXG4gICAgICAgIGxldHRlclNwYWNpbmc6IFwiLTAuM3B4XCIsXG4gICAgICAgIG1hcmdpbjogMCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge3RoZW1lLm5hbWV9XG4gICAgPC9UZXh0PlxuICApO1xufVxuXG5mdW5jdGlvbiBFbnZlbG9wZUhlYWRlcnMoe1xuICBoZWFkZXJzLFxuICB0aGVtZSxcbn06IHtcbiAgaGVhZGVyczogRW1haWxEb2N1bWVudFByb3BzW1wiaGVhZGVyc1wiXTtcbiAgdGhlbWU6IFJlc29sdmVkRW1haWxCcmFuZDtcbn0pIHtcbiAgaWYgKCFoZWFkZXJzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICByZXR1cm4gKFxuICAgIDxTZWN0aW9uXG4gICAgICBzdHlsZT17e1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgICAgIGJvcmRlclJhZGl1czogXCIxMHB4XCIsXG4gICAgICAgIG1hcmdpbjogXCIwIDAgMjRweFwiLFxuICAgICAgICBwYWRkaW5nOiBcIjE0cHggMTZweFwiLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7aGVhZGVycy5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiAoXG4gICAgICAgIDxSb3cga2V5PXtgJHtsYWJlbH06JHt2YWx1ZX1gfT5cbiAgICAgICAgICA8Q29sdW1uXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBjb2xvcjogdGhlbWUubXV0ZWQsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiBcIjEycHhcIixcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogNzAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiBcIjNweCAxMnB4IDNweCAwXCIsXG4gICAgICAgICAgICAgIHdpZHRoOiBcIjcwcHhcIixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICAgIDxDb2x1bW4gc3R5bGU9e3sgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjEzcHhcIiwgcGFkZGluZzogXCIzcHggMFwiIH19PlxuICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8L1Jvdz5cbiAgICAgICkpfVxuICAgIDwvU2VjdGlvbj5cbiAgKTtcbn1cblxuLyoqIEJyYW5kZWQgbWVzc2FnZSBjYXJkIHNoYXJlZCBieSB0aGUgZnVsbCBkb2N1bWVudCBhbmQgYnJvd3NlciBwcmV2aWV3cy4gKi9cbmV4cG9ydCBjb25zdCBFbWFpbENhcmQgPSAoe1xuICBib2R5LFxuICBzdWJqZWN0ID0gXCJNZXNzYWdlXCIsXG4gIGhlYWRlcnMsXG4gIGZvb3RlcixcbiAgYnJhbmQ6IGJyYW5kSW5wdXQsXG59OiBFbWFpbERvY3VtZW50UHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSByZXNvbHZlRW1haWxCcmFuZChicmFuZElucHV0KTtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyXG4gICAgICBzdHlsZT17e1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnN1cmZhY2UsXG4gICAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLmJvcmRlcn1gLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxuICAgICAgICBib3hTaGFkb3c6IFwiMCA4cHggMzBweCByZ2JhKDI3LDQ5LDU3LDAuMDgpXCIsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmZvbnRGYW1pbHksXG4gICAgICAgIG1hcmdpbjogXCIwIGF1dG9cIixcbiAgICAgICAgbWF4V2lkdGg6IFwiNjIwcHhcIixcbiAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxTZWN0aW9uIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogdGhlbWUuYWNjZW50LCBwYWRkaW5nOiBcIjIycHggMzBweFwiIH19PlxuICAgICAgICA8QnJhbmRNYXJrIHRoZW1lPXt0aGVtZX0gLz5cbiAgICAgIDwvU2VjdGlvbj5cbiAgICAgIDxTZWN0aW9uIHN0eWxlPXt7IHBhZGRpbmc6IFwiMzRweCAzNHB4IDI0cHhcIiB9fT5cbiAgICAgICAgPEhlYWRpbmdcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgICBmb250U2l6ZTogXCIyOHB4XCIsXG4gICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiBcIi0wLjVweFwiLFxuICAgICAgICAgICAgbGluZUhlaWdodDogXCIxLjJcIixcbiAgICAgICAgICAgIG1hcmdpbjogXCIwIDAgMjRweFwiLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c3ViamVjdH1cbiAgICAgICAgPC9IZWFkaW5nPlxuICAgICAgICA8RW52ZWxvcGVIZWFkZXJzIGhlYWRlcnM9e2hlYWRlcnN9IHRoZW1lPXt0aGVtZX0gLz5cbiAgICAgICAgPEVtYWlsQm9keSBib2R5PXtib2R5fSBicmFuZD17dGhlbWV9IC8+XG4gICAgICA8L1NlY3Rpb24+XG4gICAgICA8SHIgc3R5bGU9e3sgYm9yZGVyQ29sb3I6IHRoZW1lLmJvcmRlciwgbWFyZ2luOiAwIH19IC8+XG4gICAgICA8U2VjdGlvbiBzdHlsZT17eyBwYWRkaW5nOiBcIjIwcHggMzRweCAyNnB4XCIgfX0+XG4gICAgICAgIDxUZXh0XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5tdXRlZCxcbiAgICAgICAgICAgIGZvbnRTaXplOiBcIjEycHhcIixcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMS41NVwiLFxuICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7Zm9vdGVyID8/IHRoZW1lLnRhZ2xpbmV9e1wiIFwifVxuICAgICAgICAgIHt0aGVtZS53ZWJzaXRlID8gKFxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj17dGhlbWUud2Vic2l0ZX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUuYWNjZW50LFxuICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3RoZW1lLm5hbWV9XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvU2VjdGlvbj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbi8qKiBDb21wbGV0ZSByZXNwb25zaXZlLCBicmFuZGVkIFJlYWN0IEVtYWlsIGRvY3VtZW50LiAqL1xuZXhwb3J0IGNvbnN0IEVtYWlsRG9jdW1lbnQgPSAocHJvcHM6IEVtYWlsRG9jdW1lbnRQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKHByb3BzLmJyYW5kKTtcbiAgY29uc3QgcGFnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBmb250RmFtaWx5OiB0aGVtZS5mb250RmFtaWx5LFxuICAgIG1hcmdpbjogMCxcbiAgICBwYWRkaW5nOiBcIjI4cHggMTJweFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxIdG1sIGxhbmc9XCJlblwiPlxuICAgICAgPEhlYWQgLz5cbiAgICAgIDxQcmV2aWV3Pntwcm9wcy5zdWJqZWN0ID8/IFwiTWVzc2FnZVwifTwvUHJldmlldz5cbiAgICAgIDxCb2R5IHN0eWxlPXtwYWdlU3R5bGV9PlxuICAgICAgICA8RW1haWxDYXJkIHsuLi5wcm9wc30gLz5cbiAgICAgIDwvQm9keT5cbiAgICA8L0h0bWw+XG4gICk7XG59O1xuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxFQUNGLElBQUksRUFDSixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixPQUFPLEVBQ1AsR0FBRyxFQUNILE9BQU8sRUFDUCxJQUFJLEdBQ0wsTUFBTSx5QkFBeUIsQ0FBQztBQXFDakMsU0FBUyxvQkFBb0IsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQXFCLEVBQWMsRUFBRTtJQUN6RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25FLE9BQU87UUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQzlCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDbEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUNsQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3JDLEtB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Q2pDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixNQUFNLEVBQUUsQ0FBQztRQUNULE9BQU8sRUFBRSxXQUFXO0tBQ3JCLENBQUM7SUFDRixPQUFPLENBQ0wsTUFBQyxJQUFJLElBQUMsSUFBSSxFQUFDLElBQUksYUFDYixLQUFDLElBQUksS0FBRyxFQUNSLEtBQUMsT0FBTyxjQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxTQUFTLEdBQVcsRUFDaEUsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFFLFNBQVMsWUFDcEIsS0FBQyxTQUFTLE9BQUssS0FBSyxHQUFJLEdBQ25CLElBQ0YsQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbml2ZXJzYWwgUmVhY3QgRW1haWwgcHJlc2VudGF0aW9uIGZvciBkYngtdG9vbHMgZW1haWwgZmxvd3MuXG4gKlxuICogVGhlIGRvY3VtZW50IGNvbXBvbmVudCByZW5kZXJzIG9uIHRoZSBzZXJ2ZXIgdGhyb3VnaCBgQHJlYWN0LWVtYWlsL3JlbmRlcmA7XG4gKiB0aGUgYm9keSBjb21wb25lbnQgaXMgcmV1c2VkIGRpcmVjdGx5IGJ5IGJyb3dzZXIgYXBwcm92YWwgYW5kIGNvbXBvc2Ugdmlld3MuXG4gKiBCb3RoIGRlZmF1bHQgdG8gdGhlIHJlcG9zaXRvcnkgYnJhbmQgd2hpbGUgYWNjZXB0aW5nIGEgY29uc3VtZXIgb3ZlcnJpZGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBicmFuZCwgdHlwZSBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgQm9keSxcbiAgQ29sdW1uLFxuICBDb250YWluZXIsXG4gIEhlYWQsXG4gIEhlYWRpbmcsXG4gIEhyLFxuICBIdG1sLFxuICBJbWcsXG4gIExpbmssXG4gIE1hcmtkb3duLFxuICBQcmV2aWV3LFxuICBSb3csXG4gIFNlY3Rpb24sXG4gIFRleHQsXG59IGZyb20gXCJAcmVhY3QtZW1haWwvY29tcG9uZW50c1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbi8qKiBFbWFpbC1zYWZlIGJyYW5kIHZhbHVlcyB1c2VkIGJ5IHRoZSBSZWFjdCBFbWFpbCB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxCcmFuZCB7XG4gIGFjY2VudDogc3RyaW5nO1xuICBvbkFjY2VudD86IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBsb2dvVXJsPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBzdXJmYWNlPzogc3RyaW5nO1xuICBmb3JlZ3JvdW5kPzogc3RyaW5nO1xuICBtdXRlZD86IHN0cmluZztcbiAgYm9yZGVyPzogc3RyaW5nO1xuICB0YWdsaW5lPzogc3RyaW5nO1xuICB3ZWJzaXRlPzogc3RyaW5nO1xufVxuXG4vKiogQ29tcGxldGUgdmFsdWVzIGFmdGVyIGFwcGx5aW5nIHRoZSBkYngtdG9vbHMgZGVmYXVsdCBicmFuZC4gKi9cbmV4cG9ydCB0eXBlIFJlc29sdmVkRW1haWxCcmFuZCA9IFJlcXVpcmVkPFxuICBQaWNrPFxuICAgIEVtYWlsQnJhbmQsXG4gICAgfCBcImFjY2VudFwiXG4gICAgfCBcIm9uQWNjZW50XCJcbiAgICB8IFwiZm9udEZhbWlseVwiXG4gICAgfCBcIm5hbWVcIlxuICAgIHwgXCJiYWNrZ3JvdW5kXCJcbiAgICB8IFwic3VyZmFjZVwiXG4gICAgfCBcImZvcmVncm91bmRcIlxuICAgIHwgXCJtdXRlZFwiXG4gICAgfCBcImJvcmRlclwiXG4gICAgfCBcInRhZ2xpbmVcIlxuICA+XG4+ICZcbiAgUGljazxFbWFpbEJyYW5kLCBcImxvZ29VcmxcIiB8IFwid2Vic2l0ZVwiPjtcblxuZnVuY3Rpb24gaXNSZW5kZXJhYmxlSW1hZ2VVcmwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgL14oPzpodHRwcz86fGRhdGE6fGNpZDopL2kudGVzdCh2YWx1ZSk7XG59XG5cbi8qKiBQcm9qZWN0IGEgcG9ydGFibGUgYnJhbmQgY29udGV4dCBpbnRvIGVtYWlsLXNhZmUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGVtYWlsQnJhbmRGcm9tQ29udGV4dCA9IChjb250ZXh0OiBCcmFuZENvbnRleHQpOiBFbWFpbEJyYW5kID0+IHtcbiAgY29uc3QgbG9nbyA9IGNvbnRleHQuYXNzZXRzLmxvZ28uZGFyayA/PyBjb250ZXh0LmFzc2V0cy5sb2dvLmxpZ2h0O1xuICByZXR1cm4ge1xuICAgIGFjY2VudDogY29udGV4dC5jb2xvcnMucHJpbWFyeSxcbiAgICBvbkFjY2VudDogXCIjZmZmZmZmXCIsXG4gICAgZm9udEZhbWlseTogY29udGV4dC50eXBvZ3JhcGh5LnNhbnMsXG4gICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgIGJhY2tncm91bmQ6IGNvbnRleHQuY29sb3JzLnN1cmZhY2UsXG4gICAgc3VyZmFjZTogY29udGV4dC5jb2xvcnMuYmFja2dyb3VuZCxcbiAgICBmb3JlZ3JvdW5kOiBjb250ZXh0LmNvbG9ycy5mb3JlZ3JvdW5kLFxuICAgIG11dGVkOiBjb250ZXh0LmNvbG9ycy5tdXRlZCxcbiAgICBib3JkZXI6IGNvbnRleHQuY29sb3JzLmJvcmRlcixcbiAgICB0YWdsaW5lOiBjb250ZXh0LnRhZ2xpbmUsXG4gICAgd2Vic2l0ZTogY29udGV4dC5saW5rcy53ZWJzaXRlLFxuICAgIC4uLihpc1JlbmRlcmFibGVJbWFnZVVybChsb2dvKSA/IHsgbG9nb1VybDogbG9nbyB9IDoge30pLFxuICB9O1xufTtcblxuLyoqIFRoZSByZXBvc2l0b3J5IGJyYW5kIHVzZWQgYnkgZXZlcnkgZW1haWwgdW5sZXNzIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbi4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0RW1haWxCcmFuZDogRW1haWxCcmFuZCA9IGVtYWlsQnJhbmRGcm9tQ29udGV4dChicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0KTtcblxuLyoqIE1lcmdlIGEgcGFydGlhbCBjb25zdW1lciBicmFuZCBvdmVyIHRoZSByZXBvc2l0b3J5IGRlZmF1bHQuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUVtYWlsQnJhbmQgPSAoaW5wdXQ/OiBFbWFpbEJyYW5kKTogUmVzb2x2ZWRFbWFpbEJyYW5kID0+IHtcbiAgY29uc3QgbWVyZ2VkID0geyAuLi5kZWZhdWx0RW1haWxCcmFuZCwgLi4uaW5wdXQgfTtcbiAgcmV0dXJuIHtcbiAgICBhY2NlbnQ6IG1lcmdlZC5hY2NlbnQsXG4gICAgb25BY2NlbnQ6IG1lcmdlZC5vbkFjY2VudCA/PyBcIiNmZmZmZmZcIixcbiAgICBmb250RmFtaWx5OiBtZXJnZWQuZm9udEZhbWlseSxcbiAgICBuYW1lOiBtZXJnZWQubmFtZSA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0Lm5hbWUsXG4gICAgYmFja2dyb3VuZDogbWVyZ2VkLmJhY2tncm91bmQgPz8gYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuc3VyZmFjZSxcbiAgICBzdXJmYWNlOiBtZXJnZWQuc3VyZmFjZSA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5iYWNrZ3JvdW5kLFxuICAgIGZvcmVncm91bmQ6IG1lcmdlZC5mb3JlZ3JvdW5kID8/IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLmZvcmVncm91bmQsXG4gICAgbXV0ZWQ6IG1lcmdlZC5tdXRlZCA/PyBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5tdXRlZCxcbiAgICBib3JkZXI6IG1lcmdlZC5ib3JkZXIgPz8gYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuYm9yZGVyLFxuICAgIHRhZ2xpbmU6IG1lcmdlZC50YWdsaW5lID8/IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQudGFnbGluZSxcbiAgICAuLi4obWVyZ2VkLmxvZ29VcmwgPyB7IGxvZ29Vcmw6IG1lcmdlZC5sb2dvVXJsIH0gOiB7fSksXG4gICAgLi4uKG1lcmdlZC53ZWJzaXRlID8geyB3ZWJzaXRlOiBtZXJnZWQud2Vic2l0ZSB9IDoge30pLFxuICB9O1xufTtcblxuLyoqIE5vcm1hbGl6ZSBpbmRlbnRhdGlvbiBpbiBhdXRob3JlZCBjb250ZW50IHdpdGhvdXQgY29uc3RyYWluaW5nIGl0cyBzdHJ1Y3R1cmUuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRW1haWxNYXJrZG93biA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGluZXMgPSB2YWx1ZS5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICB3aGlsZSAobGluZXNbMF0/LnRyaW0oKSA9PT0gXCJcIikgbGluZXMuc2hpZnQoKTtcbiAgd2hpbGUgKGxpbmVzLmF0KC0xKT8udHJpbSgpID09PSBcIlwiKSBsaW5lcy5wb3AoKTtcbiAgY29uc3Qgbm9uQmxhbmsgPSBsaW5lcy5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpLmxlbmd0aCA+IDApO1xuICBjb25zdCBpbmRlbnQgPSBub25CbGFuay5yZWR1Y2UoKG1pbmltdW0sIGxpbmUpID0+IHtcbiAgICBjb25zdCB3aWR0aCA9IGxpbmUubWF0Y2goL15cXHMqLyk/LlswXS5sZW5ndGggPz8gMDtcbiAgICByZXR1cm4gTWF0aC5taW4obWluaW11bSwgd2lkdGgpO1xuICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbmRlbnQpIHx8IGluZGVudCA9PT0gMCkgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UoTWF0aC5taW4oaW5kZW50LCBsaW5lLmxlbmd0aCkpKS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIFByb3BzIGZvciB0aGUgcmV1c2FibGUgbWVzc2FnZS1ib2R5IGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxCb2R5UHJvcHMge1xuICBib2R5OiBzdHJpbmc7XG4gIGJyYW5kPzogRW1haWxCcmFuZDtcbn1cblxuLyoqIFJlbmRlciByaWNoIG1lc3NhZ2UgY29udGVudCB3aXRoIGVtYWlsLWNsaWVudC1zYWZlIGlubGluZSBzdHlsZXMuICovXG5leHBvcnQgY29uc3QgRW1haWxCb2R5ID0gKHsgYm9keSwgYnJhbmQ6IGJyYW5kSW5wdXQgfTogRW1haWxCb2R5UHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSByZXNvbHZlRW1haWxCcmFuZChicmFuZElucHV0KTtcbiAgcmV0dXJuIChcbiAgICA8TWFya2Rvd25cbiAgICAgIG1hcmtkb3duQ29udGFpbmVyU3R5bGVzPXt7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5mb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogXCIxNXB4XCIsXG4gICAgICAgIGxpbmVIZWlnaHQ6IFwiMS42NVwiLFxuICAgICAgfX1cbiAgICAgIG1hcmtkb3duQ3VzdG9tU3R5bGVzPXt7XG4gICAgICAgIGgxOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIzMHB4XCIsIGxpbmVIZWlnaHQ6IFwiMS4yXCIsIG1hcmdpbjogXCIwIDAgMjBweFwiIH0sXG4gICAgICAgIGgyOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIyM3B4XCIsIGxpbmVIZWlnaHQ6IFwiMS4zXCIsIG1hcmdpbjogXCIyOHB4IDAgMTJweFwiIH0sXG4gICAgICAgIGgzOiB7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIxOHB4XCIsIGxpbmVIZWlnaHQ6IFwiMS40XCIsIG1hcmdpbjogXCIyNHB4IDAgMTBweFwiIH0sXG4gICAgICAgIHA6IHsgbWFyZ2luOiBcIjAgMCAxNnB4XCIgfSxcbiAgICAgICAgbGluazogeyBjb2xvcjogdGhlbWUuYWNjZW50LCBmb250V2VpZ2h0OiA2MDAsIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiIH0sXG4gICAgICAgIGJsb2NrUXVvdGU6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgICAgICAgYm9yZGVyTGVmdDogYDRweCBzb2xpZCAke3RoZW1lLmFjY2VudH1gLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogXCIwIDEwcHggMTBweCAwXCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgbWFyZ2luOiBcIjIwcHggMFwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMTRweCAxOHB4XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGNvZGVJbmxpbmU6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjVweFwiLFxuICAgICAgICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHQudHlwb2dyYXBoeS5tb25vLFxuICAgICAgICAgIGZvbnRTaXplOiBcIjEzcHhcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjJweCA1cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29kZUJsb2NrOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogXCIxMHB4XCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLnN1cmZhY2UsXG4gICAgICAgICAgZm9udEZhbWlseTogYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dC50eXBvZ3JhcGh5Lm1vbm8sXG4gICAgICAgICAgZm9udFNpemU6IFwiMTNweFwiLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMS41NVwiLFxuICAgICAgICAgIG1hcmdpbjogXCIyMHB4IDBcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjE2cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgaHI6IHsgYm9yZGVyQ29sb3I6IHRoZW1lLmJvcmRlciwgbWFyZ2luOiBcIjI4cHggMFwiIH0sXG4gICAgICAgIGltYWdlOiB7IGJvcmRlclJhZGl1czogXCIxMHB4XCIsIGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICBsaTogeyBtYXJnaW46IFwiNnB4IDBcIiB9LFxuICAgICAgICB0YWJsZTogeyBib3JkZXJDb2xsYXBzZTogXCJjb2xsYXBzZVwiLCBtYXJnaW46IFwiMjBweCAwXCIsIHdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICB0aDoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGQ6IHtcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge25vcm1hbGl6ZUVtYWlsTWFya2Rvd24oYm9keSl9XG4gICAgPC9NYXJrZG93bj5cbiAgKTtcbn07XG5cbi8qKiBQcm9wcyBmb3IgdGhlIGNvbXBsZXRlIFJlYWN0IEVtYWlsIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbERvY3VtZW50UHJvcHMgZXh0ZW5kcyBFbWFpbEJvZHlQcm9wcyB7XG4gIHN1YmplY3Q/OiBzdHJpbmc7XG4gIGhlYWRlcnM/OiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+O1xuICBmb290ZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcmVoZWFkZXIgdGV4dDogdGhlIHNuaXBwZXQgYSBjbGllbnQgc2hvd3MgbmV4dCB0byB0aGUgc3ViamVjdCBpbiBhIGxpc3QsIGFuZFxuICAgKiAtIHRoZSByZWFzb24gdGhpcyBpcyBhIHByb3AgLSB0aGUgdGV4dCBhIG1vYmlsZSBPUyBwdXRzIGluIHRoZSBQVVNIXG4gICAqIE5PVElGSUNBVElPTiBib2R5LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3ViamVjdC4gU2V0IGl0IHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgc2F5IHNvbWV0aGluZyB0aGVcbiAgICogc3ViamVjdCBkb2VzIG5vdC4gT25lLXRpbWUtY29kZSBtYWlsIGlzIHRoZSBjYXNlIHRoYXQgbW90aXZhdGVkIGl0OiBpT1MgcmVhZHNcbiAgICogYW4gaW5jb21pbmcgbm90aWZpY2F0aW9uJ3MgdGV4dCB0byBvZmZlciBhbiBhdXRvZmlsbCBjb2RlIChuYXRpdmVseSBmb3IgTWFpbFxuICAgKiBhbmQgTWVzc2FnZXMsIGFuZCBzaW5jZSBpT1MgMjYgZm9yIGFueSBhcHAncyBub3RpZmljYXRpb24sIEdtYWlsIGluY2x1ZGVkKSwgc29cbiAgICogYSBjb2RlIHRoYXQgYXBwZWFycyBvbmx5IGluIHRoZSBCT0RZIGlzIG5ldmVyIHNlZW4gLSB0aGUgbm90aWZpY2F0aW9uIGNhcnJpZXNcbiAgICogdGhlIHN1YmplY3QgYW5kIHRoaXMgc25pcHBldCwgbm90aGluZyBtb3JlLlxuICAgKi9cbiAgcHJldmlldz86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gQnJhbmRNYXJrKHsgdGhlbWUgfTogeyB0aGVtZTogUmVzb2x2ZWRFbWFpbEJyYW5kIH0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBpZiAodGhlbWUubG9nb1VybCkge1xuICAgIHJldHVybiAoXG4gICAgICA8SW1nXG4gICAgICAgIHNyYz17dGhlbWUubG9nb1VybH1cbiAgICAgICAgYWx0PXt0aGVtZS5uYW1lfVxuICAgICAgICBoZWlnaHQ9XCIzNFwiXG4gICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiYmxvY2tcIiwgaGVpZ2h0OiBcIjM0cHhcIiwgd2lkdGg6IFwiYXV0b1wiIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8VGV4dFxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgY29sb3I6IHRoZW1lLm9uQWNjZW50LFxuICAgICAgICBmb250U2l6ZTogXCIyMHB4XCIsXG4gICAgICAgIGZvbnRXZWlnaHQ6IDgwMCxcbiAgICAgICAgbGV0dGVyU3BhY2luZzogXCItMC4zcHhcIixcbiAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7dGhlbWUubmFtZX1cbiAgICA8L1RleHQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEVudmVsb3BlSGVhZGVycyh7XG4gIGhlYWRlcnMsXG4gIHRoZW1lLFxufToge1xuICBoZWFkZXJzOiBFbWFpbERvY3VtZW50UHJvcHNbXCJoZWFkZXJzXCJdO1xuICB0aGVtZTogUmVzb2x2ZWRFbWFpbEJyYW5kO1xufSkge1xuICBpZiAoIWhlYWRlcnM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwcHhcIixcbiAgICAgICAgbWFyZ2luOiBcIjAgMCAyNHB4XCIsXG4gICAgICAgIHBhZGRpbmc6IFwiMTRweCAxNnB4XCIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtoZWFkZXJzLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+IChcbiAgICAgICAgPFJvdyBrZXk9e2Ake2xhYmVsfToke3ZhbHVlfWB9PlxuICAgICAgICAgIDxDb2x1bW5cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5tdXRlZCxcbiAgICAgICAgICAgICAgZm9udFNpemU6IFwiMTJweFwiLFxuICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsXG4gICAgICAgICAgICAgIHBhZGRpbmc6IFwiM3B4IDEycHggM3B4IDBcIixcbiAgICAgICAgICAgICAgd2lkdGg6IFwiNzBweFwiLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgICAgPENvbHVtbiBzdHlsZT17eyBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCwgZm9udFNpemU6IFwiMTNweFwiLCBwYWRkaW5nOiBcIjNweCAwXCIgfX0+XG4gICAgICAgICAgICB7dmFsdWV9XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDwvUm93PlxuICAgICAgKSl9XG4gICAgPC9TZWN0aW9uPlxuICApO1xufVxuXG4vKiogQnJhbmRlZCBtZXNzYWdlIGNhcmQgc2hhcmVkIGJ5IHRoZSBmdWxsIGRvY3VtZW50IGFuZCBicm93c2VyIHByZXZpZXdzLiAqL1xuZXhwb3J0IGNvbnN0IEVtYWlsQ2FyZCA9ICh7XG4gIGJvZHksXG4gIHN1YmplY3QgPSBcIk1lc3NhZ2VcIixcbiAgaGVhZGVycyxcbiAgZm9vdGVyLFxuICBicmFuZDogYnJhbmRJbnB1dCxcbn06IEVtYWlsRG9jdW1lbnRQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKGJyYW5kSW5wdXQpO1xuICByZXR1cm4gKFxuICAgIDxDb250YWluZXJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuc3VyZmFjZSxcbiAgICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUuYm9yZGVyfWAsXG4gICAgICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgICAgIGJveFNoYWRvdzogXCIwIDhweCAzMHB4IHJnYmEoMjcsNDksNTcsMC4wOClcIixcbiAgICAgICAgZm9udEZhbWlseTogdGhlbWUuZm9udEZhbWlseSxcbiAgICAgICAgbWFyZ2luOiBcIjAgYXV0b1wiLFxuICAgICAgICBtYXhXaWR0aDogXCI2MjBweFwiLFxuICAgICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFNlY3Rpb24gc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5hY2NlbnQsIHBhZGRpbmc6IFwiMjJweCAzMHB4XCIgfX0+XG4gICAgICAgIDxCcmFuZE1hcmsgdGhlbWU9e3RoZW1lfSAvPlxuICAgICAgPC9TZWN0aW9uPlxuICAgICAgPFNlY3Rpb24gc3R5bGU9e3sgcGFkZGluZzogXCIzNHB4IDM0cHggMjRweFwiIH19PlxuICAgICAgICA8SGVhZGluZ1xuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgICAgICAgICAgIGZvbnRTaXplOiBcIjI4cHhcIixcbiAgICAgICAgICAgIGxldHRlclNwYWNpbmc6IFwiLTAuNXB4XCIsXG4gICAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjEuMlwiLFxuICAgICAgICAgICAgbWFyZ2luOiBcIjAgMCAyNHB4XCIsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzdWJqZWN0fVxuICAgICAgICA8L0hlYWRpbmc+XG4gICAgICAgIDxFbnZlbG9wZUhlYWRlcnMgaGVhZGVycz17aGVhZGVyc30gdGhlbWU9e3RoZW1lfSAvPlxuICAgICAgICA8RW1haWxCb2R5IGJvZHk9e2JvZHl9IGJyYW5kPXt0aGVtZX0gLz5cbiAgICAgIDwvU2VjdGlvbj5cbiAgICAgIDxIciBzdHlsZT17eyBib3JkZXJDb2xvcjogdGhlbWUuYm9yZGVyLCBtYXJnaW46IDAgfX0gLz5cbiAgICAgIDxTZWN0aW9uIHN0eWxlPXt7IHBhZGRpbmc6IFwiMjBweCAzNHB4IDI2cHhcIiB9fT5cbiAgICAgICAgPFRleHRcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLm11dGVkLFxuICAgICAgICAgICAgZm9udFNpemU6IFwiMTJweFwiLFxuICAgICAgICAgICAgbGluZUhlaWdodDogXCIxLjU1XCIsXG4gICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtmb290ZXIgPz8gdGhlbWUudGFnbGluZX17XCIgXCJ9XG4gICAgICAgICAge3RoZW1lLndlYnNpdGUgPyAoXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPXt0aGVtZS53ZWJzaXRlfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5hY2NlbnQsXG4gICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IFwibm9uZVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGhlbWUubmFtZX1cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9TZWN0aW9uPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuLyoqIENvbXBsZXRlIHJlc3BvbnNpdmUsIGJyYW5kZWQgUmVhY3QgRW1haWwgZG9jdW1lbnQuICovXG5leHBvcnQgY29uc3QgRW1haWxEb2N1bWVudCA9IChwcm9wczogRW1haWxEb2N1bWVudFByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gcmVzb2x2ZUVtYWlsQnJhbmQocHJvcHMuYnJhbmQpO1xuICBjb25zdCBwYWdlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLFxuICAgIGZvbnRGYW1pbHk6IHRoZW1lLmZvbnRGYW1pbHksXG4gICAgbWFyZ2luOiAwLFxuICAgIHBhZGRpbmc6IFwiMjhweCAxMnB4XCIsXG4gIH07XG4gIHJldHVybiAoXG4gICAgPEh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8SGVhZCAvPlxuICAgICAgPFByZXZpZXc+e3Byb3BzLnByZXZpZXcgPz8gcHJvcHMuc3ViamVjdCA/PyBcIk1lc3NhZ2VcIn08L1ByZXZpZXc+XG4gICAgICA8Qm9keSBzdHlsZT17cGFnZVN0eWxlfT5cbiAgICAgICAgPEVtYWlsQ2FyZCB7Li4ucHJvcHN9IC8+XG4gICAgICA8L0JvZHk+XG4gICAgPC9IdG1sPlxuICApO1xufTtcbiJdfQ==
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.57",
27
+ "@dbx-tools/shared-core": "0.6.58",
28
28
  "@react-email/components": "^1.0.12",
29
29
  "react": "^19.2.4"
30
30
  },
@@ -42,7 +42,7 @@
42
42
  "./package.json": "./package.json"
43
43
  }
44
44
  },
45
- "version": "0.6.57",
45
+ "version": "0.6.58",
46
46
  "types": "./lib/index.d.ts",
47
47
  "type": "module",
48
48
  "exports": {
package/src/template.tsx CHANGED
@@ -195,6 +195,19 @@ export interface EmailDocumentProps extends EmailBodyProps {
195
195
  subject?: string;
196
196
  headers?: ReadonlyArray<readonly [string, string]>;
197
197
  footer?: string;
198
+ /**
199
+ * Preheader text: the snippet a client shows next to the subject in a list, and
200
+ * - the reason this is a prop - the text a mobile OS puts in the PUSH
201
+ * NOTIFICATION body.
202
+ *
203
+ * Defaults to the subject. Set it when the notification should say something the
204
+ * subject does not. One-time-code mail is the case that motivated it: iOS reads
205
+ * an incoming notification's text to offer an autofill code (natively for Mail
206
+ * and Messages, and since iOS 26 for any app's notification, Gmail included), so
207
+ * a code that appears only in the BODY is never seen - the notification carries
208
+ * the subject and this snippet, nothing more.
209
+ */
210
+ preview?: string;
198
211
  }
199
212
 
200
213
  function BrandMark({ theme }: { theme: ResolvedEmailBrand }): React.ReactNode {
@@ -342,7 +355,7 @@ export const EmailDocument = (props: EmailDocumentProps) => {
342
355
  return (
343
356
  <Html lang="en">
344
357
  <Head />
345
- <Preview>{props.subject ?? "Message"}</Preview>
358
+ <Preview>{props.preview ?? props.subject ?? "Message"}</Preview>
346
359
  <Body style={pageStyle}>
347
360
  <EmailCard {...props} />
348
361
  </Body>