@sendly/cli 3.37.1 → 3.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +268 -0
  2. package/dist/commands/business-upgrade/resubmit.js +3 -3
  3. package/dist/commands/business-upgrade/start.js +3 -3
  4. package/dist/commands/config/list.js +14 -2
  5. package/dist/commands/config/set.js +16 -3
  6. package/dist/commands/countries.js +2 -2
  7. package/dist/commands/credits/index.d.ts +1 -0
  8. package/dist/commands/credits/index.js +4 -0
  9. package/dist/commands/doctor.d.ts +12 -0
  10. package/dist/commands/doctor.js +51 -8
  11. package/dist/commands/enterprise/upload-verification-document.js +3 -3
  12. package/dist/commands/enterprise/verification/resubmit.js +2 -2
  13. package/dist/commands/enterprise/verification/submit.js +2 -2
  14. package/dist/commands/events/listen.js +3 -3
  15. package/dist/commands/numbers/buy.js +19 -4
  16. package/dist/commands/rcs/agents/create.d.ts +44 -0
  17. package/dist/commands/rcs/agents/create.js +71 -0
  18. package/dist/commands/rcs/agents/devices/set.d.ts +16 -0
  19. package/dist/commands/rcs/agents/devices/set.js +77 -0
  20. package/dist/commands/rcs/agents/get.d.ts +13 -0
  21. package/dist/commands/rcs/agents/get.js +51 -0
  22. package/dist/commands/rcs/agents/request-launch.d.ts +16 -0
  23. package/dist/commands/rcs/agents/request-launch.js +71 -0
  24. package/dist/commands/rcs/agents/submit.d.ts +14 -0
  25. package/dist/commands/rcs/agents/submit.js +56 -0
  26. package/dist/commands/rcs/agents/update.d.ts +48 -0
  27. package/dist/commands/rcs/agents/update.js +81 -0
  28. package/dist/commands/rcs/agents.d.ts +10 -0
  29. package/dist/commands/rcs/agents.js +97 -0
  30. package/dist/commands/rcs/brands/create.d.ts +30 -0
  31. package/dist/commands/rcs/brands/create.js +55 -0
  32. package/dist/commands/rcs/brands/update.d.ts +33 -0
  33. package/dist/commands/rcs/brands/update.js +62 -0
  34. package/dist/commands/rcs/capability.d.ts +12 -0
  35. package/dist/commands/rcs/capability.js +85 -0
  36. package/dist/commands/rcs/dossier.d.ts +10 -0
  37. package/dist/commands/rcs/dossier.js +73 -0
  38. package/dist/commands/rcs/registration.d.ts +10 -0
  39. package/dist/commands/rcs/registration.js +59 -0
  40. package/dist/commands/rcs/send.d.ts +21 -0
  41. package/dist/commands/rcs/send.js +240 -0
  42. package/dist/commands/send.d.ts +1 -0
  43. package/dist/commands/send.js +5 -2
  44. package/dist/commands/sms/batch.d.ts +1 -0
  45. package/dist/commands/sms/batch.js +11 -1
  46. package/dist/commands/sms/group.d.ts +1 -0
  47. package/dist/commands/sms/group.js +5 -2
  48. package/dist/commands/sms/schedule.d.ts +1 -0
  49. package/dist/commands/sms/schedule.js +5 -2
  50. package/dist/commands/sms/send.d.ts +1 -0
  51. package/dist/commands/sms/send.js +5 -2
  52. package/dist/commands/whatsapp/connect.d.ts +17 -0
  53. package/dist/commands/whatsapp/connect.js +166 -0
  54. package/dist/commands/whatsapp/profile/get.d.ts +13 -0
  55. package/dist/commands/whatsapp/profile/get.js +67 -0
  56. package/dist/commands/whatsapp/profile/update.d.ts +20 -0
  57. package/dist/commands/whatsapp/profile/update.js +109 -0
  58. package/dist/commands/whatsapp/send.d.ts +17 -0
  59. package/dist/commands/whatsapp/send.js +151 -0
  60. package/dist/commands/whatsapp/senders.d.ts +10 -0
  61. package/dist/commands/whatsapp/senders.js +74 -0
  62. package/dist/commands/whatsapp/status.d.ts +13 -0
  63. package/dist/commands/whatsapp/status.js +92 -0
  64. package/dist/commands/whatsapp/templates/create.d.ts +19 -0
  65. package/dist/commands/whatsapp/templates/create.js +205 -0
  66. package/dist/commands/whatsapp/templates/delete.d.ts +14 -0
  67. package/dist/commands/whatsapp/templates/delete.js +69 -0
  68. package/dist/commands/whatsapp/templates/list.d.ts +10 -0
  69. package/dist/commands/whatsapp/templates/list.js +77 -0
  70. package/dist/commands/whatsapp/templates/update.d.ts +18 -0
  71. package/dist/commands/whatsapp/templates/update.js +160 -0
  72. package/dist/commands/whoami.js +32 -6
  73. package/dist/hooks/command-not-found.js +46 -61
  74. package/dist/lib/api-client.d.ts +20 -3
  75. package/dist/lib/api-client.js +96 -17
  76. package/dist/lib/auth.js +10 -6
  77. package/dist/lib/base-command.js +13 -2
  78. package/dist/lib/config.d.ts +50 -1
  79. package/dist/lib/config.js +144 -7
  80. package/dist/lib/help.d.ts +10 -0
  81. package/dist/lib/help.js +23 -0
  82. package/dist/lib/onboarding.js +3 -3
  83. package/dist/lib/rcs-registration.d.ts +231 -0
  84. package/dist/lib/rcs-registration.js +734 -0
  85. package/oclif.manifest.json +2603 -350
  86. package/package.json +17 -1
@@ -93,15 +93,27 @@ export default class NumbersBuy extends AuthenticatedCommand {
93
93
  return;
94
94
  }
95
95
  // status === "provisioning"
96
+ const registrationRequired = response.registrationRequired === true;
96
97
  if (isJsonMode()) {
97
- // Wait for activation then emit the final number record.
98
+ // Wait for activation then emit the final number record, preserving the
99
+ // registration signal so an automated caller knows the number can't send
100
+ // until it's assigned to a 10DLC campaign.
98
101
  const active = await this.waitForActive(selected.phoneNumber);
99
- json(active ?? response);
102
+ json(active ? { ...active, registrationRequired } : response);
100
103
  return;
101
104
  }
102
105
  info(`Order accepted for ${colors.code(selected.phoneNumber)} — provisioning...`);
103
106
  const active = await this.waitForActive(selected.phoneNumber);
