payload-auth 1.3.4 → 1.4.1

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 (57) hide show
  1. package/dist/better-auth/adapter/index.d.ts +10 -0
  2. package/dist/better-auth/adapter/index.d.ts.map +1 -1
  3. package/dist/better-auth/adapter/index.js +151 -125
  4. package/dist/better-auth/adapter/transform/index.d.ts +2 -4
  5. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
  6. package/dist/better-auth/adapter/transform/index.js +433 -309
  7. package/dist/better-auth/plugin/constants.d.ts +2 -0
  8. package/dist/better-auth/plugin/constants.d.ts.map +1 -1
  9. package/dist/better-auth/plugin/constants.js +4 -2
  10. package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
  11. package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +3 -2
  12. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts +3 -0
  13. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts.map +1 -0
  14. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.js +6 -0
  15. package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
  16. package/dist/better-auth/plugin/helpers/check-username-plugin.js +3 -2
  17. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +52 -6
  18. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
  19. package/dist/better-auth/plugin/helpers/prepare-session-data.js +52 -35
  20. package/dist/better-auth/plugin/index.d.ts.map +1 -1
  21. package/dist/better-auth/plugin/index.js +16 -2
  22. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
  23. package/dist/better-auth/plugin/lib/build-collections/sessions.js +3 -1
  24. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -1
  25. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +2 -2
  26. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
  27. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +6 -4
  28. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
  29. package/dist/better-auth/plugin/lib/build-collections/users/index.js +7 -2
  30. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +1 -1
  31. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
  32. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +16 -14
  33. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +4 -0
  34. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts.map +1 -0
  35. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +344 -0
  36. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.scss +113 -0
  37. package/dist/better-auth/plugin/payload/exports/client.d.ts +2 -1
  38. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
  39. package/dist/better-auth/plugin/payload/exports/client.js +3 -2
  40. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +2 -1
  41. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
  42. package/dist/better-auth/plugin/payload/exports/rsc.js +3 -2
  43. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
  44. package/dist/better-auth/plugin/payload/views/admin-login/client.js +14 -5
  45. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
  46. package/dist/better-auth/plugin/payload/views/admin-login/index.js +1 -3
  47. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +5 -0
  48. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts.map +1 -0
  49. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +77 -0
  50. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +10 -0
  51. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -0
  52. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +44 -0
  53. package/dist/shared/form/components/submit.js +3 -1
  54. package/dist/shared/utils/value-or-default.d.ts +10 -0
  55. package/dist/shared/utils/value-or-default.d.ts.map +1 -0
  56. package/dist/shared/utils/value-or-default.js +12 -0
  57. package/package.json +13 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAmBzF,wBAAgB,oBAAoB,CAAC,EACnC,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,EAAE;IACD,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,oBAqTA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAmBzF,wBAAgB,oBAAoB,CAAC,EACnC,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,EAAE;IACD,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,oBA0TA"}
@@ -229,7 +229,12 @@ export function buildUsersCollection({ incomingCollections, pluginOptions, bette
229
229
  defaultValue: false,
230
230
  label: 'Two Factor Enabled',
231
231
  admin: {
232
- description: 'Whether the user has two factor authentication enabled'
232
+ description: 'Whether the user has two factor authentication enabled',
233
+ components: {
234
+ Field: {
235
+ path: 'payload-auth/better-auth/plugin/client#TwoFactorAuth'
236
+ }
237
+ }
233
238
  }
234
239
  });
235
240
  break;
