@alore/auth-react-ui 1.1.1-alpha.1 → 1.2.0-alpha.11

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 (43) hide show
  1. package/dist/cjs/auth/Login.js +66 -43
  2. package/dist/cjs/auth/Login.js.map +1 -1
  3. package/dist/cjs/auth/Register.js +86 -68
  4. package/dist/cjs/auth/Register.js.map +1 -1
  5. package/dist/cjs/components/Auth.d.ts +7 -1
  6. package/dist/cjs/components/Auth.js +57 -8
  7. package/dist/cjs/components/Auth.js.map +1 -1
  8. package/dist/cjs/components/AuthProvider.d.ts +23 -1
  9. package/dist/cjs/components/AuthProvider.js.map +1 -1
  10. package/dist/cjs/dictionaries/en.json +1 -0
  11. package/dist/cjs/dictionaries/pt.json +1 -0
  12. package/dist/cjs/get-dictionary.d.ts +3 -0
  13. package/dist/cjs/hooks/useAuthService.d.ts +66 -0
  14. package/dist/cjs/hooks/useAuthServiceInstance.d.ts +22 -0
  15. package/dist/cjs/hooks/useDictionary.d.ts +1 -0
  16. package/dist/cjs/index.d.ts +3 -3
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/machine/index.d.ts +44 -0
  19. package/dist/cjs/machine/index.js +331 -73
  20. package/dist/cjs/machine/index.js.map +1 -1
  21. package/dist/cjs/machine/types.d.ts +18 -2
  22. package/dist/mjs/auth/Login.js +64 -43
  23. package/dist/mjs/auth/Login.js.map +1 -1
  24. package/dist/mjs/auth/Register.js +22 -11
  25. package/dist/mjs/auth/Register.js.map +1 -1
  26. package/dist/mjs/components/Auth.d.ts +7 -1
  27. package/dist/mjs/components/Auth.js +57 -8
  28. package/dist/mjs/components/Auth.js.map +1 -1
  29. package/dist/mjs/components/AuthProvider.d.ts +23 -1
  30. package/dist/mjs/components/AuthProvider.js.map +1 -1
  31. package/dist/mjs/dictionaries/en.json +1 -0
  32. package/dist/mjs/dictionaries/pt.json +1 -0
  33. package/dist/mjs/get-dictionary.d.ts +3 -0
  34. package/dist/mjs/hooks/useAuthService.d.ts +66 -0
  35. package/dist/mjs/hooks/useAuthServiceInstance.d.ts +22 -0
  36. package/dist/mjs/hooks/useDictionary.d.ts +1 -0
  37. package/dist/mjs/index.d.ts +3 -3
  38. package/dist/mjs/index.js.map +1 -1
  39. package/dist/mjs/machine/index.d.ts +44 -0
  40. package/dist/mjs/machine/index.js +314 -80
  41. package/dist/mjs/machine/index.js.map +1 -1
  42. package/dist/mjs/machine/types.d.ts +18 -2
  43. package/package.json +5 -4
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-unused-vars */
3
- import { assign, createMachine, interpret, State } from 'xstate';
3
+ import { assign, createMachine, interpret, send, State } from 'xstate';
4
4
  const initialContext = {
5
5
  salt: undefined,
6
6
  error: undefined,
@@ -14,9 +14,11 @@ const initialContext = {
14
14
  forgeData: undefined,
15
15
  CCRPublicKey: undefined,
16
16
  RCRPublicKey: undefined,
17
+ // authProviderConfigs: undefined,
18
+ credentialEmail: undefined,
17
19
  };
18
20
  export const authMachine = createMachine({
19
- /** #no-spell-check @xstate-layout N4IgpgJg5mDOIC5QEMCuAXAFgWWQY0wEsA7MAYgCUBRAZSoBUB9AYQHkA5eqgDXoG0ADAF1EoAA4B7WIXSEJxUSAAeiALQBmAIwCAdAHYATHoCcANnUAOUwBYLevQBoQATzUGDmzTuMWB603oWBuohpgC+YU5oWLgEJGA6JPiyAG7kAJLs6fTpAIIAMukAWlSCIkggktKy8ooqCBrW1jrq1vaaBkECVqaaAKxOrg2adhY6pgJtHkZWbeoRURg4+ESkicTJhGlkmdl5hSV8muXiUjJyChX1qpp6pjqavbfGBn161sYvji5qI5M6QXsfQMAhefjsCxA0WWcTWm221Do-GEiiq51qV0Q2jGI0+QWmrT6AlMgzcAk8LWsrWM5NMPjakOhsVWCXh5Bo6QA4uxGABVAAKZVRZxql1A9QMVOM+iammswVMNgC3yGqncHW8NJpfWMJnUr0ZS2Z8R0bLIHO5fMFx2F1QudUQkvU0ve1jlCqV9lJDWmfQegVaHwsWluhpiKxNZvyrE5mSFFTRoodCHcFj9-RMwPspgM5gs3rV2l01gE3V1bxeboMYZhLNNeFS5AAYqwKJzWEx+bkaDQAOqtgAi8dOdox4sdAj6YzsRJMk0+NmsBc0xj692MthCmnUdwstj6NeNcIbWwSAHcwAAjdTMeSkBsSABOOjwd7AJ+IUDIbHYTfSFGwRheyoAAhdRGGjWN2GHSoRXtTEEEeOwHgMHwvlzHd5W9dw1x0PprGBKwp1GatIihI0I2PRsdAva9b2Ie90CfHQwAAW2QQgABt0mIMQMDIAA1KgKHSJsAE1GCobBcnSfJJMKWMQNk7IxJgxN4PHRDTCCFC0KMDD3gMbCQTGfDCNMYjAlIxZw1hVkTzSGirxvN8H2fNJH0IAAzZwSCgKh2K4qhOMIKBCEvLiZGcMgIHkBISBSCQAGtWQouz62o2iXIY98mPcsBPJ8vyAo4zjgtC8LIvQZwEASiQ8GQUUyjUuCx2ULETGldRyTuewDKwn4U38PQdEmczLKCQ9KPszLnPoxjmI87zfM-EqgpCsKIpC6qyAKx9mLETjGq8p9WNNNK6zZJy6NcvKdCWorVsCsqNsq7aarqhqmuEFrRzFdrEM6loeuVfqjMGyVczwgjOgsiwSKm9Krqy+bcuYtjSoMLzkFvCByCEkTxJYfIZMA38mCkmS5IMJtcl+9F-vqW5-kVTx5UMcxDOw2x7jG2GJus8jbMuhzzzm27FoK5a-OYI7CFY9gvPQNbOKx5AYri9ZEpS87hcjUXruyhb8sKlaoFljiFaVlW1dq4hEq+i5mpRBNWsZrELEecYCL6W4Ocw8GhleWxofG+GrMRkXZpunK3PuqXHvNuWreV561d2x99ufQ7jtO3Xa316OjbRk3pc-C35cV1PMexu2Hcap2fpdkcGeTEYvZsPpfb6zmBqDiYxj5ojw8msimWmjLT0N1G48ICBOPZKh8ioZgmB-dgV-oVt6aTBC5Q1N0LBedRfd8SxsO6rxUKnARc3lGx5jHi7C6nziJDC4hzQYAVGGoWMaC4BQPkdAKA7w0gDEsbQ8Kggss8E+HQSSDXlH6EE7g8SeEnBZA8T89ZUVfu-Eg5p6C5AoJ2bsNAADSVAJKQTjM3WCf1kzOlePoNc+ozABjsEuQatwLL6D0F3N0jxnQjEji-Ryb8P6JHnuQWhPJezZAABJAVAjeDgG9V7b3oepNqTMqReHeDqTwPh3gjHzDwncuhVyLiPsgkI1gxF4IkQQ4g0iF5kHbDGZeEEYx0JOAw1uCF2bpjdNYXoa53CBG9LqAwOhgjGE8H0fUeh-CtEcTNfBUi57uNyAOASuR2DMCoIwLejAuw9n7BQIc2i3bJiaCwgI7dgy6kCOYoY2l1AtBCJ8Vc8oCKhhwQXJxCRJEkDceyLkPJMhASUWU8hVDVI1MYQhIwegvC2BLAI4EjxtLehGHw7S3QiQ0hBBs9Jk9nFZJkV-Zeq85kVMHIwbADBFGsGqf4nR7sUyGBdPhSUt9SzkgIns4IzQBGPHlPqI+wJwiDKPBky5YzsmL1uWQh5VSnkvLeUcD5tSEJaElOMCYJgOi2BBOoPZoS8IpPsLqJU25zlXVGa45FNzN73L7I8559BXlDgMLi5Zml9TyjwrqUsntDJym4UMfozoARWBCJYX2U5BbjyRgbZl4ydDSCgMQXsMhMD8mQLAWAKVop-iyDQZR5TKHUJ8VBMBujEAn38HE+UntyTOjeE0bC3Rmj+BzDqSwJZsE2SGQikZLitU6r1Qao1JqzVkBtQsxg7AOyMBoAKfkrYuDvNtIEzSrxgjeBXK8AR8NXgDAhpKK+ehQR7jMcSScjKNVRuRdq0KsasDxtNWAaKIFcjMAoY6r5nQRVyl8Ckqkhhz4Qz9Q8GwuoOh0rSXCieTK20yPzjQPAj4wBgE-ha9IVqOUprkSOphY0AQfAmNod4hlEFBzdCNKkh9uiGFxKq5+wydCavbdCHde6D1JvmXatNTBM38mzaQqgebXaCoBtfe4K47i4gIrqYM2FAi6DhgEMw1iBB6BbdRP9W6AO7v3Z-JELAOADj2BwAofJ0inuoRe-FoJmgdFQt1Kkt9OgqkdIuloaz6mdFxGmYjmSkVbr2k+MgR6T3JrteepZBaAZbliZg7StL4bkmwtoP0lgNzd38N0OUknEUspk5nOTSmJLgYzVmnNsG2OFuBJ0hJLw3jEUrRfKkLQ-k0hPnSIIj8w3wouZGq5C9f31WQJxHtZqaCdpAz2FNDnIPQdza59TbpdBH0eD00sCSBFYd8OMKcpjtJNEgRZqL0mYtvwagl41vbnDJd1WQAdQ6cv1FaEYcY-gCIWXMNoYwFKIavoBJWk+ayj5Hzq7F6LkbmuJb7R1w9uxFOgZob46Cqnd5CvLXE8b7DPZ2DrdKx0YTeaWA8BuEEioiNrvVSRqNzLsBgCwBICANAwALxPPINldybWVLgy3Q7ECBGac9gRecxXH1YkVLErubNtLw0VM6RbmqPtfcwD9v7APRRdcHcOg74D6htCgXmFJ6o0wvD2V3Tp7RX0zFQgyF7UcpOuL3egTyYAUh+RoPF9AGs1h1R1mqrnlmdC8-54Lz8wvOLoDrnF76QheuIDaL7PC7gQT4V1DuPZxIvDBmIqEGwF3sdRrl4QAXQuRcZyzjoHO6ATqPjOlL8R9Wedfflw75XqvHbyGdgKtTlP+jpkCLcexipSxVqGIYTjOofD9CPrmCw1usm8QwD2s8T4IAk56+Tp1CAqT4TiRNMJQRjDejTJ01mtw1wnOQVnpFOf0B54L0X4dNp4Ph61ze6l-RtAdMsAJhAG4RqKs9d1AIw228so713x8he2DYH5MvLgjBPGcm8RaKZ+2w+Q8p4qZoOZSwdNlSMPZhI8J0g6LcI+YqwtC3DZFpb7e+Kd9a-n1fglhJRJdsHUS8vkPhDBvYmhgRcxPMJshg7BeYqR4YkktAuhNBF945TY-J8gXExd4p7ZkpUpcEI1P9XEHozYcCP4g8G4Q8m5j8KdEA1w-BRpUxnRAh8IQgE9EBfBmhb45RtQYDPZX8vcf1NVyDsDcDYpxcCDJdv0SCxCE4KCXFqD1ccV80T9GCdQxgaRgxuo-Bgg2luCfB9BnQdxuojACIqQMDxDPxKDCEpD8DtYiD38N0pEbCoA7DiAVDG4Nd+V1CGCEAu5jCdCQhSx9RZ0ZUwiARyQ7BzDDErDOdvdSDMCy4PDJDNYJdnCItXCxl3DPDvDaCNd1B6DS81wKQ8wklyVeg+4sRmZ9Am13BupDAhDrDFCJCP4ncDojo3c84RD5Co08jlDPoaDiBQ9-DS9htmg8QSxJgRgpw4DGDtJNQjBSw1lb5-BjAMDYBUA8A8A4BYAvJUBOJPDKAqAmxERlFB0ikewSlWAqEj9xivltB-l5UT5fBiQkl8JvQUkxh58Ht8JZgzAtiJAlYzxkA9104fw-wAIM1ewaMBxShQDkxfBeg8JtwUkXg7An9vjPYdAmg61vUdw6QLJgTQTwSwB05eQ6BGBFESEBxewSFikaY6YkSEI7gNwAQYk1lFwpxEdAiBE4kUSSxtwn8OhST0AwSITsYe9NcEAbB+gWgcw9xgw4Z9RviwkHhZs0xehuhPZYVwt11W03C2jPw1ZcZyAHCtZCD85sijTciTSoAzSfswACjRi6DHjkS+oHg+k9xekIV1T1l+s7tPBWhhC5CP8FCsDTTsZzS8CrTZDiCIyBiHSnS8ZXTmo+8IcAiaRtB9BPhpgQ0aiEATARoBF-BZVYZJgwzEyciyCUyYznTOjs5uj3dPdwzayUjE5UyXThjVDWTNIUTkN25txtIXgPA68dQ8TgRn1SwqR9cMDMBwSIBJSKTpSqTikaBWAmx6AGTqBGBmTZT2TeYkkeZhtZxvRRzNRxsSxVxu5M9EjRCo1FzV8Vz04CYgCaS4TcheQeVZShTRodkqi0wj5vQdw-QJgmcPhQRQRHsFylzXzpTusycSivku5zBRUjAJhj4pwrsEBLBTI-ALIPgQgVTQ039bS3spFSAzwBx7c9jvwOBoTAIESBJ0gil4TESULkwNwvZQQNw9C9SFjJ9-N2ZwihCwL7yDTXtucdBqLaLBd6LEQqB2ABwOK-yzBOkwK61ghsRDDEIYLRp4YzD+CNxCNWiozzZGzLTMibTDTKL7SLLzT0z3T+8NDJ9PhTdUJVxnRYciyxy4lQQUkpwu5PYpxzLUjYzZNmzc4PdbLpKZd3CnLeyfDZSp9mcJVzBUI6RUJjd9QHg8QNxYF4iMC91YAD0IAZZ5AvJCAPcRiVY4ybK+ikypFSryrKriBqrarRQVZnKNd+yAZ4YNSqQtBiIHtOg9kpUAQVxeh+tgxm0Hz+ipEMYuJ04lKVK1L+r6hy1pR49Jxm83i+S5Q5VdMEk3Rkk3QMDlrVZpT3yiZKZZJ9zaZDy0w-RCNb5gRTrAhDqvL9Bn9JRsNyR+hLq05ELSdZTzAzA8TiRbAIV-jb9QRFSepPBgxPBnspLpcfdOyzYbZpTrKZCsi7KZL3CcbkBeq-y6QRpPhAVMJjkJ9twGlH86RoK9wAhwrE4SamyXcWzej2y7S6yLKSaybNrEB2CRoj57AtB8LXQJq616iJhGjCMxNqyXC+bZc4A2qnpSpYy8anC4qMbkjWriAKrNauIkqCDg83S+quK2S7hdBHg-YfA74GceFD4KsqQQtRzqs2azZFEzxcglgGr8a9akjIzUjfb-asAhbrbNJPNwLcxggklI93BQLIb5S9xeTtJVlva-Jw6A6dbrSmqOz3Dc7I7krCi1DXLszdxhM7gQRViasU77g06CIehAQ0byLCaEqHSS7MBObXdWzg7HzjSLKe6o6PSEIeCUFNxvUJgSwhKPgvBgRyRCLfYoV0CFrmqxkvIvtYQoAmwnwYABxGp1Z86EyVb7LXFt70Bd797HxD7j6x7K7S8dxgxfrPhLEz9YZviQgoaoKQ0gq3gMCr6b6D6wAj70B1YoquaYq2yazVbgHVg97QHwHSay7LbZTnR-MrAm9ZjcxStBp5ToiCTugmbSx170aQ7kyLLOQJB34F4TjT6Cb4rMb3CaG6GwB8i0Gxin7ULehpRPAjAdQcJ59KU1lvY5QjEQyOZs7Pw2GoB6HcCoH+6ea4GL6sa-I5GFGqCuGXKsyJi3hB456zN6QrBKUiR9BbhK0Fwj5laKKZKoBaH5GOH0jpDdbC7VaHH2HOHzaRjuG9HULEk4kUNrFcxiRDqXUWhVx+CRq8NNiN6OzPGnGGGMig73G1HEmtGSAybMyAk3L8JyRvADGSxkDuo0wQUj4HggVDBvVDAjAMCMnnGOilHubYq0n7HHHMmvCdGrbx7NIyVOlXhsR+kUlHgQViQTDPZ3AbAgQkkSq-c7cFdzY908ZiBZB4sKBmAKBA63Hea1Hbd7dy5lmD01nOINmKBH7-G6knhRoL861iUyU9k9wrE5iP195bA5m+cFmZYjnVnCB1nNm+6WnYHz6ZL9nFnmAfmTmzmLncmAiwkKRadE6BEEkcqeE61OlCNUd8zam7gtjO1vnIBjm-nTmAWFNrUdt7U-FemIEWbRpTNnRzAcx+hfUKROhZzV60xSU8XdUCWVmoWAWkLZSPrmgmhMFUJsQElHmcxNSdR3gzNhr262mZcY1eWiX-mtnBWcnPlkwklUSggnndWj5b49kzAwVOgT5fZlQRruXiBVXfn1XUtbV7N01MtnNwdYXSjJgwU6QasvXtwuDAZtw6XyQCrvMyKlXMaVXDnCX7WSWtm7NU0XWnMYMhwtW8VNJfZeKYF8QTIggA3HhJwiUQ28xJhbEZGoAKAwAwpYB0ACp+RUBLwQo8AKE+0IWY2TntmC7dmiaHTK3q3a3Hx63G3CBm3W3IXiWYXtWglsH+EFQqc6QtBjINQiQRzkWKxHhy2+3CAa262G2m2W3nA22+XiXO2z67Gu6LKt2d3B292R2D2j21XOJsno6IEUXdJIU0xwUA3UxYk9Q82lUOhZn4nVb3Cr2B2h392x322T3GHB7FqHLUiwPd3h3R3D3x34sya-CeG6kzBB55SSyPAX6L5cIrAuFNlxtN2q3t3wPb3UOH3Y3T2mH9bQ7E4kOb2UP730On3um+BijqX6hZxpRzA3QnhdQwkhLIYvBVjWZiQjKv1VGe3L2qPr2IO72oPj34tAWYG4PN7+bEPlOaOOP1PH3J302IE5R7h+ltIiQklJwJPxVK9twzqQy-BbHO6WHe2DPkPIO0PoPNPmntOI3kjQOvP2OfP6OTnn3+PnVSOAQ1wnt8MTBA4PYf62gfXLBQQBG3PmG1b+2Cpxkv51q-5j16AKBcgcgOBJJpJZJZSmgJhRpQQ3hCMT5PgA2bhTLvB9W0FQnb5FXu3HI908vnxWUrVWA4TAFsAaAnk3kCghX1irzUcdwJGJ81R3rK9FQVUrAwnJKO6cvBvqP8vWVcl8lClilSlQdBwhX3BdA1k60rBUJo82vtxmDdQXh+gM8vMHFgPqJ9vr2Cu5EZkeUVEwJ15N4tEX2mZfAxgP1ghAUaQb1GdcIYFXPJwpQu5FtfuB2CukQf5iuAFhJgFhJavAhpRekfA9qZg+SbhbFvBQggxZwF6MfQuCvd9vEVMIfGCRhmdAhDBdxbOnugs8S9wBEsFg53gmehudAB3WJYBsAftNPmBoxqSJupvsAZv8havPgRoATWg1lbOVxlwzA-QTGCJzCghWbvup5Mf8uyqjbipnpGOdOrprfnxbfjb-JnpTOEMBP708SRERthtmXBobgZjRp5R9cnQcIJeDvXeNaPfSotOejWn+uEgXftU4+eqePhay9E6UIp0aVcQnu1lpRn9LFn1eedugu0+rqBJ4s54RiADCYJJ7qNfs-Z7-VTF6Rbgb9g+dlkMAx46dQb1K+U-cuY+WJnpa+QoIAG-BXs+PrYkby1wzcOYVv+h0K0wQQBHXhxsIRLeBvmea+6+Z-ic1rVK2AEShW7AcN4ZbhtdcwDfe+UlLOXrP2j5zBo+-viaHfYOq-mfv-SoXvAfHKWX4nZy0cwbSDYGXBm4ZQPgQEG8HVCf8seAAriI7z-6S8UB3HHxqoTTbe9EAZ+P0Poi7hrgzq8MQ3oRkiatdfYCSWYCPwU4H8MBDpeqr-1H5p9MBmHDnnKVQwAhGkXcSYO8EVCG89wC6HitfGGwmAkB+XTAYnwHroDx+7ArPpwMDRTEekGJWxGuGXCZtRodabQB8BbqTg+u9A1PszwoyNQwAK+NfKwA3xb5ikePUruV3SAcBDyYmOLo8BMgG43Qy4RUJZ0eBvAgqcAhlPv2MGS9TBtbCwT3luKMB0gA4ZeIeWeJEMVUxiEwMCmD4eBFQDXAFJ0DFQGgghY-P7qEPMG-5u8c-TgXWggJ+BLGhGRpMa1SFVDvAkoR2luHf5fcKGP6NPq+FYiHQvsfkMDo+Ab4sCjBeQrHh0K6GyBPwvQkYkALcqcJvAncSdHSA3C15e+Z+EtCNla67gtAkg58CMIXhjCK2BnPocTgC5J9gW57YIePx2HdDxhBwyYYoOi7FlKs4wFcMwhJROdoBIcGAiuAXB3BV0rQkgmn1QBlVHwbbMwYXmoDnFaAlxZgNcSm5bx7if5EYCNApoWRb42VfwNAOXYmAG00NctFsLVpu8ehNw7qj-xSY7NBhafQ2u7wmHEjABdw7DghDQpjA3QUTRUEEFuBeDdQ-oNlrfHE7uAWhu3fWmnwabJNXGXbckcz2FFDFsBKVNvrfDGBK0jAc+NgtANfqrg9qO4BJHxnk4gsGB4-SUR0QGE6jzhf3fUVkx464DgBEwbqKNHwhrJWgM4MwIbzuCGV-qq4B7kSDoFGihh+XU0Z-GOGyDWBEojpo0zNHSjy68-fjJE2f4wwUSyXYYGmGaA6htkpid7vNT+Ef4KR8zA5ubABaGizh3o58GCxlibMphAROkEkjwitA3qceFGgWAvzeB3qfyCCvYDxFFjy4ALf0Soy9GZjPm2Y6EeczpGXMEI2kOUN4HdqLCQQq4JYaqC15xJK0tOF4K1zibpjnezPJrPFn7EbZ5MW2clmljtR2Cie2fbqONmiJ2AekYncfAWFDIAhMI+GBnk6DxHrjOIm4lLAmwyzJtss2fLyijmYTmBQyljAsMRXqHQVyQkMC3iuINhp8nxL4zrG+KTZQY3WFdIcYWgXD1EdQpbcVF6GD4kCbxoKXMG8DjzkMBRSRKCXFmfGbMtxJQ+4ceM6RQ9OoWvJAit06CaYGhd4wjH0my6Ci1xZEs5luLJYsYJI35X8keJDR0tFx0NNLl3ALCSgUEpKExDAkMj8i5Bf3J8bxJSxIVIh0Q2IUeNBC0T305494JeN75ThKBC4NUYpM4kkTuJzWNSZ1nXJAJNmVAcrsUiuKsBeQnARgCBB-KJsmA7PaiUIX9AYZhSNacwAWE5bTYA0+iHmAtlyFp8wS5wT8LfTOZEISEaKJ1pSweL0ihUmXOJLXXN6rgMS2EaUNsjPH+B06NgbUfmLT4EjPwqnPABFxg6kixR3Y5njVKgB1SGpGHQcR6y+Tlpp86dKscqHGxhSrAeJOVmUWbzQ48RbUjqVxxkFdiqprUuPrNL85YD64fZJQZ8F4IkVSUVkMgcH2Oy8l9IZhMlK2NC6fZvsv2f7LlAuDA40pYOcGpvzD63oeMgILwQKVvKtAsEsCGKRBJ+7M8XeF0-HFdKJy3SAEqUgSb-CoD-xAE4NcwIQL8AeVFh5aZcFCkpC6lxs+ZM+GdKG5AyCc10wHJ-ColZSAYVolHMvx8oeBm8qMqGHWhNxYVP2hglqZLzbEVtcxTUs9u5wLFq1exizaFt1KnaaQvqUxXwCgQ+AmQCwhkgEMi21BThTKlUrmT2P9zjCOxNmaKicKd6QSAZWYvmSWIFlmctqt6SkDfGnKZ0hKqgKUDePeBsSLJ00uPhHUNS0dOpnENAYGMl5tSHZK0jTmtLVwyjOB52dMKjmDBPNi+T3DYnhEIiIzGuD8O2Xb0-CeynZc0zscn3FHuz7ZSwL2SZ31l4CEAAc6bD8nZzsTzZo+K+IkifwBBugkoPEWIFaxmoQRtbCACBAwDsAJA6AB2USy+iQAIhpSLSZxXuG2Bxm24YMNHkVEmACwHCEwr7ATr21TEi2d3A4x-wmo-8EAbHspXP5vI+5JMraqOJzKdAWaJPX2NJI6CdJPAzwzNqBI5x-Sp4881uRYIK5KV7pl3efiWCnJ3BfYtIIsFTxQy6BeSrnDHB4CUmj8b5i82AMvPT5xzLKeMV2YMOAV3y2pZtdaX7PuEdAICFnRrliVXB6VCwxaVBEIi+BEk55B9W+UUNXzgL3ekVNWdAw1lBdYFJClefAudKljS8oVPEujgCBm5xs7waSZOC6g8jgKOoefPqWIk-paFS8gvLJTABnhwhUJf8IBAu5VJDygQQUs1xhT3xbA0AnXEERCzPBsMno-MaItAXiLYAyARZuELzFcyDFYC4xaYroVMKnix4rpF3C2QiICUGi+UVottFagmghCu+sQrEWkLrFfkcIcnNOEWKiFICqxSYqCW2Ls5wAgMPUJoHahMEk4ZcEl2BgX4QqD+bBGRGIDOl4AFQPovcI0AvBKQ7QZiSQ3CTSSqc-CWYC6mF42BzkSQUWEUvFYmFJwy6VDBwm4UnxDKxJRJOSl1B1Z+5TQV+bAg-mX5pJ4+KcvMUfxBBNki2FGBLEfDIKhseJT9PAjPh6VJxxvYzDOCJCgSFl4sWOHdFfDHK-IyC03g8HdCgxe4cY-5D-JjFwwEYuQxZccvRjPQeI3+C5RWLZh4N-YXMCGJ8TD5hxnlV8xyK8uNjqMTaL0CqFtCijfKT51ynuAHGwiKhipjygWIcpjiQqrq3ZBFVcvvjIqAVQccKUPCeURwXlRyyFYlWThVwSa+K35TcpRUQwfAfoMyPzBHgKycuEKkuBPy1pVUaqrESAAyqRX-KiyWgAIMCo5WgrhFJBHlbPBkTfLSeYqKnHqEVr6ZX6WgAMG8FDIkNF89wyGJTVLTeYK0UkiGBSGoH7hekI4syrkNIwLwDV2uEtF5nLR5t82IzaGNHmIqpgfAGBdtDGn1Tdpa5faA1V6TGzaBLAVorMCaxKV10iwSXLfn6rIxLBAMlGA1fiHqITpbA1TUZhDCEwo8wk8oeSYAsGH2qEgUVdNdaIQFyynmPQXClMwbxJIXgC7cEOG1H5lrYsq2YNe1k7TUT+kPA0Krh0JDTjBMHwOlkYC8xyhCMREoLjjhcR4yQZN0tqILIgQ4QpyjSfRKOTpowxZhVkE8mZG6AfNlZUAJXOgH7n5kWC5vB2uv2NwaktAegywiEFzBCLZ1baZfHQv7lrJF6hVToAItCp15nRXrPjNf1AlMz8xLHJQh-HuEwo-Q9gFErOGDmvA68L85IUChIE+AGldqqNNsV2L7FDixxFxMgtvjGECU9NazqGWiTCCeeD8IkMkmJDikEKyAe4V0HuCXYi0oTDUYzllptBMF9gQFIM3LZ4qt53BKCoKT3Dj49Bnsb4h4CnJKogiR1F9e2qfLwVySase4X1BdCjBTqm4VcKBQFIQVNwW-NMIeqw1UVJF8lEdmAGY3IEHg2DP8WYgiJYhVioqUIqPgqF+By25pe4UumlCm8NleDEINEhXBTlDchIDHLarBWY1KR7VTquxBpFcRvNitCrCQLwyVZcKiSQgfqA4K9BQUoIYGjXCY3CbiyEFOlrz3vRMER1iECVeuvdrQEcwgy0zQh3Zog1CtyEgajARtHuYh+CSDoPDRwxcYT4lhVGoptLU251aEClWF5qK2GR0qlhZAnTPS3ep9A+uS1ntTgHlse6zGwtWJoe6EYZwcYpbuI0-ZEhOYy42Vbpx0AIM-It9e+hA38laBxG-Sf1sU29DuZliNKPEO8D0VcyINGjYMZ4X7nm9BS-QKfPhnLCUog2DMoeWgkMT1N-thGorYnXTA5hi+F+BJBZAmovyvhJYHCBuB4JHqvm0bb2Wc37n9YKsitbpKBKEo4MoxrzNcH4MslD0xkUbJZqtJJ2I7aQYfC7NiGX6Vb9kBiGJHlmERHVKOQ3OqZx1Wn9yVwxYCmhl3+SeB9M5jZmLLODRAlYpoXUNSUosjZhjNZ2SZaWE1KXx4Y5PNMedtXGS9kU0GgwTUq+BpUv5WIm8YRGl2Z0Z1bs8ftL1l7y9OIVut0GH0nCzFwUPqVIduAbzljzCmdX6Wbq1lpyJtz0fuUCv6BTA3umLXCjcGComEbskKRVNpDxFH9p+IxaDQgXXUKgsRVOJ7tM34QCD48oTUROrsYEC049RW6ZtoQPnvU7gvQVJbfCmp8NbEWgPbXiIKEWD1N7E6BM1x4VN41+3gtZSNkOT2jggA+iQJ0N2GEj+2hw8BCuq2o6q-e5YFAp1HL3pCRObCYavvC5VcTJegIgqPXOFVFaugsSHpBaz1yVabgrIvEjMSy36FfAp+qySzPG1UiiRFwFWNBoaH8IB5BEQwJXNSU2ATsNWDCD6rA2KygxXjBHW1oE4cFDK4muGCGi-k6FCmk4StHDkj3KSserM-sfcI25SdcO9IRoj31VA5gT5yLFmpALFJ17x+0Eiib2qK1jocMfg6zvoR8BXisGt48sexIfEsGVJPE9g7qnTUvztdfPPg1gsnGlLTq8McWjzDxHxS9hSUzZtIe4M67aNqELBe8Di66FmJ4B5orHPd6ZzY26myUPcGF58xWJK3FQzKEMkIEZghgHGTHwXWE4l1-0DffgMtx4kZJ82KmWv2IFzj7Et-KFA1si3czWZ7OlAyLXYSDZ7uGGBlm11npC8ZgIe3wBuBLXMzx+HsjOYnMl036QdTwug5LUT3FzYeY4ywk4sSHVzu1V+xuc3NbntzfmnciANSyYhiA1AuHbQcNCS60gokIABeErEHzWi1k+kCmqWicCXhW5TEViP0ZBCDGhpW-dhU4E8hQBMAZ6nPuY2mMcwfN4MM8HPCwBYgQQTgTAGAFCi7Gtc5iSnLxgsYzHjj48pYs13WMjHvtOXSxQXnPWL8CJ78+2hMtSHTAWC7mVCIM2DD5H9F4Su+ZbsR1KKqywVNlqwSPnFpT5p2PDJ6h8ULy4FcfKbYkf0oCkqye2zuI7VT0Fl6iNaEnlYxhNhLfFES8Ra+Dxh-ZVmyC2cBVg2LicwKKS4PYSm0rygm0eglJLib8WGLSF1FIfU3pGDjBdSqOETHQY0WxJcjOg9+cXy-0iK4TdC7VFEtqkfqitBmZoFTPfpCNqsxcp6aqfJDqnS0Yppk6Qprn+LfsJi6-UScjxi0dwtKe2oGgtOTktkP6uZcwfTFEAa2T4IYESc5E8xbOW-HmJK2D00hr0BmcFF5VhQRAgAA */
21
+ /** #no-spell-check @xstate-layout N4IgpgJg5mDOIC5QEMCuAXAFgWWQY0wEsA7MAYgCUBRAZSoBUB9AYQHkA5eqgDXoG0ADAF1EoAA4B7WIXSEJxUSAAeiALQBmAIwCAdAHYATHoCcANnUAOUwBYLevQBoQATzUGDmzTuMWB603oWBuohpgC+YU5oWLgEJGA6JPiyAG7kAJLs6fTpAIIAMukAWlSCIkggktKy8ooqCBrW1jrq1vaaBkECVqaaAKxOrg2adhY6pgJtHkZWbeoRURg4+ESkicTJhGlkmdl5hSV8muXiUjJyChX1qpp6pjqavbfGBn161sYvji5qI5M6QXsfQMAhefjsCxA0WWcTWm221Do-GEiiq51qV0Q2jGI0+QWmrT6AlMgzcAk8LWsrWM5NMPjakOhsVWCXh5Bo6QA4uxGABVAAKZVRZxql1A9QMVOM+iammswVMNgC3yGqncHW8NJpfWMJnUr0ZS2Z8R0bLIHO5fMFx2F1QudUQkvU0ve1jlCqV9lJDWmfQegVaHwsWluhpiKxNZvyrE5mSFFTRoodCHcFj9-RMwPspgM5gs3rV2l01gE3V1bxeboMYZhLNNeFS5AAYqwKJzWEx+bkaDQAOqtgAi8dOdox4sdAj6YzsRJMk0+NmsBc0xj692MthCmnUdwstj6NeNcIbWwSAHcwAAjdTMeSkBsSABOOjwd7AJ+IUDIbHYTfSFGwRheyoAAhdRGGjWN2GHSoRXtTEEEeOwHgMHwvlzHd5W9dw1x0PprGBKwp1GatIihI0I2PRsdAva9b2Ie90CfHQwAAW2QQgABt0mIMQMDIAA1KgKHSJsAE1GCobBcnSfJJMKWMQNk7IxJgxN4PHRDTCCFC0KMDD3gMbCQTGfDCNMYjAlIxZw1hVkTzSGirxvN8H2fNJH0IAAzZwSCgKh2K4qhOMIKBCEvLiZGcMgIHkBISBSCQAGtWQouz62o2iXIY98mPcsBPJ8vyAo4zjgtC8LIvQZwEASiQ8GQUUyjUuCx2ULETGldRyTuewDKwn4U38PQdEmczLKCQ9KPszLnPoxjmI87zfM-EqgpCsKIpC6qyAKx9mLETjGq8p9WNNNK6zZJy6NcvKdCWorVsCsqNsq7aarqhqmuEFrRzFdrEM6loeuVfqjMGyVczwgjOgsiwSKm9Krqy+bcuYtjSoMLzkFvCByCEkTxJYfIZMA38mCkmS5IMJtcl+9F-vqW5-kVTx5UMcxDOw2x7jG2GJus8jbMuhzzzm27FoK5a-OYI7CFY9gvPQNbOKx5AYri9ZEpS87hcjUXruyhb8sKlaoFljiFaVlW1dq4hEq+i5mpRBNWsZrELEecYCL6W4Ocw8GhleWxofG+GrMRkXZpunK3PuqXHvNuWreV561d2x99ufQ7jtO3Xa316OjbRk3pc-C35cV1PMexu2Hcap2fpdkcGeTEYvZsPpfb6zmBqDiYxj5ojw8msimWmjLT0N1G48ICBOPZKh8ioZgmB-dgV-oVt6aTBC5Q1N0LBedRfd8SxsO6rxUKnARc3lGx5jHi7C6nziJDC4hzQYAVGGoWMaC4BQPkdAKA7w0gDEsbQ8Kggss8E+HQSSDXlH6EE7g8SeEnBZA8T89ZUVfu-Eg5p6C5AoJ2bsNAADSVAJKQTjM3WCf1kzOlePoNc+ozABjsEuQatwLL6D0F3N0jxnQjEji-Ryb8P6JHnuQWhPJezZAABJAVAjeDgG9V7b3oepNqTMqReHeDqTwPh3gjHzDwncuhVyLiPsgkI1gxF4IkQQ4g0iF5kHbDGZeEEYx0JOAw1uCF2bpjdNYXoa53CBG9LqAwOhgjGE8H0fUeh-CtEcTNfBUi57uNyAOASuR2DMCoIwLejAuw9n7BQIc2i3bJiaCwgI7dgy6kCOYoY2l1AtBCJ8Vc8oCKhhwQXJxCRJEkDceyLkPJMhASUWU8hVDVI1MYQhIwegvC2BLAI4EjxtLehGHw7S3QiQ0hBBs9Jk9nFZJkV-Zeq85kVMHIwbADBFGsGqf4nR7sUyGBdPhSUt9SzkgIns4IzQBGPHlPqI+wJwiDKPBky5YzsmL1uWQh5VSnkvLeUcD5tSEJaElOMCYJgOi2BBOoPZoS8IpPsLqJU25zlXVGa45FNzN73L7I8559BXlDgMLi5Zml9TyjwrqUsntDJym4UMfozoARWBCJYX2U5BbjyRgbZl4ydDSCgMQXsMhMD8mQLAWAKVop-iyDQZR5TKHUJ8VBMBujEAn38HE+UntyTOjeE0bC3Rmj+BzDqSwJZsE2SGQikZLitU6r1Qao1JqzVkBtQsxg7AOyMBoAKfkrYuDvNtIEzSrxgjeBXK8AR8NXgDAhpKK+ehQR7jMcSScjKNVRuRdq0KsasDxtNWAaKIFcjMAoY6r5nQRVyl8Ckqkhhz4Qz9Q8GwuoOh0rSXCieTK20yPzjQPAj4wBgE-ha9IVqOUprkSOphY0AQfAmNod4hlEFBzdCNKkh9uiGFxKq5+wydCavbdCHde6D1JvmXatNTBM38mzaQqgebXaCoBtfe4K47i4gIrqYM2FAi6DhgEMw1iBB6BbdRP9W6AO7v3Z-JELAOADj2BwAofJ0inuoRe-FoJmgdFQt1Kkt9OgqkdIuloaz6mdFxGmYjmSkVbr2k+MgR6T3JrteepZBaAZbliZg7StL4bkmwtoP0lgNzd38N0OUknEUspk5nOTSmJLgYzVmnNsG2OFuBJ0hJLw3jEUrRfKkLQ-k0hPnSIIj8w3wouZGq5C9f31WQJxHtZqaCdpAz2FNDnIPQdza59TbpdBH0eD00sCSBFYd8OMKcpjtJNEgRZqL0mYtvwagl41vbnDJd1WQAdQ6cv1FaEYcY-gCIWXMNoYwFKIavoBJWk+ayj5Hzq7F6LkbmuJb7R1w9uxFOgZob46Cqnd5CvLXE8b7DPZ2DrdKx0YTeaWA8BuEEioiNrvVSRqNzLsBgCwBICANAwALxPPINldybWVLgy3Q7ECBGac9gRecxXH1YkVLErubNtLw0VM6RbmqPtfcwD9v7APRRdcHcOg74D6htCgXmFJ6o0wvD2V3Tp7RX0zFQgyF7UcpOuL3egTyYAUh+RoPF9AGs1h1R1mqrnlmdC8-54Lz8wvOLoDrnF76QheuIDaL7PC7gQT4V1DuPZxIvDBmIqEGwF3sdRrl4QAXQuRcZyzjoHO6ATqPjOlL8R9Wedfflw75XqvHbyGdgKtTlP+jpkCLcexipSxVqGIYTjOofD9CPrmCw1usm8QwD2s8T4IAk56+Tp1CAqT4TiRNMJQRjDejTJ01mtw1wnOQVnpFOf0B54L0X4dNp4Ph61ze6l-RtAdMsAJhAG4RqKs9d1AIw228so713x8he2DYH5MvLgjBPGcm8RaKZ+2w+Q8p4qZoOZSwdNlSMPZhI8J0g6LcI+YqwtC3DZFpb7e+Kd9a-n1fglhJRJdsHUS8vkPhDBvYmhgRcxPMJshg7BeYqR4YkktAuhNBF945TY-J8gXExd4p7ZkpUpcEI1P9XEHozYcCP4g8G4Q8m5j8KdEA1w-BRpUxnRAh8IQgE9EBfBmhb45RtQYDPZX8vcf1NVyDsDcDYpxcCDJdv0SCxCE4KCXFqD1ccV80T9GCdQxgaRgxuo-Bgg2luCfB9BnQdxuojACIqQMDxDPxKDCEpD8DtYiD38N0pEbCoA7DiAVDG4Nd+V1CGCEAu5jCdCQhSx9RZ0ZUwiARyQ7BzDDErDOdvdSDMCy4PDJDNYJdnCItXCxl3DPDvDaCNd1B6DS81wKQ8wklyVeg+4sRmZ9Am13BupDAhDrDFCJCP4ncDojo3c84RD5Co08jlDPoaDiBQ9-DS9htmg8QSxJgRgpw4DGDtJNQjBSw1lb5-BjAMDYBUA8A8A4BYAvJUBOJPDKAqAmxERlFB0ikewSlWAqEj9xivltB-l5UT5fBiQkl8JvQUkxh58Ht8JZgzAtiJAlYzxkA9104fw-wAIM1ewaMBxShQDkxfBeg8JtwUkXg7An9vjPYdAmg61vUdw6QLJgTQTwSwB05eQ6BGBFESEBxewSFikaY6YkSEI7gNwAQYk1lFwpxEdAiBE4kUSSxtwn8OhST0AwSITsYe9NcEAbB+gWgcw9xgw4Z9RviwkHhZs0xehuhPZYVwt11W03C2jPw1ZcZyAHCtZCD85sijTciTSoAzSfswACjRi6DHjkS+oHg+k9xekIV1T1l+s7tPBWhhC5CP8FCsDTTsZzS8CrTZDiCIyBiHSnS8ZXTmo+8IcAiaRtB9BPhpgQ0aiEATARoBF-BZVYZJgwzEyciyCUyYznTOjs5uj3dPdwzayUjE5UyXThjVDWTNIUTkN25txtIXgPA68dQ8TgRn1SwqR9cMDMBwSIBJSKTpSqTikaBWAmx6AGTqBGBmTZT2TeYkkeZhtZxvRRzNRxsSxVxu5M9EjRCo1FzV8Vz04CYgCaS4TcheQeVZShTRodkqi0wj5vQdw-QJgmcPhQRQRHsFylzXzpTusycSivku5zBRUjAJhj4pwrsEBLBTI-ALIPgQgVTQ039bS3spFSAzwBx7c9jvwOBoTAIESBJ0gil4TESULkwNwvZQQNw9C9SFjJ9-N2ZwihCwL7yDTXtucdBqLaLBd6LEQqB2ABwOK-yzBOkwK61ghsRDDEIYLRp4YzD+CNxCNWiozzZGzLTMibTDTKL7SLLzT0z3T+8NDJ9PhTdUJVxnRYciyxy4lQQUkpwu5PYpxzLUjYzZNmzc4PdbLpKZd3CnLeyfDZSp9mcJVzBUI6RUJjd9QHg8QNxYF4iMC91YAD0IAZZ5AvJCAPcRiVY4ybK+ikypFSryrKriBqrarRQVZnKNd+yAZ4YNSqQtBiIHtOg9kpUAQVxeh+tgxm0Hz+ipEMYuJ04lKVK1L+r6hy1pR49Jxm83i+S5Q5VdMEk3Rkk3QMDlrVZpT3yiZKZZJ9zaZDy0w-RCNb5gRTrAhDqvL9Bn9JRsNyR+hLq05ELSdZTzAzA8TiRbAIV-jb9QRFSepPBgxPBnspLpcfdOyzYbZpTrKZCsi7KZL3CcbkBeq-y6QRpPhAVMJjkJ9twGlH86RoK9wAhwrE4SamyXcWzej2y7S6yLKSaybNrEB2CRoj57AtB8LXQJq616iJhGjCMxNqyXC+bZc4A2qnpSpYy8anC4qMbkjWriAKrNauIkqCDg83S+quK2S7hdBHg-YfA74GceFD4KsqQQtRzqs2azZFEzxcglgGr8a9akjIzUjfb-asAhbrbNJPNwLcxggklI93BQLIb5S9xeTtJVlva-Jw6A6dbrSmqOz3Dc7I7krCi1DXLszdxhM7gQRViasU77g06CIehAQ0byLCaEqHSS7MBObXdWzg7HzjSLKe6o6PSEIeCUFNxvUJgSwhKPgvBgRyRCLfYoV0CFrmqxkvIvtYQoAmwnwYABxGp1Z86EyVb7LXFt70Bd797HxD7j6x7K7S8dxgxfrPhLEz9YZviQgoaoKQ0gq3gMCr6b6D6wAj70B1YoquaYq2yazVbgHVg97QHwHSay7LbZTnR-MrAm9ZjcxStBp5ToiCTugmbSx170aQ7kyLLOQJB34F4TjT6Cb4rMb3CaG6GwB8i0Gxin7ULehpRPAjAdQcJ59KU1lvY5QjEQyOZs7Pw2GoB6HcCoH+6ea4GL6sa-I5GFGqCuGXKsyJi3hB456zN6QrBKUiR9BbhK0Fwj5laKKZKoBaH5GOH0jpDdbC7VaHH2HOHzaRjuG9HULEk4kUNrFcxiRDqXUWhVx+CRq8NNiN6OzPGnGGGMig73G1HEmtGSAybMyAk3L8JyRvADGSxkDuo0wQUj4HggVDBvVDAjAMCMnnGOilHubYq0n7HHHMmvCdGrbx7NIyVOlXhsR+kUlHgQViQTDPZ3AbAgQkkSq-c7cFdzY908ZiBZB4sKBmAKBA63Hea1Hbd7dy5lmD01nOINmKBH7-G6knhRoL861iUyU9k9wrE5iP195bA5m+cFmZYjnVnCB1nNm+6WnYHz6ZL9nFnmAfmTmzmLncmAiwkKRadE6BEEkcqeE61OlCNUd8zam7gtjO1vnIBjm-nTmAWFNrUdt7U-FemIEWbRpTNnRzAcx+hfUKROhZzV60xSU8XdUCWVmoWAWkLZSPrmgmhMFUJsQElHmcxNSdR3gzNhr262mZcY1eWiX-mtnBWcnPlkwklUSggnndWj5b49kzAwVOgT5fZlQRruXiBVXfn1XUtbV7N01MtnNwdYXSjJgwU6QasvXtwuDAZtw6XyQCrvMyKlXMaVXDnCX7WSWtm7NU0XWnMYMhwtW8VNJfZeKYF8QTIggA3HhJwiUQ28xJhbEZGoAKAwAwpYB0ACp+RUBLwQo8AKE+0IWY2TntmC7dmiaHTK3q3a3Hx63G3CBm3W3IXiWYXtWglsH+EFQqc6QtBjINQiQRzkWKxHhy2+3CAa262G2m2W3nA22+XiXO2z67Gu6LKt2d3B292R2D2j21XOJsno6IEUXdJIU0xwUA3UxYk9Q82lUOhZn4nVb3Cr2B2h392x322T3GHB7FqHLUiwPd3h3R3D3x34sya-CeG6kzBB55SSyPAX6L5cIrAuFNlxtN2q3t3wPb3UOH3Y3T2mH9bQ7E4kOb2UP730On3um+BijqX6hZxpRzA3QnhdQwkhLIYvBVjWZiQjKv1VGe3L2qPr2IO72oPj34tAWYG4PN7+bEPlOaOOP1PH3J302IE5R7h+ltIiQklJwJPxVK9twzqQy-BbHO6WHe2DPkPIO0PoPNPmntOI3kjQOvP2OfP6OTnn3+PnVSOAQ1wnt8MTBA4PYf62gfXLBQQBG3PmG1b+2Cpxkv51q-5j16AKBcgcgOBJJpJZJZSmgJhRpQQ3hCMT5PgA2bhTLvB9W0FQnb5FXu3HI908vnxWUrVWA4TAFsAaAnk3kCghX1irzUcdwJGJ81R3rK9FQVUrAwnJKO6cvBvqP8vWVcl8lClilSlQdBwhX3BdA1k60rBUJo82vtxmDdQXh+gM8vMHFgPqJ9vr2Cu5EZkeUVEwJ15N4tEX2mZfAxgP1ghAUaQb1GdcIYFXPJwpQu5FtfuB2CukQf5iuAFhJgFhJavAhpRekfA9qZg+SbhbFvBQggxZwF6MfQuCvd9vEVMIfGCRhmdAhDBdxbOnugs8S9wBEsFg53gmehudAB3WJYBsAftNPmBoxqSJupvsAZv8havPgRoATWg1lbOVxlwzA-QTGCJzCghWbvup5Mf8uyqjbipnpGOdOrprfnxbfjb-JnpTOEMBP708SRERthtmXBobgZjRp5R9cnQcIJeDvXeNaPfSotOejWn+uEgXftU4+eqePhay9E6UIp0aVcQnu1lpRn9LFn1eedugu0+rqBJ4s54RiADCYJJ7qNfs-Z7-VTF6Rbgb9g+dlkMAx46dQb1K+U-cuY+WJnpa+QoIAG-BXs+PrYkby1wzcOYVv+h0K0wQQBHXhxsIRLeBvmea+6+Z-ic1rVK2AEShW7AcN4ZbhtdcwDfe+UlLOXrP2j5zBo+-viaHfYOq-mfv-SoXvAfHKWX4nZy0cwbSDYGXBm4ZQPgQEG8HVCf8seAAriI7z-6S8UB3HHxqoTTbe9EAZ+P0Poi7hrgzq8MQ3oRkiatdfYCSWYCPwU4H8MBDpeqr-1H5p9MBmHDnnKVQwAhGkXcSYO8EVCG89wC6HitfGGwmAkB+XTAYnwHroDx+7ArPpwMDRTEekGJWxGuGXCZtRodabQB8BbqTg+u9A1PszwoyNQwAK+NfKwA3xb5ikePUruV3SAcBDyYmOLo8BMgG43Qy4RUJZ0eBvAgqcAhlPv2MGS9TBtbCwT3luKMB0gA4ZeIeWeJEMVUxiEwMCmD4eBFQDXAFJ0DFQGgghY-P7qEPMG-5u8c-TgXWggJ+BLGhGRpMa1SFVDvAkoR2luHf5fcKGP6NPq+FYiHQvsfkMDo+Ab4sCjBeQrHh0K6GyBPwvQkYkALcqcJvAncSdHSA3C15e+Z+EtCNla67gtAkg58CMIXhjCK2BnPocTgC5J9gW57YIePx2HdDxhBwyYYoOi7FlKs4wFcMwhJROdoBIcGAiuAXB3BV0rQkgmn1QBlVHwbbMwYXmoDnFaAlxZgNcSm5bx7if5EYCNApoWRb42VfwNAOXYmAG00NctFsLVpu8ehNw7qj-xSY7NBhafQ2u7wmHEjABdw7DghDQpjA3QUTRUEEFuBeDdQ-oNlrfHE7uAWhu3fWmnwabJNXGXbckcz2FFDFsBKVNvrfDGBK0jAc+NgtANfqrg9qO4BJHxnk4gsGB4-SUR0QGE6jzhf3fUVkx464DgBEwbqKNHwhrJWgM4MwIbzuCGV-qq4B7kSDoFGihh+XU0Z-GOGyDWBEojpo0zNHSjy68-fjJE2f4wwUSyXYYGmGaA6htkpid7vNT+Ef4KR8zA5ubABaGizh3o58GCxlibMphAROkEkjwitA3qceFGgWAvzeB3qfyCCvYDxFFjy4ALf0Soy9GZjPm2Y6EeczpGXMEI2kOUN4HdqLCQQq4JYaqC15xJK0tOF4K1zibpjnezPJrPFn7EbZ5MW2clmljtR2Cie2fbqONmiJ2AekYncfAWFDIAhMI+GBnk6DxHrjOIm4lLAmwyzJtss2fLyijmYTmBQyljAsMRXqHQVyQkMC3iuINhp8nxL4zrG+KTZQY3WFdIcYWgXD1EdQpbcVF6GD4kCbxoKXMG8DjzkMBRSRKCXFmfGbMtxJQ+4ceM6RQ9OoWvJAit06CaYGhd4wjH0my6Ci1xZEs5luLJYsYJI35X8keJDR0tFx0NNLl3ALCSgUEpKExDAkMj8i5Bf3J8bxJSxIVIh0Q2IUeNBC0T305494JeN75ThKBC4NUYpM4kkTuJzWNSZ1nXJAJNmVAcrsUiuKsBeQnARgCBB-KJsmA7PaiUIX9AYZhSNacwAWE5bTYA0+iHmAtlyFp8wS5wT8LfTOZEISEaKJ1pSweL0ihUmXOJLXXN6rgMS2EaUNsjPH+B06NgbUfmLT4EjPwqnPABFxg6kixR3Y5njVKgB1SGpGHQcR6y+Tlpp86dKscqHGxhSrAeJOVmUWbzQ48RbUjqVxxkFdiqprUuPrNL85YD64fZJQZ8F4IkVSUVkMgcH2Oy8l9IZhMlK2NC6fZvsv2f7LlAuDA40pYOcGpvzD63oeMgILwQKVvKtAsEsCGKRBJ+7M8XeF0-HFdKJy3SAEqUgSb-CoD-xAE4NcwIQL8AeVFh5aZcFCkpC6lxs+ZM+GdKG5AyCc10wHJ-ColZSAYVolHMvx8oeBm8qMqGHWhNxYVP2hglqZLzbEVtcxTUs9u5wLFq1exizaFt1KnaaQvqUxXwCgQ+AmQCwhkgEMi21BThTKlUrmT2P9zjCOxNmaKicKd6QSAZWYvmSWIFlmctqt6SkDfGnKZ0hKqgKUDePeBsSLJ00uPhHUNS0dOpnENAYGMl5tSHZK0jTmtLVwyjOB52dMKjmDBPNi+T3DYnhEIiIzGuD8O2Xb0-CeynZc0zscn3FHuz7ZSwL2SZ31l4CEAAc6bD8nZzsTzZo+K+IkifwBBugkoPEWIFaxmoQRtbCACBAwDsAJA6AB2USy+iQAIhpSLSZxXuG2Bxm24YMNHkVEmACwHCEwr7ATr21TEi2d3A4x-wmo-8EAbHspXP5vI+5JMraqOJzKdAWaJPX2NJI6CdJPAzwzNqBI5x-Sp4881uRYIK5KV7pl3efiWCnJ3BfYtIIsFTxQy6BeSrnDHB4CUmj8b5i82AMvPT5xzLKeMV2YMOAV3y2pZtdaX7PuEdAICFnRrliVXB6VCwxaVBEIi+BEk55B9W+UUNXzgL3ekVNWdAw1lBdYFJClefAudKljS8oVPEujgCBm5xs7waSZOC6g8jgKOoefPqWIk-paFS8gvLJTABnhwhUJf8IBAu5VJDygQQUs1xhT3xbA0AnXEERCzPBsMno-MaItAXiLYAyARZuELzFcyDFYC4xaYroVMKnix4rpF3C2QiICUGi+UVottFagmghCu+sQrEWkLrFfkcIcnNOEWKiFICqxSYqCW2Ls5wAgMPUJoHahMEk4ZcEl2BgX4QqD+bBGRGIDOl4AFQPovcI0AvBKQ7QZiSQ3CTSSqc-CWYC6mF42BzkSQUWEUvFYmFJwy6VDBwm4UnxDKxJRJOSl1B1Z+5TQV+bAg-mX5pJ4+KcvMUfxBBNki2FGBLEfDIKhseJT9PAjPh6VJxxvYzDOCJCgSFl4sWOHdFfDHK-IyC03g8HdCgxe4cY-5D-JjFwwEYuQxZccvRjPQeI3+C5RWLZh4N-YXMCGJ8TD5hxnlV8xyK8uNjqMTaL0CqFtCijfKT51ynuAHGwiKhipjygWIcpjiQqrq3ZBFVcvvjIqAVQccKUPCeURwXlRyyFYlWThVwSa+K35TcpRUQwfAfoMyPzBHgKycuEKkuBPy1pVUaqrESAAyqRX-KiyWgAIMCo5WgrhFJBHlbPBkTfLSeYqKnHqEVr6ZX6WgAMG8FDIkNF89wyGJTVLTeYK0UkiGBSGoH7hekI4syrkNIwLwDV2uEtF5nLR5t82IzaGNHmIqpgfAGBdtDGn1Tdpa5faA1V6TGzaBLAVorMCaxKV10iwSXLfn6rIxLBAMlGA1fiHqITpbA1TUZhDCEwo8wk8oeSYAsGH2qEgUVdNdaIQFyynmPQXClMwbxJIXgC7cEOG1H5lrYsq2YNe1k7TUT+kPA0Krh0JDTjBMHwOlkYC8xyhCMREoLjjhcR4yQZN0tqILIgQ4QpyjSfRKOTpowxZhVkE8mZG6AfNlZUAJXOgH7n5kWC5vB2uv2NwaktAegywiEFzBCLZ1baZfHQv7lrJF6hVToAItCp15nRXrPjNf1AlMz8xLHJQh-HuEwo-Q9gFErOGDmvA68L85IUChIE+AGldqqNNsV2L7FDixxFxMgtvjGECU9NazqGWiTCCeeD8IkMkmJDikEKyAe4V0HuCXYi0oTDUYzllptBMF9gQFIM3LZ4qt53BKCoKT3Dj49Bnsb4h4CnJKogiR1F9e2qfLwVySase4X1BdCjBTqm4VcKBQFIQVNwW-NMIeqw1UVJF8lEdmAGY3IEHg2DP8WYgiJYhVioqUIqPgqF+By25pe4UumlCm8NleDEINEhXBTlDchIDHLarBWY1KR7VTquxBpFcRvNitCrCQLwyVZcKiSQgfqA4K9BQUoIYGjXCY3CbiyEFOlrz3vRMER1iECVeuvdrQEcwgy0zQh3Zog1CtyEgajARtHuYh+CSDoPDRwxcYT4lhVGoptLU251aEClWF5qK2GR0qlhZAnTPS3ep9A+uS1ntTgHlse6zGwtWJoe6EYZwcYpbuI0-ZEhOYy42Vbpx0AIM-It9e+hA38laBxG-Sf1sU29DuZliNKPEO8D0VcyINGjYMZ4X7nm9BS-QKfPhnLCUog2DMoeWgkMT1N-thGorYnXTA5hi+F+BJBZAmovyvhJYHCBuB4JHqvm0bb2Wc37n9YKsitbpKBKEo4MoxrzNcH4MslD0xkUbJZqtJJ2I7aQYfC7NiGX6Vb9kBiGJHlmERHVKOQ3OqZx1Wn9yVwxYCmhl3+SeB9M5jZmLLODRAlYpoXUNSUosjZhjNZ2SZaWE1KXx4Y5PNMedtXGS9kU0GgwTUq+BpUv5WIm8YRGl2Z0Z1bs8ftL1l7y9OIVut0GH0nCzFwUPqVIduAbzljzCmdX6Wbq1lpyJtz0fuUCv6BTA3umLXCjcGComEbskKRVNpDxFH9p+IxaDQgXXUKgsRVOJ7tM34QCD48oTUROrsYEC049RW6ZtoQPnvU7gvQVJbfCmp8NbEWgPbXiIKEWD1N7E6BM1x4VN41+3gtZSNkOT2jggA+iQJ0N2GEj+2hw8BCuq2o6q-e5YFAp1HL3pCRObCYavvC5VcTJegIgqPXOFVFaugsSHpBaz1yVabgrIvEjMSy36FfAp+qySzPG1UiiRFwFWNBoaH8IB5BEQwJXNSU2ATsNWDCD6rA2KygxXjBHW1oE4cFDK4muGCGi-k6FCmk4StHDkj3KSserM-sfcI25SdcO9IRoj31VA5gT5yLFmpALFJ17x+0Eiib2qK1jocMfg6zvoR8BXisGt48sexIfEsGVJPE9g7qnTUvztdfPPg1gsnGlLTq8McWjzDxHxS9hSUzZtIe4M67aNqELBe8Di66FmJ4B5orHPd6ZzY26myUPcGF58xWJK3FQzKEMkIEZghgHGTHwXWE4l1-0DffgMtx4kZJ82KmWv2IFzj7Et-KFA1si3czWZ7OlAyLXYSDZ7uGGBlm11npC8ZgIe3wBuBLXMzx+HsjOYnMl036QdTwug5LUT3FzYeY4ywk4sSHVzu1V+xuc3NbntzfmnciANSyYhiA1AuHbQcNCS60gokIABeErEHzWi1k+kCmqWicCXhW5TEViP0ZBCDGhpW-dhU4E8hQBMAZ6nPuY2mMcwfN4MM8HPCwBYgQQTgTAGAFCi7Gtc5iSnLxgsYzHjj48pYs13WMjHvtOXSxQXnPWL8CJ78+2hMtSHTAWC7mVCIM2DD5H9F4Su+ZbsR1KKqywVNlqwSPnFpT5p2PDJ6h8ULy4FcfKbYkf0oCkqye2zuI7VT0Fl6iNaEnlYxhNhLfFES8Ra+Dxh-ZVmyC2cBVg2LicwKKS4PYSm0rygm0eglJLib8WGLSF1FIfU3pGDjBdSqOETHQY0WxJcjOg9+cXy-0iK4TdC7VFEtqkfqitBmZoFTPfpCNqsxcp6aqfJDqnS0Yppk6Qprn+LfsJi6-UScjxi0dwtKe2oGgtOTktkP6uZcwfTFEAa2T4IYESc5E8xbOW-HmJK2D00hr0BmcFF5VhQRAgAA // ... existing code ... */
20
22
  id: 'authMachine',
21
23
  predictableActionArguments: true,
22
24
  tsTypes: {},
@@ -129,7 +131,10 @@ export const authMachine = createMachine({
129
131
  error: (_, event) => event.payload.error,
130
132
  }),
131
133
  },
132
- BACK: '#authMachine.active.login.idle.error',
134
+ BACK: {
135
+ target: '#authMachine.active.login.idle.error',
136
+ actions: 'clearContext',
137
+ },
133
138
  },
134
139
  },
