@thetechfossil/auth2 1.2.19 → 1.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.components.d.mts +1 -0
- package/dist/index.components.d.ts +1 -0
- package/dist/index.components.js +275 -11
- package/dist/index.components.js.map +1 -1
- package/dist/index.components.mjs +275 -11
- package/dist/index.components.mjs.map +1 -1
- package/dist/index.d.mts +111 -3
- package/dist/index.d.ts +111 -3
- package/dist/index.js +470 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +471 -32
- package/dist/index.mjs.map +1 -1
- package/dist/index.next.d.mts +54 -1
- package/dist/index.next.d.ts +54 -1
- package/dist/index.next.js +332 -26
- package/dist/index.next.js.map +1 -1
- package/dist/index.next.mjs +332 -26
- package/dist/index.next.mjs.map +1 -1
- package/dist/index.next.server.d.mts +81 -2
- package/dist/index.next.server.d.ts +81 -2
- package/dist/index.next.server.js +406 -9
- package/dist/index.next.server.js.map +1 -1
- package/dist/index.next.server.mjs +403 -10
- package/dist/index.next.server.mjs.map +1 -1
- package/dist/index.node.d.mts +81 -2
- package/dist/index.node.d.ts +81 -2
- package/dist/index.node.js +406 -9
- package/dist/index.node.js.map +1 -1
- package/dist/index.node.mjs +403 -10
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.react-native.d.mts +227 -0
- package/dist/index.react-native.d.ts +227 -0
- package/dist/index.react-native.js +1684 -0
- package/dist/index.react-native.js.map +1 -0
- package/dist/index.react-native.mjs +1648 -0
- package/dist/index.react-native.mjs.map +1 -0
- package/package.json +119 -102
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react-native/auth-service-rn.ts","../src/react-native/AuthProvider.tsx","../src/react-native/components/ui/Input.tsx","../src/react-native/components/ui/Button.tsx","../src/react-native/components/LoginForm.tsx","../src/react-native/components/RegisterForm.tsx","../src/react-native/components/OtpForm.tsx","../src/react-native/components/ForgotPassword.tsx","../src/react-native/components/ResetPassword.tsx","../src/react-native/components/UserProfile.tsx","../src/react-native/components/ProtectedRoute.tsx"],"names":["config","useState","jsx","TouchableOpacity","styles","Text","StyleSheet","jsxs","View","KeyboardAvoidingView","Platform","ScrollView","useEffect","TextInput","ActivityIndicator","Fragment"],"mappings":";;;;;;;AAGO,IAAM,gBAAN,MAAoB;AAAA,EAKzB,YAAY,MAAA,EAAoB;AAHhC,IAAA,IAAA,CAAQ,KAAA,GAAuB,IAAA;AAI7B,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,MACzB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAA,EAAS,GAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,CAACA,OAAAA,KAAW;AAC/C,MAAA,IAAI,KAAK,KAAA,EAAO;AACd,QAAAA,OAAAA,CAAO,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,KAAK,KAAK,CAAA,CAAA;AAAA,MACrD;AACA,MAAA,OAAOA,OAAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,SAAS,KAAA,EAA4B;AACnC,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EAEA,QAAA,GAA0B;AACxB,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,eAAA,GAA2B;AACzB,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,KAAA;AAAA,EAChB;AAAA,EAEA,cAAA,GAA8B;AAC5B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,OAAO,IAAA;AACxB,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AACzD,MAAA,OAAO,QAAQ,IAAA,IAAQ,IAAA;AAAA,IACzB,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,IAAA,EAAwC;AAClD,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAmB,sBAAsB,IAAI,CAAA;AAChF,MAAA,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,IAAW,QAAA,CAAS,KAAK,KAAA,EAAO;AAChD,QAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,IAAA,CAAK,KAAA;AAAA,MAC7B;AACA,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,IAAA,EAA2C;AACxD,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAmB,yBAAyB,IAAI,CAAA;AACnF,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,IAAA,EAAyC;AACpD,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAmB,uBAAuB,IAAI,CAAA;AACjF,MAAA,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,IAAW,QAAA,CAAS,KAAK,KAAA,EAAO;AAChD,QAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,IAAA,CAAK,KAAA;AAAA,MAC7B;AACA,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,GAAwB;AAC5B,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,qBAAA,EAAuB,EAAE,CAAA;AAAA,IAClD,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,EACf;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,IAAoB,iBAAiB,CAAA;AACxE,IAAA,OAAO,SAAS,IAAA,CAAK,IAAA;AAAA,EACvB;AAAA,EAEA,MAAM,cAAc,IAAA,EAA6C;AAC/D,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAmB,+BAA+B,IAAI,CAAA;AACzF,MAAA,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,IAAW,QAAA,CAAS,KAAK,KAAA,EAAO;AAChD,QAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,IAAA,CAAK,KAAA;AAAA,MAC7B;AACA,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,KAAA,EAAsC;AACzD,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,KAAmB,8BAAA,EAAgC,EAAE,OAAO,CAAA;AAC/F,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,CAAc,KAAA,EAAe,QAAA,EAAyC;AAC1E,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,KAAmB,6BAAA,EAA+B,EAAE,KAAA,EAAO,QAAA,EAAU,CAAA;AACxG,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAA,CAAe,WAAA,EAAqB,WAAA,EAA4C;AACpF,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,KAAmB,8BAAA,EAAgC;AAAA,QACpF,WAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAY;AACnB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,SAAS,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,MAAM,OAAA,IAAW;AAAA,OAC7D;AAAA,IACF;AAAA,EACF;AACF;ACvIA,IAAM,WAAA,GAAc,cAA4C,MAAS,CAAA;AAOzE,IAAM,YAAA,GAAe;AAAA,EACnB,KAAA,EAAO,YAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,YAAA,GAA4C,CAAC,EAAE,QAAA,EAAU,QAAO,KAAM;AACjF,EAAA,MAAM,UAAA,GAAyB;AAAA,IAC7B,OAAA,EAAS,MAAA,EAAQ,OAAA,IAAW,OAAA,CAAQ,IAAI,wBAAA,IAA4B,uBAAA;AAAA,IACpE,eAAA,EAAiB,MAAA,EAAQ,eAAA,IAAmB,YAAA,CAAa,KAAA;AAAA,IACzD,WAAA,EAAa;AAAA,GACf;AAEA,EAAA,MAAM,CAAC,WAAW,CAAA,GAAI,QAAA,CAAS,MAAM,IAAI,aAAA,CAAc,UAAU,CAAC,CAAA;AAClE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAsB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,cAAA,EAAe;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAc,MAAkB,WAAA,CAAA,YAAA,CAAa,YAAA,CAAa,KAAK,CAAA;AACrE,MAAA,MAAM,UAAA,GAAa,MAAkB,WAAA,CAAA,YAAA,CAAa,YAAA,CAAa,IAAI,CAAA;AAEnE,MAAA,IAAI,eAAe,UAAA,EAAY;AAC7B,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACxC,QAAA,QAAA,CAAS,WAAW,CAAA;AACpB,QAAA,OAAA,CAAQ,UAAU,CAAA;AAClB,QAAA,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,MAClC;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,IACjE,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,IAAI,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,OAAO,SAAA,EAAmB,QAAA,KAAmB;AAC5D,IAAA,MAAkB,WAAA,CAAA,YAAA,CAAa,YAAA,CAAa,KAAA,EAAO,SAAS,CAAA;AAC5D,IAAA,MAAkB,yBAAa,YAAA,CAAa,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA;AAC1E,IAAA,QAAA,CAAS,SAAS,CAAA;AAClB,IAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,IAAA,WAAA,CAAY,SAAS,SAAS,CAAA;AAAA,EAChC,CAAA;AAEA,EAAA,MAAM,YAAY,YAAY;AAC5B,IAAA,MAAkB,WAAA,CAAA,eAAA,CAAgB,aAAa,KAAK,CAAA;AACpD,IAAA,MAAkB,WAAA,CAAA,eAAA,CAAgB,aAAa,IAAI,CAAA;AACnD,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,WAAA,CAAY,SAAS,IAAI,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAO,IAAA,KAA2C;AAC3E,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AAC7C,MAAA,IAAI,QAAA,CAAS,OAAA,IAAW,QAAA,CAAS,IAAA,IAAQ,SAAS,KAAA,EAAO;AACvD,QAAA,MAAM,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO,QAAA,CAAS,IAAI,CAAA;AAAA,MAC9C;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAO,IAAA,KAA8C;AAC9E,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,WAAA,CAAY,QAAA,CAAS,IAAI,CAAA;AAAA,IACxC,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,OAAA,GAAU,YAAY,YAA2B;AACrD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,YAAY,MAAA,EAAO;AACzB,MAAA,MAAM,SAAA,EAAU;AAAA,IAClB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAO,IAAA,KAA4C;AAC5E,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA;AAC9C,MAAA,IAAI,QAAA,CAAS,OAAA,IAAW,QAAA,CAAS,IAAA,IAAQ,SAAS,KAAA,EAAO;AACvD,QAAA,MAAM,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO,QAAA,CAAS,IAAI,CAAA;AAAA,MAC9C;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,OAAO,IAAA,KAAgD;AACvF,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,aAAA,CAAc,IAAI,CAAA;AACrD,MAAA,IAAI,QAAA,CAAS,OAAA,IAAW,QAAA,CAAS,IAAA,EAAM;AACrC,QAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,QAAA,MAAkB,yBAAa,YAAA,CAAa,IAAA,EAAM,KAAK,SAAA,CAAU,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,MACjF;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,UAAA,GAAa,YAAY,YAA2B;AACxD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,UAAA,EAAW;AAC9C,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,MAAA,MAAkB,yBAAa,YAAA,CAAa,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA;AAC1E,MAAA,OAAO,QAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,OAAO,KAAA,KAAyC;AACjF,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,WAAA,CAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IAC/C,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,OAAO,UAAA,EAAoB,QAAA,KAA4C;AACvG,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,WAAA,CAAY,aAAA,CAAc,UAAA,EAAY,QAAQ,CAAA;AAAA,IAC7D,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,OAAO,WAAA,EAAqB,WAAA,KAA+C;AAC5G,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,WAAA,CAAY,cAAA,CAAe,WAAA,EAAa,WAAW,CAAA;AAAA,IAClE,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,KAAA,GAA0B;AAAA,IAC9B,IAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA,EAAY,CAAC,CAAC,IAAA;AAAA,IACd,OAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,OACnB,QAAA,EACH,CAAA;AAEJ;AAEO,IAAM,UAAU,MAAwB;AAC7C,EAAA,MAAM,OAAA,GAAU,WAAW,WAAW,CAAA;AACtC,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EAC/D;AACA,EAAA,OAAO,OAAA;AACT;ACnMO,IAAM,QAA8B,CAAC;AAAA,EAC1C,KAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,SAAS,KAAK,CAAA;AAEtD,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,eAAA,EAAiB,OAAO,eAAA,IAAmB,SAAA;AAAA,IAC3C,WAAA,EAAa,OAAO,WAAA,IAAe,SAAA;AAAA,IACnC,SAAA,EAAW,OAAO,SAAA,IAAa,SAAA;AAAA,IAC/B,UAAA,EAAY,OAAO,UAAA,IAAc,SAAA;AAAA,IACjC,gBAAA,EAAkB,OAAO,gBAAA,IAAoB,SAAA;AAAA,IAC7C,WAAA,EAAa,OAAO,WAAA,IAAe;AAAA,GACrC;AAEA,EAAA,4BACG,IAAA,EAAA,EAAK,KAAA,EAAO,CAAC,MAAA,CAAO,SAAA,EAAW,cAAc,CAAA,EAC3C,QAAA,EAAA;AAAA,IAAA,KAAA,oBAASC,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAC,MAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,UAAA,EAAY,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC5E,IAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,YAAA,EAClB,QAAA,EAAA;AAAA,sBAAAA,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,MAAA,CAAO,KAAA;AAAA,YACP;AAAA,cACE,iBAAiB,MAAA,CAAO,eAAA;AAAA,cACxB,WAAA,EAAa,KAAA,GAAQ,SAAA,GAAY,MAAA,CAAO,WAAA;AAAA,cACxC,OAAO,MAAA,CAAO;AAAA,aAChB;AAAA,YACA;AAAA,WACF;AAAA,UACA,sBAAsB,MAAA,CAAO,gBAAA;AAAA,UAC7B,eAAA,EAAiB,cAAc,CAAC,YAAA;AAAA,UAC/B,GAAG;AAAA;AAAA,OACN;AAAA,MACC,8BACCA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAO,MAAA,CAAO,SAAA;AAAA,UACd,OAAA,EAAS,MAAM,eAAA,CAAgB,CAAC,YAAY,CAAA;AAAA,UAE5C,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAC,MAAA,CAAO,OAAA,EAAS,EAAE,KAAA,EAAO,OAAO,WAAA,EAAa,CAAA,EACxD,QAAA,EAAA,YAAA,GAAe,SAAS,MAAA,EAC3B;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA;AAAA,IACC,yBAASA,GAAAA,CAAC,QAAK,KAAA,EAAO,MAAA,CAAO,WAAY,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ;AAEA,IAAM,MAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,EAAA;AAAA,IACd,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,GAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,EAAA;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ,CAAA;AAAA,IACR,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;ACpFM,IAAM,SAAgC,CAAC;AAAA,EAC5C,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,SAAA;AAAA,EACV,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAE/B,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,YAAA,EAAc,OAAO,YAAA,IAAgB,SAAA;AAAA,IACrC,gBAAA,EAAkB,OAAO,gBAAA,IAAoB,SAAA;AAAA,IAC7C,cAAA,EAAgB,OAAO,cAAA,IAAkB,SAAA;AAAA,IACzC,kBAAA,EAAoB,OAAO,kBAAA,IAAsB;AAAA,GACnD;AAEA,EAAA,MAAM,iBAAiB,MAAiB;AACtC,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,WAAA;AACH,QAAA,OAAO,EAAE,eAAA,EAAiB,MAAA,CAAO,cAAA,EAAe;AAAA,MAClD,KAAK,SAAA;AACH,QAAA,OAAO,EAAE,eAAA,EAAiB,aAAA,EAAe,aAAa,CAAA,EAAG,WAAA,EAAa,OAAO,YAAA,EAAa;AAAA,MAC5F,KAAK,OAAA;AACH,QAAA,OAAO,EAAE,iBAAiB,aAAA,EAAc;AAAA,MAC1C;AACE,QAAA,OAAO;AAAA,UACL,iBAAiB,MAAA,CAAO,YAAA;AAAA,UACxB,aAAa,MAAA,CAAO,YAAA;AAAA,UACpB,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,UACpC,aAAA,EAAe,GAAA;AAAA,UACf,YAAA,EAAc,CAAA;AAAA,UACd,SAAA,EAAW;AAAA,SACb;AAAA;AACJ,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,WAAA;AACH,QAAA,OAAO,MAAA,CAAO,kBAAA;AAAA,MAChB,KAAK,SAAA;AAAA,MACL,KAAK,OAAA;AACH,QAAA,OAAO,MAAA,CAAO,YAAA;AAAA,MAChB;AACE,QAAA,OAAO,MAAA,CAAO,gBAAA;AAAA;AAClB,EACF,CAAA;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAACC,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACLC,OAAAA,CAAO,MAAA;AAAA,QACP,cAAA,EAAe;AAAA,QACf,cAAcA,OAAAA,CAAO,QAAA;AAAA,QACrB;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,aAAA,EAAe,GAAA;AAAA,MAEd,oCACCF,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,OAAA,KAAY,SAAA,GAAY,MAAA,CAAO,mBAAmB,MAAA,CAAO,YAAA;AAAA,UAChE,IAAA,EAAK;AAAA;AAAA,0BAGPA,GAAAA,CAACG,IAAAA,EAAA,EAAK,OAAO,CAACD,OAAAA,CAAO,IAAA,EAAM,EAAE,OAAO,YAAA,EAAa,EAAE,EAAG,SAAS,GAAI,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,GAE7E;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,MAAA,EAAQ;AAAA,IACN,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,EAAA;AAAA,IACX,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AC5FM,IAAM,YAAsC,CAAC;AAAA,EAClD,SAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,qBAAA;AAAA,EACA,gBAAA,GAAmB,IAAA;AAAA,EACnB,kBAAA,GAAqB,IAAA;AAAA,EACrB,gBAAA,GAAmB,IAAA;AAAA,EACnB;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIL,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,QAAAA,CAAS,CAAC,gBAAgB,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAEtD,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,SAAA,EAAW,OAAO,SAAA,IAAa,SAAA;AAAA,IAC/B,kBAAA,EAAoB,OAAO,kBAAA,IAAsB,SAAA;AAAA,IACjD,cAAA,EAAgB,OAAO,cAAA,IAAkB,SAAA;AAAA,IACzC,WAAA,EAAa,OAAO,WAAA,IAAe,SAAA;AAAA,IACnC,WAAA,EAAa,OAAO,WAAA,IAAe,SAAA;AAAA,IACnC,oBAAA,EAAsB,OAAO,oBAAA,IAAwB,SAAA;AAAA,IACrD,gBAAA,EAAkB,OAAO,gBAAA,IAAoB;AAAA,GAC/C;AAEA,EAAA,MAAM,UAAA,GAAyB;AAAA,IAC7B,iBAAiB,MAAA,CAAO,oBAAA;AAAA,IACxB,aAAa,MAAA,CAAO,gBAAA;AAAA,IACpB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,YAAY,MAAA,CAAO,kBAAA;AAAA,IACnB,kBAAkB,MAAA,CAAO,cAAA;AAAA,IACzB,aAAa,MAAA,CAAO;AAAA,GACtB;AAEA,EAAA,MAAM,WAAA,GAA2B;AAAA,IAC/B,cAAc,MAAA,CAAO,WAAA;AAAA,IACrB,gBAAgB,MAAA,CAAO,oBAAA;AAAA,IACvB,oBAAoB,MAAA,CAAO;AAAA,GAC7B;AAEA,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAK,EAAG;AACjB,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,QAAA,CAAS,MAAK,EAAG;AAC/B,MAAA,QAAA,CAAS,sBAAsB,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAiB,EAAE,KAAA,EAAO,KAAA,CAAM,MAAK,EAAE;AAE7C,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,SAAA,CAAU,QAAA,GAAW,QAAA;AAAA,MACvB;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,SAAS,CAAA;AAEvC,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,IAAI,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,UAAU,CAAA,EAAG;AAC1C,UAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,SAAA,GAAY,QAAQ,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,QAAA,CAAS,WAAW,cAAc,CAAA;AAAA,MAC7C;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,mBAAmB,CAAA;AAAA,IACnE;AAAA,EACF,CAAA;AAEA,EAAA,uBACEC,GAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,QAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,SAAA,GAAY,QAAA;AAAA,MAC9C,OAAOE,OAAAA,CAAO,SAAA;AAAA,MAEd,QAAA,kBAAAF,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,uBAAuBE,OAAAA,CAAO,aAAA;AAAA,UAC9B,yBAAA,EAA0B,SAAA;AAAA,UAE1B,0BAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,4BAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,OAAO,SAAA,EAAW,CAAA,EACpD,QAAA,EAAA,MAAA,GAAS,mBAAmB,OAAA,EAC/B,CAAA;AAAA,YAEC,yBACCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,cAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,4BAGFF,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,OAAA;AAAA,gBACN,KAAA,EAAO,KAAA;AAAA,gBACP,YAAA,EAAc,QAAA;AAAA,gBACd,WAAA,EAAY,kBAAA;AAAA,gBACZ,YAAA,EAAa,eAAA;AAAA,gBACb,cAAA,EAAe,MAAA;AAAA,gBACf,WAAA,EAAa,KAAA;AAAA,gBACb,UAAU,CAAC,OAAA;AAAA,gBACX,KAAA,EAAO;AAAA;AAAA,aACT;AAAA,YAEC,CAAC,0BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,UAAA;AAAA,gBACN,KAAA,EAAO,QAAA;AAAA,gBACP,YAAA,EAAc,WAAA;AAAA,gBACd,WAAA,EAAY,qBAAA;AAAA,gBACZ,UAAA,EAAU,IAAA;AAAA,gBACV,UAAU,CAAC,OAAA;AAAA,gBACX,KAAA,EAAO;AAAA;AAAA,aACT;AAAA,4BAGFA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,OAAA,GAAU,gBAAA,GAAoB,MAAA,GAAS,UAAA,GAAa,OAAA;AAAA,gBAC3D,OAAA,EAAS,YAAA;AAAA,gBACT,OAAA;AAAA,gBACA,QAAA,EAAU,OAAA;AAAA,gBACV,KAAA,EAAO;AAAA;AAAA,aACT;AAAA,4BAEAA,GAAAA;AAAA,cAACC,gBAAAA;AAAA,cAAA;AAAA,gBACC,OAAOC,OAAAA,CAAO,YAAA;AAAA,gBACd,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,gBAChC,QAAA,EAAU,OAAA;AAAA,gBAEV,0BAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,gBAAA,EAAkB,EAAE,KAAA,EAAO,OAAO,WAAA,EAAa,CAAA,EACjE,QAAA,EAAA,MAAA,GAAS,gCAAgC,wBAAA,EAC5C;AAAA;AAAA,aACF;AAAA,YAEC,kBAAA,IAAsB,CAAC,MAAA,oBACtBF,GAAAA;AAAA,cAACC,gBAAAA;AAAA,cAAA;AAAA,gBACC,OAAOC,OAAAA,CAAO,cAAA;AAAA,gBACd,OAAA,EAAS,qBAAA;AAAA,gBACT,QAAA,EAAU,OAAA;AAAA,gBAEV,QAAA,kBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,OAAO,CAACD,OAAAA,CAAO,kBAAA,EAAoB,EAAE,KAAA,EAAO,MAAA,CAAO,kBAAA,EAAoB,GAAG,QAAA,EAAA,kBAAA,EAEhF;AAAA;AAAA,aACF;AAAA,YAGD,gBAAA,oBACCG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACJ,OAAAA,CAAO,iBAAA,EAAmB,EAAE,cAAA,EAAgB,MAAA,CAAO,WAAA,EAAa,CAAA,EAC5E,QAAA,EAAA;AAAA,8BAAAG,IAAAA,CAACF,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,YAAA,EAAc,EAAE,KAAA,EAAO,MAAA,CAAO,kBAAA,EAAoB,CAAA,EAAG,QAAA,EAAA;AAAA,gBAAA,wBAAA;AAAA,gBACjD;AAAA,eAAA,EACzB,CAAA;AAAA,8BACAF,IAACC,gBAAAA,EAAA,EAAiB,SAAS,eAAA,EAAiB,QAAA,EAAU,OAAA,EACpD,QAAA,kBAAAD,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,YAAA,EAAc,EAAE,KAAA,EAAO,OAAO,WAAA,EAAa,CAAA,EAAG,QAAA,EAAA,UAAA,EAAQ,CAAA,EAC7E;AAAA,aAAA,EACF;AAAA,WAAA,EAEJ;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY;AAAA,GACd;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY;AAAA,GACd;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY,EAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACjPM,IAAM,eAA4C,CAAC;AAAA,EACxD,SAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIL,SAAS,EAAE,CAAA;AACnC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,EAAE,CAAA;AACzD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAEtD,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAK,EAAG;AAChB,MAAA,QAAA,CAAS,kBAAkB,CAAA;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAK,EAAG;AACjB,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,QAAA,CAAS,IAAA,EAAK,EAAG;AACpB,MAAA,QAAA,CAAS,sBAAsB,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAa,eAAA,EAAiB;AAChC,MAAA,QAAA,CAAS,wBAAwB,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,QAAA,CAAS,wCAAwC,CAAA;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO;AAAA,QAC5B,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,QAChB,KAAA,EAAO,MAAM,IAAA,EAAK;AAAA,QAClB;AAAA,OACD,CAAA;AAED,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,IAAI,QAAA,CAAS,SAAS,QAAA,CAAS,KAAK,KAAK,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,cAAc,CAAA,EAAG;AACnF,UAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,SAAA,GAAY,QAAQ,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,QAAA,CAAS,WAAW,qBAAqB,CAAA;AAAA,MACpD;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,mBAAmB,CAAA;AAAA,IACnE;AAAA,EACF,CAAA;AAEA,EAAA,uBACEC,GAAAA;AAAA,IAACO,oBAAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAUC,QAAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,SAAA,GAAY,QAAA;AAAA,MAC9C,OAAON,OAAAA,CAAO,SAAA;AAAA,MAEd,QAAA,kBAAAF,GAAAA;AAAA,QAACS,UAAAA;AAAA,QAAA;AAAA,UACC,uBAAuBP,OAAAA,CAAO,aAAA;AAAA,UAC9B,yBAAA,EAA0B,SAAA;AAAA,UAE1B,0BAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,4BAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,YAExC,yBACCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,cAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,4BAGFF,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO,IAAA;AAAA,gBACP,YAAA,EAAc,OAAA;AAAA,gBACd,WAAA,EAAY,iBAAA;AAAA,gBACZ,cAAA,EAAe,OAAA;AAAA,gBACf,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,OAAA;AAAA,gBACN,KAAA,EAAO,KAAA;AAAA,gBACP,YAAA,EAAc,QAAA;AAAA,gBACd,WAAA,EAAY,kBAAA;AAAA,gBACZ,YAAA,EAAa,eAAA;AAAA,gBACb,cAAA,EAAe,MAAA;AAAA,gBACf,WAAA,EAAa,KAAA;AAAA,gBACb,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,UAAA;AAAA,gBACN,KAAA,EAAO,QAAA;AAAA,gBACP,YAAA,EAAc,WAAA;AAAA,gBACd,WAAA,EAAY,mBAAA;AAAA,gBACZ,UAAA,EAAU,IAAA;AAAA,gBACV,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,kBAAA;AAAA,gBACN,KAAA,EAAO,eAAA;AAAA,gBACP,YAAA,EAAc,kBAAA;AAAA,gBACd,WAAA,EAAY,uBAAA;AAAA,gBACZ,UAAA,EAAU,IAAA;AAAA,gBACV,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,UAAU,qBAAA,GAAwB,UAAA;AAAA,gBACzC,OAAA,EAAS,YAAA;AAAA,gBACT,OAAA;AAAA,gBACA,QAAA,EAAU;AAAA;AAAA,aACZ;AAAA,YAEC,iCACCK,IAAAA,CAACC,MAAA,EAAK,KAAA,EAAOJ,QAAO,cAAA,EAClB,QAAA,EAAA;AAAA,8BAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,WAAW,QAAA,EAAA,2BAAA,EAAyB,CAAA;AAAA,8BACxDF,GAAAA,CAACC,gBAAAA,EAAA,EAAiB,OAAA,EAAS,cAAc,QAAA,EAAU,OAAA,EACjD,QAAA,kBAAAD,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAW,mBAAK,CAAA,EACtC;AAAA,aAAA,EACF;AAAA,WAAA,EAEJ;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IACV,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAc,EAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACpC,aAAA,EAAe,GAAA;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY,EAAA;AAAA,IACZ,cAAA,EAAgB,CAAA;AAAA,IAChB,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACxLM,IAAM,UAAkC,CAAC;AAAA,EAC9C,KAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA,GAAY,CAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAA,KAAY,OAAA,EAAQ;AAC5C,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIL,QAAAA,CAAmB,MAAM,SAAS,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAClE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,SAAA,GAAY,MAAA,CAA6B,EAAE,CAAA;AAEjD,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,SAAA,EAAW,OAAO,SAAA,IAAa,SAAA;AAAA,IAC/B,kBAAA,EAAoB,OAAO,kBAAA,IAAsB,SAAA;AAAA,IACjD,WAAA,EAAa,OAAO,WAAA,IAAe,SAAA;AAAA,IACnC,oBAAA,EAAsB,OAAO,oBAAA,IAAwB,SAAA;AAAA,IACrD,gBAAA,EAAkB,OAAO,gBAAA,IAAoB,SAAA;AAAA,IAC7C,0BAAA,EAA4B,OAAO,0BAAA,IAA8B;AAAA,GACnE;AAEA,EAAA,MAAM,WAAA,GAA2B;AAAA,IAC/B,cAAc,MAAA,CAAO;AAAA,GACvB;AAEA,EAAAW,UAAU,MAAM;AACd,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,eAAe,WAAA,GAAc,CAAC,GAAG,GAAI,CAAA;AACpE,MAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,IACjC;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,EAAe,KAAA,KAAkB;AACxD,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AAEpB,MAAA,MAAM,YAAY,KAAA,CAAM,KAAA,CAAM,GAAG,SAAS,CAAA,CAAE,MAAM,EAAE,CAAA;AACpD,MAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,MAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,IAAA,EAAM,CAAA,KAAM;AAC7B,QAAA,IAAI,KAAA,GAAQ,IAAI,SAAA,EAAW;AACzB,UAAA,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,QACtB;AAAA,MACF,CAAC,CAAA;AACD,MAAA,MAAA,CAAO,MAAM,CAAA;AACb,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAA,CAAU,MAAA,EAAQ,YAAY,CAAC,CAAA;AAClE,MAAA,SAAA,CAAU,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAM;AAAA,IACtC,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,MAAA,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA;AAChB,MAAA,MAAA,CAAO,MAAM,CAAA;AAEb,MAAA,IAAI,KAAA,IAAS,KAAA,GAAQ,SAAA,GAAY,CAAA,EAAG;AAClC,QAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAM;AAAA,MACtC;AAAA,IACF;AACA,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,EAAQ,KAAA,KAAkB;AAChD,IAAA,IAAI,CAAA,CAAE,YAAY,GAAA,KAAQ,WAAA,IAAe,CAAC,GAAA,CAAI,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA,EAAG;AACjE,MAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAM;AAAA,IACtC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAE3B,IAAA,IAAI,OAAA,CAAQ,WAAW,SAAA,EAAW;AAChC,MAAA,QAAA,CAAS,CAAA,iBAAA,EAAoB,SAAS,CAAA,OAAA,CAAS,CAAA;AAC/C,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,EAAE,KAAA,EAAO,GAAA,EAAK,SAAS,CAAA;AAErD,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,SAAA,GAAY,QAAQ,CAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,QAAA,CAAS,WAAW,qBAAqB,CAAA;AAAA,MACpD;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,mBAAmB,CAAA;AAAA,IACnE;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,cAAA,CAAe,EAAE,CAAA;AAEjB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA;AACtB,MAAA,WAAA,IAAc;AAAA,IAChB,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,sBAAsB,CAAA;AAAA,IACjC;AAAA,EACF,CAAA;AAEA,EAAA,uBACEV,GAAAA;AAAA,IAACO,oBAAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAUC,QAAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,SAAA,GAAY,QAAA;AAAA,MAC9C,OAAON,OAAAA,CAAO,SAAA;AAAA,MAEd,0BAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,GAAG,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,wBACpEG,IAAAA,CAACF,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,CAAO,kBAAA,EAAoB,CAAA,EAAG,QAAA,EAAA;AAAA,UAAA,YAAA;AAAA,UACzD,SAAA;AAAA,UAAU,qBAAA;AAAA,UAAoB,IAAA;AAAA,0BACzCF,GAAAA,CAACG,IAAAA,EAAA,EAAK,OAAO,CAACD,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,WAAA,EAAa,GAAI,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EACrE,CAAA;AAAA,QAEC,yBACCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,cAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,wBAGFF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,YAAA,EACjB,QAAA,EAAA,GAAA,CAAI,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBACfF,GAAAA;AAAA,UAACW,SAAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EAAK,CAAC,GAAA,KAAQ;AAAE,cAAA,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA,GAAI,GAAA;AAAA,YAAK,CAAA;AAAA,YAChD,KAAA,EAAO;AAAA,cACLT,OAAAA,CAAO,QAAA;AAAA,cACP;AAAA,gBACE,iBAAiB,MAAA,CAAO,oBAAA;AAAA,gBACxB,aAAa,MAAA,CAAO,gBAAA;AAAA,gBACpB,OAAO,MAAA,CAAO;AAAA,eAChB;AAAA,cACA,KAAA,IAAS;AAAA,gBACP,aAAa,MAAA,CAAO,WAAA;AAAA,gBACpB,iBAAiB,MAAA,CAAO;AAAA;AAC1B,aACF;AAAA,YACA,KAAA,EAAO,KAAA;AAAA,YACP,YAAA,EAAc,CAAC,KAAA,KAAU,eAAA,CAAgB,OAAO,KAAK,CAAA;AAAA,YACrD,UAAA,EAAY,CAAC,CAAA,KAAM,cAAA,CAAe,GAAG,KAAK,CAAA;AAAA,YAC1C,YAAA,EAAa,YAAA;AAAA,YACb,SAAA,EAAW,SAAA;AAAA,YACX,UAAU,CAAC,OAAA;AAAA,YACX,iBAAA,EAAiB;AAAA,WAAA;AAAA,UApBZ;AAAA,SAsBR,CAAA,EACH,CAAA;AAAA,wBAEAF,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,UAAU,cAAA,GAAiB,QAAA;AAAA,YAClC,OAAA,EAAS,YAAA;AAAA,YACT,OAAA;AAAA,YACA,UAAU,OAAA,IAAW,GAAA,CAAI,IAAA,CAAK,EAAE,EAAE,MAAA,KAAW,SAAA;AAAA,YAC7C,KAAA,EAAO;AAAA;AAAA,SACT;AAAA,wBAEAA,IAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,eAAA,EACjB,QAAA,EAAA,WAAA,GAAc,CAAA,mBACbG,IAAAA,CAACF,MAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,MAAA,CAAO,kBAAA,EAAoB,CAAA,EAAG,QAAA,EAAA;AAAA,UAAA,gBAAA;AAAA,UACxD,WAAA;AAAA,UAAY;AAAA,SAAA,EAC7B,CAAA,mBAEAF,GAAAA,CAACC,gBAAAA,EAAA,EAAiB,SAAS,YAAA,EAAc,QAAA,EAAU,OAAA,EACjD,QAAA,kBAAAD,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,UAAA,EAAY,EAAE,KAAA,EAAO,MAAA,CAAO,WAAA,EAAa,CAAA,EAAG,QAAA,EAAA,YAAA,EAAU,CAAA,EAC7E,CAAA,EAEJ,CAAA;AAAA,QAEC,WAAA,oBACCF,GAAAA,CAACC,gBAAAA,EAAA,EAAiB,OAAOC,OAAAA,CAAO,UAAA,EAAY,OAAA,EAAS,WAAA,EACnD,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,CAAO,kBAAA,EAAoB,CAAA,EAAG,QAAA,EAAA,sBAAA,EAAe,CAAA,EACvF;AAAA,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,eAAA;AAAA,IAChB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AClQM,IAAM,iBAAgD,CAAC;AAAA,EAC5D,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,cAAA,EAAgB,OAAA,EAAQ,GAAI,OAAA,EAAQ;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIL,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAK,EAAG;AACjB,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,cAAA,CAAe,KAAA,CAAM,MAAM,CAAA;AAElD,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,QAAA,CAAS,WAAW,4BAA4B,CAAA;AAAA,MAC3D;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,mBAAmB,CAAA;AAAA,IACnE;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEC,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,SAAA,EAClB,QAAA,kBAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,WAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,eAAA,EAAiB,oBAAC,CAAA,EACxC,CAAA;AAAA,sBACAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAC3CG,IAAAA,CAACF,IAAAA,EAAA,EAAK,KAAA,EAAOD,QAAO,QAAA,EAAU,QAAA,EAAA;AAAA,QAAA,qCAAA;AAAA,QACQ,IAAA;AAAA,wBACpCF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACpC,CAAA;AAAA,sBACAF,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,OAAA,EAAS,gBAAgB,MAAM;AAAA,UAAC,CAAA,CAAA;AAAA,UAChC,OAAA,EAAQ;AAAA;AAAA;AACV,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAACO,oBAAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAUC,QAAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,SAAA,GAAY,QAAA;AAAA,MAC9C,OAAON,OAAAA,CAAO,SAAA;AAAA,MAEd,0BAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,wBAC1CF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,UAAU,QAAA,EAAA,4EAAA,EAE9B,CAAA;AAAA,QAEC,yBACCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,cAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,wBAGFF,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAO,KAAA;AAAA,YACP,YAAA,EAAc,QAAA;AAAA,YACd,WAAA,EAAY,kBAAA;AAAA,YACZ,YAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAe,MAAA;AAAA,YACf,WAAA,EAAa,KAAA;AAAA,YACb,UAAU,CAAC;AAAA;AAAA,SACb;AAAA,wBAEAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,UAAU,YAAA,GAAe,iBAAA;AAAA,YAChC,OAAA,EAAS,YAAA;AAAA,YACT,OAAA;AAAA,YACA,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QAEC,+BACCA,GAAAA,CAACC,kBAAA,EAAiB,KAAA,EAAOC,QAAO,UAAA,EAAY,OAAA,EAAS,WAAA,EACnD,QAAA,kBAAAF,IAACG,IAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,QAAA,EAAU,kCAAe,CAAA,EAC/C;AAAA,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAc,EAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACpC,aAAA,EAAe,GAAA;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;ACtKM,IAAM,gBAA8C,CAAC;AAAA,EAC1D,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,aAAA,EAAe,OAAA,EAAQ,GAAI,OAAA,EAAQ;AAC3C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIL,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,EAAE,CAAA;AACzD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,IAAI,CAAC,QAAA,CAAS,IAAA,EAAK,EAAG;AACpB,MAAA,QAAA,CAAS,sBAAsB,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,QAAA,CAAS,wCAAwC,CAAA;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAa,eAAA,EAAiB;AAChC,MAAA,QAAA,CAAS,wBAAwB,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,aAAA,CAAc,KAAA,EAAO,QAAQ,CAAA;AAEpD,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,QAAA,CAAS,WAAW,0BAA0B,CAAA;AAAA,MACzD;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,mBAAmB,CAAA;AAAA,IACnE;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEC,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,SAAA,EAClB,QAAA,kBAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,WAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,eAAA,EAAiB,oBAAC,CAAA,EACxC,CAAA;AAAA,sBACAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,sBACzCF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,UAAU,QAAA,EAAA,sFAAA,EAE9B,CAAA;AAAA,sBACAF,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,OAAA,EAAS,gBAAgB,MAAM;AAAA,UAAC,CAAA;AAAA;AAAA;AAClC,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAACO,oBAAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAUC,QAAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,SAAA,GAAY,QAAA;AAAA,MAC9C,OAAON,OAAAA,CAAO,SAAA;AAAA,MAEd,QAAA,kBAAAF,GAAAA;AAAA,QAACS,UAAAA;AAAA,QAAA;AAAA,UACC,uBAAuBP,OAAAA,CAAO,aAAA;AAAA,UAC9B,yBAAA,EAA0B,SAAA;AAAA,UAE1B,0BAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,4BAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,4BACzCF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,UAAU,QAAA,EAAA,gCAAA,EAE9B,CAAA;AAAA,YAEC,yBACCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,cAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,4BAGFF,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,cAAA;AAAA,gBACN,KAAA,EAAO,QAAA;AAAA,gBACP,YAAA,EAAc,WAAA;AAAA,gBACd,WAAA,EAAY,oBAAA;AAAA,gBACZ,UAAA,EAAU,IAAA;AAAA,gBACV,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,kBAAA;AAAA,gBACN,KAAA,EAAO,eAAA;AAAA,gBACP,YAAA,EAAc,kBAAA;AAAA,gBACd,WAAA,EAAY,sBAAA;AAAA,gBACZ,UAAA,EAAU,IAAA;AAAA,gBACV,UAAU,CAAC;AAAA;AAAA,aACb;AAAA,4BAEAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,UAAU,cAAA,GAAiB,gBAAA;AAAA,gBAClC,OAAA,EAAS,YAAA;AAAA,gBACT,OAAA;AAAA,gBACA,QAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAME,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IACV,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAc,EAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACpC,aAAA,EAAe,GAAA;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AC/KM,IAAM,cAA0C,CAAC;AAAA,EACtD,WAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA,GAAmB;AACrB,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,KAAY,OAAA,EAAQ;AAE3C,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,MAAM,OAAA,EAAQ;AACd,IAAA,aAAA,IAAgB;AAAA,EAClB,CAAA;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,uBACEJ,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAOJ,OAAAA,CAAO,SAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,WAAA,EAAa,2BAAa,CAAA,EAChD,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAe,KAAA,KAAmB;AACrD,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAO,KACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA,CACf,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,IACf;AACA,IAAA,OAAO,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,IAAK,GAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACEF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,SAAA,EAClB,QAAA,kBAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,oBAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,MAAA,EACjB,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA,mBACJF,GAAAA,CAAC,KAAA,EAAA,EAAM,QAAQ,EAAE,GAAA,EAAK,IAAA,CAAK,MAAA,IAAU,KAAA,EAAOE,OAAAA,CAAO,MAAA,EAAQ,CAAA,mBAE3DF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,iBAAA,EAClB,QAAA,kBAAAF,GAAAA,CAACG,MAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,UAAA,EACjB,sBAAY,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,KAAK,GACpC,CAAA,EACF,CAAA;AAAA,sBAGFG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,QAAA,EACjB,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,IAAA,oBAAQF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,IAAA,EAAO,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,wBACnDF,IAACG,IAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,KAAA,EAAQ,eAAK,KAAA,EAAM;AAAA,OAAA,EACzC,CAAA;AAAA,MAEC,+BACCF,GAAAA,CAACC,kBAAA,EAAiB,KAAA,EAAOC,QAAO,UAAA,EAAY,OAAA,EAAS,WAAA,EACnD,QAAA,kBAAAF,IAACG,IAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,QAAA,EAAU,kBAAI,CAAA,EACpC;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAF,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,OAAA,EAAS,CAAA;AAAA,oBAE7BG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,sBAAAG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,SAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAa,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACtCF,IAACG,IAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,WAAA,EAAc,eAAK,KAAA,EAAM;AAAA,OAAA,EAC/C,CAAA;AAAA,MAEC,IAAA,CAAK,+BACJG,IAAAA,CAACC,MAAA,EAAK,KAAA,EAAOJ,QAAO,SAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAa,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACtCF,IAACG,IAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,WAAA,EAAc,eAAK,WAAA,EAAY;AAAA,OAAA,EACrD,CAAA;AAAA,sBAGFG,IAAAA,CAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,SAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAa,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,wBAC/CF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAO,CAACJ,OAAAA,CAAO,KAAA,EAAO,IAAA,CAAK,gBAAgBA,OAAAA,CAAO,YAAA,GAAeA,OAAAA,CAAO,YAAY,GACxF,QAAA,kBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,KAAK,aAAA,GAAgBA,OAAAA,CAAO,gBAAA,GAAmBA,OAAAA,CAAO,gBAAgB,CAAA,EACnG,QAAA,EAAA,IAAA,CAAK,aAAA,GAAgB,UAAA,GAAa,gBACrC,CAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,IAAA,CAAK,qBAAqB,MAAA,oBACzBG,KAACC,IAAAA,EAAA,EAAK,KAAA,EAAOJ,OAAAA,CAAO,SAAA,EAClB,QAAA,EAAA;AAAA,wBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAa,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,wBACpCF,GAAAA,CAACM,IAAAA,EAAA,EAAK,OAAO,CAACJ,OAAAA,CAAO,KAAA,EAAO,IAAA,CAAK,mBAAmBA,OAAAA,CAAO,YAAA,GAAeA,OAAAA,CAAO,YAAY,GAC3F,QAAA,kBAAAF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,KAAK,gBAAA,GAAmBA,OAAAA,CAAO,gBAAA,GAAmBA,OAAAA,CAAO,gBAAgB,CAAA,EACtG,QAAA,EAAA,IAAA,CAAK,gBAAA,GAAmB,SAAA,GAAY,YACvC,CAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,IAEC,gBAAA,oBACCG,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAACM,IAAAA,EAAA,EAAK,KAAA,EAAOJ,QAAO,OAAA,EAAS,CAAA;AAAA,sBAC7BF,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,UAAU,gBAAA,GAAmB,QAAA;AAAA,UACpC,OAAA,EAAS,YAAA;AAAA,UACT,OAAA;AAAA,UACA,OAAA,EAAQ,SAAA;AAAA,UACR,OAAOE,OAAAA,CAAO,YAAA;AAAA,UACd,WAAWA,OAAAA,CAAO;AAAA;AAAA;AACpB,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAc,EAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACpC,aAAA,EAAe,GAAA;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,eAAA,EAAiB,SAAA;AAAA,IACjB,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,eAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,KAAA,EAAO;AAAA,GACT;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,KAAA,EAAO;AAAA,GACT;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,KAAA,EAAO;AAAA,GACT;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,WAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,QAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;ACvOM,IAAM,iBAAgD,CAAC;AAAA,EAC5D,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAW,GAAI,OAAA,EAAQ;AAEzC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OACE,oCACEC,IAAAA,CAACC,MAAA,EAAK,KAAA,EAAOJ,QAAO,gBAAA,EAClB,QAAA,EAAA;AAAA,sBAAAF,IAACY,iBAAAA,EAAA,EAAkB,IAAA,EAAK,OAAA,EAAQ,OAAM,SAAA,EAAU,CAAA;AAAA,sBAChDZ,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAa,QAAA,EAAA,YAAA,EAAU;AAAA,KAAA,EAC7C,CAAA;AAAA,EAGN;AAEA,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OACE,4BACEG,IAAAA,CAACC,MAAA,EAAK,KAAA,EAAOJ,QAAO,qBAAA,EAClB,QAAA,EAAA;AAAA,sBAAAF,IAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,mBAAmB,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBACpDF,GAAAA,CAACG,IAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,kBAAkB,QAAA,EAAA,wCAAA,EAEtC;AAAA,KAAA,EACF,CAAA;AAAA,EAGN;AAEA,EAAA,uBAAOF,GAAAA,CAAAa,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AACrB;AAEA,IAAMX,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,gBAAA,EAAkB;AAAA,IAChB,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,EAAA;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,qBAAA,EAAuB;AAAA,IACrB,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,EAAA;AAAA,IACT,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA","file":"index.react-native.mjs","sourcesContent":["import axios, { AxiosInstance } from 'axios';\nimport { AuthConfig, AuthResponse, LoginData, RegisterData, VerifyData, UpdateUserData, User } from '../types';\n\nexport class AuthServiceRN {\n private client: AxiosInstance;\n private token: string | null = null;\n private config: AuthConfig;\n\n constructor(config: AuthConfig) {\n this.config = config;\n this.client = axios.create({\n baseURL: config.baseUrl,\n timeout: 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n // Add auth token to requests\n this.client.interceptors.request.use((config) => {\n if (this.token) {\n config.headers.Authorization = `Bearer ${this.token}`;\n }\n return config;\n });\n }\n\n setToken(token: string | null): void {\n this.token = token;\n }\n\n getToken(): string | null {\n return this.token;\n }\n\n isAuthenticated(): boolean {\n return !!this.token;\n }\n\n getCurrentUser(): User | null {\n if (!this.token) return null;\n try {\n const payload = JSON.parse(atob(this.token.split('.')[1]));\n return payload.user || null;\n } catch {\n return null;\n }\n }\n\n async login(data: LoginData): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/auth/login', data);\n if (response.data.success && response.data.token) {\n this.token = response.data.token;\n }\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Login failed',\n };\n }\n }\n\n async register(data: RegisterData): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/auth/register', data);\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Registration failed',\n };\n }\n }\n\n async verify(data: VerifyData): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/auth/verify', data);\n if (response.data.success && response.data.token) {\n this.token = response.data.token;\n }\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Verification failed',\n };\n }\n }\n\n async logout(): Promise<void> {\n try {\n await this.client.post('/api/v1/auth/logout', {});\n } catch {\n // Ignore logout errors\n }\n this.token = null;\n }\n\n async getProfile(): Promise<User> {\n const response = await this.client.get<{ user: User }>('/api/v1/user/me');\n return response.data.user;\n }\n\n async updateProfile(data: UpdateUserData): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/user/update/profile', data);\n if (response.data.success && response.data.token) {\n this.token = response.data.token;\n }\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Update failed',\n };\n }\n }\n\n async forgotPassword(email: string): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/auth/forgot-password', { email });\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Request failed',\n };\n }\n }\n\n async resetPassword(token: string, password: string): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/auth/reset-password', { token, password });\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Reset failed',\n };\n }\n }\n\n async changePassword(oldPassword: string, newPassword: string): Promise<AuthResponse> {\n try {\n const response = await this.client.post<AuthResponse>('/api/v1/user/change-password', { \n oldPassword, \n newPassword \n });\n return response.data;\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || error.message || 'Change password failed',\n };\n }\n }\n}\n","import React, { createContext, useContext, useState, useEffect, useCallback, ReactNode } from 'react';\nimport * as SecureStore from 'expo-secure-store';\nimport { AuthServiceRN } from './auth-service-rn';\nimport { User, AuthConfig, AuthResponse, LoginData, RegisterData, VerifyData, UpdateUserData } from '../types';\n\ninterface AuthContextValue {\n user: User | null;\n isLoaded: boolean;\n isSignedIn: boolean;\n loading: boolean;\n token: string | null;\n signIn: (data: LoginData) => Promise<AuthResponse>;\n signUp: (data: RegisterData) => Promise<AuthResponse>;\n signOut: () => Promise<void>;\n verify: (data: VerifyData) => Promise<AuthResponse>;\n updateProfile: (data: UpdateUserData) => Promise<AuthResponse>;\n getProfile: () => Promise<User>;\n forgotPassword: (email: string) => Promise<AuthResponse>;\n resetPassword: (token: string, password: string) => Promise<AuthResponse>;\n changePassword: (oldPassword: string, newPassword: string) => Promise<AuthResponse>;\n authService: AuthServiceRN;\n}\n\nconst AuthContext = createContext<AuthContextValue | undefined>(undefined);\n\ninterface AuthProviderProps {\n children: ReactNode;\n config?: Partial<AuthConfig>;\n}\n\nconst STORAGE_KEYS = {\n TOKEN: 'auth_token',\n USER: 'auth_user',\n};\n\nexport const AuthProvider: React.FC<AuthProviderProps> = ({ children, config }) => {\n const authConfig: AuthConfig = {\n baseUrl: config?.baseUrl || process.env.EXPO_PUBLIC_AUTH_API_URL || 'http://localhost:7000',\n localStorageKey: config?.localStorageKey || STORAGE_KEYS.TOKEN,\n csrfEnabled: false,\n };\n\n const [authService] = useState(() => new AuthServiceRN(authConfig));\n const [user, setUser] = useState<User | null>(null);\n const [token, setToken] = useState<string | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n loadStoredAuth();\n }, []);\n\n const loadStoredAuth = async () => {\n try {\n const storedToken = await SecureStore.getItemAsync(STORAGE_KEYS.TOKEN);\n const storedUser = await SecureStore.getItemAsync(STORAGE_KEYS.USER);\n\n if (storedToken && storedUser) {\n const parsedUser = JSON.parse(storedUser);\n setToken(storedToken);\n setUser(parsedUser);\n authService.setToken(storedToken);\n }\n } catch (error) {\n console.warn('[Auth SDK RN] Failed to load stored auth:', error);\n } finally {\n setIsLoaded(true);\n }\n };\n\n const saveAuth = async (authToken: string, authUser: User) => {\n await SecureStore.setItemAsync(STORAGE_KEYS.TOKEN, authToken);\n await SecureStore.setItemAsync(STORAGE_KEYS.USER, JSON.stringify(authUser));\n setToken(authToken);\n setUser(authUser);\n authService.setToken(authToken);\n };\n\n const clearAuth = async () => {\n await SecureStore.deleteItemAsync(STORAGE_KEYS.TOKEN);\n await SecureStore.deleteItemAsync(STORAGE_KEYS.USER);\n setToken(null);\n setUser(null);\n authService.setToken(null);\n };\n\n const signIn = useCallback(async (data: LoginData): Promise<AuthResponse> => {\n setLoading(true);\n try {\n const response = await authService.login(data);\n if (response.success && response.user && response.token) {\n await saveAuth(response.token, response.user);\n }\n return response;\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const signUp = useCallback(async (data: RegisterData): Promise<AuthResponse> => {\n setLoading(true);\n try {\n return await authService.register(data);\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const signOut = useCallback(async (): Promise<void> => {\n setLoading(true);\n try {\n await authService.logout();\n await clearAuth();\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const verify = useCallback(async (data: VerifyData): Promise<AuthResponse> => {\n setLoading(true);\n try {\n const response = await authService.verify(data);\n if (response.success && response.user && response.token) {\n await saveAuth(response.token, response.user);\n }\n return response;\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const updateProfile = useCallback(async (data: UpdateUserData): Promise<AuthResponse> => {\n setLoading(true);\n try {\n const response = await authService.updateProfile(data);\n if (response.success && response.user) {\n setUser(response.user);\n await SecureStore.setItemAsync(STORAGE_KEYS.USER, JSON.stringify(response.user));\n }\n return response;\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const getProfile = useCallback(async (): Promise<User> => {\n setLoading(true);\n try {\n const userData = await authService.getProfile();\n setUser(userData);\n await SecureStore.setItemAsync(STORAGE_KEYS.USER, JSON.stringify(userData));\n return userData;\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const forgotPassword = useCallback(async (email: string): Promise<AuthResponse> => {\n setLoading(true);\n try {\n return await authService.forgotPassword(email);\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const resetPassword = useCallback(async (resetToken: string, password: string): Promise<AuthResponse> => {\n setLoading(true);\n try {\n return await authService.resetPassword(resetToken, password);\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const changePassword = useCallback(async (oldPassword: string, newPassword: string): Promise<AuthResponse> => {\n setLoading(true);\n try {\n return await authService.changePassword(oldPassword, newPassword);\n } finally {\n setLoading(false);\n }\n }, [authService]);\n\n const value: AuthContextValue = {\n user,\n isLoaded,\n isSignedIn: !!user,\n loading,\n token,\n signIn,\n signUp,\n signOut,\n verify,\n updateProfile,\n getProfile,\n forgotPassword,\n resetPassword,\n changePassword,\n authService,\n };\n\n return (\n <AuthContext.Provider value={value}>\n {children}\n </AuthContext.Provider>\n );\n};\n\nexport const useAuth = (): AuthContextValue => {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n};\n","import React, { useState } from 'react';\nimport { View, TextInput, Text, StyleSheet, TextInputProps, TouchableOpacity, ViewStyle } from 'react-native';\n\nexport interface InputTheme {\n backgroundColor?: string;\n borderColor?: string;\n textColor?: string;\n labelColor?: string;\n placeholderColor?: string;\n accentColor?: string;\n}\n\ninterface InputProps extends TextInputProps {\n label?: string;\n error?: string;\n containerStyle?: ViewStyle;\n isPassword?: boolean;\n theme?: InputTheme;\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n error,\n containerStyle,\n isPassword,\n style,\n theme,\n ...props\n}) => {\n const [showPassword, setShowPassword] = useState(false);\n\n const colors = {\n backgroundColor: theme?.backgroundColor ?? '#F8FAFC',\n borderColor: theme?.borderColor ?? '#E2E8F0',\n textColor: theme?.textColor ?? '#1E293B',\n labelColor: theme?.labelColor ?? '#374151',\n placeholderColor: theme?.placeholderColor ?? '#9CA3AF',\n accentColor: theme?.accentColor ?? '#4F46E5',\n };\n\n return (\n <View style={[styles.container, containerStyle]}>\n {label && <Text style={[styles.label, { color: colors.labelColor }]}>{label}</Text>}\n <View style={styles.inputWrapper}>\n <TextInput\n style={[\n styles.input,\n { \n backgroundColor: colors.backgroundColor,\n borderColor: error ? '#EF4444' : colors.borderColor,\n color: colors.textColor,\n },\n style,\n ]}\n placeholderTextColor={colors.placeholderColor}\n secureTextEntry={isPassword && !showPassword}\n {...props}\n />\n {isPassword && (\n <TouchableOpacity\n style={styles.eyeButton}\n onPress={() => setShowPassword(!showPassword)}\n >\n <Text style={[styles.eyeText, { color: colors.accentColor }]}>\n {showPassword ? 'Hide' : 'Show'}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n {error && <Text style={styles.errorText}>{error}</Text>}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n width: '100%',\n },\n label: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 8,\n },\n inputWrapper: {\n position: 'relative',\n width: '100%',\n },\n input: {\n borderWidth: 1.5,\n borderRadius: 12,\n paddingHorizontal: 16,\n paddingVertical: 14,\n fontSize: 16,\n width: '100%',\n },\n eyeButton: {\n position: 'absolute',\n right: 14,\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n },\n eyeText: {\n fontSize: 14,\n fontWeight: '600',\n },\n errorText: {\n color: '#EF4444',\n fontSize: 12,\n marginTop: 4,\n },\n});\n","import React from 'react';\nimport {\n TouchableOpacity,\n Text,\n StyleSheet,\n ActivityIndicator,\n ViewStyle,\n TextStyle,\n} from 'react-native';\n\nexport interface ButtonTheme {\n primaryColor?: string;\n primaryTextColor?: string;\n secondaryColor?: string;\n secondaryTextColor?: string;\n}\n\ninterface ButtonProps {\n title: string;\n onPress: () => void;\n loading?: boolean;\n disabled?: boolean;\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost';\n style?: ViewStyle;\n textStyle?: TextStyle;\n theme?: ButtonTheme;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n title,\n onPress,\n loading = false,\n disabled = false,\n variant = 'primary',\n style,\n textStyle,\n theme,\n}) => {\n const isDisabled = disabled || loading;\n\n const colors = {\n primaryColor: theme?.primaryColor ?? '#4F46E5',\n primaryTextColor: theme?.primaryTextColor ?? '#FFFFFF',\n secondaryColor: theme?.secondaryColor ?? '#F1F5F9',\n secondaryTextColor: theme?.secondaryTextColor ?? '#374151',\n };\n\n const getButtonStyle = (): ViewStyle => {\n switch (variant) {\n case 'secondary':\n return { backgroundColor: colors.secondaryColor };\n case 'outline':\n return { backgroundColor: 'transparent', borderWidth: 2, borderColor: colors.primaryColor };\n case 'ghost':\n return { backgroundColor: 'transparent' };\n default:\n return { \n backgroundColor: colors.primaryColor,\n shadowColor: colors.primaryColor,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.3,\n shadowRadius: 8,\n elevation: 4,\n };\n }\n };\n\n const getTextColor = () => {\n switch (variant) {\n case 'secondary':\n return colors.secondaryTextColor;\n case 'outline':\n case 'ghost':\n return colors.primaryColor;\n default:\n return colors.primaryTextColor;\n }\n };\n\n return (\n <TouchableOpacity\n style={[\n styles.button,\n getButtonStyle(),\n isDisabled && styles.disabled,\n style,\n ]}\n onPress={onPress}\n disabled={isDisabled}\n activeOpacity={0.7}\n >\n {loading ? (\n <ActivityIndicator\n color={variant === 'primary' ? colors.primaryTextColor : colors.primaryColor}\n size=\"small\"\n />\n ) : (\n <Text style={[styles.text, { color: getTextColor() }, textStyle]}>{title}</Text>\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n paddingVertical: 16,\n paddingHorizontal: 24,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 52,\n width: '100%',\n },\n disabled: {\n opacity: 0.6,\n },\n text: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n","import React, { useState } from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Input, InputTheme } from './ui/Input';\nimport { Button, ButtonTheme } from './ui/Button';\n\nexport interface LoginFormTheme {\n backgroundColor?: string;\n textColor?: string;\n secondaryTextColor?: string;\n mutedTextColor?: string;\n accentColor?: string;\n inputBackgroundColor?: string;\n inputBorderColor?: string;\n borderColor?: string;\n}\n\ninterface LoginFormProps {\n onSuccess?: (response: any) => void;\n onOtpRequired?: (email: string) => void;\n onRegisterPress?: () => void;\n onForgotPasswordPress?: () => void;\n showRegisterLink?: boolean;\n showForgotPassword?: boolean;\n usePasswordLogin?: boolean;\n theme?: LoginFormTheme;\n}\n\nexport const LoginForm: React.FC<LoginFormProps> = ({\n onSuccess,\n onOtpRequired,\n onRegisterPress,\n onForgotPasswordPress,\n showRegisterLink = true,\n showForgotPassword = true,\n usePasswordLogin = true,\n theme,\n}) => {\n const { signIn, loading } = useAuth();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [useOtp, setUseOtp] = useState(!usePasswordLogin);\n const [error, setError] = useState<string | null>(null);\n\n const colors = {\n textColor: theme?.textColor ?? '#111827',\n secondaryTextColor: theme?.secondaryTextColor ?? '#6B7280',\n mutedTextColor: theme?.mutedTextColor ?? '#9CA3AF',\n accentColor: theme?.accentColor ?? '#4F46E5',\n borderColor: theme?.borderColor ?? '#E5E7EB',\n inputBackgroundColor: theme?.inputBackgroundColor ?? '#F8FAFC',\n inputBorderColor: theme?.inputBorderColor ?? '#E2E8F0',\n };\n\n const inputTheme: InputTheme = {\n backgroundColor: colors.inputBackgroundColor,\n borderColor: colors.inputBorderColor,\n textColor: colors.textColor,\n labelColor: colors.secondaryTextColor,\n placeholderColor: colors.mutedTextColor,\n accentColor: colors.accentColor,\n };\n\n const buttonTheme: ButtonTheme = {\n primaryColor: colors.accentColor,\n secondaryColor: colors.inputBackgroundColor,\n secondaryTextColor: colors.textColor,\n };\n\n const handleSubmit = async () => {\n if (!email.trim()) {\n setError('Email is required');\n return;\n }\n\n if (!useOtp && !password.trim()) {\n setError('Password is required');\n return;\n }\n\n setError(null);\n\n try {\n const loginData: any = { email: email.trim() };\n \n if (!useOtp) {\n loginData.password = password;\n }\n\n const response = await signIn(loginData);\n\n if (response.success) {\n if (response.message?.includes('OTP sent')) {\n onOtpRequired?.(email);\n } else {\n onSuccess?.(response);\n }\n } else {\n setError(response.message || 'Login failed');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An error occurred');\n }\n };\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={styles.container}\n >\n <ScrollView\n contentContainerStyle={styles.scrollContent}\n keyboardShouldPersistTaps=\"handled\"\n >\n <View style={styles.card}>\n <Text style={[styles.title, { color: colors.textColor }]}>\n {useOtp ? 'Login with OTP' : 'Login'}\n </Text>\n\n {error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n </View>\n )}\n\n <Input\n label=\"Email\"\n value={email}\n onChangeText={setEmail}\n placeholder=\"Enter your email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n editable={!loading}\n theme={inputTheme}\n />\n\n {!useOtp && (\n <Input\n label=\"Password\"\n value={password}\n onChangeText={setPassword}\n placeholder=\"Enter your password\"\n isPassword\n editable={!loading}\n theme={inputTheme}\n />\n )}\n\n <Button\n title={loading ? 'Please wait...' : (useOtp ? 'Send OTP' : 'Login')}\n onPress={handleSubmit}\n loading={loading}\n disabled={loading}\n theme={buttonTheme}\n />\n\n <TouchableOpacity\n style={styles.switchMethod}\n onPress={() => setUseOtp(!useOtp)}\n disabled={loading}\n >\n <Text style={[styles.switchMethodText, { color: colors.accentColor }]}>\n {useOtp ? 'Login with password instead' : 'Login with OTP instead'}\n </Text>\n </TouchableOpacity>\n\n {showForgotPassword && !useOtp && (\n <TouchableOpacity\n style={styles.forgotPassword}\n onPress={onForgotPasswordPress}\n disabled={loading}\n >\n <Text style={[styles.forgotPasswordText, { color: colors.secondaryTextColor }]}>\n Forgot password?\n </Text>\n </TouchableOpacity>\n )}\n\n {showRegisterLink && (\n <View style={[styles.registerContainer, { borderTopColor: colors.borderColor }]}>\n <Text style={[styles.registerText, { color: colors.secondaryTextColor }]}>\n Don't have an account?{' '}\n </Text>\n <TouchableOpacity onPress={onRegisterPress} disabled={loading}>\n <Text style={[styles.registerLink, { color: colors.accentColor }]}>Register</Text>\n </TouchableOpacity>\n </View>\n )}\n </View>\n </ScrollView>\n </KeyboardAvoidingView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n width: '100%',\n },\n scrollContent: {\n flexGrow: 1,\n },\n card: {\n width: '100%',\n },\n title: {\n fontSize: 24,\n fontWeight: '700',\n textAlign: 'center',\n marginBottom: 24,\n },\n errorContainer: {\n backgroundColor: '#FEE2E2',\n borderWidth: 1,\n borderColor: '#FECACA',\n borderRadius: 8,\n padding: 12,\n marginBottom: 16,\n },\n errorText: {\n color: '#DC2626',\n fontSize: 14,\n textAlign: 'center',\n },\n switchMethod: {\n marginTop: 16,\n alignItems: 'center',\n },\n switchMethodText: {\n fontSize: 14,\n fontWeight: '600',\n },\n forgotPassword: {\n marginTop: 12,\n alignItems: 'center',\n },\n forgotPasswordText: {\n fontSize: 14,\n },\n registerContainer: {\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 24,\n paddingTop: 16,\n borderTopWidth: 1,\n },\n registerText: {\n fontSize: 14,\n },\n registerLink: {\n fontSize: 14,\n fontWeight: '600',\n },\n});\n","import React, { useState } from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Input } from './ui/Input';\nimport { Button } from './ui/Button';\n\ninterface RegisterFormProps {\n onSuccess?: (response: any) => void;\n onOtpRequired?: (email: string) => void;\n onLoginPress?: () => void;\n showLoginLink?: boolean;\n}\n\nexport const RegisterForm: React.FC<RegisterFormProps> = ({\n onSuccess,\n onOtpRequired,\n onLoginPress,\n showLoginLink = true,\n}) => {\n const { signUp, loading } = useAuth();\n const [name, setName] = useState('');\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState<string | null>(null);\n\n const handleSubmit = async () => {\n if (!name.trim()) {\n setError('Name is required');\n return;\n }\n\n if (!email.trim()) {\n setError('Email is required');\n return;\n }\n\n if (!password.trim()) {\n setError('Password is required');\n return;\n }\n\n if (password !== confirmPassword) {\n setError('Passwords do not match');\n return;\n }\n\n if (password.length < 6) {\n setError('Password must be at least 6 characters');\n return;\n }\n\n setError(null);\n\n try {\n const response = await signUp({\n name: name.trim(),\n email: email.trim(),\n password,\n });\n\n if (response.success) {\n if (response.message?.includes('OTP') || response.message?.includes('Verification')) {\n onOtpRequired?.(email);\n } else {\n onSuccess?.(response);\n }\n } else {\n setError(response.message || 'Registration failed');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An error occurred');\n }\n };\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={styles.container}\n >\n <ScrollView\n contentContainerStyle={styles.scrollContent}\n keyboardShouldPersistTaps=\"handled\"\n >\n <View style={styles.card}>\n <Text style={styles.title}>Create Account</Text>\n\n {error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n </View>\n )}\n\n <Input\n label=\"Full Name\"\n value={name}\n onChangeText={setName}\n placeholder=\"Enter your name\"\n autoCapitalize=\"words\"\n editable={!loading}\n />\n\n <Input\n label=\"Email\"\n value={email}\n onChangeText={setEmail}\n placeholder=\"Enter your email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n editable={!loading}\n />\n\n <Input\n label=\"Password\"\n value={password}\n onChangeText={setPassword}\n placeholder=\"Create a password\"\n isPassword\n editable={!loading}\n />\n\n <Input\n label=\"Confirm Password\"\n value={confirmPassword}\n onChangeText={setConfirmPassword}\n placeholder=\"Confirm your password\"\n isPassword\n editable={!loading}\n />\n\n <Button\n title={loading ? 'Creating account...' : 'Register'}\n onPress={handleSubmit}\n loading={loading}\n disabled={loading}\n />\n\n {showLoginLink && (\n <View style={styles.loginContainer}>\n <Text style={styles.loginText}>Already have an account? </Text>\n <TouchableOpacity onPress={onLoginPress} disabled={loading}>\n <Text style={styles.loginLink}>Login</Text>\n </TouchableOpacity>\n </View>\n )}\n </View>\n </ScrollView>\n </KeyboardAvoidingView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n justifyContent: 'center',\n padding: 20,\n },\n card: {\n backgroundColor: '#FFFFFF',\n borderRadius: 16,\n padding: 24,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n title: {\n fontSize: 24,\n fontWeight: '700',\n color: '#111827',\n textAlign: 'center',\n marginBottom: 24,\n },\n errorContainer: {\n backgroundColor: '#FEE2E2',\n borderWidth: 1,\n borderColor: '#FECACA',\n borderRadius: 8,\n padding: 12,\n marginBottom: 16,\n },\n errorText: {\n color: '#DC2626',\n fontSize: 14,\n textAlign: 'center',\n },\n loginContainer: {\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 24,\n paddingTop: 16,\n borderTopWidth: 1,\n borderTopColor: '#E5E7EB',\n },\n loginText: {\n color: '#6B7280',\n fontSize: 14,\n },\n loginLink: {\n color: '#4F46E5',\n fontSize: 14,\n fontWeight: '600',\n },\n});\n","import React, { useState, useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, TextInput, TouchableOpacity, KeyboardAvoidingView, Platform } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Button, ButtonTheme } from './ui/Button';\n\nexport interface OtpFormTheme {\n backgroundColor?: string;\n textColor?: string;\n secondaryTextColor?: string;\n accentColor?: string;\n inputBackgroundColor?: string;\n inputBorderColor?: string;\n inputFilledBackgroundColor?: string;\n}\n\ninterface OtpFormProps {\n email: string;\n onSuccess?: (response: any) => void;\n onResendOtp?: () => void;\n onBackPress?: () => void;\n otpLength?: number;\n theme?: OtpFormTheme;\n}\n\nexport const OtpForm: React.FC<OtpFormProps> = ({\n email,\n onSuccess,\n onResendOtp,\n onBackPress,\n otpLength = 6,\n theme,\n}) => {\n const { verify, signIn, loading } = useAuth();\n const [otp, setOtp] = useState<string[]>(Array(otpLength).fill(''));\n const [error, setError] = useState<string | null>(null);\n const [resendTimer, setResendTimer] = useState(30);\n const inputRefs = useRef<(TextInput | null)[]>([]);\n\n const colors = {\n textColor: theme?.textColor ?? '#111827',\n secondaryTextColor: theme?.secondaryTextColor ?? '#6B7280',\n accentColor: theme?.accentColor ?? '#4F46E5',\n inputBackgroundColor: theme?.inputBackgroundColor ?? '#F9FAFB',\n inputBorderColor: theme?.inputBorderColor ?? '#D1D5DB',\n inputFilledBackgroundColor: theme?.inputFilledBackgroundColor ?? '#EEF2FF',\n };\n\n const buttonTheme: ButtonTheme = {\n primaryColor: colors.accentColor,\n };\n\n useEffect(() => {\n if (resendTimer > 0) {\n const timer = setTimeout(() => setResendTimer(resendTimer - 1), 1000);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [resendTimer]);\n\n const handleOtpChange = (value: string, index: number) => {\n if (value.length > 1) {\n // Handle paste\n const pastedOtp = value.slice(0, otpLength).split('');\n const newOtp = [...otp];\n pastedOtp.forEach((char, i) => {\n if (index + i < otpLength) {\n newOtp[index + i] = char;\n }\n });\n setOtp(newOtp);\n const nextIndex = Math.min(index + pastedOtp.length, otpLength - 1);\n inputRefs.current[nextIndex]?.focus();\n } else {\n const newOtp = [...otp];\n newOtp[index] = value;\n setOtp(newOtp);\n\n if (value && index < otpLength - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n }\n setError(null);\n };\n\n const handleKeyPress = (e: any, index: number) => {\n if (e.nativeEvent.key === 'Backspace' && !otp[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n };\n\n const handleSubmit = async () => {\n const otpCode = otp.join('');\n \n if (otpCode.length !== otpLength) {\n setError(`Please enter all ${otpLength} digits`);\n return;\n }\n\n setError(null);\n\n try {\n const response = await verify({ email, otp: otpCode });\n\n if (response.success) {\n onSuccess?.(response);\n } else {\n setError(response.message || 'Verification failed');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An error occurred');\n }\n };\n\n const handleResend = async () => {\n setError(null);\n setResendTimer(30);\n \n try {\n await signIn({ email });\n onResendOtp?.();\n } catch (err) {\n setError('Failed to resend OTP');\n }\n };\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={styles.container}\n >\n <View style={styles.card}>\n <Text style={[styles.title, { color: colors.textColor }]}>Verify OTP</Text>\n <Text style={[styles.subtitle, { color: colors.secondaryTextColor }]}>\n Enter the {otpLength}-digit code sent to{'\\n'}\n <Text style={[styles.email, { color: colors.accentColor }]}>{email}</Text>\n </Text>\n\n {error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n </View>\n )}\n\n <View style={styles.otpContainer}>\n {otp.map((digit, index) => (\n <TextInput\n key={index}\n ref={(ref) => { inputRefs.current[index] = ref; }}\n style={[\n styles.otpInput, \n { \n backgroundColor: colors.inputBackgroundColor,\n borderColor: colors.inputBorderColor,\n color: colors.textColor,\n },\n digit && { \n borderColor: colors.accentColor,\n backgroundColor: colors.inputFilledBackgroundColor,\n }\n ]}\n value={digit}\n onChangeText={(value) => handleOtpChange(value, index)}\n onKeyPress={(e) => handleKeyPress(e, index)}\n keyboardType=\"number-pad\"\n maxLength={otpLength}\n editable={!loading}\n selectTextOnFocus\n />\n ))}\n </View>\n\n <Button\n title={loading ? 'Verifying...' : 'Verify'}\n onPress={handleSubmit}\n loading={loading}\n disabled={loading || otp.join('').length !== otpLength}\n theme={buttonTheme}\n />\n\n <View style={styles.resendContainer}>\n {resendTimer > 0 ? (\n <Text style={[styles.resendTimer, { color: colors.secondaryTextColor }]}>\n Resend OTP in {resendTimer}s\n </Text>\n ) : (\n <TouchableOpacity onPress={handleResend} disabled={loading}>\n <Text style={[styles.resendLink, { color: colors.accentColor }]}>Resend OTP</Text>\n </TouchableOpacity>\n )}\n </View>\n\n {onBackPress && (\n <TouchableOpacity style={styles.backButton} onPress={onBackPress}>\n <Text style={[styles.backText, { color: colors.secondaryTextColor }]}>← Back to login</Text>\n </TouchableOpacity>\n )}\n </View>\n </KeyboardAvoidingView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n },\n card: {\n width: '100%',\n },\n title: {\n fontSize: 24,\n fontWeight: '700',\n textAlign: 'center',\n marginBottom: 8,\n },\n subtitle: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 24,\n lineHeight: 20,\n },\n email: {\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: '#FEE2E2',\n borderWidth: 1,\n borderColor: '#FECACA',\n borderRadius: 8,\n padding: 12,\n marginBottom: 16,\n },\n errorText: {\n color: '#DC2626',\n fontSize: 14,\n textAlign: 'center',\n },\n otpContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: 24,\n },\n otpInput: {\n width: 45,\n height: 55,\n borderWidth: 2,\n borderRadius: 10,\n fontSize: 24,\n fontWeight: '700',\n textAlign: 'center',\n },\n resendContainer: {\n alignItems: 'center',\n marginTop: 16,\n },\n resendTimer: {\n fontSize: 14,\n },\n resendLink: {\n fontSize: 14,\n fontWeight: '600',\n },\n backButton: {\n marginTop: 16,\n alignItems: 'center',\n },\n backText: {\n fontSize: 14,\n },\n});\n","import React, { useState } from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, KeyboardAvoidingView, Platform } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Input } from './ui/Input';\nimport { Button } from './ui/Button';\n\ninterface ForgotPasswordProps {\n onSuccess?: (email: string) => void;\n onBackPress?: () => void;\n}\n\nexport const ForgotPassword: React.FC<ForgotPasswordProps> = ({\n onSuccess,\n onBackPress,\n}) => {\n const { forgotPassword, loading } = useAuth();\n const [email, setEmail] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState(false);\n\n const handleSubmit = async () => {\n if (!email.trim()) {\n setError('Email is required');\n return;\n }\n\n setError(null);\n\n try {\n const response = await forgotPassword(email.trim());\n\n if (response.success) {\n setSuccess(true);\n onSuccess?.(email);\n } else {\n setError(response.message || 'Failed to send reset email');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An error occurred');\n }\n };\n\n if (success) {\n return (\n <View style={styles.container}>\n <View style={styles.card}>\n <View style={styles.successIcon}>\n <Text style={styles.successIconText}>✓</Text>\n </View>\n <Text style={styles.title}>Check Your Email</Text>\n <Text style={styles.subtitle}>\n We've sent a password reset link to{'\\n'}\n <Text style={styles.email}>{email}</Text>\n </Text>\n <Button\n title=\"Back to Login\"\n onPress={onBackPress || (() => {})}\n variant=\"outline\"\n />\n </View>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={styles.container}\n >\n <View style={styles.card}>\n <Text style={styles.title}>Forgot Password</Text>\n <Text style={styles.subtitle}>\n Enter your email address and we'll send you a link to reset your password.\n </Text>\n\n {error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n </View>\n )}\n\n <Input\n label=\"Email\"\n value={email}\n onChangeText={setEmail}\n placeholder=\"Enter your email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n editable={!loading}\n />\n\n <Button\n title={loading ? 'Sending...' : 'Send Reset Link'}\n onPress={handleSubmit}\n loading={loading}\n disabled={loading}\n />\n\n {onBackPress && (\n <TouchableOpacity style={styles.backButton} onPress={onBackPress}>\n <Text style={styles.backText}>← Back to login</Text>\n </TouchableOpacity>\n )}\n </View>\n </KeyboardAvoidingView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n padding: 20,\n },\n card: {\n backgroundColor: '#FFFFFF',\n borderRadius: 16,\n padding: 24,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n title: {\n fontSize: 24,\n fontWeight: '700',\n color: '#111827',\n textAlign: 'center',\n marginBottom: 8,\n },\n subtitle: {\n fontSize: 14,\n color: '#6B7280',\n textAlign: 'center',\n marginBottom: 24,\n lineHeight: 20,\n },\n email: {\n color: '#4F46E5',\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: '#FEE2E2',\n borderWidth: 1,\n borderColor: '#FECACA',\n borderRadius: 8,\n padding: 12,\n marginBottom: 16,\n },\n errorText: {\n color: '#DC2626',\n fontSize: 14,\n textAlign: 'center',\n },\n backButton: {\n marginTop: 16,\n alignItems: 'center',\n },\n backText: {\n color: '#6B7280',\n fontSize: 14,\n },\n successIcon: {\n width: 60,\n height: 60,\n borderRadius: 30,\n backgroundColor: '#D1FAE5',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'center',\n marginBottom: 16,\n },\n successIconText: {\n fontSize: 28,\n color: '#059669',\n },\n});\n","import React, { useState } from 'react';\nimport { View, Text, StyleSheet, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Input } from './ui/Input';\nimport { Button } from './ui/Button';\n\ninterface ResetPasswordProps {\n token: string;\n onSuccess?: () => void;\n onBackPress?: () => void;\n}\n\nexport const ResetPassword: React.FC<ResetPasswordProps> = ({\n token,\n onSuccess,\n onBackPress,\n}) => {\n const { resetPassword, loading } = useAuth();\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState(false);\n\n const handleSubmit = async () => {\n if (!password.trim()) {\n setError('Password is required');\n return;\n }\n\n if (password.length < 6) {\n setError('Password must be at least 6 characters');\n return;\n }\n\n if (password !== confirmPassword) {\n setError('Passwords do not match');\n return;\n }\n\n setError(null);\n\n try {\n const response = await resetPassword(token, password);\n\n if (response.success) {\n setSuccess(true);\n onSuccess?.();\n } else {\n setError(response.message || 'Failed to reset password');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An error occurred');\n }\n };\n\n if (success) {\n return (\n <View style={styles.container}>\n <View style={styles.card}>\n <View style={styles.successIcon}>\n <Text style={styles.successIconText}>✓</Text>\n </View>\n <Text style={styles.title}>Password Reset</Text>\n <Text style={styles.subtitle}>\n Your password has been successfully reset. You can now login with your new password.\n </Text>\n <Button\n title=\"Back to Login\"\n onPress={onBackPress || (() => {})}\n />\n </View>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={styles.container}\n >\n <ScrollView\n contentContainerStyle={styles.scrollContent}\n keyboardShouldPersistTaps=\"handled\"\n >\n <View style={styles.card}>\n <Text style={styles.title}>Reset Password</Text>\n <Text style={styles.subtitle}>\n Enter your new password below.\n </Text>\n\n {error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n </View>\n )}\n\n <Input\n label=\"New Password\"\n value={password}\n onChangeText={setPassword}\n placeholder=\"Enter new password\"\n isPassword\n editable={!loading}\n />\n\n <Input\n label=\"Confirm Password\"\n value={confirmPassword}\n onChangeText={setConfirmPassword}\n placeholder=\"Confirm new password\"\n isPassword\n editable={!loading}\n />\n\n <Button\n title={loading ? 'Resetting...' : 'Reset Password'}\n onPress={handleSubmit}\n loading={loading}\n disabled={loading}\n />\n </View>\n </ScrollView>\n </KeyboardAvoidingView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n justifyContent: 'center',\n padding: 20,\n },\n card: {\n backgroundColor: '#FFFFFF',\n borderRadius: 16,\n padding: 24,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n title: {\n fontSize: 24,\n fontWeight: '700',\n color: '#111827',\n textAlign: 'center',\n marginBottom: 8,\n },\n subtitle: {\n fontSize: 14,\n color: '#6B7280',\n textAlign: 'center',\n marginBottom: 24,\n lineHeight: 20,\n },\n errorContainer: {\n backgroundColor: '#FEE2E2',\n borderWidth: 1,\n borderColor: '#FECACA',\n borderRadius: 8,\n padding: 12,\n marginBottom: 16,\n },\n errorText: {\n color: '#DC2626',\n fontSize: 14,\n textAlign: 'center',\n },\n successIcon: {\n width: 60,\n height: 60,\n borderRadius: 30,\n backgroundColor: '#D1FAE5',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'center',\n marginBottom: 16,\n },\n successIconText: {\n fontSize: 28,\n color: '#059669',\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet, Image, TouchableOpacity } from 'react-native';\nimport { useAuth } from '../AuthProvider';\nimport { Button } from './ui/Button';\n\ninterface UserProfileProps {\n onEditPress?: () => void;\n onLogoutPress?: () => void;\n showLogoutButton?: boolean;\n}\n\nexport const UserProfile: React.FC<UserProfileProps> = ({\n onEditPress,\n onLogoutPress,\n showLogoutButton = true,\n}) => {\n const { user, signOut, loading } = useAuth();\n\n const handleLogout = async () => {\n await signOut();\n onLogoutPress?.();\n };\n\n if (!user) {\n return (\n <View style={styles.container}>\n <Text style={styles.notLoggedIn}>Not logged in</Text>\n </View>\n );\n }\n\n const getInitials = (name?: string, email?: string) => {\n if (name) {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n }\n return email?.charAt(0).toUpperCase() || '?';\n };\n\n return (\n <View style={styles.container}>\n <View style={styles.card}>\n <View style={styles.header}>\n {user.avatar ? (\n <Image source={{ uri: user.avatar }} style={styles.avatar} />\n ) : (\n <View style={styles.avatarPlaceholder}>\n <Text style={styles.avatarText}>\n {getInitials(user.name, user.email)}\n </Text>\n </View>\n )}\n \n <View style={styles.userInfo}>\n {user.name && <Text style={styles.name}>{user.name}</Text>}\n <Text style={styles.email}>{user.email}</Text>\n </View>\n\n {onEditPress && (\n <TouchableOpacity style={styles.editButton} onPress={onEditPress}>\n <Text style={styles.editText}>Edit</Text>\n </TouchableOpacity>\n )}\n </View>\n\n <View style={styles.divider} />\n\n <View style={styles.details}>\n <View style={styles.detailRow}>\n <Text style={styles.detailLabel}>Email</Text>\n <Text style={styles.detailValue}>{user.email}</Text>\n </View>\n\n {user.phoneNumber && (\n <View style={styles.detailRow}>\n <Text style={styles.detailLabel}>Phone</Text>\n <Text style={styles.detailValue}>{user.phoneNumber}</Text>\n </View>\n )}\n\n <View style={styles.detailRow}>\n <Text style={styles.detailLabel}>Email Verified</Text>\n <View style={[styles.badge, user.emailVerified ? styles.badgeSuccess : styles.badgeWarning]}>\n <Text style={[styles.badgeText, user.emailVerified ? styles.badgeTextSuccess : styles.badgeTextWarning]}>\n {user.emailVerified ? 'Verified' : 'Not Verified'}\n </Text>\n </View>\n </View>\n\n {user.twoFactorEnabled !== undefined && (\n <View style={styles.detailRow}>\n <Text style={styles.detailLabel}>2FA</Text>\n <View style={[styles.badge, user.twoFactorEnabled ? styles.badgeSuccess : styles.badgeNeutral]}>\n <Text style={[styles.badgeText, user.twoFactorEnabled ? styles.badgeTextSuccess : styles.badgeTextNeutral]}>\n {user.twoFactorEnabled ? 'Enabled' : 'Disabled'}\n </Text>\n </View>\n </View>\n )}\n </View>\n\n {showLogoutButton && (\n <>\n <View style={styles.divider} />\n <Button\n title={loading ? 'Logging out...' : 'Logout'}\n onPress={handleLogout}\n loading={loading}\n variant=\"outline\"\n style={styles.logoutButton}\n textStyle={styles.logoutText}\n />\n </>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 20,\n },\n card: {\n backgroundColor: '#FFFFFF',\n borderRadius: 16,\n padding: 20,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n avatar: {\n width: 60,\n height: 60,\n borderRadius: 30,\n },\n avatarPlaceholder: {\n width: 60,\n height: 60,\n borderRadius: 30,\n backgroundColor: '#4F46E5',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatarText: {\n color: '#FFFFFF',\n fontSize: 20,\n fontWeight: '700',\n },\n userInfo: {\n flex: 1,\n marginLeft: 16,\n },\n name: {\n fontSize: 18,\n fontWeight: '600',\n color: '#111827',\n },\n email: {\n fontSize: 14,\n color: '#6B7280',\n marginTop: 2,\n },\n editButton: {\n padding: 8,\n },\n editText: {\n color: '#4F46E5',\n fontSize: 14,\n fontWeight: '600',\n },\n divider: {\n height: 1,\n backgroundColor: '#E5E7EB',\n marginVertical: 16,\n },\n details: {\n gap: 12,\n },\n detailRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n detailLabel: {\n fontSize: 14,\n color: '#6B7280',\n },\n detailValue: {\n fontSize: 14,\n color: '#111827',\n fontWeight: '500',\n },\n badge: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 12,\n },\n badgeSuccess: {\n backgroundColor: '#D1FAE5',\n },\n badgeWarning: {\n backgroundColor: '#FEF3C7',\n },\n badgeNeutral: {\n backgroundColor: '#F3F4F6',\n },\n badgeText: {\n fontSize: 12,\n fontWeight: '600',\n },\n badgeTextSuccess: {\n color: '#059669',\n },\n badgeTextWarning: {\n color: '#D97706',\n },\n badgeTextNeutral: {\n color: '#6B7280',\n },\n logoutButton: {\n borderColor: '#EF4444',\n },\n logoutText: {\n color: '#EF4444',\n },\n notLoggedIn: {\n textAlign: 'center',\n color: '#6B7280',\n fontSize: 16,\n },\n});\n","import React, { ReactNode } from 'react';\nimport { View, Text, StyleSheet, ActivityIndicator } from 'react-native';\nimport { useAuth } from '../AuthProvider';\n\ninterface ProtectedRouteProps {\n children: ReactNode;\n fallback?: ReactNode;\n loadingComponent?: ReactNode;\n}\n\nexport const ProtectedRoute: React.FC<ProtectedRouteProps> = ({\n children,\n fallback,\n loadingComponent,\n}) => {\n const { isLoaded, isSignedIn } = useAuth();\n\n if (!isLoaded) {\n return (\n loadingComponent || (\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#4F46E5\" />\n <Text style={styles.loadingText}>Loading...</Text>\n </View>\n )\n );\n }\n\n if (!isSignedIn) {\n return (\n fallback || (\n <View style={styles.unauthorizedContainer}>\n <Text style={styles.unauthorizedTitle}>Access Denied</Text>\n <Text style={styles.unauthorizedText}>\n Please sign in to access this content.\n </Text>\n </View>\n )\n );\n }\n\n return <>{children}</>;\n};\n\nconst styles = StyleSheet.create({\n loadingContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F9FAFB',\n },\n loadingText: {\n marginTop: 12,\n fontSize: 16,\n color: '#6B7280',\n },\n unauthorizedContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n backgroundColor: '#F9FAFB',\n },\n unauthorizedTitle: {\n fontSize: 20,\n fontWeight: '700',\n color: '#111827',\n marginBottom: 8,\n },\n unauthorizedText: {\n fontSize: 14,\n color: '#6B7280',\n textAlign: 'center',\n },\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,103 +1,120 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@thetechfossil/auth2",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "Authentication SDK for easy integration with Auth backend",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"module": "dist/index.mjs",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.mjs",
|
|
12
|
-
"require": "./dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./next": {
|
|
15
|
-
"types": "./dist/index.next.d.ts",
|
|
16
|
-
"import": "./next/index.mjs",
|
|
17
|
-
"require": "./next/index.js"
|
|
18
|
-
},
|
|
19
|
-
"./next/server": {
|
|
20
|
-
"types": "./dist/index.next.server.d.ts",
|
|
21
|
-
"import": "./next/server.mjs",
|
|
22
|
-
"require": "./next/server.js"
|
|
23
|
-
},
|
|
24
|
-
"./node": {
|
|
25
|
-
"types": "./dist/index.node.d.ts",
|
|
26
|
-
"import": "./dist/index.node.mjs",
|
|
27
|
-
"require": "./dist/index.node.js"
|
|
28
|
-
},
|
|
29
|
-
"./react": {
|
|
30
|
-
"types": "./dist/index.d.ts",
|
|
31
|
-
"import": "./dist/index.mjs",
|
|
32
|
-
"require": "./dist/index.js"
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"react
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@thetechfossil/auth2",
|
|
3
|
+
"version": "1.2.21",
|
|
4
|
+
"description": "Authentication SDK for easy integration with Auth backend",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./next": {
|
|
15
|
+
"types": "./dist/index.next.d.ts",
|
|
16
|
+
"import": "./next/index.mjs",
|
|
17
|
+
"require": "./next/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./next/server": {
|
|
20
|
+
"types": "./dist/index.next.server.d.ts",
|
|
21
|
+
"import": "./next/server.mjs",
|
|
22
|
+
"require": "./next/server.js"
|
|
23
|
+
},
|
|
24
|
+
"./node": {
|
|
25
|
+
"types": "./dist/index.node.d.ts",
|
|
26
|
+
"import": "./dist/index.node.mjs",
|
|
27
|
+
"require": "./dist/index.node.js"
|
|
28
|
+
},
|
|
29
|
+
"./react": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.mjs",
|
|
32
|
+
"require": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./react-native": {
|
|
35
|
+
"types": "./dist/index.react-native.d.ts",
|
|
36
|
+
"import": "./dist/index.react-native.mjs",
|
|
37
|
+
"require": "./dist/index.react-native.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist/**/*",
|
|
42
|
+
"next/**/*",
|
|
43
|
+
"react-native/**/*"
|
|
44
|
+
],
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsup && node scripts/add-use-client.js",
|
|
47
|
+
"dev": "tsup --watch",
|
|
48
|
+
"test": "jest",
|
|
49
|
+
"test:integration": "node scripts/test-node-integration.js",
|
|
50
|
+
"test:react": "node scripts/test-react-integration.js",
|
|
51
|
+
"test:nextjs": "node scripts/test-nextjs-integration.js",
|
|
52
|
+
"test:ui": "node scripts/test-ui-components.js",
|
|
53
|
+
"validate:docs": "node scripts/validate-docs.js",
|
|
54
|
+
"prepublishOnly": "pnpm run build"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"auth",
|
|
58
|
+
"authentication",
|
|
59
|
+
"sdk",
|
|
60
|
+
"react",
|
|
61
|
+
"nextjs",
|
|
62
|
+
"nodejs"
|
|
63
|
+
],
|
|
64
|
+
"author": "Auth Team",
|
|
65
|
+
"license": "MIT",
|
|
66
|
+
"homepage": "https://ktw-auth-docs.netlify.app/",
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/thetechfossil/auths"
|
|
70
|
+
},
|
|
71
|
+
"publishConfig": {
|
|
72
|
+
"access": "public"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@types/jest": "^30.0.0",
|
|
76
|
+
"@types/node": "^24.10.2",
|
|
77
|
+
"@types/react": "^19.2.7",
|
|
78
|
+
"@types/react-dom": "^19.2.3",
|
|
79
|
+
"@types/react-native": "^0.73.0",
|
|
80
|
+
"expo-secure-store": "^15.0.8",
|
|
81
|
+
"jest": "^30.2.0",
|
|
82
|
+
"next": "^16.0.8",
|
|
83
|
+
"react": "^19.2.1",
|
|
84
|
+
"tsup": "^8.5.1",
|
|
85
|
+
"typescript": "^5.9.3"
|
|
86
|
+
},
|
|
87
|
+
"peerDependencies": {
|
|
88
|
+
"@radix-ui/react-dialog": ">=1.0.0",
|
|
89
|
+
"expo-secure-store": ">=12.0.0",
|
|
90
|
+
"next": ">=12.0.0",
|
|
91
|
+
"react": ">=17.0.0",
|
|
92
|
+
"react-native": ">=0.70.0",
|
|
93
|
+
"react-phone-number-input": ">=3.0.0"
|
|
94
|
+
},
|
|
95
|
+
"peerDependenciesMeta": {
|
|
96
|
+
"@radix-ui/react-dialog": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"react": {
|
|
100
|
+
"optional": true
|
|
101
|
+
},
|
|
102
|
+
"next": {
|
|
103
|
+
"optional": true
|
|
104
|
+
},
|
|
105
|
+
"react-native": {
|
|
106
|
+
"optional": true
|
|
107
|
+
},
|
|
108
|
+
"expo-secure-store": {
|
|
109
|
+
"optional": true
|
|
110
|
+
},
|
|
111
|
+
"react-phone-number-input": {
|
|
112
|
+
"optional": true
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"dependencies": {
|
|
116
|
+
"@thetechfossil/upfiles": "^1.0.11",
|
|
117
|
+
"axios": "^1.13.2",
|
|
118
|
+
"socket.io-client": "^4.8.3"
|
|
119
|
+
}
|
|
103
120
|
}
|