@@ -332,4 +337,4 @@ export function buildUsersCollection({ incomingCollections, pluginOptions, bette
332
337
  return usersCollection;
333
338
  }
334
339
 
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzLCBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcywgaXNBZG1pbldpdGhSb2xlcyB9IGZyb20gJy4uL3V0aWxzL3BheWxvYWQtYWNjZXNzJ1xuaW1wb3J0IHsgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9yZWZyZXNoLXRva2VuJ1xuaW1wb3J0IHsgb25WZXJpZmllZENoYW5nZSB9IGZyb20gJy4vaG9va3Mvb24tdmVyaWZpZWQtY2hhbmdlJ1xuaW1wb3J0IHsgZ2V0U3luY0FjY291bnRIb29rIH0gZnJvbSAnLi9ob29rcy9zeW5jLWFjY291bnQnXG5pbXBvcnQgeyBnZXRCZWZvcmVMb2dpbkhvb2sgfSBmcm9tICcuL2hvb2tzL2JlZm9yZS1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9naW5Ib29rIH0gZnJvbSAnLi9ob29rcy9hZnRlci1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9nb3V0SG9vayB9IGZyb20gJy4vaG9va3MvYWZ0ZXItbG9nb3V0J1xuaW1wb3J0IHsgZ2V0QmVmb3JlRGVsZXRlSG9vayB9IGZyb20gJy4vaG9va3MvYmVmb3JlLWRlbGV0ZSdcbmltcG9ydCB7IGJldHRlckF1dGhTdHJhdGVneSB9IGZyb20gJy4vYmV0dGVyLWF1dGgtc3RyYXRlZ3knXG5pbXBvcnQgeyBnZXRUaW1lc3RhbXBGaWVsZHMgfSBmcm9tICcuLi91dGlscy9nZXQtdGltZXN0YW1wLWZpZWxkcydcbmltcG9ydCB7IGdldEFsbFJvbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9nZXQtYWxsLXJvbGVzJ1xuaW1wb3J0IHsgZ2V0U2lnbnVwRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zaWdudXAnXG5pbXBvcnQgeyBnZXRTZXRBZG1pblJvbGVFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL3NldC1hZG1pbi1yb2xlJ1xuaW1wb3J0IHsgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL2dlbmVyYXRlLWludml0ZS11cmwnXG5pbXBvcnQgeyBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zZW5kLWludml0ZS11cmwnXG5pbXBvcnQgeyBjaGVja1VzZXJuYW1lUGx1Z2luIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9jaGVjay11c2VybmFtZS1wbHVnaW4nXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJzQ29sbGVjdGlvbih7XG4gIGluY29taW5nQ29sbGVjdGlvbnMsXG4gIHBsdWdpbk9wdGlvbnMsXG4gIGJldHRlckF1dGhPcHRpb25zXG59OiB7XG4gIGluY29taW5nQ29sbGVjdGlvbnM6IENvbGxlY3Rpb25Db25maWdbXVxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xuICBiZXR0ZXJBdXRoT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbn0pIHtcbiAgY29uc3QgdXNlclNsdWcgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MudXNlcnNcbiAgY29uc3QgYWNjb3VudFNsdWcgPSBwbHVnaW5PcHRpb25zLmFjY291bnRzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWNjb3VudHNcbiAgY29uc3Qgc2Vzc2lvblNsdWcgPSBwbHVnaW5PcHRpb25zLnNlc3Npb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3Muc2Vzc2lvbnNcbiAgY29uc3QgdmVyaWZpY2F0aW9uc1NsdWcgPSBwbHVnaW5PcHRpb25zLnZlcmlmaWNhdGlvbnM/LnNsdWcgPz8gYmFzZUNvbGxlY3Rpb25TbHVncy52ZXJpZmljYXRpb25zXG4gIGNvbnN0IGJhUGx1Z2lucyA9IGJldHRlckF1dGhPcHRpb25zLnBsdWdpbnMgPz8gbnVsbFxuICBjb25zdCBhZG1pblJvbGVzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWRtaW5Sb2xlcyA/PyBbJ2FkbWluJ11cbiAgY29uc3QgYWxsUm9sZU9wdGlvbnMgPSBnZXRBbGxSb2xlT3B0aW9ucyhwbHVnaW5PcHRpb25zKVxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gPSBpbmNvbWluZ0NvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlclNsdWcpIGFzIENvbGxlY3Rpb25Db25maWcgfCB1bmRlZmluZWRcblxuICBjb25zdCBhbGxvd2VkRmllbGRzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWxsb3dlZEZpZWxkcyA/PyBbJ25hbWUnXVxuXG4gIGxldCB1c2Vyc0NvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcgPSB7XG4gICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbixcbiAgICBzbHVnOiB1c2VyU2x1ZyxcbiAgICBhZG1pbjoge1xuICAgICAgZGVmYXVsdENvbHVtbnM6IFsnZW1haWwnXSxcbiAgICAgIHVzZUFzVGl0bGU6ICdlbWFpbCcsXG4gICAgICBncm91cDogcGx1Z2luT3B0aW9ucz8uY29sbGVjdGlvbkFkbWluR3JvdXAgPz8gJ0F1dGgnLFxuICAgICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uYWRtaW4sXG4gICAgICBoaWRkZW46IHBsdWdpbk9wdGlvbnMudXNlcnM/LmhpZGRlbiA/PyBmYWxzZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBwYXRoOiAncGF5bG9hZC1hdXRoL2JldHRlci1hdXRoL3BsdWdpbi9jbGllbnQjQWRtaW5JbnZpdGVCdXR0b24nLFxuICAgICAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgICAgICByb2xlczogYWxsUm9sZU9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgZWRpdDoge1xuICAgICAgICAgICAgYWRtaW5CdXR0b25zOiB7XG4gICAgICAgICAgICAgIHRhYjoge1xuICAgICAgICAgICAgICAgIENvbXBvbmVudDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I0FkbWluQnV0dG9ucycsXG4gICAgICAgICAgICAgICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VyU2x1Z1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBPbmx5IHNob3cgdGhlIGltcGVyc29uYXRlIGJ1dHRvbiBpZiB0aGUgYWRtaW4gcGx1Z2luIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoYmFQbHVnaW5zICYmIGJhUGx1Z2lucy5zb21lKChwbHVnaW4pID0+IHBsdWdpbi5pZCA9PT0gJ2FkbWluJykpID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIGFkbWluOiAoeyByZXEgfSkgPT4gYWRtaW5Sb2xlcy5pbmNsdWRlcygocmVxLnVzZXI/LnJvbGUgYXMgc3RyaW5nKSA/PyAndXNlcicpLFxuICAgICAgcmVhZDogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgY3JlYXRlOiBpc0FkbWluV2l0aFJvbGVzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGRlbGV0ZTogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgdXBkYXRlOiBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzKHtcbiAgICAgICAgYWxsb3dlZEZpZWxkcyxcbiAgICAgICAgYWRtaW5Sb2xlcyxcbiAgICAgICAgdXNlclNsdWdcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmFjY2VzcyA/PyB7fSlcbiAgICB9LFxuICAgIGVuZHBvaW50czogW1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmVuZHBvaW50cyA/IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uZW5kcG9pbnRzIDogW10pLFxuICAgICAgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQodXNlclNsdWcpLFxuICAgICAgZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQocGx1Z2luT3B0aW9ucywgdXNlclNsdWcpLFxuICAgICAgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCh7XG4gICAgICAgIHJvbGVzOiBhbGxSb2xlT3B0aW9ucyxcbiAgICAgICAgcGx1Z2luT3B0aW9uc1xuICAgICAgfSksXG4gICAgICBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQocGx1Z2luT3B0aW9ucyksXG4gICAgICBnZXRTaWdudXBFbmRwb2ludChwbHVnaW5PcHRpb25zLCBiZXR0ZXJBdXRoT3B0aW9ucylcbiAgICBdLFxuICAgIGhvb2tzOiB7XG4gICAgICBiZWZvcmVDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVDaGFuZ2UgPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gW10gOiBbb25WZXJpZmllZENoYW5nZV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5hZnRlckNoYW5nZSA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGhcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGdldFN5bmNBY2NvdW50SG9vayh7XG4gICAgICAgICAgICAgICAgdXNlclNsdWcsXG4gICAgICAgICAgICAgICAgYWNjb3VudFNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYmVmb3JlTG9naW46IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVMb2dpbiA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGggPyBbXSA6IFtnZXRCZWZvcmVMb2dpbkhvb2soKV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dpbjogW1xuICAgICAgICAuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9naW4gPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBnZXRBZnRlckxvZ2luSG9vayh7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcsXG4gICAgICAgICAgICAgICAgdXNlcnNDb2xsZWN0aW9uU2x1ZzogdXNlclNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dvdXQ6IFsuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9nb3V0ID8/IFtdKSwgZ2V0QWZ0ZXJMb2dvdXRIb29rKHsgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcgfSldLFxuICAgICAgYmVmb3JlRGVsZXRlOiBbXG4gICAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5ob29rcz8uYmVmb3JlRGVsZXRlID8/IFtdKSxcbiAgICAgICAgZ2V0QmVmb3JlRGVsZXRlSG9vayh7XG4gICAgICAgICAgYWNjb3VudHNTbHVnOiBhY2NvdW50U2x1ZyxcbiAgICAgICAgICBzZXNzaW9uc1NsdWc6IHNlc3Npb25TbHVnLFxuICAgICAgICAgIHZlcmlmaWNhdGlvbnNTbHVnOiB2ZXJpZmljYXRpb25zU2x1Z1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0sXG4gICAgYXV0aDoge1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gJiYgdHlwZW9mIGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uYXV0aCA9PT0gJ29iamVjdCcgPyBleGlzdGluZ1VzZXJDb2xsZWN0aW9uLmF1dGggOiB7fSksXG4gICAgICBkaXNhYmxlTG9jYWxTdHJhdGVneTogcGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihoYXNVc2VybmFtZVBsdWdpbiAmJiB7XG4gICAgICAgIGxvZ2luV2l0aFVzZXJuYW1lOiB7XG4gICAgICAgICAgYWxsb3dFbWFpbExvZ2luOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVFbWFpbDogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlVXNlcm5hbWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3RyYXRlZ2llczogW2JldHRlckF1dGhTdHJhdGVneSh1c2VyU2x1ZyldXG4gICAgfSxcbiAgICBmaWVsZHM6IFtcbiAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5maWVsZHMgPz8gW10pLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgICAgc2F2ZVRvSldUOiB0cnVlLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlcnMgY2hvc2VuIGRpc3BsYXkgbmFtZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbWFpbFZlcmlmaWVkJyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIHNhdmVUb0pXVDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCBWZXJpZmllZCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBlbWFpbCBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ltYWdlJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBsYWJlbDogJ0ltYWdlJyxcbiAgICAgICAgc2F2ZVRvSldUOiBmYWxzZSxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBpbWFnZSBvZiB0aGUgdXNlcidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JvbGUnLFxuICAgICAgICBsYWJlbDogJ1JvbGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogcGx1Z2luT3B0aW9ucy51c2Vycz8uZGVmYXVsdFJvbGUgPz8gJ3VzZXInLFxuICAgICAgICBzYXZlVG9KV1Q6IHRydWUsXG4gICAgICAgIG9wdGlvbnM6IGFsbFJvbGVPcHRpb25zLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHJvbGUgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAuLi5nZXRUaW1lc3RhbXBGaWVsZHMoe1xuICAgICAgICBzYXZlVXBkYXRlZEF0VG9KV1Q6IGZhbHNlLFxuICAgICAgICBzYXZlQ3JlYXRlZEF0VG9KV1Q6IGZhbHNlXG4gICAgICB9KVxuICAgIF1cbiAgfVxuXG4gIGlmIChiYVBsdWdpbnMpIHtcbiAgICBiYVBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PiB7XG4gICAgICBzd2l0Y2ggKHBsdWdpbi5pZCkge1xuICAgICAgICBjYXNlICd0d28tZmFjdG9yJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3R3b0ZhY3RvckVuYWJsZWQnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ1R3byBGYWN0b3IgRW5hYmxlZCcsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gZW5hYmxlZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3VzZXJuYW1lJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsIC8vIFRPRE86IGRlY2lkZSBpZiB0aGlzIHNob3VsZCBiZSByZXF1aXJlZCwgd2lsbCBoYXZlIHRvIHRlbGwgdXNlcnMgdGhleSBuZWVkIHRvIGFkZCB1aSBmb3IgaXQuXG4gICAgICAgICAgICAgIGxhYmVsOiAnVXNlcm5hbWUnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGlzcGxheVVzZXJuYW1lJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgIGxhYmVsOiAnRGlzcGxheSBVc2VybmFtZScsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZGlzcGxheSB1c2VybmFtZSBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdhbm9ueW1vdXMnOlxuICAgICAgICAgIHVzZXJzQ29sbGVjdGlvbi5maWVsZHMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiAnaXNBbm9ueW1vdXMnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ0lzIEFub255bW91cycsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaXMgYW5vbnltb3VzLidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3Bob25lLW51bWJlcic6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAncGhvbmVOdW1iZXInLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIGxhYmVsOiAnUGhvbmUgTnVtYmVyJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwaG9uZSBudW1iZXIgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdwaG9uZU51bWJlclZlcmlmaWVkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdQaG9uZSBOdW1iZXIgVmVyaWZpZWQnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgcGhvbmUgbnVtYmVyIG9mIHRoZSB1c2VyIGhhcyBiZWVuIHZlcmlmaWVkJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2FkbWluJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5uZWQnLFxuICAgICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICBsYWJlbDogJ0Jhbm5lZCcsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSB1c2VyIGlzIGJhbm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2JhblJlYXNvbicsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW4gUmVhc29uJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSByZWFzb24gZm9yIHRoZSBiYW4nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5FeHBpcmVzJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgICBsYWJlbDogJ0JhbiBFeHBpcmVzJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIGJhbiB3aWxsIGV4cGlyZSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdoYXJtb255LWVtYWlsJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ25vcm1hbGl6ZWRFbWFpbCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICB1bmlxdWU6IHRydWUsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbm9ybWFsaXplZCBlbWFpbCBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaWYgKHBsdWdpbk9wdGlvbnMudXNlcnM/LmNvbGxlY3Rpb25PdmVycmlkZXMpIHtcbiAgICB1c2Vyc0NvbGxlY3Rpb24gPSBwbHVnaW5PcHRpb25zLnVzZXJzLmNvbGxlY3Rpb25PdmVycmlkZXMoe1xuICAgICAgY29sbGVjdGlvbjogdXNlcnNDb2xsZWN0aW9uXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB1c2Vyc0NvbGxlY3Rpb25cbn1cbiJdLCJuYW1lcyI6WyJiYXNlQ29sbGVjdGlvblNsdWdzIiwiaXNBZG1pbk9yQ3VycmVudFVzZXJVcGRhdGVXaXRoQWxsb3dlZEZpZWxkcyIsImlzQWRtaW5PckN1cnJlbnRVc2VyV2l0aFJvbGVzIiwiaXNBZG1pbldpdGhSb2xlcyIsImdldFJlZnJlc2hUb2tlbkVuZHBvaW50Iiwib25WZXJpZmllZENoYW5nZSIsImdldFN5bmNBY2NvdW50SG9vayIsImdldEJlZm9yZUxvZ2luSG9vayIsImdldEFmdGVyTG9naW5Ib29rIiwiZ2V0QWZ0ZXJMb2dvdXRIb29rIiwiZ2V0QmVmb3JlRGVsZXRlSG9vayIsImJldHRlckF1dGhTdHJhdGVneSIsImdldFRpbWVzdGFtcEZpZWxkcyIsImdldEFsbFJvbGVPcHRpb25zIiwiZ2V0U2lnbnVwRW5kcG9pbnQiLCJnZXRTZXRBZG1pblJvbGVFbmRwb2ludCIsImdldEdlbmVyYXRlSW52aXRlVXJsRW5kcG9pbnQiLCJnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQiLCJjaGVja1VzZXJuYW1lUGx1Z2luIiwiYnVpbGRVc2Vyc0NvbGxlY3Rpb24iLCJpbmNvbWluZ0NvbGxlY3Rpb25zIiwicGx1Z2luT3B0aW9ucyIsImJldHRlckF1dGhPcHRpb25zIiwidXNlclNsdWciLCJ1c2VycyIsInNsdWciLCJhY2NvdW50U2x1ZyIsImFjY291bnRzIiwic2Vzc2lvblNsdWciLCJzZXNzaW9ucyIsInZlcmlmaWNhdGlvbnNTbHVnIiwidmVyaWZpY2F0aW9ucyIsImJhUGx1Z2lucyIsInBsdWdpbnMiLCJhZG1pblJvbGVzIiwiYWxsUm9sZU9wdGlvbnMiLCJoYXNVc2VybmFtZVBsdWdpbiIsImV4aXN0aW5nVXNlckNvbGxlY3Rpb24iLCJmaW5kIiwiY29sbGVjdGlvbiIsImFsbG93ZWRGaWVsZHMiLCJ1c2Vyc0NvbGxlY3Rpb24iLCJhZG1pbiIsImRlZmF1bHRDb2x1bW5zIiwidXNlQXNUaXRsZSIsImdyb3VwIiwiY29sbGVjdGlvbkFkbWluR3JvdXAiLCJoaWRkZW4iLCJjb21wb25lbnRzIiwiRGVzY3JpcHRpb24iLCJwYXRoIiwiY2xpZW50UHJvcHMiLCJyb2xlcyIsInZpZXdzIiwiZWRpdCIsImFkbWluQnV0dG9ucyIsInRhYiIsIkNvbXBvbmVudCIsImNvbmRpdGlvbiIsInNvbWUiLCJwbHVnaW4iLCJpZCIsImFjY2VzcyIsInJlcSIsImluY2x1ZGVzIiwidXNlciIsInJvbGUiLCJyZWFkIiwiaWRGaWVsZCIsImNyZWF0ZSIsImRlbGV0ZSIsInVwZGF0ZSIsImVuZHBvaW50cyIsImhvb2tzIiwiYmVmb3JlQ2hhbmdlIiwiZGlzYWJsZURlZmF1bHRQYXlsb2FkQXV0aCIsImFmdGVyQ2hhbmdlIiwiYmVmb3JlTG9naW4iLCJhZnRlckxvZ2luIiwic2Vzc2lvbnNDb2xsZWN0aW9uU2x1ZyIsInVzZXJzQ29sbGVjdGlvblNsdWciLCJhZnRlckxvZ291dCIsImJlZm9yZURlbGV0ZSIsImFjY291bnRzU2x1ZyIsInNlc3Npb25zU2x1ZyIsImF1dGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsInVuZGVmaW5lZCIsImxvZ2luV2l0aFVzZXJuYW1lIiwiYWxsb3dFbWFpbExvZ2luIiwicmVxdWlyZUVtYWlsIiwicmVxdWlyZVVzZXJuYW1lIiwic3RyYXRlZ2llcyIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwibGFiZWwiLCJzYXZlVG9KV1QiLCJkZXNjcmlwdGlvbiIsInJlcXVpcmVkIiwidW5pcXVlIiwiaW5kZXgiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0Um9sZSIsIm9wdGlvbnMiLCJzYXZlVXBkYXRlZEF0VG9KV1QiLCJzYXZlQ3JlYXRlZEF0VG9KV1QiLCJmb3JFYWNoIiwicHVzaCIsInJlYWRPbmx5IiwiY29sbGVjdGlvbk92ZXJyaWRlcyJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsbUJBQW1CLFFBQVEscUJBQW9CO0FBQ3hELFNBQVNDLDJDQUEyQyxFQUFFQyw2QkFBNkIsRUFBRUMsZ0JBQWdCLFFBQVEsMEJBQXlCO0FBQ3RJLFNBQVNDLHVCQUF1QixRQUFRLDRCQUEyQjtBQUNuRSxTQUFTQyxnQkFBZ0IsUUFBUSw2QkFBNEI7QUFDN0QsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNCO0FBQ3pELFNBQVNDLGtCQUFrQixRQUFRLHVCQUFzQjtBQUN6RCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBcUI7QUFDdkQsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNC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
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzLCBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcywgaXNBZG1pbldpdGhSb2xlcyB9IGZyb20gJy4uL3V0aWxzL3BheWxvYWQtYWNjZXNzJ1xuaW1wb3J0IHsgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9yZWZyZXNoLXRva2VuJ1xuaW1wb3J0IHsgb25WZXJpZmllZENoYW5nZSB9IGZyb20gJy4vaG9va3Mvb24tdmVyaWZpZWQtY2hhbmdlJ1xuaW1wb3J0IHsgZ2V0U3luY0FjY291bnRIb29rIH0gZnJvbSAnLi9ob29rcy9zeW5jLWFjY291bnQnXG5pbXBvcnQgeyBnZXRCZWZvcmVMb2dpbkhvb2sgfSBmcm9tICcuL2hvb2tzL2JlZm9yZS1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9naW5Ib29rIH0gZnJvbSAnLi9ob29rcy9hZnRlci1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9nb3V0SG9vayB9IGZyb20gJy4vaG9va3MvYWZ0ZXItbG9nb3V0J1xuaW1wb3J0IHsgZ2V0QmVmb3JlRGVsZXRlSG9vayB9IGZyb20gJy4vaG9va3MvYmVmb3JlLWRlbGV0ZSdcbmltcG9ydCB7IGJldHRlckF1dGhTdHJhdGVneSB9IGZyb20gJy4vYmV0dGVyLWF1dGgtc3RyYXRlZ3knXG5pbXBvcnQgeyBnZXRUaW1lc3RhbXBGaWVsZHMgfSBmcm9tICcuLi91dGlscy9nZXQtdGltZXN0YW1wLWZpZWxkcydcbmltcG9ydCB7IGdldEFsbFJvbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9nZXQtYWxsLXJvbGVzJ1xuaW1wb3J0IHsgZ2V0U2lnbnVwRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zaWdudXAnXG5pbXBvcnQgeyBnZXRTZXRBZG1pblJvbGVFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL3NldC1hZG1pbi1yb2xlJ1xuaW1wb3J0IHsgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL2dlbmVyYXRlLWludml0ZS11cmwnXG5pbXBvcnQgeyBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zZW5kLWludml0ZS11cmwnXG5pbXBvcnQgeyBjaGVja1VzZXJuYW1lUGx1Z2luIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9jaGVjay11c2VybmFtZS1wbHVnaW4nXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJzQ29sbGVjdGlvbih7XG4gIGluY29taW5nQ29sbGVjdGlvbnMsXG4gIHBsdWdpbk9wdGlvbnMsXG4gIGJldHRlckF1dGhPcHRpb25zXG59OiB7XG4gIGluY29taW5nQ29sbGVjdGlvbnM6IENvbGxlY3Rpb25Db25maWdbXVxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xuICBiZXR0ZXJBdXRoT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbn0pIHtcbiAgY29uc3QgdXNlclNsdWcgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MudXNlcnNcbiAgY29uc3QgYWNjb3VudFNsdWcgPSBwbHVnaW5PcHRpb25zLmFjY291bnRzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWNjb3VudHNcbiAgY29uc3Qgc2Vzc2lvblNsdWcgPSBwbHVnaW5PcHRpb25zLnNlc3Npb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3Muc2Vzc2lvbnNcbiAgY29uc3QgdmVyaWZpY2F0aW9uc1NsdWcgPSBwbHVnaW5PcHRpb25zLnZlcmlmaWNhdGlvbnM/LnNsdWcgPz8gYmFzZUNvbGxlY3Rpb25TbHVncy52ZXJpZmljYXRpb25zXG4gIGNvbnN0IGJhUGx1Z2lucyA9IGJldHRlckF1dGhPcHRpb25zLnBsdWdpbnMgPz8gbnVsbFxuICBjb25zdCBhZG1pblJvbGVzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWRtaW5Sb2xlcyA/PyBbJ2FkbWluJ11cbiAgY29uc3QgYWxsUm9sZU9wdGlvbnMgPSBnZXRBbGxSb2xlT3B0aW9ucyhwbHVnaW5PcHRpb25zKVxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gPSBpbmNvbWluZ0NvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlclNsdWcpIGFzIENvbGxlY3Rpb25Db25maWcgfCB1bmRlZmluZWRcblxuICBjb25zdCBhbGxvd2VkRmllbGRzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWxsb3dlZEZpZWxkcyA/PyBbJ25hbWUnXVxuXG4gIGxldCB1c2Vyc0NvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcgPSB7XG4gICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbixcbiAgICBzbHVnOiB1c2VyU2x1ZyxcbiAgICBhZG1pbjoge1xuICAgICAgZGVmYXVsdENvbHVtbnM6IFsnZW1haWwnXSxcbiAgICAgIHVzZUFzVGl0bGU6ICdlbWFpbCcsXG4gICAgICBncm91cDogcGx1Z2luT3B0aW9ucz8uY29sbGVjdGlvbkFkbWluR3JvdXAgPz8gJ0F1dGgnLFxuICAgICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uYWRtaW4sXG4gICAgICBoaWRkZW46IHBsdWdpbk9wdGlvbnMudXNlcnM/LmhpZGRlbiA/PyBmYWxzZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBwYXRoOiAncGF5bG9hZC1hdXRoL2JldHRlci1hdXRoL3BsdWdpbi9jbGllbnQjQWRtaW5JbnZpdGVCdXR0b24nLFxuICAgICAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgICAgICByb2xlczogYWxsUm9sZU9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgZWRpdDoge1xuICAgICAgICAgICAgYWRtaW5CdXR0b25zOiB7XG4gICAgICAgICAgICAgIHRhYjoge1xuICAgICAgICAgICAgICAgIENvbXBvbmVudDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I0FkbWluQnV0dG9ucycsXG4gICAgICAgICAgICAgICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VyU2x1Z1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBPbmx5IHNob3cgdGhlIGltcGVyc29uYXRlIGJ1dHRvbiBpZiB0aGUgYWRtaW4gcGx1Z2luIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoYmFQbHVnaW5zICYmIGJhUGx1Z2lucy5zb21lKChwbHVnaW4pID0+IHBsdWdpbi5pZCA9PT0gJ2FkbWluJykpID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIGFkbWluOiAoeyByZXEgfSkgPT4gYWRtaW5Sb2xlcy5pbmNsdWRlcygocmVxLnVzZXI/LnJvbGUgYXMgc3RyaW5nKSA/PyAndXNlcicpLFxuICAgICAgcmVhZDogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgY3JlYXRlOiBpc0FkbWluV2l0aFJvbGVzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGRlbGV0ZTogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgdXBkYXRlOiBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzKHtcbiAgICAgICAgYWxsb3dlZEZpZWxkcyxcbiAgICAgICAgYWRtaW5Sb2xlcyxcbiAgICAgICAgdXNlclNsdWdcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmFjY2VzcyA/PyB7fSlcbiAgICB9LFxuICAgIGVuZHBvaW50czogW1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmVuZHBvaW50cyA/IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uZW5kcG9pbnRzIDogW10pLFxuICAgICAgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQodXNlclNsdWcpLFxuICAgICAgZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQocGx1Z2luT3B0aW9ucywgdXNlclNsdWcpLFxuICAgICAgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCh7XG4gICAgICAgIHJvbGVzOiBhbGxSb2xlT3B0aW9ucyxcbiAgICAgICAgcGx1Z2luT3B0aW9uc1xuICAgICAgfSksXG4gICAgICBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQocGx1Z2luT3B0aW9ucyksXG4gICAgICBnZXRTaWdudXBFbmRwb2ludChwbHVnaW5PcHRpb25zLCBiZXR0ZXJBdXRoT3B0aW9ucylcbiAgICBdLFxuICAgIGhvb2tzOiB7XG4gICAgICBiZWZvcmVDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVDaGFuZ2UgPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gW10gOiBbb25WZXJpZmllZENoYW5nZV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5hZnRlckNoYW5nZSA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGhcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGdldFN5bmNBY2NvdW50SG9vayh7XG4gICAgICAgICAgICAgICAgdXNlclNsdWcsXG4gICAgICAgICAgICAgICAgYWNjb3VudFNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYmVmb3JlTG9naW46IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVMb2dpbiA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGggPyBbXSA6IFtnZXRCZWZvcmVMb2dpbkhvb2soKV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dpbjogW1xuICAgICAgICAuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9naW4gPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBnZXRBZnRlckxvZ2luSG9vayh7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcsXG4gICAgICAgICAgICAgICAgdXNlcnNDb2xsZWN0aW9uU2x1ZzogdXNlclNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dvdXQ6IFsuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9nb3V0ID8/IFtdKSwgZ2V0QWZ0ZXJMb2dvdXRIb29rKHsgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcgfSldLFxuICAgICAgYmVmb3JlRGVsZXRlOiBbXG4gICAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5ob29rcz8uYmVmb3JlRGVsZXRlID8/IFtdKSxcbiAgICAgICAgZ2V0QmVmb3JlRGVsZXRlSG9vayh7XG4gICAgICAgICAgYWNjb3VudHNTbHVnOiBhY2NvdW50U2x1ZyxcbiAgICAgICAgICBzZXNzaW9uc1NsdWc6IHNlc3Npb25TbHVnLFxuICAgICAgICAgIHZlcmlmaWNhdGlvbnNTbHVnOiB2ZXJpZmljYXRpb25zU2x1Z1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0sXG4gICAgYXV0aDoge1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gJiYgdHlwZW9mIGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uYXV0aCA9PT0gJ29iamVjdCcgPyBleGlzdGluZ1VzZXJDb2xsZWN0aW9uLmF1dGggOiB7fSksXG4gICAgICBkaXNhYmxlTG9jYWxTdHJhdGVneTogcGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihoYXNVc2VybmFtZVBsdWdpbiAmJiB7XG4gICAgICAgIGxvZ2luV2l0aFVzZXJuYW1lOiB7XG4gICAgICAgICAgYWxsb3dFbWFpbExvZ2luOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVFbWFpbDogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlVXNlcm5hbWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3RyYXRlZ2llczogW2JldHRlckF1dGhTdHJhdGVneSh1c2VyU2x1ZyldXG4gICAgfSxcbiAgICBmaWVsZHM6IFtcbiAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5maWVsZHMgPz8gW10pLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgICAgc2F2ZVRvSldUOiB0cnVlLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlcnMgY2hvc2VuIGRpc3BsYXkgbmFtZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbWFpbFZlcmlmaWVkJyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIHNhdmVUb0pXVDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCBWZXJpZmllZCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBlbWFpbCBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ltYWdlJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBsYWJlbDogJ0ltYWdlJyxcbiAgICAgICAgc2F2ZVRvSldUOiBmYWxzZSxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBpbWFnZSBvZiB0aGUgdXNlcidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JvbGUnLFxuICAgICAgICBsYWJlbDogJ1JvbGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogcGx1Z2luT3B0aW9ucy51c2Vycz8uZGVmYXVsdFJvbGUgPz8gJ3VzZXInLFxuICAgICAgICBzYXZlVG9KV1Q6IHRydWUsXG4gICAgICAgIG9wdGlvbnM6IGFsbFJvbGVPcHRpb25zLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHJvbGUgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAuLi5nZXRUaW1lc3RhbXBGaWVsZHMoe1xuICAgICAgICBzYXZlVXBkYXRlZEF0VG9KV1Q6IGZhbHNlLFxuICAgICAgICBzYXZlQ3JlYXRlZEF0VG9KV1Q6IGZhbHNlXG4gICAgICB9KVxuICAgIF1cbiAgfVxuXG4gIGlmIChiYVBsdWdpbnMpIHtcbiAgICBiYVBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PiB7XG4gICAgICBzd2l0Y2ggKHBsdWdpbi5pZCkge1xuICAgICAgICBjYXNlICd0d28tZmFjdG9yJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3R3b0ZhY3RvckVuYWJsZWQnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ1R3byBGYWN0b3IgRW5hYmxlZCcsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gZW5hYmxlZCcsXG4gICAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgICBGaWVsZDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I1R3b0ZhY3RvckF1dGgnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd1c2VybmFtZSc6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHVuaXF1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLCAvLyBUT0RPOiBkZWNpZGUgaWYgdGhpcyBzaG91bGQgYmUgcmVxdWlyZWQsIHdpbGwgaGF2ZSB0byB0ZWxsIHVzZXJzIHRoZXkgbmVlZCB0byBhZGQgdWkgZm9yIGl0LlxuICAgICAgICAgICAgICBsYWJlbDogJ1VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSB1c2VybmFtZSBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2Rpc3BsYXlVc2VybmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBsYWJlbDogJ0Rpc3BsYXkgVXNlcm5hbWUnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGRpc3BsYXkgdXNlcm5hbWUgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnYW5vbnltb3VzJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ2lzQW5vbnltb3VzJyxcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgbGFiZWw6ICdJcyBBbm9ueW1vdXMnLFxuICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSB1c2VyIGlzIGFub255bW91cy4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdwaG9uZS1udW1iZXInOlxuICAgICAgICAgIHVzZXJzQ29sbGVjdGlvbi5maWVsZHMucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3Bob25lTnVtYmVyJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICBsYWJlbDogJ1Bob25lIE51bWJlcicsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcGhvbmUgbnVtYmVyIG9mIHRoZSB1c2VyJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAncGhvbmVOdW1iZXJWZXJpZmllZCcsXG4gICAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICAgIGxhYmVsOiAnUGhvbmUgTnVtYmVyIFZlcmlmaWVkJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHBob25lIG51bWJlciBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYmFubmVkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW5uZWQnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgdXNlciBpcyBiYW5uZWQgZnJvbSB0aGUgcGxhdGZvcm0nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5SZWFzb24nLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIGxhYmVsOiAnQmFuIFJlYXNvbicsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcmVhc29uIGZvciB0aGUgYmFuJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYmFuRXhwaXJlcycsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW4gRXhwaXJlcycsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBiYW4gd2lsbCBleHBpcmUnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnaGFybW9ueS1lbWFpbCc6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6ICdub3JtYWxpemVkRW1haWwnLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5vcm1hbGl6ZWQgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGlmIChwbHVnaW5PcHRpb25zLnVzZXJzPy5jb2xsZWN0aW9uT3ZlcnJpZGVzKSB7XG4gICAgdXNlcnNDb2xsZWN0aW9uID0gcGx1Z2luT3B0aW9ucy51c2Vycy5jb2xsZWN0aW9uT3ZlcnJpZGVzKHtcbiAgICAgIGNvbGxlY3Rpb246IHVzZXJzQ29sbGVjdGlvblxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gdXNlcnNDb2xsZWN0aW9uXG59XG4iXSwibmFtZXMiOlsiYmFzZUNvbGxlY3Rpb25TbHVncyIsImlzQWRtaW5PckN1cnJlbnRVc2VyVXBkYXRlV2l0aEFsbG93ZWRGaWVsZHMiLCJpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcyIsImlzQWRtaW5XaXRoUm9sZXMiLCJnZXRSZWZyZXNoVG9rZW5FbmRwb2ludCIsIm9uVmVyaWZpZWRDaGFuZ2UiLCJnZXRTeW5jQWNjb3VudEhvb2siLCJnZXRCZWZvcmVMb2dpbkhvb2siLCJnZXRBZnRlckxvZ2luSG9vayIsImdldEFmdGVyTG9nb3V0SG9vayIsImdldEJlZm9yZURlbGV0ZUhvb2siLCJiZXR0ZXJBdXRoU3RyYXRlZ3kiLCJnZXRUaW1lc3RhbXBGaWVsZHMiLCJnZXRBbGxSb2xlT3B0aW9ucyIsImdldFNpZ251cEVuZHBvaW50IiwiZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQiLCJnZXRHZW5lcmF0ZUludml0ZVVybEVuZHBvaW50IiwiZ2V0U2VuZEludml0ZVVybEVuZHBvaW50IiwiY2hlY2tVc2VybmFtZVBsdWdpbiIsImJ1aWxkVXNlcnNDb2xsZWN0aW9uIiwiaW5jb21pbmdDb2xsZWN0aW9ucyIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsInVzZXJTbHVnIiwidXNlcnMiLCJzbHVnIiwiYWNjb3VudFNsdWciLCJhY2NvdW50cyIsInNlc3Npb25TbHVnIiwic2Vzc2lvbnMiLCJ2ZXJpZmljYXRpb25zU2x1ZyIsInZlcmlmaWNhdGlvbnMiLCJiYVBsdWdpbnMiLCJwbHVnaW5zIiwiYWRtaW5Sb2xlcyIsImFsbFJvbGVPcHRpb25zIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJleGlzdGluZ1VzZXJDb2xsZWN0aW9uIiwiZmluZCIsImNvbGxlY3Rpb24iLCJhbGxvd2VkRmllbGRzIiwidXNlcnNDb2xsZWN0aW9uIiwiYWRtaW4iLCJkZWZhdWx0Q29sdW1ucyIsInVzZUFzVGl0bGUiLCJncm91cCIsImNvbGxlY3Rpb25BZG1pbkdyb3VwIiwiaGlkZGVuIiwiY29tcG9uZW50cyIsIkRlc2NyaXB0aW9uIiwicGF0aCIsImNsaWVudFByb3BzIiwicm9sZXMiLCJ2aWV3cyIsImVkaXQiLCJhZG1pbkJ1dHRvbnMiLCJ0YWIiLCJDb21wb25lbnQiLCJjb25kaXRpb24iLCJzb21lIiwicGx1Z2luIiwiaWQiLCJhY2Nlc3MiLCJyZXEiLCJpbmNsdWRlcyIsInVzZXIiLCJyb2xlIiwicmVhZCIsImlkRmllbGQiLCJjcmVhdGUiLCJkZWxldGUiLCJ1cGRhdGUiLCJlbmRwb2ludHMiLCJob29rcyIsImJlZm9yZUNoYW5nZSIsImRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGgiLCJhZnRlckNoYW5nZSIsImJlZm9yZUxvZ2luIiwiYWZ0ZXJMb2dpbiIsInNlc3Npb25zQ29sbGVjdGlvblNsdWciLCJ1c2Vyc0NvbGxlY3Rpb25TbHVnIiwiYWZ0ZXJMb2dvdXQiLCJiZWZvcmVEZWxldGUiLCJhY2NvdW50c1NsdWciLCJzZXNzaW9uc1NsdWciLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJ1bmRlZmluZWQiLCJsb2dpbldpdGhVc2VybmFtZSIsImFsbG93RW1haWxMb2dpbiIsInJlcXVpcmVFbWFpbCIsInJlcXVpcmVVc2VybmFtZSIsInN0cmF0ZWdpZXMiLCJmaWVsZHMiLCJuYW1lIiwidHlwZSIsImxhYmVsIiwic2F2ZVRvSldUIiwiZGVzY3JpcHRpb24iLCJyZXF1aXJlZCIsInVuaXF1ZSIsImluZGV4IiwiZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFJvbGUiLCJvcHRpb25zIiwic2F2ZVVwZGF0ZWRBdFRvSldUIiwic2F2ZUNyZWF0ZWRBdFRvSldUIiwiZm9yRWFjaCIsInB1c2giLCJGaWVsZCIsInJlYWRPbmx5IiwiY29sbGVjdGlvbk92ZXJyaWRlcyJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsbUJBQW1CLFFBQVEscUJBQW9CO0FBQ3hELFNBQVNDLDJDQUEyQyxFQUFFQyw2QkFBNkIsRUFBRUMsZ0JBQWdCLFFBQVEsMEJBQXlCO0FBQ3RJ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
@@ -1,5 +1,5 @@
1
+ import type { BetterAuthPluginOptions, SanitizedBetterAuthOptions } from '@/better-auth/plugin/types';
1
2
  import type { Config, Payload } from 'payload';
2
- import type { SanitizedBetterAuthOptions, BetterAuthPluginOptions } from '@/better-auth/plugin/types';
3
3
  /**
4
4
  * Sets up a middleware that enforces the saveToJwt configuration when setting session data.
5
5
  * This ensures that only fields specified in saveToJwt are included in the cookie cache
@@ -1 +1 @@
1
- {"version":3,"file":"save-to-jwt-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAErG;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,EAAE;IACD,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IAC/E,aAAa,EAAE,uBAAuB,CAAA;CACvC,QAyBA"}
1
+ {"version":3,"file":"save-to-jwt-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,EAAE;IACD,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IAC/E,aAAa,EAAE,uBAAuB,CAAA;CACvC,QA0BA"}
@@ -1,6 +1,7 @@
1
- import { setCookieCache } from "better-auth/cookies";
2
- import { createAuthMiddleware } from "better-auth/api";
3
1
  import { prepareSessionData } from "../../../helpers/prepare-session-data";
2
+ import { createAuthMiddleware } from "better-auth/api";
3
+ import { setSessionCookie } from "better-auth/cookies";
4
+ import { baseCollectionSlugs } from "../../../constants";
4
5
  /**
5
6
  * Sets up a middleware that enforces the saveToJwt configuration when setting session data.
6
7
  * This ensures that only fields specified in saveToJwt are included in the cookie cache
@@ -12,18 +13,19 @@ import { prepareSessionData } from "../../../helpers/prepare-session-data";
12
13
  if (typeof sanitizedOptions.hooks !== 'object') sanitizedOptions.hooks = {};
13
14
  const originalAfter = sanitizedOptions.hooks.after;
14
15
  sanitizedOptions.hooks.after = createAuthMiddleware(async (ctx)=>{
15
- const newSession = ctx.context?.session ?? ctx.context?.newSession;
16
- if (!newSession) return;
17
- const filteredSessionData = await prepareSessionData({
18
- newSession,
19
- payloadConfig,
20
- collectionSlugs: {
21
- userCollectionSlug: pluginOptions.users?.slug ?? 'users',
22
- sessionCollectionSlug: pluginOptions.sessions?.slug ?? 'sessions'
16
+ const newSession = ctx.context.newSession;
17
+ if (newSession) {
18
+ const filteredSessionData = await prepareSessionData({
19
+ sessionData: newSession,
20
+ payloadConfig,
21
+ collectionSlugs: {
22
+ userCollectionSlug: pluginOptions.users?.slug ?? baseCollectionSlugs.users,
23
+ sessionCollectionSlug: pluginOptions.sessions?.slug ?? baseCollectionSlugs.sessions
24
+ }
25
+ });
26
+ if (filteredSessionData) {
27
+ await setSessionCookie(ctx, filteredSessionData);
23
28
  }
24
- });
25
- if (filteredSessionData) {
26
- await setCookieCache(ctx, filteredSessionData);
27
29
  }
28
30
  if (typeof originalAfter === 'function') {
29
31
  return originalAfter(ctx);
@@ -32,4 +34,4 @@ import { prepareSessionData } from "../../../helpers/prepare-session-data";
32
34
  });
33
35
  }
34
36
 
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvc2F2ZS10by1qd3QtbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRDb29raWVDYWNoZSB9IGZyb20gJ2JldHRlci1hdXRoL2Nvb2tpZXMnXG5pbXBvcnQgeyBjcmVhdGVBdXRoTWlkZGxld2FyZSB9IGZyb20gJ2JldHRlci1hdXRoL2FwaSdcbmltcG9ydCB7IHByZXBhcmVTZXNzaW9uRGF0YSB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2hlbHBlcnMvcHJlcGFyZS1zZXNzaW9uLWRhdGEnXG5cbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMsIEJldHRlckF1dGhQbHVnaW5PcHRpb25zIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXMnXG5cbi8qKlxuICogU2V0cyB1cCBhIG1pZGRsZXdhcmUgdGhhdCBlbmZvcmNlcyB0aGUgc2F2ZVRvSnd0IGNvbmZpZ3VyYXRpb24gd2hlbiBzZXR0aW5nIHNlc3Npb24gZGF0YS5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IG9ubHkgZmllbGRzIHNwZWNpZmllZCBpbiBzYXZlVG9Kd3QgYXJlIGluY2x1ZGVkIGluIHRoZSBjb29raWUgY2FjaGVcbiAqIGZvciBib3RoIHVzZXIgYW5kIHNlc3Npb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgbWlkZGxld2FyZSBydW5zIGFmdGVyIGF1dGhlbnRpY2F0aW9uIGFuZCBmaWx0ZXJzIHRoZSBzZXNzaW9uIGRhdGEgYmFzZWQgb25cbiAqIHRoZSBjb2xsZWN0aW9uIGNvbmZpZ3VyYXRpb25zIGJlZm9yZSBzdG9yaW5nIGl0IGluIHRoZSBjb29raWUgY2FjaGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXZlVG9Kd3RNaWRkbGV3YXJlKHtcbiAgc2FuaXRpemVkT3B0aW9ucyxcbiAgcGF5bG9hZENvbmZpZyxcbiAgcGx1Z2luT3B0aW9uc1xufToge1xuICBzYW5pdGl6ZWRPcHRpb25zOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9uc1xuICBwYXlsb2FkQ29uZmlnOiBQYXlsb2FkWydjb25maWcnXSB8IENvbmZpZyB8IFByb21pc2U8UGF5bG9hZFsnY29uZmlnJ10gfCBDb25maWc+XG4gIHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zXG59KSB7XG4gIGlmICh0eXBlb2Ygc2FuaXRpemVkT3B0aW9ucy5ob29rcyAhPT0gJ29iamVjdCcpIHNhbml0aXplZE9wdGlvbnMuaG9va3MgPSB7fVxuXG4gIGNvbnN0IG9yaWdpbmFsQWZ0ZXIgPSBzYW5pdGl6ZWRPcHRpb25zLmhvb2tzLmFmdGVyXG4gIHNhbml0aXplZE9wdGlvbnMuaG9va3MuYWZ0ZXIgPSBjcmVhdGVBdXRoTWlkZGxld2FyZShhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3QgbmV3U2Vzc2lvbiA9IGN0eC5jb250ZXh0Py5zZXNzaW9uID8/IGN0eC5jb250ZXh0Py5uZXdTZXNzaW9uXG4gICAgaWYgKCFuZXdTZXNzaW9uKSByZXR1cm5cblxuICAgIGNvbnN0IGZpbHRlcmVkU2Vzc2lvbkRhdGEgPSBhd2FpdCBwcmVwYXJlU2Vzc2lvbkRhdGEoe1xuICAgICAgbmV3U2Vzc2lvbixcbiAgICAgIHBheWxvYWRDb25maWcsXG4gICAgICBjb2xsZWN0aW9uU2x1Z3M6IHtcbiAgICAgICAgdXNlckNvbGxlY3Rpb25TbHVnOiBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/ICd1c2VycycsXG4gICAgICAgIHNlc3Npb25Db2xsZWN0aW9uU2x1ZzogcGx1Z2luT3B0aW9ucy5zZXNzaW9ucz8uc2x1ZyA/PyAnc2Vzc2lvbnMnXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmIChmaWx0ZXJlZFNlc3Npb25EYXRhKSB7XG4gICAgICBhd2FpdCBzZXRDb29raWVDYWNoZShjdHgsIGZpbHRlcmVkU2Vzc2lvbkRhdGEgYXMgYW55KVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsQWZ0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbEFmdGVyKGN0eClcbiAgICB9XG4gICAgcmV0dXJuXG4gIH0pXG59XG4iXSwibmFtZXMiOlsic2V0Q29va2llQ2FjaGUiLCJjcmVhdGVBdXRoTWlkZGxld2FyZSIsInByZXBhcmVTZXNzaW9uRGF0YSIsInNhdmVUb0p3dE1pZGRsZXdhcmUiLCJzYW5pdGl6ZWRPcHRpb25zIiwicGF5bG9hZENvbmZpZyIsInBsdWdpbk9wdGlvbnMiLCJob29rcyIsIm9yaWdpbmFsQWZ0ZXIiLCJhZnRlciIsImN0eCIsIm5ld1Nlc3Npb24iLCJjb250ZXh0Iiwic2Vzc2lvbiIsImZpbHRlcmVkU2Vzc2lvbkRhdGEiLCJjb2xsZWN0aW9uU2x1Z3MiLCJ1c2VyQ29sbGVjdGlvblNsdWciLCJ1c2VycyIsInNsdWciLCJzZXNzaW9uQ29sbGVjdGlvblNsdWciLCJzZXNzaW9ucyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBYyxRQUFRLHNCQUFxQjtBQUNwRCxTQUFTQyxvQkFBb0IsUUFBUSxrQkFBaUI7QUFDdEQsU0FBU0Msa0JBQWtCLFFBQVEsd0NBQW1EO0FBS3RGOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNDLG9CQUFvQixFQUNsQ0MsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLGFBQWEsRUFLZDtJQUNDLElBQUksT0FBT0YsaUJBQWlCRyxLQUFLLEtBQUssVUFBVUgsaUJBQWlCRyxLQUFLLEdBQUcsQ0FBQztJQUUxRSxNQUFNQyxnQkFBZ0JKLGlCQUFpQkcsS0FBSyxDQUFDRSxLQUFLO0lBQ2xETCxpQkFBaUJHLEtBQUssQ0FBQ0UsS0FBSyxHQUFHUixxQkFBcUIsT0FBT1M7UUFDekQsTUFBTUMsYUFBYUQsSUFBSUUsT0FBTyxFQUFFQyxXQUFXSCxJQUFJRSxPQUFPLEVBQUVEO1FBQ3hELElBQUksQ0FBQ0EsWUFBWTtRQUVqQixNQUFNRyxzQkFBc0IsTUFBTVosbUJBQW1CO1lBQ25EUztZQUNBTjtZQUNBVSxpQkFBaUI7Z0JBQ2ZDLG9CQUFvQlYsY0FBY1csS0FBSyxFQUFFQyxRQUFRO2dCQUNqREMsdUJBQXVCYixjQUFjYyxRQUFRLEVBQUVGLFFBQVE7WUFDekQ7UUFDRjtRQUVBLElBQUlKLHFCQUFxQjtZQUN2QixNQUFNZCxlQUFlVSxLQUFLSTtRQUM1QjtRQUNBLElBQUksT0FBT04sa0JBQWtCLFlBQVk7WUFDdkMsT0FBT0EsY0FBY0U7UUFDdkI7UUFDQTtJQUNGO0FBQ0YifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvc2F2ZS10by1qd3QtbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwYXJlU2Vzc2lvbkRhdGEgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL3ByZXBhcmUtc2Vzc2lvbi1kYXRhJ1xuaW1wb3J0IHsgY3JlYXRlQXV0aE1pZGRsZXdhcmUgfSBmcm9tICdiZXR0ZXItYXV0aC9hcGknXG5pbXBvcnQgeyBzZXRTZXNzaW9uQ29va2llIH0gZnJvbSAnYmV0dGVyLWF1dGgvY29va2llcydcblxuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHMnXG4vKipcbiAqIFNldHMgdXAgYSBtaWRkbGV3YXJlIHRoYXQgZW5mb3JjZXMgdGhlIHNhdmVUb0p3dCBjb25maWd1cmF0aW9uIHdoZW4gc2V0dGluZyBzZXNzaW9uIGRhdGEuXG4gKiBUaGlzIGVuc3VyZXMgdGhhdCBvbmx5IGZpZWxkcyBzcGVjaWZpZWQgaW4gc2F2ZVRvSnd0IGFyZSBpbmNsdWRlZCBpbiB0aGUgY29va2llIGNhY2hlXG4gKiBmb3IgYm90aCB1c2VyIGFuZCBzZXNzaW9uIG9iamVjdHMuXG4gKlxuICogVGhlIG1pZGRsZXdhcmUgcnVucyBhZnRlciBhdXRoZW50aWNhdGlvbiBhbmQgZmlsdGVycyB0aGUgc2Vzc2lvbiBkYXRhIGJhc2VkIG9uXG4gKiB0aGUgY29sbGVjdGlvbiBjb25maWd1cmF0aW9ucyBiZWZvcmUgc3RvcmluZyBpdCBpbiB0aGUgY29va2llIGNhY2hlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2F2ZVRvSnd0TWlkZGxld2FyZSh7XG4gIHNhbml0aXplZE9wdGlvbnMsXG4gIHBheWxvYWRDb25maWcsXG4gIHBsdWdpbk9wdGlvbnNcbn06IHtcbiAgc2FuaXRpemVkT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbiAgcGF5bG9hZENvbmZpZzogUGF5bG9hZFsnY29uZmlnJ10gfCBDb25maWcgfCBQcm9taXNlPFBheWxvYWRbJ2NvbmZpZyddIHwgQ29uZmlnPlxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xufSkge1xuICBpZiAodHlwZW9mIHNhbml0aXplZE9wdGlvbnMuaG9va3MgIT09ICdvYmplY3QnKSBzYW5pdGl6ZWRPcHRpb25zLmhvb2tzID0ge31cbiAgY29uc3Qgb3JpZ2luYWxBZnRlciA9IHNhbml0aXplZE9wdGlvbnMuaG9va3MuYWZ0ZXJcbiAgc2FuaXRpemVkT3B0aW9ucy5ob29rcy5hZnRlciA9IGNyZWF0ZUF1dGhNaWRkbGV3YXJlKGFzeW5jIChjdHgpID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0gY3R4LmNvbnRleHQubmV3U2Vzc2lvblxuICAgIGlmIChuZXdTZXNzaW9uKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFNlc3Npb25EYXRhID0gYXdhaXQgcHJlcGFyZVNlc3Npb25EYXRhKHtcbiAgICAgICAgc2Vzc2lvbkRhdGE6IG5ld1Nlc3Npb24sXG4gICAgICAgIHBheWxvYWRDb25maWcsXG4gICAgICAgIGNvbGxlY3Rpb25TbHVnczoge1xuICAgICAgICAgIHVzZXJDb2xsZWN0aW9uU2x1ZzogcGx1Z2luT3B0aW9ucy51c2Vycz8uc2x1ZyA/PyBiYXNlQ29sbGVjdGlvblNsdWdzLnVzZXJzLFxuICAgICAgICAgIHNlc3Npb25Db2xsZWN0aW9uU2x1ZzogcGx1Z2luT3B0aW9ucy5zZXNzaW9ucz8uc2x1ZyA/PyBiYXNlQ29sbGVjdGlvblNsdWdzLnNlc3Npb25zXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChmaWx0ZXJlZFNlc3Npb25EYXRhKSB7XG4gICAgICAgIGF3YWl0IHNldFNlc3Npb25Db29raWUoY3R4LCBmaWx0ZXJlZFNlc3Npb25EYXRhKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsQWZ0ZXIoY3R4KVxuICAgIH1cblxuICAgIHJldHVyblxuICB9KVxufVxuIl0sIm5hbWVzIjpbInByZXBhcmVTZXNzaW9uRGF0YSIsImNyZWF0ZUF1dGhNaWRkbGV3YXJlIiwic2V0U2Vzc2lvbkNvb2tpZSIsImJhc2VDb2xsZWN0aW9uU2x1Z3MiLCJzYXZlVG9Kd3RNaWRkbGV3YXJlIiwic2FuaXRpemVkT3B0aW9ucyIsInBheWxvYWRDb25maWciLCJwbHVnaW5PcHRpb25zIiwiaG9va3MiLCJvcmlnaW5hbEFmdGVyIiwiYWZ0ZXIiLCJjdHgiLCJuZXdTZXNzaW9uIiwiY29udGV4dCIsImZpbHRlcmVkU2Vzc2lvbkRhdGEiLCJzZXNzaW9uRGF0YSIsImNvbGxlY3Rpb25TbHVncyIsInVzZXJDb2xsZWN0aW9uU2x1ZyIsInVzZXJzIiwic2x1ZyIsInNlc3Npb25Db2xsZWN0aW9uU2x1ZyIsInNlc3Npb25zIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxrQkFBa0IsUUFBUSx3Q0FBbUQ7QUFDdEYsU0FBU0Msb0JBQW9CLFFBQVEsa0JBQWlCO0FBQ3RELFNBQVNDLGdCQUFnQixRQUFRLHNCQUFxQjtBQUl0RCxTQUFTQyxtQkFBbUIsUUFBUSxxQkFBZ0M7QUFDcEU7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU0Msb0JBQW9CLEVBQ2xDQyxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsYUFBYSxFQUtkO0lBQ0MsSUFBSSxPQUFPRixpQkFBaUJHLEtBQUssS0FBSyxVQUFVSCxpQkFBaUJHLEtBQUssR0FBRyxDQUFDO0lBQzFFLE1BQU1DLGdCQUFnQkosaUJBQWlCRyxLQUFLLENBQUNFLEtBQUs7SUFDbERMLGlCQUFpQkcsS0FBSyxDQUFDRSxLQUFLLEdBQUdULHFCQUFxQixPQUFPVTtRQUN6RCxNQUFNQyxhQUFhRCxJQUFJRSxPQUFPLENBQUNELFVBQVU7UUFDekMsSUFBSUEsWUFBWTtZQUNkLE1BQU1FLHNCQUFzQixNQUFNZCxtQkFBbUI7Z0JBQ25EZSxhQUFhSDtnQkFDYk47Z0JBQ0FVLGlCQUFpQjtvQkFDZkMsb0JBQW9CVixjQUFjVyxLQUFLLEVBQUVDLFFBQVFoQixvQkFBb0JlLEtBQUs7b0JBQzFFRSx1QkFBdUJiLGNBQWNjLFFBQVEsRUFBRUYsUUFBUWhCLG9CQUFvQmtCLFFBQVE7Z0JBQ3JGO1lBQ0Y7WUFFQSxJQUFJUCxxQkFBcUI7Z0JBQ3ZCLE1BQU1aLGlCQUFpQlMsS0FBS0c7WUFDOUI7UUFDRjtRQUVBLElBQUksT0FBT0wsa0JBQWtCLFlBQVk7WUFDdkMsT0FBT0EsY0FBY0U7UUFDdkI7UUFFQTtJQUNGO0FBQ0YifQ==
@@ -0,0 +1,4 @@
1
+ import './index.scss';
2
+ import React from 'react';
3
+ export declare const TwoFactorAuth: React.FC;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/two-factor-auth/index.tsx"],"names":[],"mappings":"AAEA,OAAO,cAAc,CAAA;AAErB,OAAO,KAA4B,MAAM,OAAO,CAAA;AAahD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAqPjC,CAAA"}
@@ -0,0 +1,344 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import "./index.scss";
4
+ import React, { useMemo, useState } from "react";
5
+ import { XIcon, Copy } from "lucide-react";
6
+ import { Button, Modal, toast, useModal, useTranslation, useFormFields, useField } from "@payloadcms/ui";
7
+ import { createAuthClient } from "better-auth/react";
8
+ import { twoFactorClient } from "better-auth/client/plugins";
9
+ import { Form, FormInputWrap } from "../../../../../shared/form/ui";
10
+ import { z } from "zod";
11
+ import { passwordField } from "../../../../../shared/form/validation";
12
+ import { QRCodeSVG } from "qrcode.react";
13
+ import { useAppForm } from "../../../../../shared/form";
14
+ const baseClass = 'two-factor-auth-modal';
15
+ export const TwoFactorAuth = ()=>{
16
+ const [totpURI, setTotpURI] = useState('');
17
+ const [backupCodes, setBackupCodes] = useState(null);
18
+ const [formState, setFormState] = useState('enable');
19
+ const { openModal, closeModal } = useModal();
20
+ const { t } = useTranslation();
21
+ const twoFactorEnabledField = useFormFields(([fields])=>fields.twoFactorEnabled);
22
+ const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);
23
+ const { setValue: setTwoFactorEnabled } = useField({
24
+ path: 'twoFactorEnabled'
25
+ });
26
+ const authClient = useMemo(()=>createAuthClient({
27
+ plugins: [
28
+ twoFactorClient()
29
+ ]
30
+ }), []);
31
+ const copyURI = async ()=>{
32
+ if (!totpURI) return;
33
+ try {
34
+ await navigator.clipboard.writeText(totpURI);
35
+ toast.success('Copied');
36
+ } catch {
37
+ toast.error('Failed to copy');
38
+ }
39
+ };
40
+ // Form Schemas
41
+ const passwordSchema = z.object({
42
+ password: passwordField({
43
+ t
44
+ })
45
+ });
46
+ const otpSchema = z.object({
47
+ otp: z.string().length(6, 'Code must be 6 digits').refine((val)=>/^\d{6}$/.test(val), 'Code must be numeric')
48
+ });
49
+ const EnableForm = ()=>{
50
+ const [isLoading, setIsLoading] = useState(false);
51
+ const form = useAppForm({
52
+ defaultValues: {
53
+ password: ''
54
+ },
55
+ onSubmit: async ({ value })=>{
56
+ setIsLoading(true);
57
+ const { data, error } = await authClient.twoFactor.enable({
58
+ password: value.password
59
+ });
60
+ setIsLoading(false);
61
+ if (error) {
62
+ toast.error(error.message);
63
+ return;
64
+ }
65
+ setTotpURI(data.totpURI);
66
+ if (data && 'backupCodes' in data && data.backupCodes) {
67
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
68
+ } else {
69
+ setBackupCodes(null);
70
+ }
71
+ setFormState('verify');
72
+ },
73
+ validators: {
74
+ onSubmit: passwordSchema
75
+ }
76
+ });
77
+ return /*#__PURE__*/ _jsxs(Form, {
78
+ onSubmit: (e)=>{
79
+ e.preventDefault();
80
+ void form.handleSubmit();
81
+ },
82
+ className: "two-factor-enable-form",
83
+ children: [
84
+ /*#__PURE__*/ _jsx(FormInputWrap, {
85
+ className: "two-factor-enable-form__inputWrap",
86
+ children: /*#__PURE__*/ _jsx(form.AppField, {
87
+ name: "password",
88
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
89
+ type: "password",
90
+ className: "password",
91
+ label: "Password",
92
+ required: true
93
+ })
94
+ })
95
+ }),
96
+ /*#__PURE__*/ _jsx(form.AppForm, {
97
+ children: /*#__PURE__*/ _jsx(form.Submit, {
98
+ label: "Enable",
99
+ loadingLabel: "Enabling"
100
+ })
101
+ })
102
+ ]
103
+ });
104
+ };
105
+ const VerifyForm = ()=>{
106
+ const [isLoading, setIsLoading] = useState(false);
107
+ const form = useAppForm({
108
+ defaultValues: {
109
+ otp: ''
110
+ },
111
+ onSubmit: async ({ value })=>{
112
+ setIsLoading(true);
113
+ const { data, error } = await authClient.twoFactor.verifyTotp({
114
+ code: value.otp
115
+ });
116
+ setIsLoading(false);
117
+ if (error) {
118
+ toast.error(error.message);
119
+ return;
120
+ }
121
+ if (data && 'backupCodes' in data && data.backupCodes) {
122
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
123
+ }
124
+ toast.success('Two‑factor verified & enabled');
125
+ setTwoFactorEnabled(true);
126
+ setFormState('backupCodes');
127
+ },
128
+ validators: {
129
+ onSubmit: otpSchema
130
+ }
131
+ });
132
+ return /*#__PURE__*/ _jsxs(Form, {
133
+ onSubmit: (e)=>{
134
+ e.preventDefault();
135
+ void form.handleSubmit();
136
+ },
137
+ className: "two-factor-verify-form",
138
+ children: [
139
+ /*#__PURE__*/ _jsx(FormInputWrap, {
140
+ className: "tf__inputWrap",
141
+ children: /*#__PURE__*/ _jsx(form.AppField, {
142
+ name: "otp",
143
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
144
+ type: "text",
145
+ className: "text otp",
146
+ label: "6‑digit Code",
147
+ required: true
148
+ })
149
+ })
150
+ }),
151
+ /*#__PURE__*/ _jsx(form.AppForm, {
152
+ children: /*#__PURE__*/ _jsx(form.Submit, {
153
+ label: "Verify",
154
+ loadingLabel: "Verifying"
155
+ })
156
+ })
157
+ ]
158
+ });
159
+ };
160
+ const DisableForm = ()=>{
161
+ const form = useAppForm({
162
+ defaultValues: {
163
+ password: ''
164
+ },
165
+ onSubmit: async ({ value })=>{
166
+ await authClient.twoFactor.disable({
167
+ password: value.password
168
+ }, {
169
+ onSuccess () {
170
+ toast.success('Two‑factor disabled');
171
+ setTwoFactorEnabled(false);
172
+ closeModal('two-factor-auth-modal');
173
+ return undefined;
174
+ },
175
+ onError (ctx) {
176
+ toast.error(ctx.error.message);
177
+ }
178
+ });
179
+ },
180
+ validators: {
181
+ onSubmit: passwordSchema
182
+ }
183
+ });
184
+ return /*#__PURE__*/ _jsxs(Form, {
185
+ onSubmit: (e)=>{
186
+ e.preventDefault();
187
+ void form.handleSubmit();
188
+ },
189
+ className: "two-factor-disable-form mt-4",
190
+ children: [
191
+ /*#__PURE__*/ _jsx(FormInputWrap, {
192
+ className: "two-factor-disable-form__inputWrap",
193
+ children: /*#__PURE__*/ _jsx(form.AppField, {
194
+ name: "password",
195
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
196
+ type: "password",
197
+ className: "password",
198
+ label: "Password",
199
+ required: true
200
+ })
201
+ })
202
+ }),
203
+ /*#__PURE__*/ _jsx(form.AppForm, {
204
+ children: /*#__PURE__*/ _jsx(form.Submit, {
205
+ label: "Disable Two‑Factor",
206
+ loadingLabel: "Disabling"
207
+ })
208
+ })
209
+ ]
210
+ });
211
+ };
212
+ return /*#__PURE__*/ _jsxs("div", {
213
+ className: "two-factor-auth-field",
214
+ children: [
215
+ twoFactorEnabled ? /*#__PURE__*/ _jsx(Button, {
216
+ onClick: ()=>{
217
+ setFormState('disable');
218
+ openModal('two-factor-auth-modal');
219
+ },
220
+ size: "medium",
221
+ buttonStyle: "pill",
222
+ children: "Disable Two-Factor"
223
+ }) : /*#__PURE__*/ _jsx(Button, {
224
+ onClick: ()=>{
225
+ setFormState('enable');
226
+ openModal('two-factor-auth-modal');
227
+ },
228
+ size: "medium",
229
+ buttonStyle: "pill",
230
+ children: "Enable Two-Factor"
231
+ }),
232
+ /*#__PURE__*/ _jsx(Modal, {
233
+ slug: "two-factor-auth-modal",
234
+ className: baseClass,
235
+ closeOnBlur: true,
236
+ children: /*#__PURE__*/ _jsxs("div", {
237
+ className: `${baseClass}__wrapper`,
238
+ children: [
239
+ /*#__PURE__*/ _jsx(Button, {
240
+ onClick: ()=>closeModal('two-factor-auth-modal'),
241
+ buttonStyle: "icon-label",
242
+ size: "small",
243
+ className: `${baseClass}__close-button`,
244
+ children: /*#__PURE__*/ _jsx(XIcon, {
245
+ size: 24
246
+ })
247
+ }),
248
+ /*#__PURE__*/ _jsxs("div", {
249
+ className: `${baseClass}__content`,
250
+ style: {
251
+ maxWidth: '38rem'
252
+ },
253
+ children: [
254
+ formState === 'enable' && /*#__PURE__*/ _jsxs(_Fragment, {
255
+ children: [
256
+ /*#__PURE__*/ _jsx("h2", {
257
+ children: "Enable Two‑Factor"
258
+ }),
259
+ /*#__PURE__*/ _jsx(EnableForm, {})
260
+ ]
261
+ }),
262
+ formState === 'verify' && /*#__PURE__*/ _jsxs(_Fragment, {
263
+ children: [
264
+ /*#__PURE__*/ _jsx("h2", {
265
+ children: "Verify Two‑Factor"
266
+ }),
267
+ /*#__PURE__*/ _jsxs("div", {
268
+ className: "two-factor-auth-modal__verify-block",
269
+ children: [
270
+ /*#__PURE__*/ _jsx("p", {
271
+ children: "Scan the QR code with your authenticator app or copy the URI."
272
+ }),
273
+ /*#__PURE__*/ _jsx("div", {
274
+ className: "two-factor-auth-modal__qrcode",
275
+ children: /*#__PURE__*/ _jsx(QRCodeSVG, {
276
+ value: totpURI,
277
+ size: 200
278
+ })
279
+ }),
280
+ /*#__PURE__*/ _jsxs(Button, {
281
+ size: "small",
282
+ buttonStyle: "transparent",
283
+ onClick: copyURI,
284
+ className: "two-factor-auth-modal__copy-btn",
285
+ children: [
286
+ /*#__PURE__*/ _jsx(Copy, {
287
+ size: 18,
288
+ className: "two-factor-auth-modal__copy-icon"
289
+ }),
290
+ " Copy URI"
291
+ ]
292
+ }),
293
+ /*#__PURE__*/ _jsx(VerifyForm, {})
294
+ ]
295
+ })
296
+ ]
297
+ }),
298
+ formState === 'backupCodes' && backupCodes && /*#__PURE__*/ _jsxs(_Fragment, {
299
+ children: [
300
+ /*#__PURE__*/ _jsx("h2", {
301
+ children: "Backup Codes"
302
+ }),
303
+ /*#__PURE__*/ _jsxs("div", {
304
+ className: "two-factor-auth-modal__backup-codes",
305
+ children: [
306
+ /*#__PURE__*/ _jsx("ul", {
307
+ children: backupCodes.map((code, i)=>/*#__PURE__*/ _jsx("li", {
308
+ className: "two-factor-auth-modal__backup-code",
309
+ children: code
310
+ }, i))
311
+ }),
312
+ /*#__PURE__*/ _jsx("p", {
313
+ className: "two-factor-auth-modal__backup-desc",
314
+ children: "Store these codes in a safe place. Each code can be used once if you lose access to your authenticator."
315
+ })
316
+ ]
317
+ }),
318
+ /*#__PURE__*/ _jsx(Button, {
319
+ onClick: ()=>closeModal('two-factor-auth-modal'),
320
+ buttonStyle: "primary",
321
+ size: "large",
322
+ className: "two-factor-auth-modal__backup-codes-close-button",
323
+ children: "Saved them!"
324
+ })
325
+ ]
326
+ }),
327
+ formState === 'disable' && /*#__PURE__*/ _jsxs(_Fragment, {
328
+ children: [
329
+ /*#__PURE__*/ _jsx("h2", {
330
+ children: "Two‑Factor Authentication"
331
+ }),
332
+ /*#__PURE__*/ _jsx(DisableForm, {})
333
+ ]
334
+ })
335
+ ]
336
+ })
337
+ ]
338
+ })
339
+ })
340
+ ]
341
+ });
342
+ };
343
+
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3R3by1mYWN0b3ItYXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFhJY29uLCBDb3B5IH0gZnJvbSAnbHVjaWRlLXJlYWN0J1xuaW1wb3J0IHsgQnV0dG9uLCBNb2RhbCwgdG9hc3QsIHVzZU1vZGFsLCB1c2VUcmFuc2xhdGlvbiwgdXNlRm9ybUZpZWxkcywgdXNlRmllbGQgfSBmcm9tICdAcGF5bG9hZGNtcy91aSdcbmltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9yZWFjdCdcbmltcG9ydCB7IHR3b0ZhY3RvckNsaWVudCB9IGZyb20gJ2JldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zJ1xuaW1wb3J0IHsgRm9ybSwgRm9ybUlucHV0V3JhcCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdWknXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJ1xuaW1wb3J0IHsgcGFzc3dvcmRGaWVsZCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdmFsaWRhdGlvbidcbmltcG9ydCB7IFFSQ29kZVNWRyB9IGZyb20gJ3FyY29kZS5yZWFjdCdcbmltcG9ydCB7IHVzZUFwcEZvcm0gfSBmcm9tICdAL3NoYXJlZC9mb3JtJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAndHdvLWZhY3Rvci1hdXRoLW1vZGFsJ1xuXG5leHBvcnQgY29uc3QgVHdvRmFjdG9yQXV0aDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFt0b3RwVVJJLCBzZXRUb3RwVVJJXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbYmFja3VwQ29kZXMsIHNldEJhY2t1cENvZGVzXSA9IHVzZVN0YXRlPHN0cmluZ1tdIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2Zvcm1TdGF0ZSwgc2V0Rm9ybVN0YXRlXSA9IHVzZVN0YXRlPCdlbmFibGUnIHwgJ3ZlcmlmeScgfCAnYmFja3VwQ29kZXMnIHwgJ2Rpc2FibGUnPignZW5hYmxlJylcbiAgY29uc3QgeyBvcGVuTW9kYWwsIGNsb3NlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHR3b0ZhY3RvckVuYWJsZWRGaWVsZCA9IHVzZUZvcm1GaWVsZHMoKFtmaWVsZHNdKSA9PiBmaWVsZHMudHdvRmFjdG9yRW5hYmxlZClcbiAgY29uc3QgdHdvRmFjdG9yRW5hYmxlZCA9IEJvb2xlYW4odHdvRmFjdG9yRW5hYmxlZEZpZWxkPy52YWx1ZSlcbiAgY29uc3QgeyBzZXRWYWx1ZTogc2V0VHdvRmFjdG9yRW5hYmxlZCB9ID0gdXNlRmllbGQoeyBwYXRoOiAndHdvRmFjdG9yRW5hYmxlZCcgfSlcblxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3R3b0ZhY3RvckNsaWVudCgpXSB9KSwgW10pXG5cbiAgY29uc3QgY29weVVSSSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRvdHBVUkkpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0b3RwVVJJKVxuICAgICAgdG9hc3Quc3VjY2VzcygnQ29waWVkJylcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gY29weScpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBTY2hlbWFzXG4gIGNvbnN0IHBhc3N3b3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCB9KVxuICB9KVxuXG4gIGNvbnN0IG90cFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBvdHA6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmxlbmd0aCg2LCAnQ29kZSBtdXN0IGJlIDYgZGlnaXRzJylcbiAgICAgIC5yZWZpbmUoKHZhbCkgPT4gL15cXGR7Nn0kLy50ZXN0KHZhbCksICdDb2RlIG11c3QgYmUgbnVtZXJpYycpXG4gIH0pXG5cbiAgY29uc3QgRW5hYmxlRm9ybSA9ICgpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBhdXRoQ2xpZW50LnR3b0ZhY3Rvci5lbmFibGUoeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHNldFRvdHBVUkkoZGF0YS50b3RwVVJJKVxuICAgICAgICBpZiAoZGF0YSAmJiAnYmFja3VwQ29kZXMnIGluIGRhdGEgJiYgZGF0YS5iYWNrdXBDb2Rlcykge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKEFycmF5LmlzQXJyYXkoZGF0YS5iYWNrdXBDb2RlcykgPyBkYXRhLmJhY2t1cENvZGVzIDogU3RyaW5nKGRhdGEuYmFja3VwQ29kZXMpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKG51bGwpXG4gICAgICAgIH1cbiAgICAgICAgc2V0Rm9ybVN0YXRlKCd2ZXJpZnknKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWVuYWJsZS1mb3JtXCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZW5hYmxlLWZvcm1fX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZDogYW55KSA9PiA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cInBhc3N3b3JkXCIgbGFiZWw9XCJQYXNzd29yZFwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiRW5hYmxlXCIgbG9hZGluZ0xhYmVsPVwiRW5hYmxpbmdcIiAvPn0gLz5cbiAgICAgIDwvRm9ybT5cbiAgICApXG4gIH1cblxuICBjb25zdCBWZXJpZnlGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgICBkZWZhdWx0VmFsdWVzOiB7IG90cDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IG90cDogc3RyaW5nIH0gfSkgPT4ge1xuICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgYXV0aENsaWVudC50d29GYWN0b3IudmVyaWZ5VG90cCh7IGNvZGU6IHZhbHVlLm90cCB9KVxuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEgJiYgJ2JhY2t1cENvZGVzJyBpbiBkYXRhICYmIGRhdGEuYmFja3VwQ29kZXMpIHtcbiAgICAgICAgICBzZXRCYWNrdXBDb2RlcyhBcnJheS5pc0FycmF5KGRhdGEuYmFja3VwQ29kZXMpID8gZGF0YS5iYWNrdXBDb2RlcyA6IFN0cmluZyhkYXRhLmJhY2t1cENvZGVzKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSlcbiAgICAgICAgfVxuICAgICAgICB0b2FzdC5zdWNjZXNzKCdUd2/igJFmYWN0b3IgdmVyaWZpZWQgJiBlbmFibGVkJylcbiAgICAgICAgc2V0VHdvRmFjdG9yRW5hYmxlZCh0cnVlKVxuICAgICAgICBzZXRGb3JtU3RhdGUoJ2JhY2t1cENvZGVzJylcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBvdHBTY2hlbWEgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgdm9pZCBmb3JtLmhhbmRsZVN1Ym1pdCgpXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItdmVyaWZ5LWZvcm1cIj5cbiAgICAgICAgPEZvcm1JbnB1dFdyYXAgY2xhc3NOYW1lPVwidGZfX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwib3RwXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cInRleHQgb3RwXCIgbGFiZWw9XCI24oCRZGlnaXQgQ29kZVwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiVmVyaWZ5XCIgbG9hZGluZ0xhYmVsPVwiVmVyaWZ5aW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgRGlzYWJsZUZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIGF3YWl0IGF1dGhDbGllbnQudHdvRmFjdG9yLmRpc2FibGUoXG4gICAgICAgICAgeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1R3b+KAkWZhY3RvciBkaXNhYmxlZCcpXG4gICAgICAgICAgICAgIHNldFR3b0ZhY3RvckVuYWJsZWQoZmFsc2UpXG4gICAgICAgICAgICAgIGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpXG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yKGN0eDogYW55KSB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGN0eC5lcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWRpc2FibGUtZm9ybSBtdC00XCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZGlzYWJsZS1mb3JtX19pbnB1dFdyYXBcIj5cbiAgICAgICAgICA8Zm9ybS5BcHBGaWVsZFxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzc05hbWU9XCJwYXNzd29yZFwiIGxhYmVsPVwiUGFzc3dvcmRcIiByZXF1aXJlZCAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxmb3JtLkFwcEZvcm0gY2hpbGRyZW49ezxmb3JtLlN1Ym1pdCBsYWJlbD1cIkRpc2FibGUgVHdv4oCRRmFjdG9yXCIgbG9hZGluZ0xhYmVsPVwiRGlzYWJsaW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1maWVsZFwiPlxuICAgICAge3R3b0ZhY3RvckVuYWJsZWQgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRGb3JtU3RhdGUoJ2Rpc2FibGUnKVxuICAgICAgICAgICAgb3Blbk1vZGFsKCd0d28tZmFjdG9yLWF1dGgtbW9kYWwnKVxuICAgICAgICAgIH19XG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgYnV0dG9uU3R5bGU9XCJwaWxsXCI+XG4gICAgICAgICAgRGlzYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEZvcm1TdGF0ZSgnZW5hYmxlJylcbiAgICAgICAgICAgIG9wZW5Nb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJylcbiAgICAgICAgICB9fVxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGJ1dHRvblN0eWxlPVwicGlsbFwiPlxuICAgICAgICAgIEVuYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxNb2RhbCBzbHVnPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IGNsb3NlT25CbHVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJpY29uLWxhYmVsXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nsb3NlLWJ1dHRvbmB9PlxuICAgICAgICAgICAgPFhJY29uIHNpemU9ezI0fSAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfSBzdHlsZT17eyBtYXhXaWR0aDogJzM4cmVtJyB9fT5cbiAgICAgICAgICAgIHtmb3JtU3RhdGUgPT09ICdlbmFibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+RW5hYmxlIFR3b+KAkUZhY3RvcjwvaDI+XG4gICAgICAgICAgICAgICAgPEVuYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ3ZlcmlmeScgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoMj5WZXJpZnkgVHdv4oCRRmFjdG9yPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fdmVyaWZ5LWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8cD5TY2FuIHRoZSBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCBvciBjb3B5IHRoZSBVUkkuPC9wPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX3FyY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlU1ZHIHZhbHVlPXt0b3RwVVJJfSBzaXplPXsyMDB9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInNtYWxsXCIgYnV0dG9uU3R5bGU9XCJ0cmFuc3BhcmVudFwiIG9uQ2xpY2s9e2NvcHlVUkl9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcHkgc2l6ZT17MTh9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1pY29uXCIgLz4gQ29weSBVUklcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPFZlcmlmeUZvcm0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2JhY2t1cENvZGVzJyAmJiBiYWNrdXBDb2RlcyAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGgyPkJhY2t1cCBDb2RlczwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX2JhY2t1cC1jb2Rlc1wiPlxuICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICB7YmFja3VwQ29kZXMubWFwKChjb2RlLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17aX0gY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICBTdG9yZSB0aGVzZSBjb2RlcyBpbiBhIHNhZmUgcGxhY2UuIEVhY2ggY29kZSBjYW4gYmUgdXNlZCBvbmNlIGlmIHlvdSBsb3NlIGFjY2VzcyB0byB5b3VyIGF1dGhlbnRpY2F0b3IuXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJyl9XG4gICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fYmFja3VwLWNvZGVzLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgU2F2ZWQgdGhlbSFcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2Rpc2FibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+VHdv4oCRRmFjdG9yIEF1dGhlbnRpY2F0aW9uPC9oMj5cbiAgICAgICAgICAgICAgICA8RGlzYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTW9kYWw+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIlhJY29uIiwiQ29weSIsIkJ1dHRvbiIsIk1vZGFsIiwidG9hc3QiLCJ1c2VNb2RhbCIsInVzZVRyYW5zbGF0aW9uIiwidXNlRm9ybUZpZWxkcyIsInVzZUZpZWxkIiwiY3JlYXRlQXV0aENsaWVudCIsInR3b0ZhY3RvckNsaWVudCIsIkZvcm0iLCJGb3JtSW5wdXRXcmFwIiwieiIsInBhc3N3b3JkRmllbGQiLCJRUkNvZGVTVkciLCJ1c2VBcHBGb3JtIiwiYmFzZUNsYXNzIiwiVHdvRmFjdG9yQXV0aCIsInRvdHBVUkkiLCJzZXRUb3RwVVJJIiwiYmFja3VwQ29kZXMiLCJzZXRCYWNrdXBDb2RlcyIsImZvcm1TdGF0ZSIsInNldEZvcm1TdGF0ZSIsIm9wZW5Nb2RhbCIsImNsb3NlTW9kYWwiLCJ0IiwidHdvRmFjdG9yRW5hYmxlZEZpZWxkIiwiZmllbGRzIiwidHdvRmFjdG9yRW5hYmxlZCIsIkJvb2xlYW4iLCJ2YWx1ZSIsInNldFZhbHVlIiwic2V0VHdvRmFjdG9yRW5hYmxlZCIsInBhdGgiLCJhdXRoQ2xpZW50IiwicGx1Z2lucyIsImNvcHlVUkkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzdWNjZXNzIiwiZXJyb3IiLCJwYXNzd29yZFNjaGVtYSIsIm9iamVjdCIsInBhc3N3b3JkIiwib3RwU2NoZW1hIiwib3RwIiwic3RyaW5nIiwibGVuZ3RoIiwicmVmaW5lIiwidmFsIiwidGVzdCIsIkVuYWJsZUZvcm0iLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwiZGF0YSIsInR3b0ZhY3RvciIsImVuYWJsZSIsIm1lc3NhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJTdHJpbmciLCJzcGxpdCIsImZpbHRlciIsInZhbGlkYXRvcnMiLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVTdWJtaXQiLCJjbGFzc05hbWUiLCJBcHBGaWVsZCIsIm5hbWUiLCJjaGlsZHJlbiIsImZpZWxkIiwiVGV4dEZpZWxkIiwidHlwZSIsImxhYmVsIiwicmVxdWlyZWQiLCJBcHBGb3JtIiwiU3VibWl0IiwibG9hZGluZ0xhYmVsIiwiVmVyaWZ5Rm9ybSIsInZlcmlmeVRvdHAiLCJjb2RlIiwiRGlzYWJsZUZvcm0iLCJkaXNhYmxlIiwib25TdWNjZXNzIiwidW5kZWZpbmVkIiwib25FcnJvciIsImN0eCIsImRpdiIsIm9uQ2xpY2siLCJzaXplIiwiYnV0dG9uU3R5bGUiLCJzbHVnIiwiY2xvc2VPbkJsdXIiLCJzdHlsZSIsIm1heFdpZHRoIiwiaDIiLCJwIiwidWwiLCJtYXAiLCJpIiwibGkiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLE9BQU8sZUFBYztBQUVyQixPQUFPQSxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxR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