135
140
  authScreen: {
@@ -165,7 +170,10 @@ export const authMachine = createMachine({
165
170
  error: (_, event) => event.payload.error,
166
171
  }),
167
172
  },
168
- BACK: '#authMachine.active.login.idle.error',
173
+ BACK: {
174
+ target: '#authMachine.active.login.idle.error',
175
+ actions: 'clearContext',
176
+ },
169
177
  FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
170
178
  },
171
179
  },
@@ -178,7 +186,7 @@ export const authMachine = createMachine({
178
186
  SIGN_IN_WITH_PASSKEY: '#authMachine.active.login.idle.signWithPasskey',
179
187
  SELECT_PASSWORD_METHOD: [
180
188
  {
181
- target: '#authMachine.active.login.loginMethodSelection',
189
+ target: 'retrievingSalt',
182
190
  actions: assign({
183
191
  credentialEmail: (_, event) => event.payload?.email,
184
192
  googleOtpCode: () => undefined,
@@ -195,7 +203,19 @@ export const authMachine = createMachine({
195
203
  target: 'retrievingCredentialRCR',
196
204
  cond: 'isPasskeyEnabled',
197
205
  },
198
- 'retrievingSalt',
206
+ {
207
+ target: 'retrievingSalt',
208
+ actions: assign({
209
+ credentialEmail: (_, event) => event.payload?.email,
210
+ googleOtpCode: () => undefined,
211
+ googleUser: () => undefined,
212
+ registerUser: () => undefined,
213
+ socialProviderRegisterUser: () => undefined,
214
+ sessionId: () => undefined,
215
+ CCRPublicKey: () => undefined,
216
+ RCRPublicKey: () => undefined,
217
+ }),
218
+ },
199
219
  ],
200
220
  },
201
221
  exit: assign({
@@ -204,7 +224,15 @@ export const authMachine = createMachine({
204
224
  },
205
225
  loginMethodSelection: {
206
226
  on: {
207
- SELECT_PASSWORD: 'retrievingSalt',
227
+ SELECT_PASSWORD: [
228
+ {
229
+ target: 'inputPassword',
230
+ cond: 'hasSalt',
231
+ },
232
+ {
233
+ target: 'retrievingSalt',
234
+ },
235
+ ],
208
236
  BACK: {
209
237
  target: '#authMachine.active.login',
210
238
  actions: assign({
@@ -219,18 +247,125 @@ export const authMachine = createMachine({
219
247
  retrievingSalt: {
220
248
  invoke: {
221
249
  src: 'retrieveSalt',
222
- onDone: {
223
- target: '#authMachine.active.login.inputPassword',
224
- actions: assign({
225
- salt: (_context, event) => event.data?.salt,
226
- }),
227
- },
228
- onError: {
229
- target: '#authMachine.active.login',
230
- actions: assign({
231
- error: (_context, event) => event.data?.error,
232
- }),
233
- },
250
+ onDone: [
251
+ {
252
+ target: '#authMachine.active.login.inputPassword',
253
+ actions: [
254
+ assign({
255
+ salt: (_context, event) => event.data?.salt,
256
+ }),
257
+ send((context) => ({
258
+ type: 'VERIFY_LOGIN',
259
+ payload: context.pendingVerifyLogin,
260
+ })),
261
+ assign({
262
+ pendingVerifyLogin: () => undefined,
263
+ }),
264
+ ],
265
+ cond: (context) => !!context.pendingVerifyLogin,
266
+ },
267
+ {
268
+ target: '#authMachine.active.login.loginMethodSelection',
269
+ actions: assign({
270
+ salt: (_context, event) => event.data?.salt,
271
+ }),
272
+ cond: 'isPasswordAndPasskeyEnabled',
273
+ },
274
+ {
275
+ target: '#authMachine.active.login.inputPassword',
276
+ actions: assign({
277
+ salt: (_context, event) => event.data?.salt,
278
+ }),
279
+ },
280
+ ],
281
+ onError: [
282
+ {
283
+ target: '#authMachine.active.login.inputPassword',
284
+ cond: (context) => !!context.pendingVerifyLogin,
285
+ actions: assign((ctx, event) => {
286
+ const message = event.data?.message || event.data?.error || event.data;
287
+ if (message === 'EMAIL_NOT_ALLOWED') {
288
+ return {
289
+ error: { code: 'EMAIL_NOT_ALLOWED', message: 'EMAIL_NOT_ALLOWED' },
290
+ };
291
+ }
292
+ if (event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED') {
293
+ return {
294
+ error: { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' },
295
+ };
296
+ }
297
+ return {
298
+ error: {
299
+ code: event.data?.type,
300
+ message,
301
+ email: ctx.credentialEmail ||
302
+ ctx.registerUser?.email ||
303
+ ctx.googleUser?.email ||
304
+ ctx.socialProviderRegisterUser?.email,
305
+ data: event.data,
306
+ },
307
+ };
308
+ }),
309
+ },
310
+ {
311
+ target: '#authMachine.active.login.idle',
312
+ cond: 'isPasswordAndPasskeyEnabled',
313
+ actions: assign((ctx, event) => {
314
+ const message = event.data?.message || event.data?.error || event.data;
315
+ if (message === 'EMAIL_NOT_ALLOWED') {
316
+ return {
317
+ error: { code: 'EMAIL_NOT_ALLOWED', message: 'EMAIL_NOT_ALLOWED' },
318
+ };
319
+ }
320
+ if (event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED') {
321
+ return {
322
+ error: {
323
+ code: event.data?.type,
324
+ message: 'EMAIL_DOMAIN_NOT_ALLOWED',
325
+ },
326
+ };
327
+ }
328
+ return {
329
+ error: {
330
+ code: event.data?.type,
331
+ message,
332
+ email: ctx.credentialEmail ||
333
+ ctx.registerUser?.email ||
334
+ ctx.googleUser?.email ||
335
+ ctx.socialProviderRegisterUser?.email,
336
+ data: event.data,
337
+ },
338
+ };
339
+ }),
340
+ },
341
+ {
342
+ target: '#authMachine.active.login.idle',
343
+ actions: assign((ctx, event) => {
344
+ const message = event.data?.message || event.data?.error || event.data;
345
+ if (message === 'EMAIL_NOT_ALLOWED') {
346
+ return {
347
+ error: { code: 'EMAIL_NOT_ALLOWED', message: 'EMAIL_NOT_ALLOWED' },
348
+ };
349
+ }
350
+ if (event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED') {
351
+ return {
352
+ error: { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' },
353
+ };
354
+ }
355
+ return {
356
+ error: {
357
+ code: event.data?.type,
358
+ message,
359
+ email: ctx.credentialEmail ||
360
+ ctx.registerUser?.email ||
361
+ ctx.googleUser?.email ||
362
+ ctx.socialProviderRegisterUser?.email,
363
+ data: event.data,
364
+ },
365
+ };
366
+ }),
367
+ },
368
+ ],
234
369
  },
235
370
  entry: assign({
236
371
  error: () => undefined,
@@ -238,6 +373,18 @@ export const authMachine = createMachine({
238
373
  },
239
374
  inputPassword: {
240
375
  on: {
376
+ VERIFY_LOGIN: [
377
+ {
378
+ target: 'verifyingLogin',
379
+ cond: 'hasSalt',
380
+ },
381
+ {
382
+ target: 'retrievingSalt',
383
+ actions: assign({
384
+ pendingVerifyLogin: (_, event) => event.payload,
385
+ }),
386
+ },
387
+ ],
241
388
  BACK: [
242
389
  {
243
390
  target: '#authMachine.active.login.loginMethodSelection',
@@ -252,7 +399,6 @@ export const authMachine = createMachine({
252
399
  'idle',
253
400
  ],
254
401
  COMPLETE_GOOGLE_SIGN_IN: 'verifyingGoogleLogin',
255
- VERIFY_LOGIN: 'verifyingLogin',
256
402
  },
257
403
  },
258
404
  verifyingLogin: {
@@ -284,9 +430,19 @@ export const authMachine = createMachine({
284
430
  ],
285
431
  onError: {
286
432
  target: '#authMachine.active.login.inputPassword',
287
- actions: assign({
288
- error: (_context, event) => event.data?.error || event.data?.message,
289
- }),
433
+ actions: assign((ctx, event) => ({
434
+ error: event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED'
435
+ ? { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' }
436
+ : {
437
+ code: event.data?.type,
438
+ message: event.data?.error || event.data?.message,
439
+ email: ctx.credentialEmail ||
440
+ ctx.registerUser?.email ||
441
+ ctx.googleUser?.email ||
442
+ ctx.socialProviderRegisterUser?.email,
443
+ data: event.data,
444
+ },
445
+ })),
290
446
  },
291
447
  },
292
448
  entry: assign({
@@ -404,9 +560,19 @@ export const authMachine = createMachine({
404
560
  src: 'verifyEmail2fa',
405
561
  onError: {
406
562
  target: 'email2fa',
407
- actions: assign({
408
- error: (_context, event) => event.data?.error || event.data?.message,
409
- }),
563
+ actions: assign((ctx, event) => ({
564
+ error: event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED'
565
+ ? { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' }
566
+ : {
567
+ code: event.data?.type,
568
+ message: event.data?.error || event.data?.message,
569
+ email: ctx.credentialEmail ||
570
+ ctx.registerUser?.email ||
571
+ ctx.googleUser?.email ||
572
+ ctx.socialProviderRegisterUser?.email,
573
+ data: event.data,
574
+ },
575
+ })),
410
576
  },
411
577
  onDone: {
412
578
  target: 'successfulLogin',
@@ -502,9 +668,19 @@ export const authMachine = createMachine({
502
668
  ],
503
669
  onError: {
504
670
  target: 'idle',
505
- actions: assign({
506
- error: (_context, event) => event.data?.error || event.data?.message || event.data,
507
- }),
671
+ actions: assign((ctx, event) => ({
672
+ error: {
673
+ code: event.data?.type,
674
+ message: event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED'
675
+ ? 'EMAIL_DOMAIN_NOT_ALLOWED'
676
+ : event.data?.message || event.data?.error || event.data,
677
+ email: ctx.credentialEmail ||
678
+ ctx.registerUser?.email ||
679
+ ctx.googleUser?.email ||
680
+ ctx.socialProviderRegisterUser?.email,
681
+ data: event.data,
682
+ },
683
+ })),
508
684
  },
509
685
  },
510
686
  entry: assign({
@@ -528,9 +704,17 @@ export const authMachine = createMachine({
528
704
  },
529
705
  onError: {
530
706
  target: 'idle',
531
- actions: assign({
532
- error: (_context, event) => event.data?.error || event.data?.message || event.data,
533
- }),
707
+ actions: assign((ctx, event) => ({
708
+ error: {
709
+ code: event.data?.type,
710
+ message: event.data?.message || event.data?.error || event.data,
711
+ email: ctx.registerUser?.email ||
712
+ ctx.credentialEmail ||
713
+ ctx.googleUser?.email ||
714
+ ctx.socialProviderRegisterUser?.email,
715
+ data: event.data,
716
+ },
717
+ })),
534
718
  },
535
719
  },
536
720
  },
@@ -541,8 +725,12 @@ export const authMachine = createMachine({
541
725
  {
542
726
  target: '#authMachine.active.login.loginMethodSelection',
543
727
  cond: 'isPasswordAndPasskeyEnabled',
728
+ actions: 'clearContext',
729
+ },
730
+ {
731
+ target: 'idle.authScreen',
732
+ actions: 'clearContext',
544
733
  },
545
- 'idle.authScreen',
546
734
  ],
547
735
  PASSKEY_NOT_SUPPORTED: [
548
736
  {
@@ -604,9 +792,7 @@ export const authMachine = createMachine({
604
792
  },
605
793
  START_PASSKEY_LOGIN: '.retrievingCredentialRCR',
606
794
  },
607
- entry: assign({
608
- error: () => undefined,
609
- }),
795
+ // Do not clear error on login state entry; preserve errors assigned by failing actions
610
796
  exit: assign({
611
797
  RCRPublicKey: () => undefined,
612
798
  CCRPublicKey: () => undefined,
@@ -660,9 +846,17 @@ export const authMachine = createMachine({
660
846
  },
661
847
  onError: {
662
848
  target: 'idle',
663
- actions: assign({
664
- error: (_context, event) => event.data?.error || event.data?.message || event.data,
665
- }),
849
+ actions: assign((ctx, event) => ({
850
+ error: {
851
+ code: event.data?.type,
852
+ message: event.data?.message || event.data?.error || event.data,
853
+ email: ctx.registerUser?.email ||
854
+ ctx.credentialEmail ||
855
+ ctx.googleUser?.email ||
856
+ ctx.socialProviderRegisterUser?.email,
857
+ data: event.data,
858
+ },
859
+ })),
666
860
  },
667
861
  },
668
862
  entry: assign({
@@ -702,9 +896,19 @@ export const authMachine = createMachine({
702
896
  ],
703
897
  onError: {
704
898
  target: 'emailValidation',
705
- actions: assign({
706
- error: (_context, event) => event.data?.error || event.data?.message,
707
- }),
899
+ actions: assign((ctx, event) => ({
900
+ error: event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED'
901
+ ? { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' }
902
+ : {
903
+ code: event.data?.type,
904
+ message: event.data?.error || event.data?.message,
905
+ email: ctx.registerUser?.email ||
906
+ ctx.credentialEmail ||
907
+ ctx.googleUser?.email ||
908
+ ctx.socialProviderRegisterUser?.email,
909
+ data: event.data,
910
+ },
911
+ })),
708
912
  },
709
913
  },
710
914
  entry: assign({
@@ -822,9 +1026,19 @@ export const authMachine = createMachine({
822
1026
  },
823
1027
  onError: {
824
1028
  target: 'registerMethodSelection',
825
- actions: assign({
826
- error: (_context, event) => event.data?.error || event.data?.message || event.data,
827
- }),
1029
+ actions: assign((ctx, event) => ({
1030
+ error: event.data?.type === 'EMAIL_DOMAIN_NOT_ALLOWED'
1031
+ ? { code: event.data?.type, message: 'EMAIL_DOMAIN_NOT_ALLOWED' }
1032
+ : {
1033
+ code: event.data?.type,
1034
+ message: event.data?.error || event.data?.message || event.data,
1035
+ email: ctx.registerUser?.email ||
1036
+ ctx.credentialEmail ||
1037
+ ctx.googleUser?.email ||
1038
+ ctx.socialProviderRegisterUser?.email,
1039
+ data: event.data,
1040
+ },
1041
+ })),
828
1042
  },
829
1043
  },
830
1044
  },
@@ -843,6 +1057,7 @@ export const authMachine = createMachine({
843
1057
  ],
844
1058
  BACK: {
845
1059
  target: '#authMachine.active.register.registerMethodSelection',
1060
+ actions: 'clearContext',
846
1061
  },
847
1062
  },
848
1063
  },
@@ -903,9 +1118,17 @@ export const authMachine = createMachine({
903
1118
  },
904
1119
  onError: {
905
1120
  target: 'registerMethodSelection',
906
- actions: assign({
907
- error: (_context, event) => event.data?.error || event.data?.message || event.data,
908
- }),
1121
+ actions: assign((ctx, event) => ({
1122
+ error: {
1123
+ code: event.data?.type,
1124
+ message: event.data?.error || event.data?.message || event.data,
1125
+ email: ctx.registerUser?.email ||
1126
+ ctx.credentialEmail ||
1127
+ ctx.googleUser?.email ||
1128
+ ctx.socialProviderRegisterUser?.email,
1129
+ data: event.data,
1130
+ },
1131
+ })),
909
1132
  },
910
1133
  },
911
1134
  },
@@ -918,9 +1141,17 @@ export const authMachine = createMachine({
918
1141
  },
919
1142
  onError: {
920
1143
  target: '#authMachine.active.register.registerMethodSelection',
921
- actions: (_context, event) => assign({
922
- error: event.data?.error || event.data?.message || event.data,
923
- }),
1144
+ actions: assign((ctx, event) => ({
1145
+ error: {
1146
+ code: event.data?.type,
1147
+ message: event.data?.error || event.data?.message || event.data,
1148
+ email: ctx.registerUser?.email ||
1149
+ ctx.credentialEmail ||
1150
+ ctx.googleUser?.email ||
1151
+ ctx.socialProviderRegisterUser?.email,
1152
+ data: event.data,
1153
+ },
1154
+ })),
924
1155
  },
925
1156
  },
926
1157
  },
@@ -1013,6 +1244,16 @@ export const authMachine = createMachine({
1013
1244
  target: '.history',
1014
1245
  actions: 'clearContext',
1015
1246
  },
1247
+ SET_ERROR: {
1248
+ actions: assign({
1249
+ error: (_ctx, event) => event.info || (event.error ? { code: event.error, message: event.error } : undefined),
1250
+ }),
1251
+ },
1252
+ CLEAR_ERROR: {
1253
+ actions: assign({
1254
+ error: () => undefined,
1255
+ }),
1256
+ },
1016
1257
  },
1017
1258
  }, {
1018
1259
  services: {
@@ -1081,6 +1322,7 @@ export const authMachine = createMachine({
1081
1322
  // @ts-ignore
1082
1323
  isNewUser: (_, event) => !!event.data.isNewUser,
1083
1324
  forgeClaim: (_, event) => !!event.forgeId,
1325
+ hasSalt: (context) => !!context.salt,
1084
1326
  hasHardware2FA: (context, event) => {
1085
1327
  const { data } = event;
1086
1328
  const HARDWARE = 1;
@@ -1118,19 +1360,10 @@ export const authMachine = createMachine({
1118
1360
  setupRegisterUser: assign({
1119
1361
  registerUser: (_, event) => event?.registerUser || undefined,
1120
1362
  }),
1121
- clearContext: assign({
1122
- salt: () => undefined,
1123
- error: () => undefined,
1124
- active2fa: () => undefined,
1125
- registerUser: () => undefined,
1126
- googleOtpCode: () => undefined,
1127
- googleUser: () => undefined,
1128
- sessionUser: () => undefined,
1129
- forgeData: () => undefined,
1130
- CCRPublicKey: () => undefined,
1131
- RCRPublicKey: () => undefined,
1132
- authProviderConfigs: () => undefined,
1133
- }),
1363
+ // clearError action removed; we now clear errors inline in each BACK transition
1364
+ clearContext: assign(() => ({
1365
+ ...initialContext,
1366
+ })),
1134
1367
  },
1135
1368
  });
1136
1369
  let stateDefinition;
@@ -1138,7 +1371,12 @@ let stateDefinition;
1138
1371
  if (typeof window !== 'undefined') {
1139
1372
  const authState = localStorage.getItem('authState');
1140
1373
  if (authState) {
1141
- stateDefinition = JSON.parse(authState);
1374
+ const parsed = JSON.parse(authState);
1375
+ // Drop persisted error on hydration
1376
+ if (parsed?.context) {
1377
+ parsed.context.error = undefined;
1378
+ }
1379
+ stateDefinition = parsed;
1142
1380
  }
1143
1381
  }
1144
1382
  let resolvedState;
@@ -1153,12 +1391,18 @@ export const authService = (services, context) => {
1153
1391
  ...initialContext,
1154
1392
  ...context,
1155
1393
  };
1394
+ // If persisted authProviderConfigs differ from provided configs, start fresh (ignore persisted state)
1395
+ const persistedConfig = resolvedState?.context?.authProviderConfigs;
1396
+ const incomingConfig = mergedContext.authProviderConfigs;
1397
+ const configsDiffer = JSON.stringify(persistedConfig || {}) !== JSON.stringify(incomingConfig || {});
1398
+ const startArg = configsDiffer ? undefined : resolvedState;
1156
1399
  return interpret(authMachine.withConfig({
1157
1400
  services,
1158
1401
  guards: {
1159
1402
  // @ts-ignore
1160
1403
  isNewUser: (_, event) => !!event.data.isNewUser,
1161
1404
  forgeClaim: (_, event) => !!event.forgeId,
1405
+ hasSalt: (ctx) => !!ctx.salt,
1162
1406
  hasHardware2FA: (ctx, event) => {
1163
1407
  const { data } = event;
1164
1408
  const HARDWARE = 1;
@@ -1214,20 +1458,10 @@ export const authService = (services, context) => {
1214
1458
  setupRegisterUser: assign({
1215
1459
  registerUser: (_, event) => event?.registerUser || undefined,
1216
1460
  }),
1217
- clearContext: assign({
1218
- salt: () => undefined,
1219
- error: () => undefined,
1220
- active2fa: () => undefined,
1221
- registerUser: () => undefined,
1222
- socialProviderRegisterUser: () => undefined,
1223
- googleOtpCode: () => undefined,
1224
- googleUser: () => undefined,
1225
- sessionUser: () => undefined,
1226
- forgeData: () => undefined,
1227
- sessionId: () => undefined,
1228
- CCRPublicKey: () => undefined,
1229
- RCRPublicKey: () => undefined,
1230
- }),
1461
+ // clearError action removed; errors are cleared inline on BACK transitions
1462
+ clearContext: assign(() => ({
1463
+ ...initialContext,
1464
+ })),
1231
1465
  },
1232
1466
  }, mergedContext))
1233
1467
  .onTransition((state) => {
@@ -1242,6 +1476,6 @@ export const authService = (services, context) => {
1242
1476
  localStorage.setItem('authState', JSON.stringify(state));
1243
1477
  }
1244
1478
  })
1245
- .start(resolvedState);
1479
+ .start(startArg);
1246
1480
  };
1247
1481
  //# sourceMappingURL=index.js.map