104
- if (active) {
107
+ if (active && registrationRequired) {
108
+ success("Number is active — but not yet able to send", {
109
+ number: active.phoneNumber,
110
+ id: active.id,
111
+ country: active.countryCode,
112
+ type: active.phoneNumberType,
113
+ note: "A US local number must be assigned to a registered 10DLC campaign before it can send. Set one up with `sendly 10dlc`, then assign this number.",
114
+ });
115
+ }
116
+ else if (active) {
105
117
  success("Number is active", {
106
118
  number: active.phoneNumber,
107
119
  id: active.id,
@@ -109,6 +121,9 @@ export default class NumbersBuy extends AuthenticatedCommand {
109
121
  type: active.phoneNumberType,
110
122
  });
111
123
  }
124
+ else if (registrationRequired) {
125
+ warn("Number ordered. Once active it still can't send until it's assigned to a registered 10DLC campaign — set one up with `sendly 10dlc`, then check `sendly numbers list`.");
126
+ }
112
127
  else {
113
128
  warn("Number is still provisioning. It usually activates within a few minutes — check `sendly numbers list`.");
114
129
  }
@@ -263,4 +278,4 @@ export default class NumbersBuy extends AuthenticatedCommand {
263
278
  return undefined;
264
279
  }
265
280
  }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL251bWJlcnMvYnV5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksRUFDSixJQUFJLEVBQ0osS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUF3RG5FLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtBQUMvQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxDQUFDLGNBQWM7QUFDL0MsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZO0FBQ2xELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYTtBQUVoRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFXLFNBQVEsb0JBQW9CO0lBQzFELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLGdHQUFnRyxDQUFDO0lBRW5HLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMERBQTBEO1FBQzFELCtFQUErRTtRQUMvRSxpRUFBaUU7S0FDbEUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDcEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsZ0NBQWdDO1lBQzdDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDZDQUE2QztZQUMxRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwwREFBMEQ7U0FDeEUsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0Qix3RUFBd0U7UUFDeEUsOERBQThEO1FBQzlELE1BQU0sT0FBTyxHQUE0QjtZQUN2QyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQzFCLGVBQWUsRUFBRSxLQUFLLENBQUMsSUFBSTtZQUMzQixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7U0FDbEMsQ0FBQztRQUVGLElBQUksUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDakMscUJBQXFCLEVBQ3JCLE9BQU8sQ0FDUixDQUFDO1FBRUYsNEVBQTRFO1FBQzVFLE9BQ0UsUUFBUSxDQUFDLE1BQU0sS0FBSyxvQkFBb0I7WUFDeEMsUUFBUSxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsRUFDdEMsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLHFFQUFxRTtnQkFDckUsaUNBQWlDO2dCQUNqQyxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDZixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsS0FBSyxDQUNILHFCQUFxQixRQUFRLENBQUMsTUFBTSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsbUNBQW1DLEVBQ3hIO29CQUNFLElBQUksRUFBRSwrREFBK0Q7aUJBQ3RFLENBQ0YsQ0FBQztnQkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUVELElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsa0VBQWtFO2dCQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLENBQUMseUNBQXlDO1lBRWpFLDRFQUE0RTtZQUM1RSxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdkMsUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDN0IscUJBQXFCLEVBQ3JCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUVELHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsMkNBQTJDO1FBQzNDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDZixPQUFPO1lBQ1QsQ0FBQztZQUNELE9BQU8sQ0FBQyxpREFBaUQsRUFBRTtnQkFDekQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVztnQkFDcEMsSUFBSSxFQUFFLHNKQUFzSjthQUM3SixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIseURBQXlEO1lBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5RCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLGtCQUFrQixFQUFFO2dCQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQzFCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsZUFBZTthQUM3QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FDRix3R0FBd0csQ0FDekcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FJM0I7UUFDQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLFNBQTRCLENBQUM7UUFDakMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNoQywyQkFBMkIsRUFDM0I7Z0JBQ0UsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ25FLENBQ0YsQ0FBQztZQUNGLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUM5QyxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0saUNBQWlDLEVBQUU7b0JBQ3RELElBQUksRUFBRSx3Q0FBd0MsS0FBSyxDQUFDLE9BQU8sV0FBVyxLQUFLLENBQUMsSUFBSSxFQUFFO2lCQUNuRixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGtDQUFrQyxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDdkM7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLDJCQUEyQixLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUk7Z0JBQ3BFLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLFFBQVEsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLO29CQUM5RCxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVc7aUJBQ3JCLENBQUMsQ0FBQzthQUNKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLGVBQWUsQ0FDM0IsSUFBK0MsRUFDL0MsTUFBaUI7UUFFakIsTUFBTSxLQUFLLEdBQ1QsSUFBSSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7UUFFMUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLEtBQUssa0JBQWtCO1lBQ3pCLENBQUMsQ0FBQyxpRUFBaUU7WUFDbkUsQ0FBQyxDQUFDLGdGQUFnRixDQUNyRixDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDakYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFZCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsT0FBTyxRQUFRLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xDLFFBQVEsRUFBRSxDQUFDO1lBRVgsSUFBSSxNQUE0QixDQUFDO1lBQ2pDLElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUMxQixtQkFBbUIsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQzNELENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixJQUFJLEdBQUcsWUFBWSxhQUFhLEVBQUUsQ0FBQztvQkFDakMscUVBQXFFO29CQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQy9CLGVBQWUsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQ0YsNkZBQTZGLENBQzlGLENBQUM7b0JBQ0YsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxrQ0FBa0M7Z0JBQ2xDLFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxQixlQUFlLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQy9CLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQ0YsNkZBQTZGLENBQzlGLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0Qsc0NBQXNDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDOUMsZUFBZSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUNGLG9IQUFvSCxDQUNySCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxhQUFhLENBQ3pCLFdBQW1CO1FBRW5CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLFFBQVEsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3pDLElBQUksSUFBeUIsQ0FBQztZQUM5QixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRSxDQUFDO2dCQUNYLFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUNyQyxDQUFDO1lBQ0YsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNyQyxRQUFRLEVBQUUsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCBvcGVuIGZyb20gXCJvcGVuXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQsIE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIGpzb24sXG4gIHN1Y2Nlc3MsXG4gIGluZm8sXG4gIHdhcm4sXG4gIGVycm9yLFxuICBjb2xvcnMsXG4gIHNwaW5uZXIsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBhdHRhY2hMb2dpbktleXByZXNzSGFuZGxlciB9IGZyb20gXCIuLi8uLi9saWIva2V5cHJlc3MuanNcIjtcblxuaW50ZXJmYWNlIEF2YWlsYWJsZU51bWJlciB7XG4gIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gIGNvdW50cnk6IHN0cmluZztcbiAgbnVtYmVyVHlwZTogc3RyaW5nO1xuICBtb250aGx5Q29zdDogc3RyaW5nO1xuICBjdXJyZW5jeTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoTnVtYmVyc1Jlc3BvbnNlIHtcbiAgbnVtYmVyczogQXZhaWxhYmxlTnVtYmVyW107XG59XG5cbmludGVyZmFjZSBCdXlBY3Rpb24ge1xuICB1cmw6IHN0cmluZztcbiAgLy8gYWN0aW9uQ29kZSAoMzItaGV4KSBpZGVudGlmaWVzIHRoZSBhY3Rpb24g4oCUIHVzZWQgdG8gUE9MTCBhbmQgdG8gUkUtQlVZLlxuICBhY3Rpb25Db2RlOiBzdHJpbmc7XG4gIC8vIGNvZGUgKDgtY2hhciB1c2VyQ29kZSkgaXMgc2hvd24gdG8gdGhlIGh1bWFuIHRvIHR5cGUgb24gdGhlIGhvc3RlZCBwYWdlXG4gIC8vIHRvIHByb3ZlIHRlcm1pbmFsIGFjY2Vzcy4gRElTUExBWSBvbmx5IOKAlCBuZXZlciB1c2VkIGFzIGFjdGlvbkNvZGUuXG4gIGNvZGU6IHN0cmluZztcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBPd25lZE51bWJlciB7XG4gIGlkOiBzdHJpbmc7XG4gIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgY291bnRyeUNvZGU6IHN0cmluZztcbiAgcGhvbmVOdW1iZXJUeXBlOiBzdHJpbmc7XG4gIG1vbnRobHlDb3N0Q2VudHM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEJ1eVJlc3BvbnNlIHtcbiAgc3RhdHVzOlxuICAgIHwgXCJwcm92aXNpb25pbmdcIlxuICAgIHwgXCJkb2N1bWVudHNfcmVxdWlyZWRcIlxuICAgIHwgXCJ1bmRlcl9yZXZpZXdcIlxuICAgIHwgXCJwYXltZW50X3JlcXVpcmVkXCI7XG4gIG51bWJlcj86IE93bmVkTnVtYmVyO1xuICByZXF1aXJlbWVudHM/OiB1bmtub3duO1xuICBhY3Rpb24/OiBCdXlBY3Rpb247XG59XG5cbmludGVyZmFjZSBMaXN0TnVtYmVyc1Jlc3BvbnNlIHtcbiAgbnVtYmVyczogT3duZWROdW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIEFjdGlvblN0YXR1c1Jlc3BvbnNlIHtcbiAgc3RhdHVzOiBcInBlbmRpbmdcIiB8IFwiYXV0aG9yaXplZFwiIHwgXCJjb21wbGV0ZWRcIiB8IFwiZXhwaXJlZFwiO1xuICBhY3Rpb25UeXBlOiBzdHJpbmc7XG4gIHJlc3VsdD86IHVua25vd247XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xufVxuXG5jb25zdCBBQ1RJT05fUE9MTF9JTlRFUlZBTCA9IDIwMDA7IC8vIDIgc2Vjb25kc1xuY29uc3QgQUNUSU9OX01BWF9BVFRFTVBUUyA9IDYwMDsgLy8gfjIwIG1pbnV0ZXNcbmNvbnN0IFBST1ZJU0lPTl9QT0xMX0lOVEVSVkFMID0gMzAwMDsgLy8gMyBzZWNvbmRzXG5jb25zdCBQUk9WSVNJT05fTUFYX0FUVEVNUFRTID0gNjA7IC8vIH4zIG1pbnV0ZXNcblxuZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVyc0J1eSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIkJ1eSBhIHBob25lIG51bWJlci4gSGFuZGxlcyBkb2N1bWVudC9wYXltZW50IHN0ZXBzIGludGVyYWN0aXZlbHkgd2hlbiBhIGNvdW50cnkgcmVxdWlyZXMgdGhlbS5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBudW1iZXJzIGJ1eSAtLWNvdW50cnkgR0IgLS10eXBlIG1vYmlsZVwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbnVtYmVycyBidXkgLS1jb3VudHJ5IFVTIC0tdHlwZSBsb2NhbCAtLW51bWJlciArMTU1NTEyMzQ1NjdcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IG51bWJlcnMgYnV5IC0tY291bnRyeSBHQiAtLXR5cGUgbW9iaWxlIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgY291bnRyeTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiY1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSVNPIGNvdW50cnkgY29kZSAoZS5nLiBHQiwgVVMpXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOdW1iZXIgdHlwZSAoZS5nLiBtb2JpbGUsIGxvY2FsLCB0b2xsLWZyZWUpXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICBudW1iZXI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNwZWNpZmljIG51bWJlciB0byBidXkgaW4gRS4xNjQgZm9ybWF0IChza2lwcyBzZWxlY3Rpb24pXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoTnVtYmVyc0J1eSk7XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZU51bWJlcihmbGFncyk7XG4gICAgaWYgKCFzZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgLy8gVGhlIGJ1eSBib2R5IGlzIHJldXNlZCB2ZXJiYXRpbSBhY3Jvc3MgZXZlcnkgcmUtUE9TVDsgb25seSBhY3Rpb25Db2RlXG4gICAgLy8gaXMgYWRkZWQgb25jZSBhIGhvc3RlZCBhY3Rpb24gKGRvY3MvcGF5bWVudCkgaGFzIGNvbXBsZXRlZC5cbiAgICBjb25zdCBidXlCb2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIHBob25lTnVtYmVyOiBzZWxlY3RlZC5waG9uZU51bWJlcixcbiAgICAgIGNvdW50cnlDb2RlOiBmbGFncy5jb3VudHJ5LFxuICAgICAgcGhvbmVOdW1iZXJUeXBlOiBmbGFncy50eXBlLFxuICAgICAgbW9udGhseUNvc3Q6IHNlbGVjdGVkLm1vbnRobHlDb3N0LFxuICAgIH07XG5cbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCdXlSZXNwb25zZT4oXG4gICAgICBcIi9hcGkvdjEvbnVtYmVycy9idXlcIixcbiAgICAgIGJ1eUJvZHksXG4gICAgKTtcblxuICAgIC8vIERyaXZlIHRoZSBhY3Rpb24gbG9vcCB1bnRpbCB0aGUgY2FycmllciBhY2NlcHRzIHRoZSBvcmRlciAocHJvdmlzaW9uaW5nKS5cbiAgICB3aGlsZSAoXG4gICAgICByZXNwb25zZS5zdGF0dXMgPT09IFwiZG9jdW1lbnRzX3JlcXVpcmVkXCIgfHxcbiAgICAgIHJlc3BvbnNlLnN0YXR1cyA9PT0gXCJwYXltZW50X3JlcXVpcmVkXCJcbiAgICApIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHJlc3BvbnNlLmFjdGlvbjtcbiAgICAgIGlmICghYWN0aW9uKSB7XG4gICAgICAgIC8vIEJhY2tlbmQgc2F5cyBkb2NzL3BheW1lbnQgcmVxdWlyZWQgYnV0IGdhdmUgdXMgbm93aGVyZSB0byBzZW5kIHRoZVxuICAgICAgICAvLyB1c2VyIOKAlCBub3RoaW5nIHRoZSBDTEkgY2FuIGRvLlxuICAgICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yKFxuICAgICAgICAgIGBUaGlzIG51bWJlciBuZWVkcyAke3Jlc3BvbnNlLnN0YXR1cyA9PT0gXCJwYXltZW50X3JlcXVpcmVkXCIgPyBcInBheW1lbnRcIiA6IFwiZG9jdW1lbnRzXCJ9IGJ1dCBubyBhY3Rpb24gbGluayB3YXMgcmV0dXJuZWQuYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoaW50OiBcIlRyeSBhZ2Fpbiwgb3IgY29tcGxldGUgdGhpcyBudW1iZXIgZnJvbSB0aGUgU2VuZGx5IGRhc2hib2FyZC5cIixcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAgLy8gTm9uLWludGVyYWN0aXZlOiBzdXJmYWNlIHRoZSBhY3Rpb24gc28gdGhlIGNhbGxlciBjYW4gZHJpdmUgaXQuXG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGF3YWl0IHRoaXMucnVuSG9zdGVkQWN0aW9uKHJlc3BvbnNlLnN0YXR1cywgYWN0aW9uKTtcbiAgICAgIGlmICghY29tcGxldGVkKSByZXR1cm47IC8vIGV4cGlyZWQgLyBjYW5jZWxsZWQg4oCUIGFscmVhZHkgbWVzc2FnZWRcblxuICAgICAgLy8gUmUtYnV5IHdpdGggdGhlIGFjdGlvbiBpZGVudGlmaWVyIChhY3Rpb25Db2RlKSwgTk9UIHRoZSBkaXNwbGF5IHVzZXJDb2RlLlxuICAgICAgYnV5Qm9keS5hY3Rpb25Db2RlID0gYWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEJ1eVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL251bWJlcnMvYnV5XCIsXG4gICAgICAgIGJ1eUJvZHksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERvY3VtZW50LXJlcXVpcmVkIGNvdW50cnk6IGRldGFpbHMgc3VibWl0dGVkLCBudW1iZXIgcmVzZXJ2ZWQgKyB1bmRlclxuICAgIC8vIHJldmlldy4gTm8gY2FycmllciBvcmRlciBpcyBwbGFjZWQgdW50aWwgb3VyIHRlYW0gdmVyaWZpZXMgKyByZWdpc3RlcnNcbiAgICAvLyBpdCwgc28gdGhlcmUncyBub3RoaW5nIHRvIHBvbGwgZm9yIGhlcmUuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gXCJ1bmRlcl9yZXZpZXdcIikge1xuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3VjY2VzcyhcIk51bWJlciByZXNlcnZlZCDigJQgeW91ciBkZXRhaWxzIGFyZSB1bmRlciByZXZpZXdcIiwge1xuICAgICAgICBudW1iZXI6IHJlc3BvbnNlLm51bWJlcj8ucGhvbmVOdW1iZXIsXG4gICAgICAgIG5vdGU6IFwiV2UgdmVyaWZ5IHlvdXIgZG9jdW1lbnRzIGFuZCByZWdpc3RlciB0aGUgbnVtYmVyLCB1c3VhbGx5IHdpdGhpbiBhIGZldyBidXNpbmVzcyBkYXlzLiBJdCBjYW4ndCBzZW5kIHVudGlsIGl0J3MgYWN0aXZlIOKAlCBjaGVjayBgc2VuZGx5IG51bWJlcnMgbGlzdGAuXCIsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzdGF0dXMgPT09IFwicHJvdmlzaW9uaW5nXCJcbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAvLyBXYWl0IGZvciBhY3RpdmF0aW9uIHRoZW4gZW1pdCB0aGUgZmluYWwgbnVtYmVyIHJlY29yZC5cbiAgICAgIGNvbnN0IGFjdGl2ZSA9IGF3YWl0IHRoaXMud2FpdEZvckFjdGl2ZShzZWxlY3RlZC5waG9uZU51bWJlcik7XG4gICAgICBqc29uKGFjdGl2ZSA/PyByZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5mbyhgT3JkZXIgYWNjZXB0ZWQgZm9yICR7Y29sb3JzLmNvZGUoc2VsZWN0ZWQucGhvbmVOdW1iZXIpfSDigJQgcHJvdmlzaW9uaW5nLi4uYCk7XG4gICAgY29uc3QgYWN0aXZlID0gYXdhaXQgdGhpcy53YWl0Rm9yQWN0aXZlKHNlbGVjdGVkLnBob25lTnVtYmVyKTtcblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHN1Y2Nlc3MoXCJOdW1iZXIgaXMgYWN0aXZlXCIsIHtcbiAgICAgICAgbnVtYmVyOiBhY3RpdmUucGhvbmVOdW1iZXIsXG4gICAgICAgIGlkOiBhY3RpdmUuaWQsXG4gICAgICAgIGNvdW50cnk6IGFjdGl2ZS5jb3VudHJ5Q29kZSxcbiAgICAgICAgdHlwZTogYWN0aXZlLnBob25lTnVtYmVyVHlwZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIk51bWJlciBpcyBzdGlsbCBwcm92aXNpb25pbmcuIEl0IHVzdWFsbHkgYWN0aXZhdGVzIHdpdGhpbiBhIGZldyBtaW51dGVzIOKAlCBjaGVjayBgc2VuZGx5IG51bWJlcnMgbGlzdGAuXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHdoaWNoIG51bWJlciB0byBidXkuIElmIC0tbnVtYmVyIGlzIGdpdmVuIHdlIHRydXN0IGl0IChhbmRcbiAgICogc3RpbGwgbmVlZCBpdHMgbW9udGhseUNvc3QsIHNvIHdlIGxvb2sgaXQgdXAgYW1vbmcgYXZhaWxhYmxlIG51bWJlcnMpLlxuICAgKiBPdGhlcndpc2Ugd2Ugc2VhcmNoIGFuZCBwcm9tcHQgdGhlIHVzZXIgdG8gcGljayBvbmUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlc29sdmVOdW1iZXIoZmxhZ3M6IHtcbiAgICBjb3VudHJ5OiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG51bWJlcj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8QXZhaWxhYmxlTnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJGaW5kaW5nIGF2YWlsYWJsZSBudW1iZXJzLi4uXCIpO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIGxldCBhdmFpbGFibGU6IEF2YWlsYWJsZU51bWJlcltdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBhd2FpdCBhcGlDbGllbnQuZ2V0PFNlYXJjaE51bWJlcnNSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9udW1iZXJzL2F2YWlsYWJsZVwiLFxuICAgICAgICB7XG4gICAgICAgICAgY291bnRyeTogZmxhZ3MuY291bnRyeSxcbiAgICAgICAgICB0eXBlOiBmbGFncy50eXBlLFxuICAgICAgICAgIC4uLihmbGFncy5udW1iZXIgJiYgeyBjb250YWluczogZmxhZ3MubnVtYmVyLnJlcGxhY2UoL15cXCsvLCBcIlwiKSB9KSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBhdmFpbGFibGUgPSBzZWFyY2gubnVtYmVycyA/PyBbXTtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5mYWlsKFwiQ291bGQgbm90IGxvYWQgYXZhaWxhYmxlIG51bWJlcnNcIik7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGZsYWdzLm51bWJlcikge1xuICAgICAgY29uc3QgbWF0Y2ggPSBhdmFpbGFibGUuZmluZCgobikgPT4gbi5waG9uZU51bWJlciA9PT0gZmxhZ3MubnVtYmVyKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgZXJyb3IoYCR7ZmxhZ3MubnVtYmVyfSBpcyBub3QgYXZhaWxhYmxlIGZvciBwdXJjaGFzZS5gLCB7XG4gICAgICAgICAgaGludDogYFJ1bjogc2VuZGx5IG51bWJlcnMgc2VhcmNoIC0tY291bnRyeSAke2ZsYWdzLmNvdW50cnl9IC0tdHlwZSAke2ZsYWdzLnR5cGV9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG5cbiAgICBpZiAoYXZhaWxhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaW5mbyhgTm8gYXZhaWxhYmxlIG51bWJlcnMgZm91bmQgZm9yICR7ZmxhZ3MuY291bnRyeX0gKCR7ZmxhZ3MudHlwZX0pLmApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBOb24taW50ZXJhY3RpdmUgKG5vIFRUWSAvIGpzb24pOiB0YWtlIHRoZSBmaXJzdCByZXN1bHQuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSB8fCAhcHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgIHJldHVybiBhdmFpbGFibGVbMF07XG4gICAgfVxuXG4gICAgY29uc3QgeyBjaG9pY2UgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBuYW1lOiBcImNob2ljZVwiLFxuICAgICAgICBtZXNzYWdlOiBgQ2hvb3NlIGEgbnVtYmVyIHRvIGJ1eSAoJHtmbGFncy5jb3VudHJ5fSwgJHtmbGFncy50eXBlfSk6YCxcbiAgICAgICAgY2hvaWNlczogYXZhaWxhYmxlLnNsaWNlKDAsIDI1KS5tYXAoKG4pID0+ICh7XG4gICAgICAgICAgbmFtZTogYCR7bi5waG9uZU51bWJlcn0gIOKAlCAgJHtuLm1vbnRobHlDb3N0fSAke24uY3VycmVuY3l9L21vYCxcbiAgICAgICAgICB2YWx1ZTogbi5waG9uZU51bWJlcixcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHJldHVybiBhdmFpbGFibGUuZmluZCgobikgPT4gbi5waG9uZU51bWJlciA9PT0gY2hvaWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcml2ZSBhIGhvc3RlZCBkb2N1bWVudC11cGxvYWQgLyBwYXltZW50IGFjdGlvbjogcHJpbnQgdGhlIGxpbmsgKyBjb2RlLFxuICAgKiBhdXRvLW9wZW4gaXQsIHdpcmUgcHJlc3MtW2NdLXRvLWNvcHkgLyBbcV0gdG8gY2FuY2VsLCB0aGVuIHBvbGwgdW50aWxcbiAgICogdGhlIGFjdGlvbiBjb21wbGV0ZXMgKHJlc29sdmVzIHRydWUpIG9yIGV4cGlyZXMgKHJlc29sdmVzIGZhbHNlKS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcnVuSG9zdGVkQWN0aW9uKFxuICAgIGtpbmQ6IFwiZG9jdW1lbnRzX3JlcXVpcmVkXCIgfCBcInBheW1lbnRfcmVxdWlyZWRcIixcbiAgICBhY3Rpb246IEJ1eUFjdGlvbixcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbGFiZWwgPVxuICAgICAga2luZCA9PT0gXCJwYXltZW50X3JlcXVpcmVkXCIgPyBcIlBheW1lbnQgcmVxdWlyZWRcIiA6IFwiRG9jdW1lbnRzIHJlcXVpcmVkXCI7XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKGxhYmVsKSk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGtpbmQgPT09IFwicGF5bWVudF9yZXF1aXJlZFwiXG4gICAgICAgID8gXCJUaGlzIG51bWJlciBuZWVkcyBhIHBheW1lbnQgdG8gY29tcGxldGUuIE9wZW4gdGhpcyBzZWN1cmUgcGFnZTpcIlxuICAgICAgICA6IFwiVGhpcyBudW1iZXIgbmVlZHMgZG9jdW1lbnRzIGJlZm9yZSBpdCBjYW4gYmUgYWN0aXZhdGVkLiBPcGVuIHRoaXMgc2VjdXJlIHBhZ2U6XCIsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMucHJpbWFyeShgICAke2FjdGlvbi51cmx9YCkpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coXCJDb25maXJtYXRpb24gY29kZSAoc2hvd24gc28geW91IGNhbiB2ZXJpZnkgdGhpcyBpcyB5b3VyIHNlc3Npb24pOlwiKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChjb2xvcnMucHJpbWFyeShgICAke2FjdGlvbi5jb2RlfWApKSk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBvcGVuKGFjdGlvbi51cmwpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkJyb3dzZXIgb3BlbmVkIGF1dG9tYXRpY2FsbHlcIikpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIlBsZWFzZSBvcGVuIHRoZSBVUkwgbWFudWFsbHlcIikpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleXByZXNzQ2xlYW51cCA9IGF0dGFjaExvZ2luS2V5cHJlc3NIYW5kbGVyKGFjdGlvbi51cmwpO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIldhaXRpbmcgZm9yIHlvdSB0byBmaW5pc2ggb24gdGhlIHNlY3VyZSBwYWdlLi4uXCIpO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIGxldCBhdHRlbXB0cyA9IDA7XG4gICAgd2hpbGUgKGF0dGVtcHRzIDwgQUNUSU9OX01BWF9BVFRFTVBUUykge1xuICAgICAgYXdhaXQgc2xlZXAoQUNUSU9OX1BPTExfSU5URVJWQUwpO1xuICAgICAgYXR0ZW1wdHMrKztcblxuICAgICAgbGV0IHN0YXR1czogQWN0aW9uU3RhdHVzUmVzcG9uc2U7XG4gICAgICB0cnkge1xuICAgICAgICBzdGF0dXMgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PEFjdGlvblN0YXR1c1Jlc3BvbnNlPihcbiAgICAgICAgICBgL2FwaS9jbGkvYWN0aW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFjdGlvbi5hY3Rpb25Db2RlKX1gLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgLy8gVGhlIGFjdGlvbiBpcyBnb25lIChleHBpcmVkL2NsZWFuZWQgdXApIOKAlCB0ZXJtaW5hbCwgbm90IHRyYW5zaWVudC5cbiAgICAgICAgICBzcGluLmZhaWwoXCJUaGlzIHN0ZXAgZXhwaXJlZFwiKTtcbiAgICAgICAgICBrZXlwcmVzc0NsZWFudXAoKTtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJUaGUgc2VjdXJlIHBhZ2UgZXhwaXJlZCBiZWZvcmUgaXQgd2FzIGNvbXBsZXRlZC4gUmUtcnVuIGBzZW5kbHkgbnVtYmVycyBidXlgIHRvIHN0YXJ0IG92ZXIuXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJhbnNpZW50IGVycm9yIOKAlCBrZWVwIHBvbGxpbmcuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gXCJjb21wbGV0ZWRcIikge1xuICAgICAgICBzcGluLnN1Y2NlZWQoXCJDb21wbGV0ZWRcIik7XG4gICAgICAgIGtleXByZXNzQ2xlYW51cCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1cy5zdGF0dXMgPT09IFwiZXhwaXJlZFwiKSB7XG4gICAgICAgIHNwaW4uZmFpbChcIlRoaXMgc3RlcCBleHBpcmVkXCIpO1xuICAgICAgICBrZXlwcmVzc0NsZWFudXAoKTtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIlRoZSBzZWN1cmUgcGFnZSBleHBpcmVkIGJlZm9yZSBpdCB3YXMgY29tcGxldGVkLiBSZS1ydW4gYHNlbmRseSBudW1iZXJzIGJ1eWAgdG8gc3RhcnQgb3Zlci5cIixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gcGVuZGluZyAvIGF1dGhvcml6ZWQg4oCUIGtlZXAgcG9sbGluZ1xuICAgIH1cblxuICAgIHNwaW4uZmFpbChcIlRpbWVkIG91dCB3YWl0aW5nIGZvciBjb21wbGV0aW9uXCIpO1xuICAgIGtleXByZXNzQ2xlYW51cCgpO1xuICAgIHdhcm4oXG4gICAgICBcIldlIHN0b3BwZWQgd2FpdGluZy4gSWYgeW91IGZpbmlzaGVkIG9uIHRoZSBwYWdlLCByZS1ydW4gYHNlbmRseSBudW1iZXJzIGJ1eWAgYW5kIHdlJ2xsIHBpY2sgdXAgd2hlcmUgeW91IGxlZnQgb2ZmLlwiLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvbGwgdGhlIG93bmVkLW51bWJlcnMgbGlzdCB1bnRpbCB0aGUganVzdC1vcmRlcmVkIG51bWJlciByZXBvcnRzXG4gICAqIGBhY3RpdmVgLiBSZXR1cm5zIHRoZSBhY3RpdmUgcmVjb3JkLCBvciB1bmRlZmluZWQgaWYgaXQgaGFzbid0XG4gICAqIGFjdGl2YXRlZCB3aXRoaW4gdGhlIHBvbGxpbmcgd2luZG93LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQWN0aXZlKFxuICAgIHBob25lTnVtYmVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8T3duZWROdW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkFjdGl2YXRpbmcgbnVtYmVyLi4uXCIpO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIGxldCBhdHRlbXB0cyA9IDA7XG4gICAgd2hpbGUgKGF0dGVtcHRzIDwgUFJPVklTSU9OX01BWF9BVFRFTVBUUykge1xuICAgICAgbGV0IGxpc3Q6IExpc3ROdW1iZXJzUmVzcG9uc2U7XG4gICAgICB0cnkge1xuICAgICAgICBsaXN0ID0gYXdhaXQgYXBpQ2xpZW50LmdldDxMaXN0TnVtYmVyc1Jlc3BvbnNlPihcIi9hcGkvdjEvbnVtYmVyc1wiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBhd2FpdCBzbGVlcChQUk9WSVNJT05fUE9MTF9JTlRFUlZBTCk7XG4gICAgICAgIGF0dGVtcHRzKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3VuZCA9IChsaXN0Lm51bWJlcnMgPz8gW10pLmZpbmQoXG4gICAgICAgIChuKSA9PiBuLnBob25lTnVtYmVyID09PSBwaG9uZU51bWJlcixcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmQgJiYgZm91bmQuc3RhdHVzID09PSBcImFjdGl2ZVwiKSB7XG4gICAgICAgIHNwaW4uc3VjY2VlZChcIkFjdGl2ZVwiKTtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBzbGVlcChQUk9WSVNJT05fUE9MTF9JTlRFUlZBTCk7XG4gICAgICBhdHRlbXB0cysrO1xuICAgIH1cblxuICAgIHNwaW4uc3RvcCgpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL251bWJlcnMvYnV5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksRUFDSixJQUFJLEVBQ0osS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUE2RG5FLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtBQUMvQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxDQUFDLGNBQWM7QUFDL0MsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZO0FBQ2xELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYTtBQUVoRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFXLFNBQVEsb0JBQW9CO0lBQzFELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLGdHQUFnRyxDQUFDO0lBRW5HLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMERBQTBEO1FB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LENBQUMsQ0FBQztnQkFDckMsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsU0FBUztZQUNYLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQ3JDLENBQUM7WUFDRixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IG9wZW4gZnJvbSBcIm9wZW5cIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCwgTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgaW5mbyxcbiAgd2FybixcbiAgZXJyb3IsXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IGF0dGFjaExvZ2luS2V5cHJlc3NIYW5kbGVyIH0gZnJvbSBcIi4uLy4uL2xpYi9rZXlwcmVzcy5qc1wiO1xuXG5pbnRlcmZhY2UgQXZhaWxhYmxlTnVtYmVyIHtcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBudW1iZXJUeXBlOiBzdHJpbmc7XG4gIG1vbnRobHlDb3N0OiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTZWFyY2hOdW1iZXJzUmVzcG9uc2Uge1xuICBudW1iZXJzOiBBdmFpbGFibGVOdW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIEJ1eUFjdGlvbiB7XG4gIHVybDogc3RyaW5nO1xuICAvLyBhY3Rpb25Db2RlICgzMi1oZXgpIGlkZW50aWZpZXMgdGhlIGFjdGlvbiDigJQgdXNlZCB0byBQT0xMIGFuZCB0byBSRS1CVVkuXG4gIGFjdGlvbkNvZGU6IHN0cmluZztcbiAgLy8gY29kZSAoOC1jaGFyIHVzZXJDb2RlKSBpcyBzaG93biB0byB0aGUgaHVtYW4gdG8gdHlwZSBvbiB0aGUgaG9zdGVkIHBhZ2VcbiAgLy8gdG8gcHJvdmUgdGVybWluYWwgYWNjZXNzLiBESVNQTEFZIG9ubHkg4oCUIG5ldmVyIHVzZWQgYXMgYWN0aW9uQ29kZS5cbiAgY29kZTogc3RyaW5nO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE93bmVkTnVtYmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBjb3VudHJ5Q29kZTogc3RyaW5nO1xuICBwaG9uZU51bWJlclR5cGU6IHN0cmluZztcbiAgbW9udGhseUNvc3RDZW50czogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQnV5UmVzcG9uc2Uge1xuICBzdGF0dXM6XG4gICAgfCBcInByb3Zpc2lvbmluZ1wiXG4gICAgfCBcImRvY3VtZW50c19yZXF1aXJlZFwiXG4gICAgfCBcInVuZGVyX3Jldmlld1wiXG4gICAgfCBcInBheW1lbnRfcmVxdWlyZWRcIjtcbiAgbnVtYmVyPzogT3duZWROdW1iZXI7XG4gIHJlcXVpcmVtZW50cz86IHVua25vd247XG4gIGFjdGlvbj86IEJ1eUFjdGlvbjtcbiAgLy8gVVMgbG9jYWwgbnVtYmVycyBsYW5kIG93bmVkLWJ1dC11bnJlZ2lzdGVyZWQ6IHRoZXkgcmVhY2ggc3RhdHVzIFwiYWN0aXZlXCJcbiAgLy8gYXQgdGhlIGNhcnJpZXIgYnV0IHRoZSBzZW5kLWdhdGUgYmxvY2tzIHRoZW0gdW50aWwgdGhleSdyZSBhc3NpZ25lZCB0byBhXG4gIC8vIHJlZ2lzdGVyZWQgMTBETEMgY2FtcGFpZ24uIFRoZSBzZXJ2ZXIgZmxhZ3MgdGhhdCBoZXJlIHNvIHdlIGRvbid0IHRlbGwgdGhlXG4gIC8vIHVzZXIgYSBkZWFkIG51bWJlciBpcyByZWFkeS5cbiAgcmVnaXN0cmF0aW9uUmVxdWlyZWQ/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgTGlzdE51bWJlcnNSZXNwb25zZSB7XG4gIG51bWJlcnM6IE93bmVkTnVtYmVyW107XG59XG5cbmludGVyZmFjZSBBY3Rpb25TdGF0dXNSZXNwb25zZSB7XG4gIHN0YXR1czogXCJwZW5kaW5nXCIgfCBcImF1dGhvcml6ZWRcIiB8IFwiY29tcGxldGVkXCIgfCBcImV4cGlyZWRcIjtcbiAgYWN0aW9uVHlwZTogc3RyaW5nO1xuICByZXN1bHQ/OiB1bmtub3duO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbn1cblxuY29uc3QgQUNUSU9OX1BPTExfSU5URVJWQUwgPSAyMDAwOyAvLyAyIHNlY29uZHNcbmNvbnN0IEFDVElPTl9NQVhfQVRURU1QVFMgPSA2MDA7IC8vIH4yMCBtaW51dGVzXG5jb25zdCBQUk9WSVNJT05fUE9MTF9JTlRFUlZBTCA9IDMwMDA7IC8vIDMgc2Vjb25kc1xuY29uc3QgUFJPVklTSU9OX01BWF9BVFRFTVBUUyA9IDYwOyAvLyB+MyBtaW51dGVzXG5cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnNCdXkgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJCdXkgYSBwaG9uZSBudW1iZXIuIEhhbmRsZXMgZG9jdW1lbnQvcGF5bWVudCBzdGVwcyBpbnRlcmFjdGl2ZWx5IHdoZW4gYSBjb3VudHJ5IHJlcXVpcmVzIHRoZW0uXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbnVtYmVycyBidXkgLS1jb3VudHJ5IEdCIC0tdHlwZSBtb2JpbGVcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IG51bWJlcnMgYnV5IC0tY291bnRyeSBVUyAtLXR5cGUgbG9jYWwgLS1udW1iZXIgKzE1NTUxMjM0NTY3XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBudW1iZXJzIGJ1eSAtLWNvdW50cnkgR0IgLS10eXBlIG1vYmlsZSAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIGNvdW50cnk6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIklTTyBjb3VudHJ5IGNvZGUgKGUuZy4gR0IsIFVTKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwidFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIHR5cGUgKGUuZy4gbW9iaWxlLCBsb2NhbCwgdG9sbC1mcmVlKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgbnVtYmVyOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJuXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTcGVjaWZpYyBudW1iZXIgdG8gYnV5IGluIEUuMTY0IGZvcm1hdCAoc2tpcHMgc2VsZWN0aW9uKVwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKE51bWJlcnNCdXkpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBhd2FpdCB0aGlzLnJlc29sdmVOdW1iZXIoZmxhZ3MpO1xuICAgIGlmICghc2VsZWN0ZWQpIHJldHVybjtcblxuICAgIC8vIFRoZSBidXkgYm9keSBpcyByZXVzZWQgdmVyYmF0aW0gYWNyb3NzIGV2ZXJ5IHJlLVBPU1Q7IG9ubHkgYWN0aW9uQ29kZVxuICAgIC8vIGlzIGFkZGVkIG9uY2UgYSBob3N0ZWQgYWN0aW9uIChkb2NzL3BheW1lbnQpIGhhcyBjb21wbGV0ZWQuXG4gICAgY29uc3QgYnV5Qm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBwaG9uZU51bWJlcjogc2VsZWN0ZWQucGhvbmVOdW1iZXIsXG4gICAgICBjb3VudHJ5Q29kZTogZmxhZ3MuY291bnRyeSxcbiAgICAgIHBob25lTnVtYmVyVHlwZTogZmxhZ3MudHlwZSxcbiAgICAgIG1vbnRobHlDb3N0OiBzZWxlY3RlZC5tb250aGx5Q29zdCxcbiAgICB9O1xuXG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8QnV5UmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL251bWJlcnMvYnV5XCIsXG4gICAgICBidXlCb2R5LFxuICAgICk7XG5cbiAgICAvLyBEcml2ZSB0aGUgYWN0aW9uIGxvb3AgdW50aWwgdGhlIGNhcnJpZXIgYWNjZXB0cyB0aGUgb3JkZXIgKHByb3Zpc2lvbmluZykuXG4gICAgd2hpbGUgKFxuICAgICAgcmVzcG9uc2Uuc3RhdHVzID09PSBcImRvY3VtZW50c19yZXF1aXJlZFwiIHx8XG4gICAgICByZXNwb25zZS5zdGF0dXMgPT09IFwicGF5bWVudF9yZXF1aXJlZFwiXG4gICAgKSB7XG4gICAgICBjb25zdCBhY3Rpb24gPSByZXNwb25zZS5hY3Rpb247XG4gICAgICBpZiAoIWFjdGlvbikge1xuICAgICAgICAvLyBCYWNrZW5kIHNheXMgZG9jcy9wYXltZW50IHJlcXVpcmVkIGJ1dCBnYXZlIHVzIG5vd2hlcmUgdG8gc2VuZCB0aGVcbiAgICAgICAgLy8gdXNlciDigJQgbm90aGluZyB0aGUgQ0xJIGNhbiBkby5cbiAgICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlcnJvcihcbiAgICAgICAgICBgVGhpcyBudW1iZXIgbmVlZHMgJHtyZXNwb25zZS5zdGF0dXMgPT09IFwicGF5bWVudF9yZXF1aXJlZFwiID8gXCJwYXltZW50XCIgOiBcImRvY3VtZW50c1wifSBidXQgbm8gYWN0aW9uIGxpbmsgd2FzIHJldHVybmVkLmAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaGludDogXCJUcnkgYWdhaW4sIG9yIGNvbXBsZXRlIHRoaXMgbnVtYmVyIGZyb20gdGhlIFNlbmRseSBkYXNoYm9hcmQuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIC8vIE5vbi1pbnRlcmFjdGl2ZTogc3VyZmFjZSB0aGUgYWN0aW9uIHNvIHRoZSBjYWxsZXIgY2FuIGRyaXZlIGl0LlxuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21wbGV0ZWQgPSBhd2FpdCB0aGlzLnJ1bkhvc3RlZEFjdGlvbihyZXNwb25zZS5zdGF0dXMsIGFjdGlvbik7XG4gICAgICBpZiAoIWNvbXBsZXRlZCkgcmV0dXJuOyAvLyBleHBpcmVkIC8gY2FuY2VsbGVkIOKAlCBhbHJlYWR5IG1lc3NhZ2VkXG5cbiAgICAgIC8vIFJlLWJ1eSB3aXRoIHRoZSBhY3Rpb24gaWRlbnRpZmllciAoYWN0aW9uQ29kZSksIE5PVCB0aGUgZGlzcGxheSB1c2VyQ29kZS5cbiAgICAgIGJ1eUJvZHkuYWN0aW9uQ29kZSA9IGFjdGlvbi5hY3Rpb25Db2RlO1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCdXlSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9udW1iZXJzL2J1eVwiLFxuICAgICAgICBidXlCb2R5LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEb2N1bWVudC1yZXF1aXJlZCBjb3VudHJ5OiBkZXRhaWxzIHN1Ym1pdHRlZCwgbnVtYmVyIHJlc2VydmVkICsgdW5kZXJcbiAgICAvLyByZXZpZXcuIE5vIGNhcnJpZXIgb3JkZXIgaXMgcGxhY2VkIHVudGlsIG91ciB0ZWFtIHZlcmlmaWVzICsgcmVnaXN0ZXJzXG4gICAgLy8gaXQsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBwb2xsIGZvciBoZXJlLlxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IFwidW5kZXJfcmV2aWV3XCIpIHtcbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN1Y2Nlc3MoXCJOdW1iZXIgcmVzZXJ2ZWQg4oCUIHlvdXIgZGV0YWlscyBhcmUgdW5kZXIgcmV2aWV3XCIsIHtcbiAgICAgICAgbnVtYmVyOiByZXNwb25zZS5udW1iZXI/LnBob25lTnVtYmVyLFxuICAgICAgICBub3RlOiBcIldlIHZlcmlmeSB5b3VyIGRvY3VtZW50cyBhbmQgcmVnaXN0ZXIgdGhlIG51bWJlciwgdXN1YWxseSB3aXRoaW4gYSBmZXcgYnVzaW5lc3MgZGF5cy4gSXQgY2FuJ3Qgc2VuZCB1bnRpbCBpdCdzIGFjdGl2ZSDigJQgY2hlY2sgYHNlbmRseSBudW1iZXJzIGxpc3RgLlwiLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc3RhdHVzID09PSBcInByb3Zpc2lvbmluZ1wiXG4gICAgY29uc3QgcmVnaXN0cmF0aW9uUmVxdWlyZWQgPSByZXNwb25zZS5yZWdpc3RyYXRpb25SZXF1aXJlZCA9PT0gdHJ1ZTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIC8vIFdhaXQgZm9yIGFjdGl2YXRpb24gdGhlbiBlbWl0IHRoZSBmaW5hbCBudW1iZXIgcmVjb3JkLCBwcmVzZXJ2aW5nIHRoZVxuICAgICAgLy8gcmVnaXN0cmF0aW9uIHNpZ25hbCBzbyBhbiBhdXRvbWF0ZWQgY2FsbGVyIGtub3dzIHRoZSBudW1iZXIgY2FuJ3Qgc2VuZFxuICAgICAgLy8gdW50aWwgaXQncyBhc3NpZ25lZCB0byBhIDEwRExDIGNhbXBhaWduLlxuICAgICAgY29uc3QgYWN0aXZlID0gYXdhaXQgdGhpcy53YWl0Rm9yQWN0aXZlKHNlbGVjdGVkLnBob25lTnVtYmVyKTtcbiAgICAgIGpzb24oYWN0aXZlID8geyAuLi5hY3RpdmUsIHJlZ2lzdHJhdGlvblJlcXVpcmVkIH0gOiByZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5mbyhgT3JkZXIgYWNjZXB0ZWQgZm9yICR7Y29sb3JzLmNvZGUoc2VsZWN0ZWQucGhvbmVOdW1iZXIpfSDigJQgcHJvdmlzaW9uaW5nLi4uYCk7XG4gICAgY29uc3QgYWN0aXZlID0gYXdhaXQgdGhpcy53YWl0Rm9yQWN0aXZlKHNlbGVjdGVkLnBob25lTnVtYmVyKTtcblxuICAgIGlmIChhY3RpdmUgJiYgcmVnaXN0cmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHN1Y2Nlc3MoXCJOdW1iZXIgaXMgYWN0aXZlIOKAlCBidXQgbm90IHlldCBhYmxlIHRvIHNlbmRcIiwge1xuICAgICAgICBudW1iZXI6IGFjdGl2ZS5waG9uZU51bWJlcixcbiAgICAgICAgaWQ6IGFjdGl2ZS5pZCxcbiAgICAgICAgY291bnRyeTogYWN0aXZlLmNvdW50cnlDb2RlLFxuICAgICAgICB0eXBlOiBhY3RpdmUucGhvbmVOdW1iZXJUeXBlLFxuICAgICAgICBub3RlOiBcIkEgVVMgbG9jYWwgbnVtYmVyIG11c3QgYmUgYXNzaWduZWQgdG8gYSByZWdpc3RlcmVkIDEwRExDIGNhbXBhaWduIGJlZm9yZSBpdCBjYW4gc2VuZC4gU2V0IG9uZSB1cCB3aXRoIGBzZW5kbHkgMTBkbGNgLCB0aGVuIGFzc2lnbiB0aGlzIG51bWJlci5cIixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYWN0aXZlKSB7XG4gICAgICBzdWNjZXNzKFwiTnVtYmVyIGlzIGFjdGl2ZVwiLCB7XG4gICAgICAgIG51bWJlcjogYWN0aXZlLnBob25lTnVtYmVyLFxuICAgICAgICBpZDogYWN0aXZlLmlkLFxuICAgICAgICBjb3VudHJ5OiBhY3RpdmUuY291bnRyeUNvZGUsXG4gICAgICAgIHR5cGU6IGFjdGl2ZS5waG9uZU51bWJlclR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIk51bWJlciBvcmRlcmVkLiBPbmNlIGFjdGl2ZSBpdCBzdGlsbCBjYW4ndCBzZW5kIHVudGlsIGl0J3MgYXNzaWduZWQgdG8gYSByZWdpc3RlcmVkIDEwRExDIGNhbXBhaWduIOKAlCBzZXQgb25lIHVwIHdpdGggYHNlbmRseSAxMGRsY2AsIHRoZW4gY2hlY2sgYHNlbmRseSBudW1iZXJzIGxpc3RgLlwiLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2FybihcbiAgICAgICAgXCJOdW1iZXIgaXMgc3RpbGwgcHJvdmlzaW9uaW5nLiBJdCB1c3VhbGx5IGFjdGl2YXRlcyB3aXRoaW4gYSBmZXcgbWludXRlcyDigJQgY2hlY2sgYHNlbmRseSBudW1iZXJzIGxpc3RgLlwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB3aGljaCBudW1iZXIgdG8gYnV5LiBJZiAtLW51bWJlciBpcyBnaXZlbiB3ZSB0cnVzdCBpdCAoYW5kXG4gICAqIHN0aWxsIG5lZWQgaXRzIG1vbnRobHlDb3N0LCBzbyB3ZSBsb29rIGl0IHVwIGFtb25nIGF2YWlsYWJsZSBudW1iZXJzKS5cbiAgICogT3RoZXJ3aXNlIHdlIHNlYXJjaCBhbmQgcHJvbXB0IHRoZSB1c2VyIHRvIHBpY2sgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXNvbHZlTnVtYmVyKGZsYWdzOiB7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBudW1iZXI/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPEF2YWlsYWJsZU51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiRmluZGluZyBhdmFpbGFibGUgbnVtYmVycy4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICBsZXQgYXZhaWxhYmxlOiBBdmFpbGFibGVOdW1iZXJbXTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2VhcmNoID0gYXdhaXQgYXBpQ2xpZW50LmdldDxTZWFyY2hOdW1iZXJzUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbnVtYmVycy9hdmFpbGFibGVcIixcbiAgICAgICAge1xuICAgICAgICAgIGNvdW50cnk6IGZsYWdzLmNvdW50cnksXG4gICAgICAgICAgdHlwZTogZmxhZ3MudHlwZSxcbiAgICAgICAgICAuLi4oZmxhZ3MubnVtYmVyICYmIHsgY29udGFpbnM6IGZsYWdzLm51bWJlci5yZXBsYWNlKC9eXFwrLywgXCJcIikgfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgYXZhaWxhYmxlID0gc2VhcmNoLm51bWJlcnMgPz8gW107XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uZmFpbChcIkNvdWxkIG5vdCBsb2FkIGF2YWlsYWJsZSBudW1iZXJzXCIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlmIChmbGFncy5udW1iZXIpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gYXZhaWxhYmxlLmZpbmQoKG4pID0+IG4ucGhvbmVOdW1iZXIgPT09IGZsYWdzLm51bWJlcik7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIGVycm9yKGAke2ZsYWdzLm51bWJlcn0gaXMgbm90IGF2YWlsYWJsZSBmb3IgcHVyY2hhc2UuYCwge1xuICAgICAgICAgIGhpbnQ6IGBSdW46IHNlbmRseSBudW1iZXJzIHNlYXJjaCAtLWNvdW50cnkgJHtmbGFncy5jb3VudHJ5fSAtLXR5cGUgJHtmbGFncy50eXBlfWAsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuXG4gICAgaWYgKGF2YWlsYWJsZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oYE5vIGF2YWlsYWJsZSBudW1iZXJzIGZvdW5kIGZvciAke2ZsYWdzLmNvdW50cnl9ICgke2ZsYWdzLnR5cGV9KS5gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gTm9uLWludGVyYWN0aXZlIChubyBUVFkgLyBqc29uKTogdGFrZSB0aGUgZmlyc3QgcmVzdWx0LlxuICAgIGlmIChpc0pzb25Nb2RlKCkgfHwgIXByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgICByZXR1cm4gYXZhaWxhYmxlWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY2hvaWNlIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgbmFtZTogXCJjaG9pY2VcIixcbiAgICAgICAgbWVzc2FnZTogYENob29zZSBhIG51bWJlciB0byBidXkgKCR7ZmxhZ3MuY291bnRyeX0sICR7ZmxhZ3MudHlwZX0pOmAsXG4gICAgICAgIGNob2ljZXM6IGF2YWlsYWJsZS5zbGljZSgwLCAyNSkubWFwKChuKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGAke24ucGhvbmVOdW1iZXJ9ICDigJQgICR7bi5tb250aGx5Q29zdH0gJHtuLmN1cnJlbmN5fS9tb2AsXG4gICAgICAgICAgdmFsdWU6IG4ucGhvbmVOdW1iZXIsXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlLmZpbmQoKG4pID0+IG4ucGhvbmVOdW1iZXIgPT09IGNob2ljZSk7XG4gIH1cblxuICAvKipcbiAgICogRHJpdmUgYSBob3N0ZWQgZG9jdW1lbnQtdXBsb2FkIC8gcGF5bWVudCBhY3Rpb246IHByaW50IHRoZSBsaW5rICsgY29kZSxcbiAgICogYXV0by1vcGVuIGl0LCB3aXJlIHByZXNzLVtjXS10by1jb3B5IC8gW3FdIHRvIGNhbmNlbCwgdGhlbiBwb2xsIHVudGlsXG4gICAqIHRoZSBhY3Rpb24gY29tcGxldGVzIChyZXNvbHZlcyB0cnVlKSBvciBleHBpcmVzIChyZXNvbHZlcyBmYWxzZSkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJ1bkhvc3RlZEFjdGlvbihcbiAgICBraW5kOiBcImRvY3VtZW50c19yZXF1aXJlZFwiIHwgXCJwYXltZW50X3JlcXVpcmVkXCIsXG4gICAgYWN0aW9uOiBCdXlBY3Rpb24sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGxhYmVsID1cbiAgICAgIGtpbmQgPT09IFwicGF5bWVudF9yZXF1aXJlZFwiID8gXCJQYXltZW50IHJlcXVpcmVkXCIgOiBcIkRvY3VtZW50cyByZXF1aXJlZFwiO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChsYWJlbCkpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBraW5kID09PSBcInBheW1lbnRfcmVxdWlyZWRcIlxuICAgICAgICA/IFwiVGhpcyBudW1iZXIgbmVlZHMgYSBwYXltZW50IHRvIGNvbXBsZXRlLiBPcGVuIHRoaXMgc2VjdXJlIHBhZ2U6XCJcbiAgICAgICAgOiBcIlRoaXMgbnVtYmVyIG5lZWRzIGRvY3VtZW50cyBiZWZvcmUgaXQgY2FuIGJlIGFjdGl2YXRlZC4gT3BlbiB0aGlzIHNlY3VyZSBwYWdlOlwiLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLnByaW1hcnkoYCAgJHthY3Rpb24udXJsfWApKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKFwiQ29uZmlybWF0aW9uIGNvZGUgKHNob3duIHNvIHlvdSBjYW4gdmVyaWZ5IHRoaXMgaXMgeW91ciBzZXNzaW9uKTpcIik7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoY29sb3JzLnByaW1hcnkoYCAgJHthY3Rpb24uY29kZX1gKSkpO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgb3BlbihhY3Rpb24udXJsKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJCcm93c2VyIG9wZW5lZCBhdXRvbWF0aWNhbGx5XCIpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJQbGVhc2Ugb3BlbiB0aGUgVVJMIG1hbnVhbGx5XCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlwcmVzc0NsZWFudXAgPSBhdHRhY2hMb2dpbktleXByZXNzSGFuZGxlcihhY3Rpb24udXJsKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJXYWl0aW5nIGZvciB5b3UgdG8gZmluaXNoIG9uIHRoZSBzZWN1cmUgcGFnZS4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChhdHRlbXB0cyA8IEFDVElPTl9NQVhfQVRURU1QVFMpIHtcbiAgICAgIGF3YWl0IHNsZWVwKEFDVElPTl9QT0xMX0lOVEVSVkFMKTtcbiAgICAgIGF0dGVtcHRzKys7XG5cbiAgICAgIGxldCBzdGF0dXM6IEFjdGlvblN0YXR1c1Jlc3BvbnNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzID0gYXdhaXQgYXBpQ2xpZW50LmdldDxBY3Rpb25TdGF0dXNSZXNwb25zZT4oXG4gICAgICAgICAgYC9hcGkvY2xpL2FjdGlvbi8ke2VuY29kZVVSSUNvbXBvbmVudChhY3Rpb24uYWN0aW9uQ29kZSl9YCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikge1xuICAgICAgICAgIC8vIFRoZSBhY3Rpb24gaXMgZ29uZSAoZXhwaXJlZC9jbGVhbmVkIHVwKSDigJQgdGVybWluYWwsIG5vdCB0cmFuc2llbnQuXG4gICAgICAgICAgc3Bpbi5mYWlsKFwiVGhpcyBzdGVwIGV4cGlyZWRcIik7XG4gICAgICAgICAga2V5cHJlc3NDbGVhbnVwKCk7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiVGhlIHNlY3VyZSBwYWdlIGV4cGlyZWQgYmVmb3JlIGl0IHdhcyBjb21wbGV0ZWQuIFJlLXJ1biBgc2VuZGx5IG51bWJlcnMgYnV5YCB0byBzdGFydCBvdmVyLlwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRyYW5zaWVudCBlcnJvciDigJQga2VlcCBwb2xsaW5nLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1cy5zdGF0dXMgPT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgc3Bpbi5zdWNjZWVkKFwiQ29tcGxldGVkXCIpO1xuICAgICAgICBrZXlwcmVzc0NsZWFudXAoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0dXMuc3RhdHVzID09PSBcImV4cGlyZWRcIikge1xuICAgICAgICBzcGluLmZhaWwoXCJUaGlzIHN0ZXAgZXhwaXJlZFwiKTtcbiAgICAgICAga2V5cHJlc3NDbGVhbnVwKCk7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJUaGUgc2VjdXJlIHBhZ2UgZXhwaXJlZCBiZWZvcmUgaXQgd2FzIGNvbXBsZXRlZC4gUmUtcnVuIGBzZW5kbHkgbnVtYmVycyBidXlgIHRvIHN0YXJ0IG92ZXIuXCIsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIHBlbmRpbmcgLyBhdXRob3JpemVkIOKAlCBrZWVwIHBvbGxpbmdcbiAgICB9XG5cbiAgICBzcGluLmZhaWwoXCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgY29tcGxldGlvblwiKTtcbiAgICBrZXlwcmVzc0NsZWFudXAoKTtcbiAgICB3YXJuKFxuICAgICAgXCJXZSBzdG9wcGVkIHdhaXRpbmcuIElmIHlvdSBmaW5pc2hlZCBvbiB0aGUgcGFnZSwgcmUtcnVuIGBzZW5kbHkgbnVtYmVycyBidXlgIGFuZCB3ZSdsbCBwaWNrIHVwIHdoZXJlIHlvdSBsZWZ0IG9mZi5cIixcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb2xsIHRoZSBvd25lZC1udW1iZXJzIGxpc3QgdW50aWwgdGhlIGp1c3Qtb3JkZXJlZCBudW1iZXIgcmVwb3J0c1xuICAgKiBgYWN0aXZlYC4gUmV0dXJucyB0aGUgYWN0aXZlIHJlY29yZCwgb3IgdW5kZWZpbmVkIGlmIGl0IGhhc24ndFxuICAgKiBhY3RpdmF0ZWQgd2l0aGluIHRoZSBwb2xsaW5nIHdpbmRvdy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckFjdGl2ZShcbiAgICBwaG9uZU51bWJlcjogc3RyaW5nLFxuICApOiBQcm9taXNlPE93bmVkTnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJBY3RpdmF0aW5nIG51bWJlci4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChhdHRlbXB0cyA8IFBST1ZJU0lPTl9NQVhfQVRURU1QVFMpIHtcbiAgICAgIGxldCBsaXN0OiBMaXN0TnVtYmVyc1Jlc3BvbnNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGlzdCA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8TGlzdE51bWJlcnNSZXNwb25zZT4oXCIvYXBpL3YxL251bWJlcnNcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgYXdhaXQgc2xlZXAoUFJPVklTSU9OX1BPTExfSU5URVJWQUwpO1xuICAgICAgICBhdHRlbXB0cysrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmQgPSAobGlzdC5udW1iZXJzID8/IFtdKS5maW5kKFxuICAgICAgICAobikgPT4gbi5waG9uZU51bWJlciA9PT0gcGhvbmVOdW1iZXIsXG4gICAgICApO1xuICAgICAgaWYgKGZvdW5kICYmIGZvdW5kLnN0YXR1cyA9PT0gXCJhY3RpdmVcIikge1xuICAgICAgICBzcGluLnN1Y2NlZWQoXCJBY3RpdmVcIik7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2xlZXAoUFJPVklTSU9OX1BPTExfSU5URVJWQUwpO1xuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9XG5cbiAgICBzcGluLnN0b3AoKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
2
+ export default class RcsAgentsCreate extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "from-json": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ "test-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ "test-message-id": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ "testing-info": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "company-overview": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ "agent-overview": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ "campaign-info": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
14
+ interaction: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
15
+ "message-example": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
16
+ "opt-in-method": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
17
+ "call-to-action": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
18
+ "call-to-action-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
19
+ "call-to-action-media-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
20
+ "double-opt-in": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
21
+ "double-opt-in-message": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
22
+ "opt-in-message": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
23
+ "help-response": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
24
+ "opt-out-response": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
25
+ "display-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
26
+ "use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
27
+ description: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
28
+ "logo-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
29
+ "hero-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
30
+ "brand-color": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
31
+ "privacy-policy-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
32
+ "terms-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
33
+ phone: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
34
+ "phone-label": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
35
+ website: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
36
+ "website-label": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
37
+ email: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
38
+ "email-label": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
39
+ brand: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
40
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
41
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
42
+ };
43
+ run(): Promise<void>;
44
+ }
@@ -0,0 +1,71 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
3
+ import { apiClient } from "../../../lib/api-client.js";
4
+ import { json, success, error, colors, spinner, isJsonMode, } from "../../../lib/output.js";
5
+ import { AGENT_BASICS_FLAGS, AGENT_CAMPAIGN_FLAGS, AGENT_TESTING_FLAGS, buildAgentBody, idempotencyKeyFlag, nextStepFor, printAgent, printNextSteps, reportRcsError, } from "../../../lib/rcs-registration.js";
6
+ export default class RcsAgentsCreate extends AuthenticatedCommand {
7
+ static description = "Draft the RCS agent for a brand (step 2; logo, hero, and call-to-action media must already be public https:// URLs)";
8
+ static examples = [
9
+ '<%= config.bin %> rcs agents create --brand 3f6a1c9e-0000-0000-0000-000000000000 --display-name "Acme" --use-case TRANSACTIONAL --description "Order updates from Acme" --logo-url https://acme.com/logo.png --hero-url https://acme.com/hero.png --brand-color "#1E90FF" --privacy-policy-url https://acme.com/privacy --terms-url https://acme.com/terms --website https://acme.com --website-label "Acme"',
10
+ "<%= config.bin %> rcs agents create --brand 3f6a1c9e-0000-0000-0000-000000000000 --from-json agent.json",
11
+ "<%= config.bin %> rcs agents create --from-json agent.json --json",
12
+ ];
13
+ static flags = {
14
+ ...AuthenticatedCommand.baseFlags,
15
+ brand: Flags.string({
16
+ char: "b",
17
+ description: "Brand ID the agent belongs to (see `rcs registration`)",
18
+ }),
19
+ ...AGENT_BASICS_FLAGS,
20
+ ...AGENT_CAMPAIGN_FLAGS,
21
+ ...AGENT_TESTING_FLAGS,
22
+ "from-json": Flags.string({
23
+ description: "Path to a JSON file with the agent ({ brandId, basics, campaign, testing }, or the output of `rcs agents get --json`); flags override fields in the file",
24
+ }),
25
+ "idempotency-key": idempotencyKeyFlag,
26
+ };
27
+ async run() {
28
+ const { flags } = await this.parse(RcsAgentsCreate);
29
+ const built = buildAgentBody(flags, { clearEmpty: false });
30
+ if (typeof built === "string") {
31
+ error(built);
32
+ this.exit(1);
33
+ }
34
+ const body = built;
35
+ if (flags.brand)
36
+ body.brandId = flags.brand;
37
+ if (typeof body.brandId !== "string" || !body.brandId) {
38
+ error("Choose a brand for this agent", {
39
+ hint: "Pass --brand <brandId>; find it with `sendly rcs registration`",
40
+ });
41
+ this.exit(1);
42
+ }
43
+ const saveSpinner = spinner("Saving agent draft...");
44
+ if (!isJsonMode()) {
45
+ saveSpinner.start();
46
+ }
47
+ let response;
48
+ try {
49
+ response = await apiClient.post("/api/v1/rcs/agents", body, true, { idempotencyKey: flags["idempotency-key"] });
50
+ saveSpinner.stop();
51
+ }
52
+ catch (err) {
53
+ saveSpinner.stop();
54
+ if (reportRcsError(err))
55
+ this.exit(1);
56
+ throw err;
57
+ }
58
+ if (isJsonMode()) {
59
+ json(response);
60
+ return;
61
+ }
62
+ const agent = response.agent;
63
+ success(`Agent draft saved: ${agent.id}`);
64
+ console.log();
65
+ printAgent(agent);
66
+ console.log();
67
+ console.log(colors.dim("Missing fields are checked when you submit; fill them in any time with `sendly rcs agents update`."));
68
+ printNextSteps(nextStepFor("draft", { brandId: agent.brandId, agentId: agent.id }));
69
+ }
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Jjcy9hZ2VudHMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsY0FBYyxFQUNkLGNBQWMsR0FFZixNQUFNLGtDQUFrQyxDQUFDO0FBTTFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZUFBZ0IsU0FBUSxvQkFBb0I7SUFDL0QsTUFBTSxDQUFDLFdBQVcsR0FDaEIscUhBQXFILENBQUM7SUFFeEgsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw4WUFBOFk7UUFDOVkseUdBQXlHO1FBQ3pHLG1FQUFtRTtLQUNwRSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx3REFBd0Q7U0FDdEUsQ0FBQztRQUNGLEdBQUcsa0JBQWtCO1FBQ3JCLEdBQUcsb0JBQW9CO1FBQ3ZCLEdBQUcsbUJBQW1CO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFdBQVcsRUFDVCwwSkFBMEo7U0FDN0osQ0FBQztRQUNGLGlCQUFpQixFQUFFLGtCQUFrQjtLQUN0QyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBZ0MsQ0FBQztRQUM5QyxJQUFJLEtBQUssQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxLQUFLLENBQUMsK0JBQStCLEVBQUU7Z0JBQ3JDLElBQUksRUFBRSxnRUFBZ0U7YUFDdkUsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksUUFBNkIsQ0FBQztRQUNsQyxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUM3QixvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLElBQUksRUFDSixFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUM3QyxDQUFDO1lBQ0YsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDN0IsT0FBTyxDQUFDLHNCQUFzQixLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLG9HQUFvRyxDQUNyRyxDQUNGLENBQUM7UUFDRixjQUFjLENBQ1osV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDcEUsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBqc29uLFxuICBzdWNjZXNzLFxuICBlcnJvcixcbiAgY29sb3JzLFxuICBzcGlubmVyLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHtcbiAgQUdFTlRfQkFTSUNTX0ZMQUdTLFxuICBBR0VOVF9DQU1QQUlHTl9GTEFHUyxcbiAgQUdFTlRfVEVTVElOR19GTEFHUyxcbiAgYnVpbGRBZ2VudEJvZHksXG4gIGlkZW1wb3RlbmN5S2V5RmxhZyxcbiAgbmV4dFN0ZXBGb3IsXG4gIHByaW50QWdlbnQsXG4gIHByaW50TmV4dFN0ZXBzLFxuICByZXBvcnRSY3NFcnJvcixcbiAgdHlwZSBQdWJsaWNSY3NBZ2VudCxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9yY3MtcmVnaXN0cmF0aW9uLmpzXCI7XG5cbmludGVyZmFjZSBDcmVhdGVBZ2VudFJlc3BvbnNlIHtcbiAgYWdlbnQ6IFB1YmxpY1Jjc0FnZW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSY3NBZ2VudHNDcmVhdGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJEcmFmdCB0aGUgUkNTIGFnZW50IGZvciBhIGJyYW5kIChzdGVwIDI7IGxvZ28sIGhlcm8sIGFuZCBjYWxsLXRvLWFjdGlvbiBtZWRpYSBtdXN0IGFscmVhZHkgYmUgcHVibGljIGh0dHBzOi8vIFVSTHMpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiByY3MgYWdlbnRzIGNyZWF0ZSAtLWJyYW5kIDNmNmExYzllLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCAtLWRpc3BsYXktbmFtZSBcIkFjbWVcIiAtLXVzZS1jYXNlIFRSQU5TQUNUSU9OQUwgLS1kZXNjcmlwdGlvbiBcIk9yZGVyIHVwZGF0ZXMgZnJvbSBBY21lXCIgLS1sb2dvLXVybCBodHRwczovL2FjbWUuY29tL2xvZ28ucG5nIC0taGVyby11cmwgaHR0cHM6Ly9hY21lLmNvbS9oZXJvLnBuZyAtLWJyYW5kLWNvbG9yIFwiIzFFOTBGRlwiIC0tcHJpdmFjeS1wb2xpY3ktdXJsIGh0dHBzOi8vYWNtZS5jb20vcHJpdmFjeSAtLXRlcm1zLXVybCBodHRwczovL2FjbWUuY29tL3Rlcm1zIC0td2Vic2l0ZSBodHRwczovL2FjbWUuY29tIC0td2Vic2l0ZS1sYWJlbCBcIkFjbWVcIicsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiByY3MgYWdlbnRzIGNyZWF0ZSAtLWJyYW5kIDNmNmExYzllLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCAtLWZyb20tanNvbiBhZ2VudC5qc29uXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiByY3MgYWdlbnRzIGNyZWF0ZSAtLWZyb20tanNvbiBhZ2VudC5qc29uIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgYnJhbmQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkJyYW5kIElEIHRoZSBhZ2VudCBiZWxvbmdzIHRvIChzZWUgYHJjcyByZWdpc3RyYXRpb25gKVwiLFxuICAgIH0pLFxuICAgIC4uLkFHRU5UX0JBU0lDU19GTEFHUyxcbiAgICAuLi5BR0VOVF9DQU1QQUlHTl9GTEFHUyxcbiAgICAuLi5BR0VOVF9URVNUSU5HX0ZMQUdTLFxuICAgIFwiZnJvbS1qc29uXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQYXRoIHRvIGEgSlNPTiBmaWxlIHdpdGggdGhlIGFnZW50ICh7IGJyYW5kSWQsIGJhc2ljcywgY2FtcGFpZ24sIHRlc3RpbmcgfSwgb3IgdGhlIG91dHB1dCBvZiBgcmNzIGFnZW50cyBnZXQgLS1qc29uYCk7IGZsYWdzIG92ZXJyaWRlIGZpZWxkcyBpbiB0aGUgZmlsZVwiLFxuICAgIH0pLFxuICAgIFwiaWRlbXBvdGVuY3kta2V5XCI6IGlkZW1wb3RlbmN5S2V5RmxhZyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShSY3NBZ2VudHNDcmVhdGUpO1xuXG4gICAgY29uc3QgYnVpbHQgPSBidWlsZEFnZW50Qm9keShmbGFncywgeyBjbGVhckVtcHR5OiBmYWxzZSB9KTtcbiAgICBpZiAodHlwZW9mIGJ1aWx0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBlcnJvcihidWlsdCk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSBidWlsdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAoZmxhZ3MuYnJhbmQpIGJvZHkuYnJhbmRJZCA9IGZsYWdzLmJyYW5kO1xuICAgIGlmICh0eXBlb2YgYm9keS5icmFuZElkICE9PSBcInN0cmluZ1wiIHx8ICFib2R5LmJyYW5kSWQpIHtcbiAgICAgIGVycm9yKFwiQ2hvb3NlIGEgYnJhbmQgZm9yIHRoaXMgYWdlbnRcIiwge1xuICAgICAgICBoaW50OiBcIlBhc3MgLS1icmFuZCA8YnJhbmRJZD47IGZpbmQgaXQgd2l0aCBgc2VuZGx5IHJjcyByZWdpc3RyYXRpb25gXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlU3Bpbm5lciA9IHNwaW5uZXIoXCJTYXZpbmcgYWdlbnQgZHJhZnQuLi5cIik7XG4gICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgIHNhdmVTcGlubmVyLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlOiBDcmVhdGVBZ2VudFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PENyZWF0ZUFnZW50UmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvcmNzL2FnZW50c1wiLFxuICAgICAgICBib2R5LFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGlkZW1wb3RlbmN5S2V5OiBmbGFnc1tcImlkZW1wb3RlbmN5LWtleVwiXSB9LFxuICAgICAgKTtcbiAgICAgIHNhdmVTcGlubmVyLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNhdmVTcGlubmVyLnN0b3AoKTtcbiAgICAgIGlmIChyZXBvcnRSY3NFcnJvcihlcnIpKSB0aGlzLmV4aXQoMSk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWdlbnQgPSByZXNwb25zZS5hZ2VudDtcbiAgICBzdWNjZXNzKGBBZ2VudCBkcmFmdCBzYXZlZDogJHthZ2VudC5pZH1gKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIHByaW50QWdlbnQoYWdlbnQpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBjb2xvcnMuZGltKFxuICAgICAgICBcIk1pc3NpbmcgZmllbGRzIGFyZSBjaGVja2VkIHdoZW4geW91IHN1Ym1pdDsgZmlsbCB0aGVtIGluIGFueSB0aW1lIHdpdGggYHNlbmRseSByY3MgYWdlbnRzIHVwZGF0ZWAuXCIsXG4gICAgICApLFxuICAgICk7XG4gICAgcHJpbnROZXh0U3RlcHMoXG4gICAgICBuZXh0U3RlcEZvcihcImRyYWZ0XCIsIHsgYnJhbmRJZDogYWdlbnQuYnJhbmRJZCwgYWdlbnRJZDogYWdlbnQuaWQgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { AuthenticatedCommand } from "../../../../lib/base-command.js";
2
+ export default class RcsAgentsDevicesSet extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ phone: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ clear: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,77 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../../../lib/base-command.js";
3
+ import { apiClient } from "../../../../lib/api-client.js";
4
+ import { json, success, error, colors, spinner, isJsonMode, } from "../../../../lib/output.js";
5
+ import { idempotencyKeyFlag, parseDeviceFlags, printDevices, reportRcsError, } from "../../../../lib/rcs-registration.js";
6
+ export default class RcsAgentsDevicesSet extends AuthenticatedCommand {
7
+ static description = "Set the test devices invited to an RCS agent — the list you pass replaces the current one (up to 20)";
8
+ static examples = [
9
+ "<%= config.bin %> rcs agents devices set 3f6a1c9e-0000-0000-0000-000000000000 --phone +13125550100 --phone +13125550101",
10
+ '<%= config.bin %> rcs agents devices set 3f6a1c9e-0000-0000-0000-000000000000 --phone "+13125550100=Front desk Pixel"',
11
+ "<%= config.bin %> rcs agents devices set 3f6a1c9e-0000-0000-0000-000000000000 --clear",
12
+ ];
13
+ static args = {
14
+ id: Args.string({
15
+ description: "Agent ID",
16
+ required: true,
17
+ }),
18
+ };
19
+ static flags = {
20
+ ...AuthenticatedCommand.baseFlags,
21
+ phone: Flags.string({
22
+ char: "p",
23
+ description: 'Device phone number (E.164), optionally labelled as "+13125550100=Label". Repeatable.',
24
+ multiple: true,
25
+ exclusive: ["clear"],
26
+ }),
27
+ clear: Flags.boolean({
28
+ description: "Remove every invited device",
29
+ default: false,
30
+ }),
31
+ "idempotency-key": idempotencyKeyFlag,
32
+ };
33
+ async run() {
34
+ const { args, flags } = await this.parse(RcsAgentsDevicesSet);
35
+ const parsed = parseDeviceFlags(flags.phone);
36
+ if (typeof parsed === "string") {
37
+ error(parsed);
38
+ this.exit(1);
39
+ }
40
+ const devices = parsed;
41
+ if (devices.length === 0 && !flags.clear) {
42
+ error("Provide at least one --phone, or --clear to remove every device", {
43
+ hint: 'Example: --phone +13125550100 --phone "+13125550101=Jane\'s Pixel"',
44
+ });
45
+ this.exit(1);
46
+ }
47
+ const saveSpinner = spinner("Updating test devices...");
48
+ if (!isJsonMode()) {
49
+ saveSpinner.start();
50
+ }
51
+ let response;
52
+ try {
53
+ response = await apiClient.put(`/api/v1/rcs/agents/${encodeURIComponent(args.id)}/test-devices`, { devices }, true, { idempotencyKey: flags["idempotency-key"] });
54
+ saveSpinner.stop();
55
+ }
56
+ catch (err) {
57
+ saveSpinner.stop();
58
+ if (reportRcsError(err))
59
+ this.exit(1);
60
+ throw err;
61
+ }
62
+ if (isJsonMode()) {
63
+ json(response);
64
+ return;
65
+ }
66
+ const list = response.devices ?? [];
67
+ success(list.length === 0
68
+ ? "Test devices cleared"
69
+ : `Test devices set: ${list.length}`);
70
+ printDevices(list);
71
+ if (list.length > 0) {
72
+ console.log();
73
+ console.log(colors.dim("Invites go out once the agent is in testing. Each device gets a prompt from the carrier network to accept; send a test message with `sendly rcs send` after it accepts."));
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Jjcy9hZ2VudHMvZGV2aWNlcy9zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEdBRWYsTUFBTSxxQ0FBcUMsQ0FBQztBQU03QyxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQUNuRSxNQUFNLENBQUMsV0FBVyxHQUNoQixzR0FBc0csQ0FBQztJQUV6RyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLHlIQUF5SDtRQUN6SCx1SEFBdUg7UUFDdkgsdUZBQXVGO0tBQ3hGLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZCxXQUFXLEVBQUUsVUFBVTtZQUN2QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFDVCx1RkFBdUY7WUFDekYsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDckIsQ0FBQztRQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ25CLFdBQVcsRUFBRSw2QkFBNkI7WUFDMUMsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ0YsaUJBQWlCLEVBQUUsa0JBQWtCO0tBQ3RDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFOUQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUF3RCxDQUFDO1FBQ3pFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLGlFQUFpRSxFQUFFO2dCQUN2RSxJQUFJLEVBQUUsb0VBQW9FO2FBQzNFLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDbEIsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLFFBQTRCLENBQUM7UUFDakMsSUFBSSxDQUFDO1lBQ0gsUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDNUIsc0JBQXNCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUNoRSxFQUFFLE9BQU8sRUFBRSxFQUNYLElBQUksRUFDSixFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUM3QyxDQUFDO1lBQ0YsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3BDLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsc0JBQXNCO1lBQ3hCLENBQUMsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUN2QyxDQUFDO1FBQ0YsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IseUtBQXlLLENBQzFLLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7XG4gIGlkZW1wb3RlbmN5S2V5RmxhZyxcbiAgcGFyc2VEZXZpY2VGbGFncyxcbiAgcHJpbnREZXZpY2VzLFxuICByZXBvcnRSY3NFcnJvcixcbiAgdHlwZSBQdWJsaWNSY3NUZXN0RGV2aWNlLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vbGliL3Jjcy1yZWdpc3RyYXRpb24uanNcIjtcblxuaW50ZXJmYWNlIFNldERldmljZXNSZXNwb25zZSB7XG4gIGRldmljZXM6IFB1YmxpY1Jjc1Rlc3REZXZpY2VbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmNzQWdlbnRzRGV2aWNlc1NldCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlNldCB0aGUgdGVzdCBkZXZpY2VzIGludml0ZWQgdG8gYW4gUkNTIGFnZW50IOKAlCB0aGUgbGlzdCB5b3UgcGFzcyByZXBsYWNlcyB0aGUgY3VycmVudCBvbmUgKHVwIHRvIDIwKVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHJjcyBhZ2VudHMgZGV2aWNlcyBzZXQgM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIC0tcGhvbmUgKzEzMTI1NTUwMTAwIC0tcGhvbmUgKzEzMTI1NTUwMTAxXCIsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHJjcyBhZ2VudHMgZGV2aWNlcyBzZXQgM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIC0tcGhvbmUgXCIrMTMxMjU1NTAxMDA9RnJvbnQgZGVzayBQaXhlbFwiJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHJjcyBhZ2VudHMgZGV2aWNlcyBzZXQgM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIC0tY2xlYXJcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQWdlbnQgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgcGhvbmU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInBcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGV2aWNlIHBob25lIG51bWJlciAoRS4xNjQpLCBvcHRpb25hbGx5IGxhYmVsbGVkIGFzIFwiKzEzMTI1NTUwMTAwPUxhYmVsXCIuIFJlcGVhdGFibGUuJyxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgZXhjbHVzaXZlOiBbXCJjbGVhclwiXSxcbiAgICB9KSxcbiAgICBjbGVhcjogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZW1vdmUgZXZlcnkgaW52aXRlZCBkZXZpY2VcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICAgIFwiaWRlbXBvdGVuY3kta2V5XCI6IGlkZW1wb3RlbmN5S2V5RmxhZyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShSY3NBZ2VudHNEZXZpY2VzU2V0KTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRGV2aWNlRmxhZ3MoZmxhZ3MucGhvbmUpO1xuICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBlcnJvcihwYXJzZWQpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cbiAgICBjb25zdCBkZXZpY2VzID0gcGFyc2VkIGFzIEFycmF5PHsgcGhvbmVOdW1iZXI6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfT47XG4gICAgaWYgKGRldmljZXMubGVuZ3RoID09PSAwICYmICFmbGFncy5jbGVhcikge1xuICAgICAgZXJyb3IoXCJQcm92aWRlIGF0IGxlYXN0IG9uZSAtLXBob25lLCBvciAtLWNsZWFyIHRvIHJlbW92ZSBldmVyeSBkZXZpY2VcIiwge1xuICAgICAgICBoaW50OiAnRXhhbXBsZTogLS1waG9uZSArMTMxMjU1NTAxMDAgLS1waG9uZSBcIisxMzEyNTU1MDEwMT1KYW5lXFwncyBQaXhlbFwiJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhdmVTcGlubmVyID0gc3Bpbm5lcihcIlVwZGF0aW5nIHRlc3QgZGV2aWNlcy4uLlwiKTtcbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgc2F2ZVNwaW5uZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2U6IFNldERldmljZXNSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucHV0PFNldERldmljZXNSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL3Jjcy9hZ2VudHMvJHtlbmNvZGVVUklDb21wb25lbnQoYXJncy5pZCl9L3Rlc3QtZGV2aWNlc2AsXG4gICAgICAgIHsgZGV2aWNlcyB9LFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGlkZW1wb3RlbmN5S2V5OiBmbGFnc1tcImlkZW1wb3RlbmN5LWtleVwiXSB9LFxuICAgICAgKTtcbiAgICAgIHNhdmVTcGlubmVyLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNhdmVTcGlubmVyLnN0b3AoKTtcbiAgICAgIGlmIChyZXBvcnRSY3NFcnJvcihlcnIpKSB0aGlzLmV4aXQoMSk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJlc3BvbnNlLmRldmljZXMgPz8gW107XG4gICAgc3VjY2VzcyhcbiAgICAgIGxpc3QubGVuZ3RoID09PSAwXG4gICAgICAgID8gXCJUZXN0IGRldmljZXMgY2xlYXJlZFwiXG4gICAgICAgIDogYFRlc3QgZGV2aWNlcyBzZXQ6ICR7bGlzdC5sZW5ndGh9YCxcbiAgICApO1xuICAgIHByaW50RGV2aWNlcyhsaXN0KTtcbiAgICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgXCJJbnZpdGVzIGdvIG91dCBvbmNlIHRoZSBhZ2VudCBpcyBpbiB0ZXN0aW5nLiBFYWNoIGRldmljZSBnZXRzIGEgcHJvbXB0IGZyb20gdGhlIGNhcnJpZXIgbmV0d29yayB0byBhY2NlcHQ7IHNlbmQgYSB0ZXN0IG1lc3NhZ2Ugd2l0aCBgc2VuZGx5IHJjcyBzZW5kYCBhZnRlciBpdCBhY2NlcHRzLlwiLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
2
+ export default class RcsAgentsGet extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,51 @@
1
+ import { Args } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
3
+ import { apiClient } from "../../../lib/api-client.js";
4
+ import { json, spinner, isJsonMode } from "../../../lib/output.js";
5
+ import { nextStepFor, printAgent, printDevices, printNextSteps, reportRcsError, } from "../../../lib/rcs-registration.js";
6
+ export default class RcsAgentsGet extends AuthenticatedCommand {
7
+ static description = "Get an RCS agent with its test devices and the latest review stage (run again to refresh)";
8
+ static examples = [
9
+ "<%= config.bin %> rcs agents get 3f6a1c9e-0000-0000-0000-000000000000",
10
+ "<%= config.bin %> rcs agents get 3f6a1c9e-0000-0000-0000-000000000000 --json",
11
+ ];
12
+ static args = {
13
+ id: Args.string({
14
+ description: "Agent ID",
15
+ required: true,
16
+ }),
17
+ };
18
+ static flags = {
19
+ ...AuthenticatedCommand.baseFlags,
20
+ };
21
+ async run() {
22
+ const { args } = await this.parse(RcsAgentsGet);
23
+ const loadSpinner = spinner("Fetching RCS agent...");
24
+ if (!isJsonMode()) {
25
+ loadSpinner.start();
26
+ }
27
+ let response;
28
+ try {
29
+ response = await apiClient.get(`/api/v1/rcs/agents/${encodeURIComponent(args.id)}`);
30
+ loadSpinner.stop();
31
+ }
32
+ catch (err) {
33
+ loadSpinner.stop();
34
+ if (reportRcsError(err))
35
+ this.exit(1);
36
+ throw err;
37
+ }
38
+ if (isJsonMode()) {
39
+ json(response);
40
+ return;
41
+ }
42
+ console.log();
43
+ printAgent(response.agent);
44
+ printDevices(response.devices ?? response.agent.testDevices ?? []);
45
+ printNextSteps(nextStepFor(response.stage ?? response.agent.customerStage, {
46
+ brandId: response.agent.brandId,
47
+ agentId: response.agent.id,
48
+ }));
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Jjcy9hZ2VudHMvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxHQUlmLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsb0JBQW9CO0lBQzVELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLDJGQUEyRixDQUFDO0lBRTlGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsdUVBQXVFO1FBQ3ZFLDhFQUE4RTtLQUMvRSxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksUUFBMEIsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUM1QixzQkFBc0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3BELENBQUM7WUFDRixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxjQUFjLENBQ1osV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDMUQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTztZQUMvQixPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1NBQzNCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgc3Bpbm5lciwgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQge1xuICBuZXh0U3RlcEZvcixcbiAgcHJpbnRBZ2VudCxcbiAgcHJpbnREZXZpY2VzLFxuICBwcmludE5leHRTdGVwcyxcbiAgcmVwb3J0UmNzRXJyb3IsXG4gIHR5cGUgQ3VzdG9tZXJTdGFnZSxcbiAgdHlwZSBQdWJsaWNSY3NBZ2VudCxcbiAgdHlwZSBQdWJsaWNSY3NUZXN0RGV2aWNlLFxufSBmcm9tIFwiLi4vLi4vLi4vbGliL3Jjcy1yZWdpc3RyYXRpb24uanNcIjtcblxuaW50ZXJmYWNlIEdldEFnZW50UmVzcG9uc2Uge1xuICBhZ2VudDogUHVibGljUmNzQWdlbnQ7XG4gIGRldmljZXM6IFB1YmxpY1Jjc1Rlc3REZXZpY2VbXTtcbiAgc3RhZ2U6IEN1c3RvbWVyU3RhZ2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJjc0FnZW50c0dldCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIkdldCBhbiBSQ1MgYWdlbnQgd2l0aCBpdHMgdGVzdCBkZXZpY2VzIGFuZCB0aGUgbGF0ZXN0IHJldmlldyBzdGFnZSAocnVuIGFnYWluIHRvIHJlZnJlc2gpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gcmNzIGFnZW50cyBnZXQgM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiByY3MgYWdlbnRzIGdldCAzZjZhMWM5ZS0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFnZW50IElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoUmNzQWdlbnRzR2V0KTtcblxuICAgIGNvbnN0IGxvYWRTcGlubmVyID0gc3Bpbm5lcihcIkZldGNoaW5nIFJDUyBhZ2VudC4uLlwiKTtcbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgbG9hZFNwaW5uZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2U6IEdldEFnZW50UmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxHZXRBZ2VudFJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvcmNzL2FnZW50cy8ke2VuY29kZVVSSUNvbXBvbmVudChhcmdzLmlkKX1gLFxuICAgICAgKTtcbiAgICAgIGxvYWRTcGlubmVyLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvYWRTcGlubmVyLnN0b3AoKTtcbiAgICAgIGlmIChyZXBvcnRSY3NFcnJvcihlcnIpKSB0aGlzLmV4aXQoMSk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBwcmludEFnZW50KHJlc3BvbnNlLmFnZW50KTtcbiAgICBwcmludERldmljZXMocmVzcG9uc2UuZGV2aWNlcyA/PyByZXNwb25zZS5hZ2VudC50ZXN0RGV2aWNlcyA/PyBbXSk7XG4gICAgcHJpbnROZXh0U3RlcHMoXG4gICAgICBuZXh0U3RlcEZvcihyZXNwb25zZS5zdGFnZSA/PyByZXNwb25zZS5hZ2VudC5jdXN0b21lclN0YWdlLCB7XG4gICAgICAgIGJyYW5kSWQ6IHJlc3BvbnNlLmFnZW50LmJyYW5kSWQsXG4gICAgICAgIGFnZW50SWQ6IHJlc3BvbnNlLmFnZW50LmlkLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
2
+ export default class RcsAgentsRequestLaunch extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ "test-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ "testing-info": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,71 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
3
+ import { apiClient } from "../../../lib/api-client.js";
4
+ import { json, success, colors, spinner, isJsonMode, keyValue, } from "../../../lib/output.js";
5
+ import { formatStage, idempotencyKeyFlag, nextStepFor, printNextSteps, reportRcsError, } from "../../../lib/rcs-registration.js";
6
+ export default class RcsAgentsRequestLaunch extends AuthenticatedCommand {
7
+ static description = "Request launch once testing is done — Sendly reviews the campaign details, then sends the launch to the carrier network";
8
+ static examples = [
9
+ "<%= config.bin %> rcs agents request-launch 3f6a1c9e-0000-0000-0000-000000000000 --test-url https://acme.com/rcs-test-recording.mp4",
10
+ '<%= config.bin %> rcs agents request-launch 3f6a1c9e-0000-0000-0000-000000000000 --test-url https://acme.com/rcs-test.png --testing-info "Tested on two Pixel devices" --json',
11
+ ];
12
+ static args = {
13
+ id: Args.string({
14
+ description: "Agent ID",
15
+ required: true,
16
+ }),
17
+ };
18
+ static flags = {
19
+ ...AuthenticatedCommand.baseFlags,
20
+ "test-url": Flags.string({
21
+ description: "Public https:// URL of a screen recording or screenshots of the agent on a test device (stored on the agent before the request)",
22
+ }),
23
+ "testing-info": Flags.string({
24
+ description: "Anything else reviewers should know about testing",
25
+ }),
26
+ "idempotency-key": idempotencyKeyFlag,
27
+ };
28
+ async run() {
29
+ const { args, flags } = await this.parse(RcsAgentsRequestLaunch);
30
+ const body = {};
31
+ if (flags["test-url"] !== undefined)
32
+ body.testUrl = flags["test-url"];
33
+ if (flags["testing-info"] !== undefined) {
34
+ body.testingAdditionalInformation = flags["testing-info"];
35
+ }
36
+ const launchSpinner = spinner("Requesting launch...");
37
+ if (!isJsonMode()) {
38
+ launchSpinner.start();
39
+ }
40
+ let response;
41
+ try {
42
+ response = await apiClient.post(`/api/v1/rcs/agents/${encodeURIComponent(args.id)}/request-launch`, body, true, { idempotencyKey: flags["idempotency-key"] });
43
+ launchSpinner.stop();
44
+ }
45
+ catch (err) {
46
+ launchSpinner.stop();
47
+ if (reportRcsError(err))
48
+ this.exit(1);
49
+ throw err;
50
+ }
51
+ if (isJsonMode()) {
52
+ json(response);
53
+ return;
54
+ }
55
+ const agent = response.agent;
56
+ const stage = response.stage ?? agent.customerStage;
57
+ success(`Launch requested: ${agent.displayName || agent.id}`);
58
+ console.log();
59
+ keyValue([
60
+ ["Agent", agent.id],
61
+ ["Brand", agent.brandId ?? colors.dim("—")],
62
+ ["Stage", formatStage(stage)],
63
+ ["Review", agent.reviewStatus],
64
+ ...(agent.testing?.testUrl
65
+ ? [["Test URL", String(agent.testing.testUrl)]]
66
+ : []),
67
+ ]);
68
+ printNextSteps(nextStepFor(stage, { brandId: agent.brandId, agentId: agent.id }));
69
+ }
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sYXVuY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvcmNzL2FnZW50cy9yZXF1ZXN0LWxhdW5jaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsTUFBTSxFQUNOLE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEdBR2YsTUFBTSxrQ0FBa0MsQ0FBQztBQU8xQyxNQUFNLENBQUMsT0FBTyxPQUFPLHNCQUF1QixTQUFRLG9CQUFvQjtJQUN0RSxNQUFNLENBQUMsV0FBVyxHQUNoQix5SEFBeUgsQ0FBQztJQUU1SCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLHFJQUFxSTtRQUNySSwrS0FBK0s7S0FDaEwsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLFdBQVcsRUFDVCxpSUFBaUk7U0FDcEksQ0FBQztRQUNGLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLFdBQVcsRUFBRSxtREFBbUQ7U0FDakUsQ0FBQztRQUNGLGlCQUFpQixFQUFFLGtCQUFrQjtLQUN0QyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sSUFBSSxHQUE0QixFQUFFLENBQUM7UUFDekMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxRQUErQixDQUFDO1FBQ3BDLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQzdCLHNCQUFzQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUNsRSxJQUFJLEVBQ0osSUFBSSxFQUNKLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQzdDLENBQUM7WUFDRixhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDcEQsT0FBTyxDQUFDLHFCQUFxQixLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLFFBQVEsQ0FBQztZQUNQLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU87Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFxQixDQUFDO2dCQUNuRSxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO1FBQ0gsY0FBYyxDQUNaLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ2xFLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgY29sb3JzLFxuICBzcGlubmVyLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7XG4gIGZvcm1hdFN0YWdlLFxuICBpZGVtcG90ZW5jeUtleUZsYWcsXG4gIG5leHRTdGVwRm9yLFxuICBwcmludE5leHRTdGVwcyxcbiAgcmVwb3J0UmNzRXJyb3IsXG4gIHR5cGUgQ3VzdG9tZXJTdGFnZSxcbiAgdHlwZSBQdWJsaWNSY3NBZ2VudCxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9yY3MtcmVnaXN0cmF0aW9uLmpzXCI7XG5cbmludGVyZmFjZSBSZXF1ZXN0TGF1bmNoUmVzcG9uc2Uge1xuICBhZ2VudDogUHVibGljUmNzQWdlbnQ7XG4gIHN0YWdlOiBDdXN0b21lclN0YWdlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSY3NBZ2VudHNSZXF1ZXN0TGF1bmNoIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiUmVxdWVzdCBsYXVuY2ggb25jZSB0ZXN0aW5nIGlzIGRvbmUg4oCUIFNlbmRseSByZXZpZXdzIHRoZSBjYW1wYWlnbiBkZXRhaWxzLCB0aGVuIHNlbmRzIHRoZSBsYXVuY2ggdG8gdGhlIGNhcnJpZXIgbmV0d29ya1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHJjcyBhZ2VudHMgcmVxdWVzdC1sYXVuY2ggM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIC0tdGVzdC11cmwgaHR0cHM6Ly9hY21lLmNvbS9yY3MtdGVzdC1yZWNvcmRpbmcubXA0XCIsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHJjcyBhZ2VudHMgcmVxdWVzdC1sYXVuY2ggM2Y2YTFjOWUtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIC0tdGVzdC11cmwgaHR0cHM6Ly9hY21lLmNvbS9yY3MtdGVzdC5wbmcgLS10ZXN0aW5nLWluZm8gXCJUZXN0ZWQgb24gdHdvIFBpeGVsIGRldmljZXNcIiAtLWpzb24nLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJBZ2VudCBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBcInRlc3QtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQdWJsaWMgaHR0cHM6Ly8gVVJMIG9mIGEgc2NyZWVuIHJlY29yZGluZyBvciBzY3JlZW5zaG90cyBvZiB0aGUgYWdlbnQgb24gYSB0ZXN0IGRldmljZSAoc3RvcmVkIG9uIHRoZSBhZ2VudCBiZWZvcmUgdGhlIHJlcXVlc3QpXCIsXG4gICAgfSksXG4gICAgXCJ0ZXN0aW5nLWluZm9cIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFueXRoaW5nIGVsc2UgcmV2aWV3ZXJzIHNob3VsZCBrbm93IGFib3V0IHRlc3RpbmdcIixcbiAgICB9KSxcbiAgICBcImlkZW1wb3RlbmN5LWtleVwiOiBpZGVtcG90ZW5jeUtleUZsYWcsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoUmNzQWdlbnRzUmVxdWVzdExhdW5jaCk7XG5cbiAgICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGlmIChmbGFnc1tcInRlc3QtdXJsXCJdICE9PSB1bmRlZmluZWQpIGJvZHkudGVzdFVybCA9IGZsYWdzW1widGVzdC11cmxcIl07XG4gICAgaWYgKGZsYWdzW1widGVzdGluZy1pbmZvXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkudGVzdGluZ0FkZGl0aW9uYWxJbmZvcm1hdGlvbiA9IGZsYWdzW1widGVzdGluZy1pbmZvXCJdO1xuICAgIH1cblxuICAgIGNvbnN0IGxhdW5jaFNwaW5uZXIgPSBzcGlubmVyKFwiUmVxdWVzdGluZyBsYXVuY2guLi5cIik7XG4gICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGxhdW5jaFNwaW5uZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2U6IFJlcXVlc3RMYXVuY2hSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxSZXF1ZXN0TGF1bmNoUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9yY3MvYWdlbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3MuaWQpfS9yZXF1ZXN0LWxhdW5jaGAsXG4gICAgICAgIGJvZHksXG4gICAgICAgIHRydWUsXG4gICAgICAgIHsgaWRlbXBvdGVuY3lLZXk6IGZsYWdzW1wiaWRlbXBvdGVuY3kta2V5XCJdIH0sXG4gICAgICApO1xuICAgICAgbGF1bmNoU3Bpbm5lci5zdG9wKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsYXVuY2hTcGlubmVyLnN0b3AoKTtcbiAgICAgIGlmIChyZXBvcnRSY3NFcnJvcihlcnIpKSB0aGlzLmV4aXQoMSk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWdlbnQgPSByZXNwb25zZS5hZ2VudDtcbiAgICBjb25zdCBzdGFnZSA9IHJlc3BvbnNlLnN0YWdlID8/IGFnZW50LmN1c3RvbWVyU3RhZ2U7XG4gICAgc3VjY2VzcyhgTGF1bmNoIHJlcXVlc3RlZDogJHthZ2VudC5kaXNwbGF5TmFtZSB8fCBhZ2VudC5pZH1gKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIkFnZW50XCIsIGFnZW50LmlkXSxcbiAgICAgIFtcIkJyYW5kXCIsIGFnZW50LmJyYW5kSWQgPz8gY29sb3JzLmRpbShcIuKAlFwiKV0sXG4gICAgICBbXCJTdGFnZVwiLCBmb3JtYXRTdGFnZShzdGFnZSldLFxuICAgICAgW1wiUmV2aWV3XCIsIGFnZW50LnJldmlld1N0YXR1c10sXG4gICAgICAuLi4oYWdlbnQudGVzdGluZz8udGVzdFVybFxuICAgICAgICA/IFtbXCJUZXN0IFVSTFwiLCBTdHJpbmcoYWdlbnQudGVzdGluZy50ZXN0VXJsKV0gYXMgW3N0cmluZywgc3RyaW5nXV1cbiAgICAgICAgOiBbXSksXG4gICAgXSk7XG4gICAgcHJpbnROZXh0U3RlcHMoXG4gICAgICBuZXh0U3RlcEZvcihzdGFnZSwgeyBicmFuZElkOiBhZ2VudC5icmFuZElkLCBhZ2VudElkOiBhZ2VudC5pZCB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=